Merge pull request #33661 from ruthra-kumar/performance_tuning_payment_reconciliation
perf: improve reconciliation performance for JE with 100s of accounts
This commit is contained in:
commit
9627b46ee7
@ -471,6 +471,7 @@ class PaymentReconciliation(Document):
|
|||||||
|
|
||||||
def build_qb_filter_conditions(self, get_invoices=False, get_return_invoices=False):
|
def build_qb_filter_conditions(self, get_invoices=False, get_return_invoices=False):
|
||||||
self.common_filter_conditions.clear()
|
self.common_filter_conditions.clear()
|
||||||
|
self.accounting_dimension_filter_conditions.clear()
|
||||||
self.ple_posting_date_filter.clear()
|
self.ple_posting_date_filter.clear()
|
||||||
ple = qb.DocType("Payment Ledger Entry")
|
ple = qb.DocType("Payment Ledger Entry")
|
||||||
|
|
||||||
|
@ -439,8 +439,7 @@ def reconcile_against_document(args): # nosemgrep
|
|||||||
# cancel advance entry
|
# cancel advance entry
|
||||||
doc = frappe.get_doc(voucher_type, voucher_no)
|
doc = frappe.get_doc(voucher_type, voucher_no)
|
||||||
frappe.flags.ignore_party_validation = True
|
frappe.flags.ignore_party_validation = True
|
||||||
gl_map = doc.build_gl_map()
|
_delete_pl_entries(voucher_type, voucher_no)
|
||||||
create_payment_ledger_entry(gl_map, cancel=1, adv_adj=1)
|
|
||||||
|
|
||||||
for entry in entries:
|
for entry in entries:
|
||||||
check_if_advance_entry_modified(entry)
|
check_if_advance_entry_modified(entry)
|
||||||
@ -452,11 +451,23 @@ def reconcile_against_document(args): # nosemgrep
|
|||||||
else:
|
else:
|
||||||
update_reference_in_payment_entry(entry, doc, do_not_save=True)
|
update_reference_in_payment_entry(entry, doc, do_not_save=True)
|
||||||
|
|
||||||
|
if doc.doctype == "Journal Entry":
|
||||||
|
try:
|
||||||
|
doc.validate_total_debit_and_credit()
|
||||||
|
except Exception as validation_exception:
|
||||||
|
raise frappe.ValidationError(_(f"Validation Error for {doc.name}")) from validation_exception
|
||||||
|
|
||||||
doc.save(ignore_permissions=True)
|
doc.save(ignore_permissions=True)
|
||||||
# re-submit advance entry
|
# re-submit advance entry
|
||||||
doc = frappe.get_doc(entry.voucher_type, entry.voucher_no)
|
doc = frappe.get_doc(entry.voucher_type, entry.voucher_no)
|
||||||
gl_map = doc.build_gl_map()
|
gl_map = doc.build_gl_map()
|
||||||
create_payment_ledger_entry(gl_map, cancel=0, adv_adj=1)
|
create_payment_ledger_entry(gl_map, update_outstanding="No", cancel=0, adv_adj=1)
|
||||||
|
|
||||||
|
# Only update outstanding for newly linked vouchers
|
||||||
|
for entry in entries:
|
||||||
|
update_voucher_outstanding(
|
||||||
|
entry.against_voucher_type, entry.against_voucher, entry.account, entry.party_type, entry.party
|
||||||
|
)
|
||||||
|
|
||||||
frappe.flags.ignore_party_validation = False
|
frappe.flags.ignore_party_validation = False
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user