mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-03 13:38:27 +00:00
Merge pull request #51050 from mihir-kandoi/gh41617
This commit is contained in:
@@ -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(() => {
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user