fix: Simply cancel reverse entries
diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
index deb905b..07173a3 100644
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
+++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
@@ -532,10 +532,7 @@
def make_gl_entries(self, gl_entries=None, from_repost=False):
if not gl_entries:
- if self.docstatus == 1:
- gl_entries = self.get_gl_entries()
- else:
- gl_entries = self.get_gl_entries(cancel=1)
+ gl_entries = self.get_gl_entries()
if gl_entries:
update_outstanding = "No" if (cint(self.is_paid) or self.write_off_account) else "Yes"
@@ -551,7 +548,13 @@
provisional_entries = [a for a in gl_entries if a.voucher_type == "Purchase Receipt"]
make_reverse_gl_entries(voucher_type=self.doctype, voucher_no=self.name)
if provisional_entries:
- make_gl_entries(provisional_entries)
+ for entry in provisional_entries:
+ frappe.db.set_value(
+ "GL Entry",
+ {"voucher_type": "Purchase Receipt", "voucher_detail_no": entry.voucher_detail_no},
+ "is_cancelled",
+ 1,
+ )
if update_outstanding == "No":
update_outstanding_amt(
@@ -565,7 +568,7 @@
elif self.docstatus == 2 and cint(self.update_stock) and self.auto_accounting_for_stock:
make_reverse_gl_entries(voucher_type=self.doctype, voucher_no=self.name)
- def get_gl_entries(self, warehouse_account=None, cancel=0):
+ def get_gl_entries(self, warehouse_account=None):
self.auto_accounting_for_stock = erpnext.is_perpetual_inventory_enabled(self.company)
if self.auto_accounting_for_stock:
self.stock_received_but_not_billed = self.get_company_default("stock_received_but_not_billed")
@@ -578,7 +581,7 @@
gl_entries = []
self.make_supplier_gl_entry(gl_entries)
- self.make_item_gl_entries(gl_entries, cancel=cancel)
+ self.make_item_gl_entries(gl_entries)
self.make_discount_gl_entries(gl_entries)
if self.check_asset_cwip_enabled():
@@ -645,7 +648,7 @@
)
)
- def make_item_gl_entries(self, gl_entries, cancel=0):
+ def make_item_gl_entries(self, gl_entries):
# item gl entries
stock_items = self.get_stock_items()
if self.update_stock and self.auto_accounting_for_stock:
@@ -842,7 +845,7 @@
if expense_booked_in_pr:
# Intentionally passing purchase invoice item to handle partial billing
purchase_receipt_doc.add_provisional_gl_entry(
- item, gl_entries, self.posting_date, provisional_account, reverse=not cancel
+ item, gl_entries, self.posting_date, provisional_account, reverse=1
)
if not self.is_internal_transfer():