diff --git a/erpnext/manufacturing/doctype/bom_creator/bom_creator.js b/erpnext/manufacturing/doctype/bom_creator/bom_creator.js index 9737d3b7ff99e3f51f199937a9c1da10e84d03c0..045aa5c7968f3d651c7c6ec70c140f035ba422a6 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 18599b2c20c034268e36094ebed2da0e97426c7e..40040793620e9787d93ce699ef78f0506e70efdb 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", diff --git a/erpnext/manufacturing/doctype/bom_creator/test_bom_creator.py b/erpnext/manufacturing/doctype/bom_creator/test_bom_creator.py index cfcd288e0981f516a488b896174041f8ed0a9481..b277ca3c4839759b9e1b08b563e4b6015993d427 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)