| 1 | --Најава на корисник (Login view)
|
|---|
| 2 | CREATE VIEW v_user_login AS
|
|---|
| 3 | SELECT
|
|---|
| 4 | cu.client_user_id,
|
|---|
| 5 | cu.username,
|
|---|
| 6 | cu.password_hash,
|
|---|
| 7 | cu.status,
|
|---|
| 8 | c.client_id,
|
|---|
| 9 | c.first_name,
|
|---|
| 10 | c.last_name,
|
|---|
| 11 | c.email
|
|---|
| 12 | FROM Client_user cu
|
|---|
| 13 | JOIN Client c ON cu.client_id = c.client_id
|
|---|
| 14 | WHERE cu.status = 'ACTIVE';
|
|---|
| 15 |
|
|---|
| 16 | SELECT * FROM v_user_login;
|
|---|
| 17 |
|
|---|
| 18 |
|
|---|
| 19 | --Регистрација на корисник (Registration view)
|
|---|
| 20 | CREATE VIEW v_user_registration AS
|
|---|
| 21 | SELECT
|
|---|
| 22 | c.client_id,
|
|---|
| 23 | c.first_name,
|
|---|
| 24 | c.last_name,
|
|---|
| 25 | c.embg,
|
|---|
| 26 | c.email,
|
|---|
| 27 | c.phone,
|
|---|
| 28 | cu.username,
|
|---|
| 29 | cu.status AS user_status,
|
|---|
| 30 | c.date_registered
|
|---|
| 31 | FROM Client c
|
|---|
| 32 | LEFT JOIN Client_user cu ON c.client_id = cu.client_id
|
|---|
| 33 | WHERE (cu.client_id IS NULL OR cu.status <> 'ACTIVE')
|
|---|
| 34 | AND c.status <> 'DELETED';
|
|---|
| 35 |
|
|---|
| 36 | SELECT * FROM v_user_registration;
|
|---|
| 37 |
|
|---|
| 38 |
|
|---|
| 39 |
|
|---|
| 40 | --Извештаи (Receipt view)
|
|---|
| 41 | CREATE VIEW vw_client_receipts AS
|
|---|
| 42 | SELECT
|
|---|
| 43 | r.receipt_id,
|
|---|
| 44 | r.receipt_number,
|
|---|
| 45 | r.print_time,
|
|---|
| 46 | t.transaction_id,
|
|---|
| 47 | t.amount,
|
|---|
| 48 | t.transaction_date
|
|---|
| 49 | FROM Receipt r
|
|---|
| 50 | JOIN Transaction t ON t.transaction_id = r.transaction_id
|
|---|
| 51 | WHERE t.status = 'COMPLETED'
|
|---|
| 52 | AND t.amount > 0
|
|---|
| 53 | AND r.print_time IS NOT NULL;
|
|---|
| 54 |
|
|---|
| 55 | SELECT *
|
|---|
| 56 | FROM vw_client_receipts;
|
|---|
| 57 |
|
|---|
| 58 |
|
|---|
| 59 | --Рати (Loan installments view)
|
|---|
| 60 | CREATE VIEW v_loan_installments AS
|
|---|
| 61 | SELECT
|
|---|
| 62 | li.installment_id,
|
|---|
| 63 | li.installment_number,
|
|---|
| 64 | li.due_date,
|
|---|
| 65 | li.amount,
|
|---|
| 66 | li.status,
|
|---|
| 67 | li.paid_date,
|
|---|
| 68 | l.loan_id,
|
|---|
| 69 | l.client_id
|
|---|
| 70 | FROM Loan_installment li
|
|---|
| 71 | JOIN Loan l ON li.loan_id = l.loan_id
|
|---|
| 72 | WHERE l.status IN ('APPROVED', 'CLOSED')
|
|---|
| 73 | AND li.amount > 0
|
|---|
| 74 | AND li.due_date IS NOT NULL;
|
|---|
| 75 |
|
|---|
| 76 | SELECT *
|
|---|
| 77 | FROM v_loan_installments;
|
|---|
| 78 |
|
|---|
| 79 |
|
|---|
| 80 | --Преглед на кредити
|
|---|
| 81 | CREATE VIEW v_loans AS
|
|---|
| 82 | SELECT
|
|---|
| 83 | l.loan_id,
|
|---|
| 84 | l.loan_type,
|
|---|
| 85 | l.amount,
|
|---|
| 86 | l.interest_rate,
|
|---|
| 87 | l.start_date,
|
|---|
| 88 | l.end_date,
|
|---|
| 89 | l.status,
|
|---|
| 90 | l.approved_date,
|
|---|
| 91 | c.client_id,
|
|---|
| 92 | c.first_name,
|
|---|
| 93 | c.last_name
|
|---|
| 94 | FROM Loan l
|
|---|
| 95 | JOIN Client c ON l.client_id = c.client_id
|
|---|
| 96 | WHERE l.status IN ('APPROVED', 'CLOSED')
|
|---|
| 97 | AND l.amount > 0
|
|---|
| 98 | AND l.interest_rate >= 0
|
|---|
| 99 | AND (l.status <> 'APPROVED' OR l.approved_date IS NOT NULL);
|
|---|
| 100 |
|
|---|
| 101 |
|
|---|
| 102 | SELECT *
|
|---|
| 103 | FROM v_loans;
|
|---|
| 104 |
|
|---|
| 105 | --Трансакции
|
|---|
| 106 | CREATE VIEW v_transactions AS
|
|---|
| 107 | SELECT
|
|---|
| 108 | t.transaction_id,
|
|---|
| 109 | t.amount,
|
|---|
| 110 | t.transaction_date,
|
|---|
| 111 | t.status,
|
|---|
| 112 | t.description,
|
|---|
| 113 | t.reference_number,
|
|---|
| 114 | t.account_id,
|
|---|
| 115 | at.account_number,
|
|---|
| 116 | tt.type_name AS transaction_type,
|
|---|
| 117 | pm.method_name AS payment_method
|
|---|
| 118 | FROM Transaction t
|
|---|
| 119 | JOIN Account at ON t.account_id = at.account_id
|
|---|
| 120 | LEFT JOIN Transaction_type tt ON t.transaction_type_id = tt.transaction_type_id
|
|---|
| 121 | LEFT JOIN Payment_method pm ON t.payment_method_id = pm.method_id
|
|---|
| 122 | WHERE t.status = 'COMPLETED'
|
|---|
| 123 | AND t.amount > 0
|
|---|
| 124 | AND t.transaction_date IS NOT NULL
|
|---|
| 125 | AND at.status = 'ACTIVE';
|
|---|
| 126 |
|
|---|
| 127 | SELECT *
|
|---|
| 128 | FROM v_transactions;
|
|---|
| 129 |
|
|---|
| 130 | --Сомнителни трансакции
|
|---|
| 131 | CREATE VIEW v_suspicious_transactions AS
|
|---|
| 132 | SELECT *
|
|---|
| 133 | FROM Transaction
|
|---|
| 134 | WHERE amount > 10000
|
|---|
| 135 | OR status IN ('FAILED', 'PENDING');
|
|---|
| 136 |
|
|---|
| 137 | SELECT *
|
|---|
| 138 | FROM v_suspicious_transactions;
|
|---|
| 139 |
|
|---|
| 140 |
|
|---|
| 141 | --Вкупна состојба на клиент
|
|---|
| 142 | CREATE VIEW v_client_total_balance_10 AS
|
|---|
| 143 | SELECT
|
|---|
| 144 | c.client_id,
|
|---|
| 145 | c.first_name,
|
|---|
| 146 | c.last_name,
|
|---|
| 147 | SUM(a.balance) AS total_balance
|
|---|
| 148 | FROM Client c
|
|---|
| 149 | JOIN Account a ON c.client_id = a.client_id
|
|---|
| 150 | WHERE c.client_id = 10
|
|---|
| 151 | GROUP BY c.client_id, c.first_name, c.last_name;
|
|---|
| 152 |
|
|---|
| 153 | SELECT *
|
|---|
| 154 | FROM v_client_total_balance_10;
|
|---|
| 155 |
|
|---|
| 156 | --Следење на доцнења (Loan Default Monitoring)
|
|---|
| 157 | CREATE VIEW v_loan_default_monitoring AS
|
|---|
| 158 | SELECT
|
|---|
| 159 | l.loan_id,
|
|---|
| 160 | l.client_id,
|
|---|
| 161 | li.installment_id,
|
|---|
| 162 | li.due_date,
|
|---|
| 163 | li.status,
|
|---|
| 164 | li.paid_date
|
|---|
| 165 | FROM Loan_installment li
|
|---|
| 166 | JOIN Loan l ON li.loan_id = l.loan_id
|
|---|
| 167 | WHERE li.status = 'LATE'
|
|---|
| 168 | OR (li.paid_date IS NULL AND li.due_date < CURRENT_DATE);
|
|---|
| 169 |
|
|---|
| 170 |
|
|---|
| 171 | SELECT *
|
|---|
| 172 | FROM v_loan_default_monitoring;
|
|---|
| 173 |
|
|---|
| 174 |
|
|---|
| 175 | --Accounts (сметки)
|
|---|
| 176 | CREATE VIEW v_accounts AS
|
|---|
| 177 | SELECT
|
|---|
| 178 | a.account_id,
|
|---|
| 179 | a.account_number,
|
|---|
| 180 | a.account_type,
|
|---|
| 181 | a.balance,
|
|---|
| 182 | a.status,
|
|---|
| 183 | c.client_id,
|
|---|
| 184 | c.first_name,
|
|---|
| 185 | c.last_name,
|
|---|
| 186 | b.branch_name
|
|---|
| 187 | FROM Account a
|
|---|
| 188 | JOIN Client c ON a.client_id = c.client_id
|
|---|
| 189 | JOIN Branch b ON a.branch_id = b.branch_id
|
|---|
| 190 | WHERE a.status = 'ACTIVE'
|
|---|
| 191 | AND c.status = 'ACTIVE'
|
|---|
| 192 | AND a.balance >= 0;
|
|---|
| 193 |
|
|---|
| 194 |
|
|---|
| 195 | SELECT *
|
|---|
| 196 | FROM v_accounts;
|
|---|
| 197 |
|
|---|
| 198 |
|
|---|
| 199 |
|
|---|
| 200 | --Камати по штедни сметки
|
|---|
| 201 | CREATE VIEW v_savings_interest_payments AS
|
|---|
| 202 | SELECT
|
|---|
| 203 | ip.interest_payment_id,
|
|---|
| 204 | ip.amount,
|
|---|
| 205 | ip.payment_date,
|
|---|
| 206 | ip.period_start,
|
|---|
| 207 | ip.period_end,
|
|---|
| 208 | a.account_id,
|
|---|
| 209 | a.account_number,
|
|---|
| 210 | sa.interest_rate
|
|---|
| 211 | FROM InterestPayment ip
|
|---|
| 212 | JOIN Account a ON ip.account_id = a.account_id
|
|---|
| 213 | JOIN SavingsAccount sa ON sa.account_id = a.account_id
|
|---|
| 214 | WHERE a.account_type = 'SAVINGS'
|
|---|
| 215 | AND a.status = 'ACTIVE'
|
|---|
| 216 | AND ip.amount > 0
|
|---|
| 217 | AND a.balance >= sa.minimum_balance
|
|---|
| 218 | AND sa.interest_rate > 0;
|
|---|
| 219 | SELECT *
|
|---|
| 220 | FROM v_savings_interest_payments;
|
|---|
| 221 |
|
|---|
| 222 |
|
|---|
| 223 | --Дневен извештај на филијала
|
|---|
| 224 | CREATE VIEW v_daily_branch_report AS
|
|---|
| 225 | SELECT
|
|---|
| 226 | dr.report_id,
|
|---|
| 227 | dr.report_date,
|
|---|
| 228 | dr.total_transactions,
|
|---|
| 229 | dr.total_amount,
|
|---|
| 230 | b.branch_id,
|
|---|
| 231 | b.branch_name,
|
|---|
| 232 | b.city
|
|---|
| 233 | FROM Daily_report dr
|
|---|
| 234 | JOIN Branch b ON dr.branch_id = b.branch_id
|
|---|
| 235 | WHERE dr.report_date IS NOT NULL
|
|---|
| 236 | AND dr.report_date <= CURRENT_DATE
|
|---|
| 237 | AND dr.total_transactions >= 0
|
|---|
| 238 | AND dr.total_amount >= 0;
|
|---|
| 239 |
|
|---|
| 240 | SELECT *
|
|---|
| 241 | FROM v_daily_branch_report;
|
|---|