mirror of
https://github.com/frappe/erpnext.git
synced 2026-06-02 19:59:12 +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) {
|
build_tree(frm) {
|
||||||
let $parent = $(frm.fields_dict["bom_creator"].wrapper);
|
let $parent = $(frm.fields_dict["bom_creator"].wrapper);
|
||||||
$parent.empty();
|
$parent.empty();
|
||||||
|
$parent.closest(".section-body").css("max-width", "1100px");
|
||||||
frm.toggle_enable("item_code", false);
|
frm.toggle_enable("item_code", false);
|
||||||
|
|
||||||
frappe.require("bom_configurator.bundle.js").then(() => {
|
frappe.require("bom_configurator.bundle.js").then(() => {
|
||||||
|
|||||||
@@ -126,10 +126,6 @@ class BOMCreator(Document):
|
|||||||
def on_cancel(self):
|
def on_cancel(self):
|
||||||
self.set_status(True)
|
self.set_status(True)
|
||||||
|
|
||||||
def set_conversion_factor(self):
|
|
||||||
for row in self.items:
|
|
||||||
row.conversion_factor = 1.0
|
|
||||||
|
|
||||||
def before_submit(self):
|
def before_submit(self):
|
||||||
self.validate_fields()
|
self.validate_fields()
|
||||||
self.set_status()
|
self.set_status()
|
||||||
@@ -160,10 +156,11 @@ class BOMCreator(Document):
|
|||||||
amount = self.get_raw_material_cost()
|
amount = self.get_raw_material_cost()
|
||||||
self.raw_material_cost = amount
|
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:
|
if not fg_item:
|
||||||
fg_item = self.item_code
|
fg_item = self.item_code
|
||||||
|
|
||||||
|
amount = 0
|
||||||
for row in self.items:
|
for row in self.items:
|
||||||
if row.fg_item != fg_item:
|
if row.fg_item != fg_item:
|
||||||
continue
|
continue
|
||||||
@@ -182,14 +179,10 @@ class BOMCreator(Document):
|
|||||||
},
|
},
|
||||||
self,
|
self,
|
||||||
)
|
)
|
||||||
|
|
||||||
row.amount = flt(row.rate) * flt(row.qty)
|
|
||||||
|
|
||||||
else:
|
else:
|
||||||
row.amount = 0.0
|
row.rate = flt(self.get_raw_material_cost(row.item_code) * row.conversion_factor)
|
||||||
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.amount = flt(row.rate * row.qty)
|
||||||
amount += flt(row.amount)
|
amount += flt(row.amount)
|
||||||
|
|
||||||
return amount
|
return amount
|
||||||
@@ -201,6 +194,11 @@ class BOMCreator(Document):
|
|||||||
if row.item_code in fg_items:
|
if row.item_code in fg_items:
|
||||||
row.is_expandable = 1
|
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):
|
def validate_fields(self):
|
||||||
fields = {
|
fields = {
|
||||||
"items": "Items",
|
"items": "Items",
|
||||||
|
|||||||
@@ -63,8 +63,10 @@ class TestBOMCreator(IntegrationTestCase):
|
|||||||
|
|
||||||
fg_valuation_rate = 0
|
fg_valuation_rate = 0
|
||||||
for row in doc.items:
|
for row in doc.items:
|
||||||
if not row.is_expandable:
|
if row.fg_item == final_product:
|
||||||
fg_valuation_rate += row.amount
|
fg_valuation_rate += row.amount
|
||||||
|
|
||||||
|
if not row.is_expandable:
|
||||||
self.assertEqual(row.fg_item, "Frame Assembly")
|
self.assertEqual(row.fg_item, "Frame Assembly")
|
||||||
self.assertEqual(row.fg_reference_id, doc.items[0].name)
|
self.assertEqual(row.fg_reference_id, doc.items[0].name)
|
||||||
|
|
||||||
@@ -105,8 +107,10 @@ class TestBOMCreator(IntegrationTestCase):
|
|||||||
|
|
||||||
fg_valuation_rate = 0
|
fg_valuation_rate = 0
|
||||||
for row in doc.items:
|
for row in doc.items:
|
||||||
if not row.is_expandable:
|
if row.fg_item == final_product:
|
||||||
fg_valuation_rate += row.amount
|
fg_valuation_rate += row.amount
|
||||||
|
|
||||||
|
if not row.is_expandable:
|
||||||
self.assertEqual(row.fg_item, "Bicycle")
|
self.assertEqual(row.fg_item, "Bicycle")
|
||||||
self.assertEqual(row.fg_reference_id, doc.name)
|
self.assertEqual(row.fg_reference_id, doc.name)
|
||||||
|
|
||||||
@@ -170,8 +174,10 @@ class TestBOMCreator(IntegrationTestCase):
|
|||||||
|
|
||||||
fg_valuation_rate = 0
|
fg_valuation_rate = 0
|
||||||
for row in doc.items:
|
for row in doc.items:
|
||||||
if not row.is_expandable:
|
if row.fg_item == final_product:
|
||||||
fg_valuation_rate += row.amount
|
fg_valuation_rate += row.amount
|
||||||
|
|
||||||
|
if not row.is_expandable:
|
||||||
self.assertEqual(row.fg_item, "Pedal Assembly")
|
self.assertEqual(row.fg_item, "Pedal Assembly")
|
||||||
self.assertEqual(row.qty, 2.0)
|
self.assertEqual(row.qty, 2.0)
|
||||||
self.assertEqual(row.fg_reference_id, doc.items[0].name)
|
self.assertEqual(row.fg_reference_id, doc.items[0].name)
|
||||||
|
|||||||
Reference in New Issue
Block a user