[fix] on jv cancel remove linkings from advance table of Sales/Purchase Invoice
diff --git a/erpnext/accounts/doctype/journal_entry/journal_entry.py b/erpnext/accounts/doctype/journal_entry/journal_entry.py
index 145ed81..a30fec9 100644
--- a/erpnext/accounts/doctype/journal_entry/journal_entry.py
+++ b/erpnext/accounts/doctype/journal_entry/journal_entry.py
@@ -64,11 +64,20 @@
from erpnext.accounts.utils import unlink_ref_doc_from_payment_entries
from erpnext.hr.doctype.salary_slip.salary_slip import unlink_ref_doc_from_salary_slip
unlink_ref_doc_from_payment_entries(self.doctype, self.name)
- unlink_ref_doc_from_salary_slip(self.name)
+ unlink_ref_doc_from_salary_slip(self.name)
self.make_gl_entries(1)
self.update_advance_paid()
self.update_expense_claim()
-
+ self.unlink_advance_entry_reference()
+
+ def unlink_advance_entry_reference(self):
+ for d in self.get("accounts"):
+ if d.is_advance and d.reference_type in ("Sales Invoice", "Purchase Invoice"):
+ doc = frappe.get_doc(d.reference_type, d.reference_name)
+ doc.delink_advance_entries(self.name)
+ d.reference_type = ''
+ d.reference_name = ''
+ d.db_update()
def validate_party(self):
for d in self.get("accounts"):
diff --git a/erpnext/utilities/transaction_base.py b/erpnext/utilities/transaction_base.py
index 3cc79ef..28d30ef 100644
--- a/erpnext/utilities/transaction_base.py
+++ b/erpnext/utilities/transaction_base.py
@@ -125,6 +125,15 @@
ret = None
return ret
+
+ def delink_advance_entries(self, jv):
+ total_allocated_amount = 0
+ for adv in self.advances:
+ if adv.reference_name == jv:
+ frappe.db.sql("""delete from `tab{0} Advance`
+ where name = %s""".format(self.doctype), adv.name)
+ total_allocated_amount += flt(adv.allocated_amount, adv.precision("allocated_amount"))
+ self.db_set("total_advance", total_allocated_amount)
def delete_events(ref_type, ref_name):
frappe.delete_doc("Event", frappe.db.sql_list("""select name from `tabEvent`