From 4ca5e9eef8c7dbe9b99feb25a9dfea08efb26367 Mon Sep 17 00:00:00 2001 From: Pugazhendhi Velu Date: Sun, 30 Nov 2025 05:14:02 +0000 Subject: [PATCH 1/4] fix(stock entry): use fg item expense account for direct manufacturing entry (cherry picked from commit ce1312764fead916fa4a6a486adcc58ce97aa014) # Conflicts: # erpnext/stock/doctype/stock_entry/stock_entry.py --- erpnext/stock/doctype/stock_entry/stock_entry.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py index 9664ed67498..6797c2d4384 100644 --- a/erpnext/stock/doctype/stock_entry/stock_entry.py +++ b/erpnext/stock/doctype/stock_entry/stock_entry.py @@ -462,6 +462,7 @@ class StockEntry(StockController): "project": self.project, "uom": item.uom, "s_warehouse": item.s_warehouse, + "is_finished_item": item.is_finished_item, } ), for_update=True, @@ -491,6 +492,15 @@ class StockEntry(StockController): flt(item.qty) * flt(item.conversion_factor), self.precision("transfer_qty", item) ) +<<<<<<< HEAD +======= + 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")) + +>>>>>>> ce1312764f (fix(stock entry): use fg item expense account for direct manufacturing entry) def validate_fg_completed_qty(self): item_wise_qty = {} if self.purpose == "Manufacture" and self.work_order: @@ -1774,7 +1784,9 @@ 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" 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" ) From 4553d04c3884213965942e5be9f20ad8b4e2ce3c Mon Sep 17 00:00:00 2001 From: Pugazhendhi Velu Date: Sun, 30 Nov 2025 05:17:17 +0000 Subject: [PATCH 2/4] test: add test for fg item expense account in direct manufacturing (cherry picked from commit ba2411b4ee6f0b2b7abc546fde6baa791e178171) # Conflicts: # erpnext/stock/doctype/stock_entry/test_stock_entry.py --- erpnext/stock/doctype/stock_entry/test_stock_entry.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/erpnext/stock/doctype/stock_entry/test_stock_entry.py b/erpnext/stock/doctype/stock_entry/test_stock_entry.py index cde5be4d6ee..966844e26ff 100644 --- a/erpnext/stock/doctype/stock_entry/test_stock_entry.py +++ b/erpnext/stock/doctype/stock_entry/test_stock_entry.py @@ -1267,6 +1267,7 @@ class TestStockEntry(FrappeTestCase): frappe._dict(item_code="_Test FG Item", qty=4, t_warehouse="_Test Warehouse 1 - _TC"), ], ) + frappe.db.set_value("Company", "_Test Company", "stock_adjustment_account", "Stock Adjustment - _TC") # SE must have atleast one FG self.assertRaises(FinishedGoodError, se.save) @@ -1284,7 +1285,14 @@ class TestStockEntry(FrappeTestCase): self.assertEqual(se.value_difference, 0.0) self.assertEqual(se.total_incoming_value, se.total_outgoing_value) +<<<<<<< HEAD @change_settings("Stock Settings", {"allow_negative_stock": 0}) +======= + self.assertEqual(se.items[0].expense_account, "Stock Adjustment - _TC") + self.assertEqual(se.items[1].expense_account, "_Test Account Cost for Goods Sold - _TC") + + @IntegrationTestCase.change_settings("Stock Settings", {"allow_negative_stock": 0}) +>>>>>>> ba2411b4ee (test: add test for fg item expense account in direct manufacturing) def test_future_negative_sle(self): # Initialize item, batch, warehouse, opening qty item_code = "_Test Future Neg Item" From b2ea5620b2077422ff46385eba2692773b335f34 Mon Sep 17 00:00:00 2001 From: rohitwaghchaure Date: Tue, 2 Dec 2025 17:42:18 +0530 Subject: [PATCH 3/4] chore: fix conflicts Removed the expense account assignment for subcontracting delivery. --- erpnext/stock/doctype/stock_entry/stock_entry.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py index 6797c2d4384..e221595061d 100644 --- a/erpnext/stock/doctype/stock_entry/stock_entry.py +++ b/erpnext/stock/doctype/stock_entry/stock_entry.py @@ -492,15 +492,9 @@ class StockEntry(StockController): flt(item.qty) * flt(item.conversion_factor), self.precision("transfer_qty", item) ) -<<<<<<< HEAD -======= - 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")) ->>>>>>> ce1312764f (fix(stock entry): use fg item expense account for direct manufacturing entry) def validate_fg_completed_qty(self): item_wise_qty = {} if self.purpose == "Manufacture" and self.work_order: From b1b6953aed18e8a2f4edfdb047d04eb52c33c12d Mon Sep 17 00:00:00 2001 From: rohitwaghchaure Date: Tue, 2 Dec 2025 17:44:17 +0530 Subject: [PATCH 4/4] chore: fix conflicts --- erpnext/stock/doctype/stock_entry/test_stock_entry.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/erpnext/stock/doctype/stock_entry/test_stock_entry.py b/erpnext/stock/doctype/stock_entry/test_stock_entry.py index 966844e26ff..aa5f0ae1045 100644 --- a/erpnext/stock/doctype/stock_entry/test_stock_entry.py +++ b/erpnext/stock/doctype/stock_entry/test_stock_entry.py @@ -1285,14 +1285,10 @@ class TestStockEntry(FrappeTestCase): self.assertEqual(se.value_difference, 0.0) self.assertEqual(se.total_incoming_value, se.total_outgoing_value) -<<<<<<< HEAD - @change_settings("Stock Settings", {"allow_negative_stock": 0}) -======= self.assertEqual(se.items[0].expense_account, "Stock Adjustment - _TC") self.assertEqual(se.items[1].expense_account, "_Test Account Cost for Goods Sold - _TC") - @IntegrationTestCase.change_settings("Stock Settings", {"allow_negative_stock": 0}) ->>>>>>> ba2411b4ee (test: add test for fg item expense account in direct manufacturing) + @change_settings("Stock Settings", {"allow_negative_stock": 0}) def test_future_negative_sle(self): # Initialize item, batch, warehouse, opening qty item_code = "_Test Future Neg Item"