diff --git a/erpnext/manufacturing/doctype/work_order/work_order.py b/erpnext/manufacturing/doctype/work_order/work_order.py index 3397e7940de..3ae24b601cd 100644 --- a/erpnext/manufacturing/doctype/work_order/work_order.py +++ b/erpnext/manufacturing/doctype/work_order/work_order.py @@ -1272,11 +1272,15 @@ class WorkOrder(Document): & (ste.purpose == "Material Transfer for Manufacture") & (ste.is_return == 0) ) - .groupby(ste_child.item_code) + .groupby(ste_child.item_code, ste_child.original_item) ) data = query.run(as_dict=1) or [] - transferred_items = frappe._dict({d.original_item or d.item_code: d.qty for d in data}) + # An item's own transfer and its substitutes both key to the original item, so sum them. + transferred_items = frappe._dict() + for d in data: + key = d.original_item or d.item_code + transferred_items[key] = flt(transferred_items.get(key)) + flt(d.qty) for row in self.required_items: row.db_set(