fix: Prevent non sequential repayment entries
This commit is contained in:
parent
61fb9bf869
commit
a2e4564464
@ -21,6 +21,7 @@ class LoanRepayment(AccountsController):
|
|||||||
def validate(self):
|
def validate(self):
|
||||||
amounts = calculate_amounts(self.against_loan, self.posting_date)
|
amounts = calculate_amounts(self.against_loan, self.posting_date)
|
||||||
self.set_missing_values(amounts)
|
self.set_missing_values(amounts)
|
||||||
|
self.check_future_entries()
|
||||||
self.validate_amount()
|
self.validate_amount()
|
||||||
self.allocate_amounts(amounts)
|
self.allocate_amounts(amounts)
|
||||||
|
|
||||||
@ -30,6 +31,7 @@ class LoanRepayment(AccountsController):
|
|||||||
def on_submit(self):
|
def on_submit(self):
|
||||||
self.update_paid_amount()
|
self.update_paid_amount()
|
||||||
self.make_gl_entries()
|
self.make_gl_entries()
|
||||||
|
#self.repost_future_loan_interest_accruals()
|
||||||
|
|
||||||
def on_cancel(self):
|
def on_cancel(self):
|
||||||
self.mark_as_unpaid()
|
self.mark_as_unpaid()
|
||||||
@ -63,6 +65,13 @@ class LoanRepayment(AccountsController):
|
|||||||
if amounts.get('due_date'):
|
if amounts.get('due_date'):
|
||||||
self.due_date = amounts.get('due_date')
|
self.due_date = amounts.get('due_date')
|
||||||
|
|
||||||
|
def check_future_entries(self):
|
||||||
|
future_repayment_date = frappe.db.get_value("Loan Repayment", {"posting_date": (">", self.posting_date),
|
||||||
|
"docstatus": 1}, 'posting_date')
|
||||||
|
|
||||||
|
if future_repayment_date:
|
||||||
|
frappe.throw("Repayment already made till date {0}".format(getdate(future_repayment_date)))
|
||||||
|
|
||||||
def validate_amount(self):
|
def validate_amount(self):
|
||||||
precision = cint(frappe.db.get_default("currency_precision")) or 2
|
precision = cint(frappe.db.get_default("currency_precision")) or 2
|
||||||
|
|
||||||
@ -265,6 +274,10 @@ class LoanRepayment(AccountsController):
|
|||||||
if gle_map:
|
if gle_map:
|
||||||
make_gl_entries(gle_map, cancel=cancel, adv_adj=adv_adj, merge_entries=False)
|
make_gl_entries(gle_map, cancel=cancel, adv_adj=adv_adj, merge_entries=False)
|
||||||
|
|
||||||
|
# def repost_future_loan_interest_accruals(self):
|
||||||
|
# future_lias = frappe.db.get_all("Loan Interest Accrual", {"docstatus": 1, "posting_date": (">", self.posting_date)})
|
||||||
|
# if future_lias:
|
||||||
|
|
||||||
def create_repayment_entry(loan, applicant, company, posting_date, loan_type,
|
def create_repayment_entry(loan, applicant, company, posting_date, loan_type,
|
||||||
payment_type, interest_payable, payable_principal_amount, amount_paid, penalty_amount=None):
|
payment_type, interest_payable, payable_principal_amount, amount_paid, penalty_amount=None):
|
||||||
|
|
||||||
@ -284,8 +297,7 @@ def create_repayment_entry(loan, applicant, company, posting_date, loan_type,
|
|||||||
|
|
||||||
return lr
|
return lr
|
||||||
|
|
||||||
def get_accrued_interest_entries(against_loan):
|
def get_accrued_interest_entries(against_loan, posting_date):
|
||||||
|
|
||||||
unpaid_accrued_entries = frappe.db.sql(
|
unpaid_accrued_entries = frappe.db.sql(
|
||||||
"""
|
"""
|
||||||
SELECT name, posting_date, interest_amount - paid_interest_amount as interest_amount,
|
SELECT name, posting_date, interest_amount - paid_interest_amount as interest_amount,
|
||||||
@ -295,12 +307,13 @@ def get_accrued_interest_entries(against_loan):
|
|||||||
`tabLoan Interest Accrual`
|
`tabLoan Interest Accrual`
|
||||||
WHERE
|
WHERE
|
||||||
loan = %s
|
loan = %s
|
||||||
|
AND posting_date <= %s
|
||||||
AND (interest_amount - paid_interest_amount > 0 OR
|
AND (interest_amount - paid_interest_amount > 0 OR
|
||||||
payable_principal_amount - paid_principal_amount > 0)
|
payable_principal_amount - paid_principal_amount > 0)
|
||||||
AND
|
AND
|
||||||
docstatus = 1
|
docstatus = 1
|
||||||
ORDER BY posting_date
|
ORDER BY posting_date
|
||||||
""", (against_loan), as_dict=1)
|
""", (against_loan, posting_date), as_dict=1)
|
||||||
|
|
||||||
return unpaid_accrued_entries
|
return unpaid_accrued_entries
|
||||||
|
|
||||||
|
|||||||
@ -1050,7 +1050,7 @@ class SalarySlip(TransactionBase):
|
|||||||
repayment_entry.save()
|
repayment_entry.save()
|
||||||
repayment_entry.submit()
|
repayment_entry.submit()
|
||||||
|
|
||||||
loan.loan_repayment_entry = repayment_entry.name
|
frappe.db.set_value("Salary Slip Loan", loan.name, "loan_repayment_entry", repayment_entry.name)
|
||||||
|
|
||||||
def cancel_loan_repayment_entry(self):
|
def cancel_loan_repayment_entry(self):
|
||||||
for loan in self.loans:
|
for loan in self.loans:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user