From e57d2b4811dbe4e20e64f8dc3a74d59550a2dcce Mon Sep 17 00:00:00 2001 From: Mihir Kandoi Date: Thu, 11 Dec 2025 11:21:35 +0530 Subject: [PATCH] fix: update project costing based on child table field and not parent level --- .../stock/doctype/stock_entry/stock_entry.py | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py index 834f21abe94..a3f72ab6bff 100644 --- a/erpnext/stock/doctype/stock_entry/stock_entry.py +++ b/erpnext/stock/doctype/stock_entry/stock_entry.py @@ -216,6 +216,11 @@ class StockEntry(StockController, SubcontractingInwardController): if self.get("items") and apply_rule: apply_putaway_rule(self.doctype, self.get("items"), self.company, purpose=self.purpose) + if self.project: + for item in self.items: + if not item.project: + item.project = self.project + def validate(self): self.pro_doc = frappe._dict() if self.work_order: @@ -525,15 +530,16 @@ class StockEntry(StockController, SubcontractingInwardController): ): return - if self.project: + projects = set(item.project for item in self.items if item.project) + for project in projects: amount = frappe.db.sql( - """ select ifnull(sum(sed.amount), 0) + """ select ifnull(sum(amount), 0) from - `tabStock Entry` se, `tabStock Entry Detail` sed + `tabStock Entry Detail` where - se.docstatus = 1 and se.project = %s and sed.parent = se.name - and (sed.t_warehouse is null or sed.t_warehouse = '')""", - self.project, + docstatus = 1 and project = %s + and (t_warehouse is null or t_warehouse = '')""", + project, as_list=1, ) @@ -545,14 +551,14 @@ class StockEntry(StockController, SubcontractingInwardController): where se.docstatus = 1 and se.project = %s and sed.parent = se.name and se.purpose = 'Manufacture'""", - self.project, + project, as_list=1, ) additional_cost_amt = additional_costs[0][0] if additional_costs else 0 amount += additional_cost_amt - project = frappe.get_doc("Project", self.project) + project = frappe.get_doc("Project", project) project.total_consumed_material_cost = amount project.save()