From a8a8cfe3ff0323385d9d8890067b909960fef304 Mon Sep 17 00:00:00 2001 From: ruthra kumar Date: Fri, 21 Jun 2024 17:21:32 +0530 Subject: [PATCH] fix: incorrect against_account upon reposting --- .../accounts/doctype/purchase_invoice/purchase_invoice.py | 6 +++++- .../repost_accounting_ledger/repost_accounting_ledger.py | 8 +++++++- erpnext/accounts/doctype/sales_invoice/sales_invoice.py | 4 ++++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py index 89d1760072..010777edd2 100644 --- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py +++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py @@ -626,7 +626,7 @@ class PurchaseInvoice(BuyingController): item.idx, item.expense_account, self.company, _("Expense", context="Account Validation") ) - def set_against_expense_account(self): + def set_against_expense_account(self, force=False): against_accounts = [] for item in self.get("items"): if item.expense_account and (item.expense_account not in against_accounts): @@ -634,6 +634,10 @@ class PurchaseInvoice(BuyingController): self.against_expense_account = ",".join(against_accounts) + def force_set_against_expense_account(self): + self.set_against_expense_account() + frappe.db.set_value(self.doctype, self.name, "against_expense_account", self.against_expense_account) + def po_required(self): if frappe.db.get_single_value("Buying Settings", "po_required") == "Yes": if frappe.get_value( diff --git a/erpnext/accounts/doctype/repost_accounting_ledger/repost_accounting_ledger.py b/erpnext/accounts/doctype/repost_accounting_ledger/repost_accounting_ledger.py index 60e0d44ecb..cba365285a 100644 --- a/erpnext/accounts/doctype/repost_accounting_ledger/repost_accounting_ledger.py +++ b/erpnext/accounts/doctype/repost_accounting_ledger/repost_accounting_ledger.py @@ -140,6 +140,10 @@ def start_repost(account_repost_doc=str) -> None: doc.make_gl_entries_on_cancel() doc.docstatus = 1 + if doc.doctype == "Sales Invoice": + doc.force_set_against_income_account() + else: + doc.force_set_against_expense_account() doc.make_gl_entries() elif doc.doctype in ["Payment Entry", "Journal Entry", "Expense Claim"]: @@ -174,7 +178,9 @@ def validate_docs_for_deferred_accounting(sales_docs, purchase_docs): if docs_with_deferred_revenue or docs_with_deferred_expense: frappe.throw( _("Documents: {0} have deferred revenue/expense enabled for them. Cannot repost.").format( - frappe.bold(comma_and([x[0] for x in docs_with_deferred_expense + docs_with_deferred_revenue])) + frappe.bold( + comma_and([x[0] for x in docs_with_deferred_expense + docs_with_deferred_revenue]) + ) ) ) diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py index 86949405f7..a0bf89e7e9 100644 --- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py @@ -988,6 +988,10 @@ class SalesInvoice(SellingController): against_acc.append(d.income_account) self.against_income_account = ",".join(against_acc) + def force_set_against_income_account(self): + self.set_against_income_account() + frappe.db.set_value(self.doctype, self.name, "against_income_account", self.against_income_account) + def add_remarks(self): if not self.remarks: if self.po_no and self.po_date: -- GitLab