From 35fe9c60c7c8f5f4072a05ceacb27933272c20ca Mon Sep 17 00:00:00 2001 From: Rohit Waghchaure Date: Thu, 11 Jun 2026 20:27:35 +0530 Subject: [PATCH] fix: bom creator issue --- .../doctype/bom_creator/bom_creator.py | 52 +++++++++---------- .../bom_configurator.bundle.js | 5 +- 2 files changed, 27 insertions(+), 30 deletions(-) diff --git a/erpnext/manufacturing/doctype/bom_creator/bom_creator.py b/erpnext/manufacturing/doctype/bom_creator/bom_creator.py index 4e348275606..a41ab1a7160 100644 --- a/erpnext/manufacturing/doctype/bom_creator/bom_creator.py +++ b/erpnext/manufacturing/doctype/bom_creator/bom_creator.py @@ -386,6 +386,30 @@ class BOMCreator(Document): production_item_wise_rm[(row.item_code, row.name)].bom_no = bom.name + @frappe.whitelist() + def edit_bom_creator(self, docname: str, data: str | dict): + frappe.has_permission("BOM Creator", "write", throw=True) + + if not frappe.db.exists("BOM Creator Item", {"parent": self.name, "name": docname}): + frappe.throw(_("BOM Creator Item with name {0} does not exist").format(docname)) + + if isinstance(data, str): + data = frappe.parse_json(data) + + for row in self.items: + if row.name == docname: + for key, value in data.items(): + if key in BOM_ITEM_FIELDS: + row.set(key, value) + break + + self.set_rate_for_items() + self.save() + + frappe.msgprint(_("Updated successfully"), alert=True) + + return self + def has_operations(self): for row in self.items: if row.operation: @@ -399,7 +423,7 @@ class BOMCreator(Document): @frappe.whitelist() -def get_children(parent: str | None = None, **kwargs): +def get_children(doctype: str | None = None, parent: str | None = None, **kwargs): frappe.has_permission("BOM Creator", "read", throw=True) if isinstance(kwargs, str): @@ -594,29 +618,3 @@ def delete_node(**kwargs): return doc return frappe._dict() - - -@frappe.whitelist() -def edit_bom_creator(docname: str, data: str | dict, parent: str): - frappe.has_permission("BOM Creator", "write", throw=True) - - if not frappe.db.exists("BOM Creator Item", {"parent": parent, "name": docname}): - frappe.throw(_("BOM Creator Item with name {0} does not exist").format(docname)) - - if isinstance(data, str): - data = frappe.parse_json(data) - - doc = frappe.get_doc("BOM Creator", parent) - for row in doc.items: - if row.name == docname: - for key, value in data.items(): - if key in BOM_ITEM_FIELDS: - row.set(key, value) - break - - doc.set_rate_for_items() - doc.save() - - frappe.msgprint(_("Updated successfully"), alert=True) - - return doc diff --git a/erpnext/public/js/bom_configurator/bom_configurator.bundle.js b/erpnext/public/js/bom_configurator/bom_configurator.bundle.js index 33cf6f6f574..92960d967bc 100644 --- a/erpnext/public/js/bom_configurator/bom_configurator.bundle.js +++ b/erpnext/public/js/bom_configurator/bom_configurator.bundle.js @@ -74,7 +74,6 @@ class BOMConfigurator { onload: function (me) { me.args["parent_id"] = frm_obj.frm.doc.name; me.args["parent"] = frm_obj.frm.doc.item_code; - delete me.args["doctype"]; me.parent = frm_obj.$wrapper.get(0); me.body = frm_obj.$wrapper.get(0); me.make_tree(); @@ -506,11 +505,11 @@ class BOMConfigurator { let docname = node.data.name || this.frm.doc.name; frappe.call({ - method: "erpnext.manufacturing.doctype.bom_creator.bom_creator.edit_bom_creator", + method: "edit_bom_creator", + doc: me.frm.doc, args: { docname: docname, data: data, - parent: node.data.parent_id || this.frm.doc.name, }, callback: (r) => { for (let key in data) {