Merge pull request #48291 from ljain112/fix-bank-clearance
perf: use lazy doc for updating bank clearance_date
This commit is contained in:
@@ -89,26 +89,50 @@ class BankClearance(Document):
|
|||||||
|
|
||||||
@frappe.whitelist()
|
@frappe.whitelist()
|
||||||
def update_clearance_date(self):
|
def update_clearance_date(self):
|
||||||
clearance_date_updated = False
|
invalid_document = []
|
||||||
for d in self.get("payment_entries"):
|
invalid_cheque_date = []
|
||||||
if d.clearance_date:
|
entries_to_update = []
|
||||||
|
|
||||||
|
def validate_entry(d):
|
||||||
|
is_valid = True
|
||||||
if not d.payment_document:
|
if not d.payment_document:
|
||||||
frappe.throw(_("Row #{0}: Payment document is required to complete the transaction"))
|
invalid_document.append(str(d.idx))
|
||||||
|
is_valid = False
|
||||||
|
|
||||||
if d.cheque_date and getdate(d.clearance_date) < getdate(d.cheque_date):
|
if d.clearance_date and d.cheque_date and getdate(d.clearance_date) < getdate(d.cheque_date):
|
||||||
frappe.throw(
|
invalid_cheque_date.append(str(d.idx))
|
||||||
_("Row #{0}: For {1} Clearance date {2} cannot be before Cheque Date {3}").format(
|
is_valid = False
|
||||||
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:
|
return is_valid
|
||||||
|
|
||||||
|
for d in self.get("payment_entries"):
|
||||||
|
if validate_entry(d) and (d.clearance_date or self.include_reconciled_entries):
|
||||||
if not d.clearance_date:
|
if not d.clearance_date:
|
||||||
d.clearance_date = None
|
d.clearance_date = None
|
||||||
|
|
||||||
|
entries_to_update.append(d)
|
||||||
|
|
||||||
|
if invalid_document or invalid_cheque_date:
|
||||||
|
msg = _("<p>Please correct the following row(s):</p><ul>")
|
||||||
|
if invalid_document:
|
||||||
|
msg += _("<li>Payment document required for row(s): {0}</li>").format(
|
||||||
|
", ".join(invalid_document)
|
||||||
|
)
|
||||||
|
|
||||||
|
if invalid_cheque_date:
|
||||||
|
msg += _("<li>Clearance date must be after cheque date for row(s): {0}</li>").format(
|
||||||
|
", ".join(invalid_cheque_date)
|
||||||
|
)
|
||||||
|
|
||||||
|
msg += "</ul>"
|
||||||
|
frappe.throw(_(msg))
|
||||||
|
return
|
||||||
|
|
||||||
|
if not entries_to_update:
|
||||||
|
msgprint(_("Clearance Date not mentioned"))
|
||||||
|
return
|
||||||
|
|
||||||
|
for d in entries_to_update:
|
||||||
if d.payment_document == "Sales Invoice":
|
if d.payment_document == "Sales Invoice":
|
||||||
frappe.db.set_value(
|
frappe.db.set_value(
|
||||||
"Sales Invoice Payment",
|
"Sales Invoice Payment",
|
||||||
@@ -116,19 +140,13 @@ class BankClearance(Document):
|
|||||||
"clearance_date",
|
"clearance_date",
|
||||||
d.clearance_date,
|
d.clearance_date,
|
||||||
)
|
)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
# using db_set to trigger notification
|
# using db_set to trigger notification
|
||||||
payment_entry = frappe.get_doc(d.payment_document, d.payment_entry)
|
payment_entry = frappe.get_lazy_doc(d.payment_document, d.payment_entry)
|
||||||
payment_entry.db_set("clearance_date", d.clearance_date)
|
payment_entry.db_set("clearance_date", d.clearance_date)
|
||||||
|
|
||||||
clearance_date_updated = True
|
|
||||||
|
|
||||||
if clearance_date_updated:
|
|
||||||
self.get_payment_entries()
|
self.get_payment_entries()
|
||||||
msgprint(_("Clearance Date updated"))
|
msgprint(_("Clearance Date updated"))
|
||||||
else:
|
|
||||||
msgprint(_("Clearance Date not mentioned"))
|
|
||||||
|
|
||||||
|
|
||||||
def get_payment_entries_for_bank_clearance(
|
def get_payment_entries_for_bank_clearance(
|
||||||
|
|||||||
Reference in New Issue
Block a user