From 008400d287c26f78909abb1b09bb52a5ea94c1b3 Mon Sep 17 00:00:00 2001 From: Anand Baburajan Date: Fri, 8 Dec 2023 16:34:29 +0530 Subject: [PATCH] fix: calc monthly_repayment_amount correctly in regenerate_repayment_schedule (#38636) --- .../loan_management/doctype/loan_repayment/loan_repayment.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/erpnext/loan_management/doctype/loan_repayment/loan_repayment.py b/erpnext/loan_management/doctype/loan_repayment/loan_repayment.py index 0d16c7f0c50..0b057f85aa3 100644 --- a/erpnext/loan_management/doctype/loan_repayment/loan_repayment.py +++ b/erpnext/loan_management/doctype/loan_repayment/loan_repayment.py @@ -599,6 +599,8 @@ def regenerate_repayment_schedule(loan, cancel=0): last_repayment_amount = None last_balance_amount = None + original_repayment_schedule_len = len(loan_doc.get("repayment_schedule")) + for term in reversed(loan_doc.get("repayment_schedule")): if not term.is_accrued: next_accrual_date = term.payment_date @@ -616,7 +618,7 @@ def regenerate_repayment_schedule(loan, cancel=0): if loan_doc.repayment_method == "Repay Fixed Amount per Period": monthly_repayment_amount = flt( - balance_amount / len(loan_doc.get("repayment_schedule")) - accrued_entries + balance_amount / (original_repayment_schedule_len - accrued_entries) ) else: repayment_period = loan_doc.repayment_periods - accrued_entries