From c9eda3c2796b557106d0699acb1d54258bf5f051 Mon Sep 17 00:00:00 2001 From: Mihir Kandoi Date: Thu, 11 Dec 2025 17:16:11 +0530 Subject: [PATCH 1/2] fix: bom creator page width and rate calculation --- .../doctype/bom_creator/bom_creator.js | 1 + .../doctype/bom_creator/bom_creator.py | 20 +++++++++---------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/erpnext/manufacturing/doctype/bom_creator/bom_creator.js b/erpnext/manufacturing/doctype/bom_creator/bom_creator.js index 9737d3b7ff9..045aa5c7968 100644 --- a/erpnext/manufacturing/doctype/bom_creator/bom_creator.js +++ b/erpnext/manufacturing/doctype/bom_creator/bom_creator.js @@ -24,6 +24,7 @@ frappe.ui.form.on("BOM Creator", { build_tree(frm) { let $parent = $(frm.fields_dict["bom_creator"].wrapper); $parent.empty(); + $parent.closest(".section-body").css("max-width", "1100px"); frm.toggle_enable("item_code", false); frappe.require("bom_configurator.bundle.js").then(() => { diff --git a/erpnext/manufacturing/doctype/bom_creator/bom_creator.py b/erpnext/manufacturing/doctype/bom_creator/bom_creator.py index 18599b2c20c..40040793620 100644 --- a/erpnext/manufacturing/doctype/bom_creator/bom_creator.py +++ b/erpnext/manufacturing/doctype/bom_creator/bom_creator.py @@ -126,10 +126,6 @@ class BOMCreator(Document): def on_cancel(self): self.set_status(True) - def set_conversion_factor(self): - for row in self.items: - row.conversion_factor = 1.0 - def before_submit(self): self.validate_fields() self.set_status() @@ -160,10 +156,11 @@ class BOMCreator(Document): amount = self.get_raw_material_cost() self.raw_material_cost = amount - def get_raw_material_cost(self, fg_item=None, amount=0): + def get_raw_material_cost(self, fg_item=None): if not fg_item: fg_item = self.item_code + amount = 0 for row in self.items: if row.fg_item != fg_item: continue @@ -182,14 +179,10 @@ class BOMCreator(Document): }, self, ) - - row.amount = flt(row.rate) * flt(row.qty) - else: - row.amount = 0.0 - row.amount = self.get_raw_material_cost(row.item_code, row.amount) - row.rate = flt(row.amount) / (flt(row.qty) * flt(row.conversion_factor)) + row.rate = flt(self.get_raw_material_cost(row.item_code) * row.conversion_factor) + row.amount = flt(row.rate * row.qty) amount += flt(row.amount) return amount @@ -201,6 +194,11 @@ class BOMCreator(Document): if row.item_code in fg_items: row.is_expandable = 1 + def set_conversion_factor(self): + for row in self.items: + if not row.conversion_factor: + row.conversion_factor = 1.0 + def validate_fields(self): fields = { "items": "Items", From 3de80ec640531fca0f5dabad4124659adc9439dc Mon Sep 17 00:00:00 2001 From: Mihir Kandoi Date: Sat, 13 Dec 2025 13:39:19 +0530 Subject: [PATCH 2/2] fix: test cases --- .../doctype/bom_creator/test_bom_creator.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/erpnext/manufacturing/doctype/bom_creator/test_bom_creator.py b/erpnext/manufacturing/doctype/bom_creator/test_bom_creator.py index cfcd288e098..b277ca3c483 100644 --- a/erpnext/manufacturing/doctype/bom_creator/test_bom_creator.py +++ b/erpnext/manufacturing/doctype/bom_creator/test_bom_creator.py @@ -63,8 +63,10 @@ class TestBOMCreator(IntegrationTestCase): fg_valuation_rate = 0 for row in doc.items: - if not row.is_expandable: + if row.fg_item == final_product: fg_valuation_rate += row.amount + + if not row.is_expandable: self.assertEqual(row.fg_item, "Frame Assembly") self.assertEqual(row.fg_reference_id, doc.items[0].name) @@ -105,8 +107,10 @@ class TestBOMCreator(IntegrationTestCase): fg_valuation_rate = 0 for row in doc.items: - if not row.is_expandable: + if row.fg_item == final_product: fg_valuation_rate += row.amount + + if not row.is_expandable: self.assertEqual(row.fg_item, "Bicycle") self.assertEqual(row.fg_reference_id, doc.name) @@ -170,8 +174,10 @@ class TestBOMCreator(IntegrationTestCase): fg_valuation_rate = 0 for row in doc.items: - if not row.is_expandable: + if row.fg_item == final_product: fg_valuation_rate += row.amount + + if not row.is_expandable: self.assertEqual(row.fg_item, "Pedal Assembly") self.assertEqual(row.qty, 2.0) self.assertEqual(row.fg_reference_id, doc.items[0].name)