Merge pull request #50808 from aerele/support-51284

fix(stock entry): use fg item expense account for direct manufacturing entry
This commit is contained in:
rohitwaghchaure
2025-12-02 17:31:54 +05:30
committed by GitHub
2 changed files with 11 additions and 1 deletions

View File

@@ -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"
)

View File

@@ -1261,6 +1261,7 @@ class TestStockEntry(IntegrationTestCase):
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)
@@ -1278,6 +1279,9 @@ class TestStockEntry(IntegrationTestCase):
self.assertEqual(se.value_difference, 0.0)
self.assertEqual(se.total_incoming_value, se.total_outgoing_value)
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})
def test_future_negative_sle(self):
# Initialize item, batch, warehouse, opening qty