mirror of
https://github.com/frappe/erpnext.git
synced 2026-03-27 15:12:21 +01:00
fix(accounting): ensure proper removal of advance references during unreconcillation
(cherry picked from commit a7ec01bf21)
This commit is contained in:
@@ -947,19 +947,28 @@ def update_accounting_ledgers_after_reference_removal(
|
|||||||
adv_ple.run()
|
adv_ple.run()
|
||||||
|
|
||||||
|
|
||||||
def remove_ref_from_advance_section(ref_doc: object = None):
|
def remove_ref_from_advance_section(ref_doc: object = None, payment_name: str | None = None):
|
||||||
# TODO: this might need some testing
|
# TODO: this might need some testing
|
||||||
if ref_doc.doctype in ("Sales Invoice", "Purchase Invoice"):
|
if ref_doc.doctype in ("Sales Invoice", "Purchase Invoice"):
|
||||||
ref_doc.set("advances", [])
|
row_names = []
|
||||||
adv_type = qb.DocType(f"{ref_doc.doctype} Advance")
|
for adv in ref_doc.get("advances") or []:
|
||||||
qb.from_(adv_type).delete().where(adv_type.parent == ref_doc.name).run()
|
if adv.get("reference_name", None) == payment_name:
|
||||||
|
row_names.append(adv.name)
|
||||||
|
|
||||||
|
if not row_names:
|
||||||
|
return
|
||||||
|
|
||||||
|
child_table = (
|
||||||
|
"Sales Invoice Advance" if ref_doc.doctype == "Sales Invoice" else "Purchase Invoice Advance"
|
||||||
|
)
|
||||||
|
frappe.db.delete(child_table, {"name": ("in", row_names)})
|
||||||
|
|
||||||
|
|
||||||
def unlink_ref_doc_from_payment_entries(ref_doc: object = None, payment_name: str | None = None):
|
def unlink_ref_doc_from_payment_entries(ref_doc: object = None, payment_name: str | None = None):
|
||||||
remove_ref_doc_link_from_jv(ref_doc.doctype, ref_doc.name, payment_name)
|
remove_ref_doc_link_from_jv(ref_doc.doctype, ref_doc.name, payment_name)
|
||||||
remove_ref_doc_link_from_pe(ref_doc.doctype, ref_doc.name, payment_name)
|
remove_ref_doc_link_from_pe(ref_doc.doctype, ref_doc.name, payment_name)
|
||||||
update_accounting_ledgers_after_reference_removal(ref_doc.doctype, ref_doc.name, payment_name)
|
update_accounting_ledgers_after_reference_removal(ref_doc.doctype, ref_doc.name, payment_name)
|
||||||
remove_ref_from_advance_section(ref_doc)
|
remove_ref_from_advance_section(ref_doc, payment_name)
|
||||||
|
|
||||||
|
|
||||||
def remove_ref_doc_link_from_jv(
|
def remove_ref_doc_link_from_jv(
|
||||||
@@ -1026,7 +1035,6 @@ def remove_ref_doc_link_from_pe(
|
|||||||
query = query.where(per.parent == payment_name)
|
query = query.where(per.parent == payment_name)
|
||||||
|
|
||||||
reference_rows = query.run(as_dict=True)
|
reference_rows = query.run(as_dict=True)
|
||||||
|
|
||||||
if not reference_rows:
|
if not reference_rows:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user