[feature] [bom] update cost button
diff --git a/manufacturing/doctype/bom/bom.js b/manufacturing/doctype/bom/bom.js
index 276e883..ce246d9 100644
--- a/manufacturing/doctype/bom/bom.js
+++ b/manufacturing/doctype/bom/bom.js
@@ -20,12 +20,23 @@
if (!doc.__islocal && doc.docstatus==0) {
cur_frm.set_intro("Submit the BOM to use it for manufacturing or repacking.");
+ cur_frm.add_custom_button("Update Cost", cur_frm.cscript.update_cost);
} else cur_frm.set_intro("");
cur_frm.cscript.with_operations(doc);
set_operation_no(doc);
}
+cur_frm.cscript.update_cost = function() {
+ wn.call({
+ doc: cur_frm.doc,
+ method: "update_cost",
+ callback: function(r) {
+ if(!r.exc) cur_frm.refresh_fields();
+ }
+ })
+}
+
cur_frm.cscript.with_operations = function(doc) {
cur_frm.fields_dict["bom_materials"].grid.set_column_disp("operation_no", doc.with_operations);
cur_frm.fields_dict["bom_materials"].grid.toggle_reqd("operation_no", doc.with_operations)
diff --git a/manufacturing/doctype/bom/bom.py b/manufacturing/doctype/bom/bom.py
index b4091b9..e4c81ff 100644
--- a/manufacturing/doctype/bom/bom.py
+++ b/manufacturing/doctype/bom/bom.py
@@ -135,6 +135,17 @@
rate = arg['standard_rate']
return rate
+
+ def update_cost(self):
+ for d in self.doclist.get({"parentfield": "bom_materials"}):
+ d.rate = self.get_bom_material_detail({
+ 'item_code': d.item_code,
+ 'bom_no': d.bom_no,
+ 'qty': d.qty
+ })["rate"]
+
+ self.on_update()
+
def get_bom_unitcost(self, bom_no):
bom = sql("""select name, total_cost/quantity as unit_cost from `tabBOM`