mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-26 08:24:47 +00:00
fix: Add accrual type and penalty field in interest accrual
This commit is contained in:
@@ -74,7 +74,7 @@ class LoanDisbursement(AccountsController):
|
|||||||
|
|
||||||
if loan_details.status == "Disbursed" and not loan_details.is_term_loan:
|
if loan_details.status == "Disbursed" and not loan_details.is_term_loan:
|
||||||
process_loan_interest_accrual_for_demand_loans(posting_date=add_days(self.disbursement_date, -1),
|
process_loan_interest_accrual_for_demand_loans(posting_date=add_days(self.disbursement_date, -1),
|
||||||
loan=self.against_loan)
|
loan=self.against_loan, accrual_type="Disbursement")
|
||||||
|
|
||||||
if disbursed_amount > loan_details.loan_amount:
|
if disbursed_amount > loan_details.loan_amount:
|
||||||
topup_amount = disbursed_amount - loan_details.loan_amount
|
topup_amount = disbursed_amount - loan_details.loan_amount
|
||||||
|
|||||||
@@ -60,8 +60,7 @@ class TestLoanDisbursement(unittest.TestCase):
|
|||||||
self.assertRaises(frappe.ValidationError, make_loan_disbursement_entry, loan.name,
|
self.assertRaises(frappe.ValidationError, make_loan_disbursement_entry, loan.name,
|
||||||
500000, first_date)
|
500000, first_date)
|
||||||
|
|
||||||
repayment_entry = create_repayment_entry(loan.name, self.applicant, add_days(get_last_day(nowdate()), 5),
|
repayment_entry = create_repayment_entry(loan.name, self.applicant, add_days(get_last_day(nowdate()), 5), 611095.89)
|
||||||
"Regular Payment", 611095.89)
|
|
||||||
|
|
||||||
repayment_entry.submit()
|
repayment_entry.submit()
|
||||||
loan.reload()
|
loan.reload()
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
"column_break_4",
|
"column_break_4",
|
||||||
"company",
|
"company",
|
||||||
"posting_date",
|
"posting_date",
|
||||||
|
"accrual_type",
|
||||||
"is_term_loan",
|
"is_term_loan",
|
||||||
"section_break_7",
|
"section_break_7",
|
||||||
"pending_principal_amount",
|
"pending_principal_amount",
|
||||||
@@ -22,6 +23,7 @@
|
|||||||
"column_break_14",
|
"column_break_14",
|
||||||
"interest_amount",
|
"interest_amount",
|
||||||
"paid_interest_amount",
|
"paid_interest_amount",
|
||||||
|
"penalty_amount",
|
||||||
"section_break_15",
|
"section_break_15",
|
||||||
"process_loan_interest_accrual",
|
"process_loan_interest_accrual",
|
||||||
"repayment_schedule_name",
|
"repayment_schedule_name",
|
||||||
@@ -149,12 +151,25 @@
|
|||||||
"fieldtype": "Currency",
|
"fieldtype": "Currency",
|
||||||
"label": "Paid Interest Amount",
|
"label": "Paid Interest Amount",
|
||||||
"options": "Company:company:default_currency"
|
"options": "Company:company:default_currency"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "accrual_type",
|
||||||
|
"fieldtype": "Select",
|
||||||
|
"label": "Accrual Type",
|
||||||
|
"options": "Regular\nRepayment\nDisbursement"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "penalty_amount",
|
||||||
|
"fieldtype": "Currency",
|
||||||
|
"label": "Penalty Amount",
|
||||||
|
"options": "Company:company:default_currency"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"in_create": 1,
|
"in_create": 1,
|
||||||
|
"index_web_pages_for_search": 1,
|
||||||
"is_submittable": 1,
|
"is_submittable": 1,
|
||||||
"links": [],
|
"links": [],
|
||||||
"modified": "2020-04-16 11:24:23.258404",
|
"modified": "2020-10-10 03:12:58.204501",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "Loan Management",
|
"module": "Loan Management",
|
||||||
"name": "Loan Interest Accrual",
|
"name": "Loan Interest Accrual",
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
"loan_type",
|
"loan_type",
|
||||||
"loan",
|
"loan",
|
||||||
"process_type",
|
"process_type",
|
||||||
|
"accrual_type",
|
||||||
"amended_from"
|
"amended_from"
|
||||||
],
|
],
|
||||||
"fields": [
|
"fields": [
|
||||||
@@ -47,11 +48,18 @@
|
|||||||
"hidden": 1,
|
"hidden": 1,
|
||||||
"label": "Process Type",
|
"label": "Process Type",
|
||||||
"read_only": 1
|
"read_only": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "accrual_type",
|
||||||
|
"fieldtype": "Select",
|
||||||
|
"label": "Accrual Type",
|
||||||
|
"options": "Regular\nRepayment\nAccrual"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"index_web_pages_for_search": 1,
|
||||||
"is_submittable": 1,
|
"is_submittable": 1,
|
||||||
"links": [],
|
"links": [],
|
||||||
"modified": "2020-04-09 22:52:53.911416",
|
"modified": "2020-10-08 12:20:11.124769",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "Loan Management",
|
"module": "Loan Management",
|
||||||
"name": "Process Loan Interest Accrual",
|
"name": "Process Loan Interest Accrual",
|
||||||
|
|||||||
@@ -20,19 +20,20 @@ class ProcessLoanInterestAccrual(Document):
|
|||||||
|
|
||||||
if (not self.loan or not loan_doc.is_term_loan) and self.process_type != 'Term Loans':
|
if (not self.loan or not loan_doc.is_term_loan) and self.process_type != 'Term Loans':
|
||||||
make_accrual_interest_entry_for_demand_loans(self.posting_date, self.name,
|
make_accrual_interest_entry_for_demand_loans(self.posting_date, self.name,
|
||||||
open_loans = open_loans, loan_type = self.loan_type)
|
open_loans = open_loans, loan_type = self.loan_type, accrual_type=self.accrual_type)
|
||||||
|
|
||||||
if (not self.loan or loan_doc.is_term_loan) and self.process_type != 'Demand Loans':
|
if (not self.loan or loan_doc.is_term_loan) and self.process_type != 'Demand Loans':
|
||||||
make_accrual_interest_entry_for_term_loans(self.posting_date, self.name, term_loan=self.loan,
|
make_accrual_interest_entry_for_term_loans(self.posting_date, self.name, term_loan=self.loan,
|
||||||
loan_type=self.loan_type)
|
loan_type=self.loan_type)
|
||||||
|
|
||||||
|
|
||||||
def process_loan_interest_accrual_for_demand_loans(posting_date=None, loan_type=None, loan=None):
|
def process_loan_interest_accrual_for_demand_loans(posting_date=None, loan_type=None, loan=None, accrual_type="Regular"):
|
||||||
loan_process = frappe.new_doc('Process Loan Interest Accrual')
|
loan_process = frappe.new_doc('Process Loan Interest Accrual')
|
||||||
loan_process.posting_date = posting_date or nowdate()
|
loan_process.posting_date = posting_date or nowdate()
|
||||||
loan_process.loan_type = loan_type
|
loan_process.loan_type = loan_type
|
||||||
loan_process.process_type = 'Demand Loans'
|
loan_process.process_type = 'Demand Loans'
|
||||||
loan_process.loan = loan
|
loan_process.loan = loan
|
||||||
|
loan_process.accrual_type = accrual_type
|
||||||
|
|
||||||
loan_process.submit()
|
loan_process.submit()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user