diff --git a/erpnext/accounts/doctype/bank_clearance/bank_clearance.py b/erpnext/accounts/doctype/bank_clearance/bank_clearance.py index 5895e67523a..042d405b164 100644 --- a/erpnext/accounts/doctype/bank_clearance/bank_clearance.py +++ b/erpnext/accounts/doctype/bank_clearance/bank_clearance.py @@ -89,46 +89,64 @@ class BankClearance(Document): @frappe.whitelist() def update_clearance_date(self): - clearance_date_updated = False + invalid_document = [] + invalid_cheque_date = [] + entries_to_update = [] + + def validate_entry(d): + is_valid = True + if not d.payment_document: + invalid_document.append(str(d.idx)) + is_valid = False + + if d.clearance_date and d.cheque_date and getdate(d.clearance_date) < getdate(d.cheque_date): + invalid_cheque_date.append(str(d.idx)) + is_valid = False + + return is_valid + for d in self.get("payment_entries"): - if d.clearance_date: - if not d.payment_document: - frappe.throw(_("Row #{0}: Payment document is required to complete the transaction")) - - if d.cheque_date and getdate(d.clearance_date) < getdate(d.cheque_date): - frappe.throw( - _("Row #{0}: For {1} Clearance date {2} cannot be before Cheque Date {3}").format( - d.idx, - get_link_to_form(d.payment_document, d.payment_entry), - d.clearance_date, - d.cheque_date, - ) - ) - - if d.clearance_date or self.include_reconciled_entries: + if validate_entry(d) and (d.clearance_date or self.include_reconciled_entries): if not d.clearance_date: d.clearance_date = None - if d.payment_document == "Sales Invoice": - frappe.db.set_value( - "Sales Invoice Payment", - {"parent": d.payment_entry, "account": self.get("account"), "amount": [">", 0]}, - "clearance_date", - d.clearance_date, - ) + entries_to_update.append(d) - else: - # using db_set to trigger notification - payment_entry = frappe.get_doc(d.payment_document, d.payment_entry) - payment_entry.db_set("clearance_date", d.clearance_date) + if invalid_document or invalid_cheque_date: + msg = _("
Please correct the following row(s):