mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-25 07:54:46 +00:00
Merge pull request #27917 from frappe/mergify/bp/version-13-hotfix/pr-27896
fix: Status check for closed loans (backport #27896)
This commit is contained in:
@@ -334,7 +334,6 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"depends_on": "eval:doc.is_secured_loan",
|
"depends_on": "eval:doc.is_secured_loan",
|
||||||
"fetch_from": "loan_application.maximum_loan_amount",
|
|
||||||
"fieldname": "maximum_loan_amount",
|
"fieldname": "maximum_loan_amount",
|
||||||
"fieldtype": "Currency",
|
"fieldtype": "Currency",
|
||||||
"label": "Maximum Loan Amount",
|
"label": "Maximum Loan Amount",
|
||||||
@@ -360,7 +359,7 @@
|
|||||||
"index_web_pages_for_search": 1,
|
"index_web_pages_for_search": 1,
|
||||||
"is_submittable": 1,
|
"is_submittable": 1,
|
||||||
"links": [],
|
"links": [],
|
||||||
"modified": "2021-04-19 18:10:32.360818",
|
"modified": "2021-10-12 18:10:32.360818",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "Loan Management",
|
"module": "Loan Management",
|
||||||
"name": "Loan",
|
"name": "Loan",
|
||||||
|
|||||||
@@ -137,16 +137,23 @@ class Loan(AccountsController):
|
|||||||
frappe.throw(_("Loan amount is mandatory"))
|
frappe.throw(_("Loan amount is mandatory"))
|
||||||
|
|
||||||
def link_loan_security_pledge(self):
|
def link_loan_security_pledge(self):
|
||||||
if self.is_secured_loan:
|
if self.is_secured_loan and self.loan_application:
|
||||||
loan_security_pledge = frappe.db.get_value('Loan Security Pledge', {'loan_application': self.loan_application},
|
maximum_loan_value = frappe.db.get_value('Loan Security Pledge',
|
||||||
'name')
|
{
|
||||||
|
'loan_application': self.loan_application,
|
||||||
|
'status': 'Requested'
|
||||||
|
},
|
||||||
|
'sum(maximum_loan_value)'
|
||||||
|
)
|
||||||
|
|
||||||
if loan_security_pledge:
|
if maximum_loan_value:
|
||||||
frappe.db.set_value('Loan Security Pledge', loan_security_pledge, {
|
frappe.db.sql("""
|
||||||
'loan': self.name,
|
UPDATE `tabLoan Security Pledge`
|
||||||
'status': 'Pledged',
|
SET loan = %s, pledge_time = %s, status = 'Pledged'
|
||||||
'pledge_time': now_datetime()
|
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):
|
def unlink_loan_security_pledge(self):
|
||||||
pledges = frappe.get_all('Loan Security Pledge', fields=['name'], filters={'loan': self.name})
|
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 create_loan(source_name, target_doc=None, submit=0):
|
||||||
def update_accounts(source_doc, target_doc, source_parent):
|
def update_accounts(source_doc, target_doc, source_parent):
|
||||||
account_details = frappe.get_all("Loan Type",
|
account_details = frappe.get_all("Loan Type",
|
||||||
fields=["mode_of_payment", "payment_account","loan_account", "interest_income_account", "penalty_income_account"],
|
fields=["mode_of_payment", "payment_account","loan_account", "interest_income_account", "penalty_income_account"],
|
||||||
filters = {'name': source_doc.loan_type}
|
filters = {'name': source_doc.loan_type})[0]
|
||||||
)[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.mode_of_payment = account_details.mode_of_payment
|
||||||
target_doc.payment_account = account_details.payment_account
|
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)
|
security_value = get_total_pledged_security_value(loan)
|
||||||
|
|
||||||
if loan_details.is_secured_loan and not on_current_security_price:
|
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:
|
if not security_value and not loan_details.is_secured_loan:
|
||||||
security_value = flt(loan_details.loan_amount)
|
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
|
disbursal_amount = loan_details.loan_amount - loan_details.disbursed_amount
|
||||||
|
|
||||||
return disbursal_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:
|
if due_date and not final_due_date:
|
||||||
final_due_date = add_days(due_date, loan_type_details.grace_period_in_days)
|
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 \
|
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
|
- against_loan_doc.total_interest_payable - against_loan_doc.written_off_amount
|
||||||
else:
|
else:
|
||||||
|
|||||||
Reference in New Issue
Block a user