fix: Unaccrued interest after disbursal
This commit is contained in:
parent
2c97244bad
commit
cd2c90451e
@ -295,8 +295,7 @@
|
|||||||
"default": "0",
|
"default": "0",
|
||||||
"fieldname": "is_secured_loan",
|
"fieldname": "is_secured_loan",
|
||||||
"fieldtype": "Check",
|
"fieldtype": "Check",
|
||||||
"label": "Is Secured Loan",
|
"label": "Is Secured Loan"
|
||||||
"read_only": 1
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"default": "0",
|
"default": "0",
|
||||||
@ -351,7 +350,7 @@
|
|||||||
"index_web_pages_for_search": 1,
|
"index_web_pages_for_search": 1,
|
||||||
"is_submittable": 1,
|
"is_submittable": 1,
|
||||||
"links": [],
|
"links": [],
|
||||||
"modified": "2020-10-21 09:12:26.809228",
|
"modified": "2020-10-22 11:03:43.697394",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "Loan Management",
|
"module": "Loan Management",
|
||||||
"name": "Loan",
|
"name": "Loan",
|
||||||
|
@ -210,21 +210,21 @@ def make_loan_interest_accrual_entry(args):
|
|||||||
|
|
||||||
|
|
||||||
def get_no_of_days_for_interest_accural(loan, posting_date):
|
def get_no_of_days_for_interest_accural(loan, posting_date):
|
||||||
last_interest_accrual_date = get_last_accural_date_in_current_month(loan)
|
last_interest_accrual_date = get_last_accural_date(loan.name)
|
||||||
|
|
||||||
no_of_days = date_diff(posting_date or nowdate(), last_interest_accrual_date) + 1
|
no_of_days = date_diff(posting_date or nowdate(), last_interest_accrual_date) + 1
|
||||||
|
|
||||||
return no_of_days
|
return no_of_days
|
||||||
|
|
||||||
def get_last_accural_date_in_current_month(loan):
|
def get_last_accural_date(loan):
|
||||||
last_posting_date = frappe.db.sql(""" SELECT MAX(posting_date) from `tabLoan Interest Accrual`
|
last_posting_date = frappe.db.sql(""" SELECT MAX(posting_date) from `tabLoan Interest Accrual`
|
||||||
WHERE loan = %s""", (loan.name))
|
WHERE loan = %s""", (loan))
|
||||||
|
|
||||||
if last_posting_date[0][0]:
|
if last_posting_date[0][0]:
|
||||||
# interest for last interest accrual date is already booked, so add 1 day
|
# interest for last interest accrual date is already booked, so add 1 day
|
||||||
return add_days(last_posting_date[0][0], 1)
|
return add_days(last_posting_date[0][0], 1)
|
||||||
else:
|
else:
|
||||||
return loan.disbursement_date
|
return frappe.db.get_value('Loan', loan, 'disbursement_date')
|
||||||
|
|
||||||
def days_in_year(year):
|
def days_in_year(year):
|
||||||
days = 365
|
days = 365
|
||||||
|
@ -14,7 +14,7 @@ from erpnext.controllers.accounts_controller import AccountsController
|
|||||||
from erpnext.accounts.general_ledger import make_gl_entries
|
from erpnext.accounts.general_ledger import make_gl_entries
|
||||||
from erpnext.loan_management.doctype.loan_security_shortfall.loan_security_shortfall import update_shortfall_status
|
from erpnext.loan_management.doctype.loan_security_shortfall.loan_security_shortfall import update_shortfall_status
|
||||||
from erpnext.loan_management.doctype.process_loan_interest_accrual.process_loan_interest_accrual import process_loan_interest_accrual_for_demand_loans
|
from erpnext.loan_management.doctype.process_loan_interest_accrual.process_loan_interest_accrual import process_loan_interest_accrual_for_demand_loans
|
||||||
from erpnext.loan_management.doctype.loan_interest_accrual.loan_interest_accrual import get_per_day_interest
|
from erpnext.loan_management.doctype.loan_interest_accrual.loan_interest_accrual import get_per_day_interest, get_last_accural_date
|
||||||
|
|
||||||
class LoanRepayment(AccountsController):
|
class LoanRepayment(AccountsController):
|
||||||
|
|
||||||
@ -76,14 +76,15 @@ class LoanRepayment(AccountsController):
|
|||||||
if self.total_interest_paid > self.interest_payable:
|
if self.total_interest_paid > self.interest_payable:
|
||||||
if not self.is_term_loan:
|
if not self.is_term_loan:
|
||||||
# get last loan interest accrual date
|
# get last loan interest accrual date
|
||||||
last_accrual_date = frappe.get_value('Loan Interest Accrual', {'loan': self.against_loan}, 'MAX(posting_date)')
|
last_accrual_date = get_last_accural_date(self.against_loan)
|
||||||
|
|
||||||
# get posting date upto which interest has to be accrued
|
# get posting date upto which interest has to be accrued
|
||||||
per_day_interest = flt(get_per_day_interest(self.pending_principal_amount,
|
per_day_interest = flt(get_per_day_interest(self.pending_principal_amount,
|
||||||
self.rate_of_interest, self.posting_date), 2)
|
self.rate_of_interest, self.posting_date), 2)
|
||||||
|
|
||||||
no_of_days = flt(flt(self.total_interest_paid - self.interest_payable,
|
no_of_days = flt(flt(self.total_interest_paid - self.interest_payable,
|
||||||
precision)/per_day_interest, 0)
|
precision)/per_day_interest, 0) - 1
|
||||||
|
|
||||||
|
|
||||||
posting_date = add_days(last_accrual_date, no_of_days)
|
posting_date = add_days(last_accrual_date, no_of_days)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user