fix: prevent deleting repost queue for cancelled transactions
diff --git a/erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.py b/erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.py
index ec1d140..54c00d1 100644
--- a/erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.py
+++ b/erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.py
@@ -61,6 +61,22 @@
repost(self)
+ def before_cancel(self):
+ self.check_pending_repost_against_cancelled_transaction()
+
+ def check_pending_repost_against_cancelled_transaction(self):
+ if self.status not in ("Queued", "In Progress"):
+ return
+
+ if not (self.voucher_no and self.voucher_no):
+ return
+
+ transaction_status = frappe.db.get_value(self.voucher_type, self.voucher_no, "docstatus")
+ if transaction_status == 2:
+ msg = _("Cannot cancel as processing of cancelled documents is pending.")
+ msg += "<br>" + _("Please try again in an hour.")
+ frappe.throw(msg, title=_("Pending processing"))
+
@frappe.whitelist()
def restart_reposting(self):
self.set_status("Queued", write=False)
diff --git a/erpnext/stock/stock_ledger.py b/erpnext/stock/stock_ledger.py
index 3e0ddab..b7fd65b 100644
--- a/erpnext/stock/stock_ledger.py
+++ b/erpnext/stock/stock_ledger.py
@@ -178,9 +178,9 @@
)
if repost_entry.status == "Queued":
doc = frappe.get_doc("Repost Item Valuation", repost_entry.name)
+ doc.status = "Skipped"
doc.flags.ignore_permissions = True
doc.cancel()
- doc.delete()
def set_as_cancel(voucher_type, voucher_no):