diff --git a/erpnext/manufacturing/doctype/work_order/work_order.py b/erpnext/manufacturing/doctype/work_order/work_order.py index be202beb451..18779c39632 100644 --- a/erpnext/manufacturing/doctype/work_order/work_order.py +++ b/erpnext/manufacturing/doctype/work_order/work_order.py @@ -1796,11 +1796,16 @@ class WorkOrder(Document): & (ste.purpose == "Material Transfer for Manufacture") & (ste.is_return == is_return) ) - .groupby(ste_child.item_code) + .groupby(ste_child.item_code, ste_child.original_item) ) data = query.run(as_dict=1) or [] - return 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) + return transferred_items def recompute_material_transferred_for_manufacturing(self, transferred_items): """Set transferred quantity from the raw materials that have actually moved."""