fix: Status check for closed loans (#27896)
* fix: Status check for closed loans * fix: Incorrect maximum loan amount update * fix: Linting issues
This commit is contained in:
commit
3750a88568
@ -334,7 +334,6 @@
|
||||
},
|
||||
{
|
||||
"depends_on": "eval:doc.is_secured_loan",
|
||||
"fetch_from": "loan_application.maximum_loan_amount",
|
||||
"fieldname": "maximum_loan_amount",
|
||||
"fieldtype": "Currency",
|
||||
"label": "Maximum Loan Amount",
|
||||
@ -360,7 +359,7 @@
|
||||
"index_web_pages_for_search": 1,
|
||||
"is_submittable": 1,
|
||||
"links": [],
|
||||
"modified": "2021-04-19 18:10:32.360818",
|
||||
"modified": "2021-10-12 18:10:32.360818",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Loan Management",
|
||||
"name": "Loan",
|
||||
|
@ -137,16 +137,23 @@ class Loan(AccountsController):
|
||||
frappe.throw(_("Loan amount is mandatory"))
|
||||
|
||||
def link_loan_security_pledge(self):
|
||||
if self.is_secured_loan:
|
||||
loan_security_pledge = frappe.db.get_value('Loan Security Pledge', {'loan_application': self.loan_application},
|
||||
'name')
|
||||
if self.is_secured_loan and self.loan_application:
|
||||
maximum_loan_value = frappe.db.get_value('Loan Security Pledge',
|
||||
{
|
||||
'loan_application': self.loan_application,
|
||||
'status': 'Requested'
|
||||
},
|
||||
'sum(maximum_loan_value)'
|
||||
)
|
||||
|
||||
if loan_security_pledge:
|
||||
frappe.db.set_value('Loan Security Pledge', loan_security_pledge, {
|
||||
'loan': self.name,
|
||||
'status': 'Pledged',
|
||||
'pledge_time': now_datetime()
|
||||
})
|
||||
if maximum_loan_value:
|
||||
frappe.db.sql("""
|
||||
UPDATE `tabLoan Security Pledge`
|
||||
SET loan = %s, pledge_time = %s, status = 'Pledged'
|
||||
WHERE status = 'Requested' and loan_application = %s
|
||||
""", (self.name, now_datetime(), self.loan_application))
|
||||
|
||||
self.db_set('maximum_loan_amount', maximum_loan_value)
|
||||
|
||||
def unlink_loan_security_pledge(self):
|
||||
pledges = frappe.get_all('Loan Security Pledge', fields=['name'], filters={'loan': self.name})
|
||||
|
@ -130,10 +130,11 @@ class LoanApplication(Document):
|
||||
def create_loan(source_name, target_doc=None, submit=0):
|
||||
def update_accounts(source_doc, target_doc, source_parent):
|
||||
account_details = frappe.get_all("Loan Type",
|
||||
fields=["mode_of_payment", "payment_account","loan_account", "interest_income_account", "penalty_income_account"],
|
||||
filters = {'name': source_doc.loan_type}
|
||||
)[0]
|
||||
fields=["mode_of_payment", "payment_account","loan_account", "interest_income_account", "penalty_income_account"],
|
||||
filters = {'name': source_doc.loan_type})[0]
|
||||
|
||||
if source_doc.is_secured_loan:
|
||||
target_doc.maximum_loan_amount = 0
|
||||
|
||||
target_doc.mode_of_payment = account_details.mode_of_payment
|
||||
target_doc.payment_account = account_details.payment_account
|
||||
|
@ -198,7 +198,7 @@ def get_disbursal_amount(loan, on_current_security_price=0):
|
||||
security_value = get_total_pledged_security_value(loan)
|
||||
|
||||
if loan_details.is_secured_loan and not on_current_security_price:
|
||||
security_value = flt(loan_details.maximum_loan_amount)
|
||||
security_value = get_maximum_amount_as_per_pledged_security(loan)
|
||||
|
||||
if not security_value and not loan_details.is_secured_loan:
|
||||
security_value = flt(loan_details.loan_amount)
|
||||
@ -209,3 +209,6 @@ def get_disbursal_amount(loan, on_current_security_price=0):
|
||||
disbursal_amount = loan_details.loan_amount - loan_details.disbursed_amount
|
||||
|
||||
return disbursal_amount
|
||||
|
||||
def get_maximum_amount_as_per_pledged_security(loan):
|
||||
return flt(frappe.db.get_value('Loan Security Pledge', {'loan': loan}, 'sum(maximum_loan_value)'))
|
||||
|
@ -411,7 +411,7 @@ def get_amounts(amounts, against_loan, posting_date):
|
||||
if due_date and not final_due_date:
|
||||
final_due_date = add_days(due_date, loan_type_details.grace_period_in_days)
|
||||
|
||||
if against_loan_doc.status in ('Disbursed', 'Loan Closure Requested', 'Closed'):
|
||||
if against_loan_doc.status in ('Disbursed', 'Closed') or against_loan_doc.disbursed_amount >= against_loan_doc.loan_amount:
|
||||
pending_principal_amount = against_loan_doc.total_payment - against_loan_doc.total_principal_paid \
|
||||
- against_loan_doc.total_interest_payable - against_loan_doc.written_off_amount
|
||||
else:
|
||||
|
Loading…
x
Reference in New Issue
Block a user