From f4a43d07b00a5c13e30e3ac6677bb61864bf91e8 Mon Sep 17 00:00:00 2001 From: Rohit Waghchaure Date: Fri, 2 May 2025 14:27:53 +0530 Subject: [PATCH] fix: validation for difference account (cherry picked from commit fb819c558ebaf24fff9e6457729800ebd71e4718) --- .../stock/doctype/stock_entry/stock_entry.py | 22 ++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py index efa263a7573..a23ac8342a0 100644 --- a/erpnext/stock/doctype/stock_entry/stock_entry.py +++ b/erpnext/stock/doctype/stock_entry/stock_entry.py @@ -503,17 +503,29 @@ class StockEntry(StockController): ).format(frappe.bold(self.company)) ) - elif ( - self.is_opening == "Yes" - and frappe.db.get_value("Account", d.expense_account, "report_type") == "Profit and Loss" - ): + acc_details = frappe.get_cached_value( + "Account", + d.expense_account, + ["account_type", "report_type"], + as_dict=True, + ) + + if self.is_opening == "Yes" and acc_details.report_type == "Profit and Loss": frappe.throw( _( - "Difference Account must be a Asset/Liability type account, since this Stock Entry is an Opening Entry" + "Difference Account must be a Asset/Liability type account (Temporary Opening), since this Stock Entry is an Opening Entry" ), OpeningEntryAccountError, ) + if acc_details.account_type == "Stock": + frappe.throw( + _( + "At row {0}: the Difference Account must not be a Stock type account, please change the Account Type for the account {1} or select a different account" + ).format(d.idx, get_link_to_form("Account", d.expense_account)), + OpeningEntryAccountError, + ) + def validate_warehouse(self): """perform various (sometimes conditional) validations on warehouse"""