diff --git a/erpnext/hr/doctype/loan_application/loan_application.py b/erpnext/hr/doctype/loan_application/loan_application.py index 5dbcf15eac1..67be9f2a1ca 100644 --- a/erpnext/hr/doctype/loan_application/loan_application.py +++ b/erpnext/hr/doctype/loan_application/loan_application.py @@ -29,9 +29,12 @@ class LoanApplication(Document): if self.repayment_method == "Repay Fixed Amount per Period": monthly_interest_rate = flt(self.rate_of_interest) / (12 *100) if monthly_interest_rate: - self.repayment_periods = math.ceil((math.log(self.repayment_amount) - - math.log(self.repayment_amount - (self.loan_amount*monthly_interest_rate))) / - (math.log(1 + monthly_interest_rate))) + min_repayment_amount = self.loan_amount*monthly_interest_rate + if self.repayment_amount - min_repayment_amount < 0: + frappe.throw(_("Repayment Amount must be greater than " \ + + str(flt(min_repayment_amount, 2)))) + self.repayment_periods = math.ceil(math.log(self.repayment_amount) - + math.log(self.repayment_amount - min_repayment_amount) /(math.log(1 + monthly_interest_rate))) else: self.repayment_periods = self.loan_amount / self.repayment_amount diff --git a/erpnext/hr/doctype/loan_application/test_loan_application.py b/erpnext/hr/doctype/loan_application/test_loan_application.py index 7644dd0c9f2..b08b5225030 100644 --- a/erpnext/hr/doctype/loan_application/test_loan_application.py +++ b/erpnext/hr/doctype/loan_application/test_loan_application.py @@ -31,21 +31,22 @@ class TestLoanApplication(unittest.TestCase): "rate_of_interest": 9.2, "loan_amount": 250000, "repayment_method": "Repay Over Number of Periods", - "repayment_periods": 24 + "repayment_periods": 18 }) loan_application.insert() - + def test_loan_totals(self): loan_application = frappe.get_doc("Loan Application", {"applicant":self.applicant}) - self.assertEquals(loan_application.repayment_amount, 11445) - self.assertEquals(loan_application.total_payable_interest, 24657) - self.assertEquals(loan_application.total_payable_amount, 274657) - loan_application.repayment_method = "Repay Fixed Amount per Period" - loan_application.repayment_amount = 15000 + self.assertEqual(loan_application.total_payable_interest, 18599) + self.assertEqual(loan_application.total_payable_amount, 268599) + self.assertEqual(loan_application.repayment_amount, 14923) + + loan_application.repayment_periods = 24 loan_application.save() + loan_application.reload() - self.assertEqual(loan_application.repayment_periods, 18) - self.assertEqual(loan_application.total_payable_interest, 18506) - self.assertEqual(loan_application.total_payable_amount, 268506) \ No newline at end of file + self.assertEqual(loan_application.total_payable_interest, 24657) + self.assertEqual(loan_application.total_payable_amount, 274657) + self.assertEqual(loan_application.repayment_amount, 11445)