Files
cbsnexora-backend/mifosng-db/patches/15d-loan_arrears_aging_populate.sql
T

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;