From 07c3755f319e23715a40d0c9707324417e6c4a91 Mon Sep 17 00:00:00 2001 From: KerollesFathy Date: Sat, 27 Sep 2025 12:54:10 +0000 Subject: [PATCH] fix(manufacturing): prevent KeyError in BOM Creator when sub-assembly reused Ensure missing (fg_item, fg_reference_id) keys are initialized in production_item_wise_rm before appending items. This avoids crashes when the same sub-assembly is referenced under multiple parents. (cherry picked from commit 4f8b2e520aa8a6f476c488820ec56252967d9bcd) --- erpnext/manufacturing/doctype/bom_creator/bom_creator.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/erpnext/manufacturing/doctype/bom_creator/bom_creator.py b/erpnext/manufacturing/doctype/bom_creator/bom_creator.py index 4761e82a048..55d37b3e588 100644 --- a/erpnext/manufacturing/doctype/bom_creator/bom_creator.py +++ b/erpnext/manufacturing/doctype/bom_creator/bom_creator.py @@ -253,6 +253,13 @@ class BOMCreator(Document): if not row.fg_reference_id and production_item_wise_rm.get((row.fg_item, row.fg_reference_id)): frappe.throw(_("Please set Parent Row No for item {0}").format(row.fg_item)) + key = (row.fg_item, row.fg_reference_id) + if key not in production_item_wise_rm: + production_item_wise_rm.setdefault( + key, + frappe._dict({"items": [], "bom_no": "", "fg_item_data": row}), + ) + production_item_wise_rm[(row.fg_item, row.fg_reference_id)]["items"].append(row) reverse_tree = OrderedDict(reversed(list(production_item_wise_rm.items())))