From 4ef7e6424ae3e58aead35844680ee1633606213e Mon Sep 17 00:00:00 2001 From: Venkatesh <47534423+venkat102@users.noreply.github.com> Date: Wed, 5 Mar 2025 16:32:03 +0530 Subject: [PATCH] fix: set stock adjustment account in difference account (#45606) * fix: set stock adjustment account in difference account * fix(stock entry): fetch stock difference account for manufacture entry --- .../stock/doctype/stock_entry/stock_entry.py | 46 +++++++++++++++---- 1 file changed, 36 insertions(+), 10 deletions(-) diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py index bf11efce993..a85903522b0 100644 --- a/erpnext/stock/doctype/stock_entry/stock_entry.py +++ b/erpnext/stock/doctype/stock_entry/stock_entry.py @@ -1645,17 +1645,38 @@ class StockEntry(StockController): @frappe.whitelist() def get_item_details(self, args: ItemDetailsCtx = None, for_update=False): - item = frappe.db.sql( - """select i.name, i.stock_uom, i.description, i.image, i.item_name, i.item_group, - i.has_batch_no, i.sample_quantity, i.has_serial_no, i.allow_alternative_item, - id.expense_account, id.buying_cost_center - from `tabItem` i LEFT JOIN `tabItem Default` id ON i.name=id.parent and id.company=%s - where i.name=%s - and i.disabled=0 - and (i.end_of_life is null or i.end_of_life<'1900-01-01' or i.end_of_life > %s)""", - (self.company, args.get("item_code"), nowdate()), - as_dict=1, + item = frappe.qb.DocType("Item") + item_default = frappe.qb.DocType("Item Default") + + query = ( + frappe.qb.from_(item) + .left_join(item_default) + .on((item.name == item_default.parent) & (item_default.company == self.company)) + .select( + item.name, + item.stock_uom, + item.description, + item.image, + item.item_name, + item.item_group, + item.has_batch_no, + item.sample_quantity, + item.has_serial_no, + item.allow_alternative_item, + item_default.expense_account, + item_default.buying_cost_center, + ) + .where( + (item.name == args.get("item_code")) + & (item.disabled == 0) + & ( + (item.end_of_life.isnull()) + | (item.end_of_life < "1900-01-01") + | (item.end_of_life > nowdate()) + ) + ) ) + item = query.run(as_dict=True) if not item: frappe.throw( @@ -1698,6 +1719,11 @@ class StockEntry(StockController): if self.purpose == "Material Issue": ret["expense_account"] = item.get("expense_account") or item_group_defaults.get("expense_account") + if self.purpose == "Manufacture": + ret["expense_account"] = frappe.get_cached_value( + "Company", self.company, "stock_adjustment_account" + ) + for company_field, field in { "stock_adjustment_account": "expense_account", "cost_center": "cost_center",