From ce1312764fead916fa4a6a486adcc58ce97aa014 Mon Sep 17 00:00:00 2001 From: Pugazhendhi Velu Date: Sun, 30 Nov 2025 05:14:02 +0000 Subject: [PATCH] fix(stock entry): use fg item expense account for direct manufacturing entry --- erpnext/stock/doctype/stock_entry/stock_entry.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py index 5f83b926510..67016b81f3e 100644 --- a/erpnext/stock/doctype/stock_entry/stock_entry.py +++ b/erpnext/stock/doctype/stock_entry/stock_entry.py @@ -577,6 +577,7 @@ class StockEntry(StockController, SubcontractingInwardController): "project": self.project, "uom": item.uom, "s_warehouse": item.s_warehouse, + "is_finished_item": item.is_finished_item, } ), for_update=True, @@ -609,6 +610,9 @@ class StockEntry(StockController, SubcontractingInwardController): if self.purpose == "Subcontracting Delivery": item.expense_account = frappe.get_value("Company", self.company, "default_expense_account") + if self.purpose == "Manufacture": + item.set("expense_account", item_details.get("expense_account")) + def validate_fg_completed_qty(self): if self.purpose != "Manufacture": return @@ -2078,7 +2082,9 @@ class StockEntry(StockController, SubcontractingInwardController): if self.purpose == "Material Issue": ret["expense_account"] = item.get("expense_account") or item_group_defaults.get("expense_account") - if self.purpose == "Manufacture" or not ret.get("expense_account"): + if (self.purpose == "Manufacture" and not args.get("is_finished_item")) or not ret.get( + "expense_account" + ): ret["expense_account"] = frappe.get_cached_value( "Company", self.company, "stock_adjustment_account" )