feat: allow repost for pi
diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
index 5597271..fbe4e8b 100644
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
+++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
@@ -522,6 +522,31 @@
self.process_common_party_accounting()
+ def on_update_after_submit(self):
+ if hasattr(self, "repost_required"):
+ fields_to_check = [
+ "cash_bank_account",
+ "write_off_account" "unrealized_profit_loss_account",
+ ]
+ child_tables = {"items": ("expense_account",), "taxes": ("account_head",)}
+ self.needs_repost = self.check_if_fields_updated(fields_to_check, child_tables)
+ self.validate_deferred_accounting_before_repost()
+ self.validate_write_off_account()
+ self.validate_expense_account()
+ self.db_set("repost_required", self.needs_repost)
+
+ def validate_deferred_accounting_before_repost(self):
+ # validate if deferred expense is enabled for any item
+ # Don't allow to update the invoice if deferred expense is enabled
+ if self.needs_repost:
+ for item in self.get("items"):
+ if item.enable_deferred_expense:
+ frappe.throw(
+ _(
+ "Deferred Expense is enabled for item {0}. You cannot update the invoice after submission."
+ ).format(item.item_code)
+ )
+
def make_gl_entries(self, gl_entries=None, from_repost=False):
if not gl_entries:
gl_entries = self.get_gl_entries()