From 439eb250f55a069b6732a85328874bbb5cb41a55 Mon Sep 17 00:00:00 2001 From: Mihir Kandoi Date: Tue, 11 Aug 2026 20:40:30 +0530 Subject: [PATCH] fix(manufacturing): preserve BOM Creator item details --- .../doctype/bom_creator/bom_creator.js | 21 ++++++++++++------- erpnext/stock/get_item_details.py | 2 +- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/erpnext/manufacturing/doctype/bom_creator/bom_creator.js b/erpnext/manufacturing/doctype/bom_creator/bom_creator.js index 2c6dbd84fa6..062a0b04317 100644 --- a/erpnext/manufacturing/doctype/bom_creator/bom_creator.js +++ b/erpnext/manufacturing/doctype/bom_creator/bom_creator.js @@ -208,13 +208,6 @@ frappe.ui.form.on("BOM Creator", { }); frappe.ui.form.on("BOM Creator Item", { - item_code(frm, cdt, cdn) { - let item = frappe.get_doc(cdt, cdn); - if (item.item_code && item.is_root) { - frappe.model.set_value(cdt, cdn, "fg_item", item.item_code); - } - }, - do_not_explode(frm, cdt, cdn) { let item = frappe.get_doc(cdt, cdn); if (!item.do_not_explode) { @@ -237,6 +230,20 @@ frappe.ui.form.on("BOM Creator Item", { }); erpnext.bom.BomConfigurator = class BomConfigurator extends erpnext.TransactionController { + item_code(doc, cdt, cdn) { + if (cdt !== "BOM Creator Item") { + return; + } + + let item = frappe.get_doc(cdt, cdn); + if (item.item_code && item.is_root) { + frappe.model.set_value(cdt, cdn, "fg_item", item.item_code); + } + + // BOM Creator does not support TransactionController's server-side item selection. + return this.process_item_selection(doc, cdt, cdn); + } + conversion_rate(doc) { if (this.frm.doc.currency === this.get_company_currency()) { this.frm.set_value("conversion_rate", 1.0); diff --git a/erpnext/stock/get_item_details.py b/erpnext/stock/get_item_details.py index 8dc0bd0cb3b..5c5a35bd29a 100644 --- a/erpnext/stock/get_item_details.py +++ b/erpnext/stock/get_item_details.py @@ -79,7 +79,7 @@ def _preprocess_ctx(ctx): @erpnext.normalize_ctx_input(ItemDetailsCtx) def get_item_details( ctx: ItemDetailsCtx, - doc: Document | str | None = None, + doc: Document | str | dict | None = None, for_validate: bool | None = False, overwrite_warehouse: bool = True, ):