fix: Loan Security unpledge on loan cancel
diff --git a/erpnext/loan_management/doctype/loan/loan.js b/erpnext/loan_management/doctype/loan/loan.js
index 682b574..0dc3bf8 100644
--- a/erpnext/loan_management/doctype/loan/loan.js
+++ b/erpnext/loan_management/doctype/loan/loan.js
@@ -11,6 +11,9 @@
}
},
onload: function (frm) {
+ // Ignore loan security pledge on cancel of loan
+ frm.ignore_doctypes_on_cancel_all = ["Loan Security Pledge"];
+
frm.set_query("loan_application", function () {
return {
"filters": {
diff --git a/erpnext/loan_management/doctype/loan/loan.py b/erpnext/loan_management/doctype/loan/loan.py
index 1fb0805..2d705fc 100644
--- a/erpnext/loan_management/doctype/loan/loan.py
+++ b/erpnext/loan_management/doctype/loan/loan.py
@@ -138,9 +138,12 @@
})
def unlink_loan_security_pledge(self):
- frappe.db.sql("""UPDATE `tabLoan Security Pledge` SET
- loan = '', status = 'Unpledged'
- where name = %s """, (self.loan_security_pledge))
+ pledges = frappe.get_all('Loan Security Pledge', fields=['name'], filters={'loan': self.name})
+ pledge_list = [d.name for d in pledges]
+ if pledge_list:
+ frappe.db.sql("""UPDATE `tabLoan Security Pledge` SET
+ loan = '', status = 'Unpledged'
+ where name in (%s) """ % (', '.join(['%s']*len(pledge_list))), tuple(pledge_list))
def update_total_amount_paid(doc):
total_amount_paid = 0