fix: Loan repayment schedule date
diff --git a/erpnext/loan_management/doctype/loan/loan.py b/erpnext/loan_management/doctype/loan/loan.py
index 73134ee..878fd18 100644
--- a/erpnext/loan_management/doctype/loan/loan.py
+++ b/erpnext/loan_management/doctype/loan/loan.py
@@ -9,7 +9,7 @@
import frappe
from frappe import _
-from frappe.utils import add_months, flt, getdate, now_datetime, nowdate
+from frappe.utils import add_months, flt, get_last_day, getdate, now_datetime, nowdate
from six import string_types
import erpnext
@@ -102,7 +102,7 @@
"total_payment": total_payment,
"balance_loan_amount": balance_amount
})
- next_payment_date = add_months(payment_date, 1)
+ next_payment_date = add_single_month(payment_date)
payment_date = next_payment_date
def set_repayment_period(self):
@@ -391,3 +391,9 @@
"value": len(applicants),
"fieldtype": "Int"
}
+
+def add_single_month(date):
+ if getdate(date) == get_last_day(date):
+ return get_last_day(add_months(date, 1))
+ else:
+ return add_months(date, 1)
\ No newline at end of file
diff --git a/erpnext/loan_management/doctype/loan_repayment/loan_repayment.py b/erpnext/loan_management/doctype/loan_repayment/loan_repayment.py
index 9f3fe76..53ff43a 100644
--- a/erpnext/loan_management/doctype/loan_repayment/loan_repayment.py
+++ b/erpnext/loan_management/doctype/loan_repayment/loan_repayment.py
@@ -414,7 +414,10 @@
return None, 0
def regenerate_repayment_schedule(loan):
- from erpnext.loan_management.doctype.loan.loan import get_monthly_repayment_amount
+ from erpnext.loan_management.doctype.loan.loan import (
+ add_single_month,
+ get_monthly_repayment_amount,
+ )
loan_doc = frappe.get_doc('Loan', loan)
next_accrual_date = None
@@ -456,7 +459,7 @@
"total_payment": total_payment,
"balance_loan_amount": balance_amount
})
- next_payment_date = add_months(payment_date, 1)
+ next_payment_date = add_single_month(payment_date)
payment_date = next_payment_date
loan_doc.save()