53 lines
1.5 KiB
SQL
53 lines
1.5 KiB
SQL
/*
|
|
This patch (or something like it) needs to run daily (after midnight and before next day opening)
|
|
against each tenant to keep the arrears values accurate
|
|
*/
|
|
|
|
truncate table m_loan_arrears_aging;
|
|
|
|
INSERT INTO m_loan_arrears_aging
|
|
(`loan_id`,
|
|
`principal_overdue_derived`,
|
|
`interest_overdue_derived`,
|
|
`fee_charges_overdue_derived`,
|
|
`penalty_charges_overdue_derived`,
|
|
`total_overdue_derived`,
|
|
`overdue_since_date_derived`)
|
|
select ml.id as loanId,
|
|
SUM(
|
|
(ifnull(mr.principal_amount,0) - ifnull(mr.principal_completed_derived, 0))
|
|
) as principal_overdue_derived,
|
|
SUM(
|
|
(ifnull(mr.interest_amount,0) - ifnull(mr.interest_completed_derived, 0))
|
|
) as interest_overdue_derived,
|
|
SUM(
|
|
(ifnull(mr.fee_charges_amount,0) - ifnull(mr.fee_charges_completed_derived, 0))
|
|
) as fee_charges_overdue_derived,
|
|
SUM(
|
|
(ifnull(mr.penalty_charges_amount,0) - ifnull(mr.penalty_charges_completed_derived, 0))
|
|
) as penalty_charges_overdue_derived,
|
|
|
|
|
|
SUM(
|
|
(ifnull(mr.principal_amount,0) - ifnull(mr.principal_completed_derived, 0))
|
|
) +
|
|
SUM(
|
|
(ifnull(mr.interest_amount,0) - ifnull(mr.interest_completed_derived, 0))
|
|
) +
|
|
SUM(
|
|
(ifnull(mr.fee_charges_amount,0) - ifnull(mr.fee_charges_completed_derived, 0))
|
|
) +
|
|
SUM(
|
|
(ifnull(mr.penalty_charges_amount,0) - ifnull(mr.penalty_charges_completed_derived, 0))
|
|
) as total_overdue_derived,
|
|
|
|
|
|
MIN(mr.duedate) as overdue_since_date_derived
|
|
|
|
|
|
FROM m_loan ml
|
|
INNER JOIN m_loan_repayment_schedule mr on mr.loan_id = ml.id
|
|
WHERE ml.loan_status_id = 300 /*active*/
|
|
and mr.completed_derived is false
|
|
and mr.duedate < CURDATE()
|
|
GROUP BY ml.id; |