[feature] progress bars on production order
This commit is contained in:
parent
bd07ea43e8
commit
18fc39b609
@ -1,63 +1,98 @@
|
||||
// Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
|
||||
// License: GNU General Public License v3. See license.txt
|
||||
|
||||
frappe.ui.form.on("Production Order", "onload", function(frm) {
|
||||
if (!frm.doc.status)
|
||||
frm.doc.status = 'Draft';
|
||||
frappe.ui.form.on("Production Order", {
|
||||
onload: function(frm) {
|
||||
if (!frm.doc.status)
|
||||
frm.doc.status = 'Draft';
|
||||
|
||||
frm.add_fetch("sales_order", "delivery_date", "expected_delivery_date");
|
||||
frm.add_fetch("sales_order", "project", "project");
|
||||
frm.add_fetch("sales_order", "delivery_date", "expected_delivery_date");
|
||||
frm.add_fetch("sales_order", "project", "project");
|
||||
|
||||
if(frm.doc.__islocal) {
|
||||
frm.set_value({
|
||||
"actual_start_date": "",
|
||||
"actual_end_date": ""
|
||||
if(frm.doc.__islocal) {
|
||||
frm.set_value({
|
||||
"actual_start_date": "",
|
||||
"actual_end_date": ""
|
||||
});
|
||||
erpnext.production_order.set_default_warehouse(frm);
|
||||
}
|
||||
|
||||
erpnext.production_order.set_custom_buttons(frm);
|
||||
erpnext.production_order.setup_company_filter(frm);
|
||||
erpnext.production_order.setup_bom_filter(frm);
|
||||
},
|
||||
refresh: function(frm) {
|
||||
erpnext.toggle_naming_series();
|
||||
frm.set_intro("");
|
||||
erpnext.production_order.set_custom_buttons(frm);
|
||||
|
||||
if (frm.doc.docstatus === 0 && !frm.doc.__islocal) {
|
||||
frm.set_intro(__("Submit this Production Order for further processing."));
|
||||
}
|
||||
|
||||
if (frm.doc.docstatus===1) {
|
||||
frm.trigger('show_progress');
|
||||
}
|
||||
},
|
||||
show_progress: function(frm) {
|
||||
var bars = [];
|
||||
var message = '';
|
||||
var added_min = false;
|
||||
|
||||
// produced qty
|
||||
var title = __('{0} items produced', [frm.doc.produced_qty]);
|
||||
bars.push({
|
||||
'title': title,
|
||||
'width': (frm.doc.produced_qty / frm.doc.qty * 100) + '%',
|
||||
'progress_class': 'progress-bar-success'
|
||||
});
|
||||
erpnext.production_order.set_default_warehouse(frm);
|
||||
}
|
||||
if(bars[0].width=='0%') {
|
||||
bars[0].width = '0.5%';
|
||||
added_min = 0.5;
|
||||
}
|
||||
message = title;
|
||||
|
||||
erpnext.production_order.set_custom_buttons(frm);
|
||||
erpnext.production_order.setup_company_filter(frm);
|
||||
erpnext.production_order.setup_bom_filter(frm);
|
||||
});
|
||||
|
||||
frappe.ui.form.on("Production Order", "refresh", function(frm) {
|
||||
erpnext.toggle_naming_series();
|
||||
frm.set_intro("");
|
||||
erpnext.production_order.set_custom_buttons(frm);
|
||||
|
||||
if (frm.doc.docstatus === 0 && !frm.doc.__islocal) {
|
||||
frm.set_intro(__("Submit this Production Order for further processing."));
|
||||
// pending qty
|
||||
var pending_complete = frm.doc.material_transferred_for_manufacturing - frm.doc.produced_qty;
|
||||
if(pending_complete) {
|
||||
var title = __('{0} items in progress', [pending_complete]);
|
||||
bars.push({
|
||||
'title': title,
|
||||
'width': ((pending_complete / frm.doc.qty * 100) - added_min) + '%',
|
||||
'progress_class': 'progress-bar-warning'
|
||||
})
|
||||
message = message + '. ' + title;
|
||||
}
|
||||
frm.dashboard.add_progress(__('Status'), bars, message);
|
||||
}
|
||||
});
|
||||
|
||||
frappe.ui.form.on("Production Order", "additional_operating_cost", function(frm) {
|
||||
erpnext.production_order.calculate_total_cost(frm);
|
||||
});
|
||||
|
||||
frappe.ui.form.on("Production Order Operation", "workstation", function(frm, cdt, cdn) {
|
||||
var d = locals[cdt][cdn];
|
||||
if (d.workstation) {
|
||||
frappe.call({
|
||||
"method": "frappe.client.get",
|
||||
args: {
|
||||
doctype: "Workstation",
|
||||
name: d.workstation
|
||||
},
|
||||
callback: function (data) {
|
||||
frappe.model.set_value(d.doctype, d.name, "hour_rate", data.message.hour_rate);
|
||||
erpnext.production_order.calculate_cost(frm.doc);
|
||||
erpnext.production_order.calculate_total_cost(frm);
|
||||
}
|
||||
})
|
||||
|
||||
frappe.ui.form.on("Production Order Operation", {
|
||||
workstation: function(frm, cdt, cdn) {
|
||||
var d = locals[cdt][cdn];
|
||||
if (d.workstation) {
|
||||
frappe.call({
|
||||
"method": "frappe.client.get",
|
||||
args: {
|
||||
doctype: "Workstation",
|
||||
name: d.workstation
|
||||
},
|
||||
callback: function (data) {
|
||||
frappe.model.set_value(d.doctype, d.name, "hour_rate", data.message.hour_rate);
|
||||
erpnext.production_order.calculate_cost(frm.doc);
|
||||
erpnext.production_order.calculate_total_cost(frm);
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
time_in_mins: function(frm, cdt, cdn) {
|
||||
erpnext.production_order.calculate_cost(frm.doc);
|
||||
erpnext.production_order.calculate_total_cost(frm);
|
||||
}
|
||||
});
|
||||
|
||||
frappe.ui.form.on("Production Order Operation", "time_in_mins", function(frm, cdt, cdn) {
|
||||
erpnext.production_order.calculate_cost(frm.doc);
|
||||
erpnext.production_order.calculate_total_cost(frm)
|
||||
});
|
||||
|
||||
erpnext.production_order = {
|
||||
set_custom_buttons: function(frm) {
|
||||
var doc = frm.doc;
|
||||
@ -84,13 +119,20 @@ erpnext.production_order = {
|
||||
}
|
||||
|
||||
if (flt(doc.material_transferred_for_manufacturing) < flt(doc.qty)) {
|
||||
frm.add_custom_button(__('Transfer Materials for Manufacture'),
|
||||
cur_frm.cscript['Transfer Raw Materials'], __("Stock Entry"));
|
||||
var btn = frm.add_custom_button(__('Start'),
|
||||
cur_frm.cscript['Transfer Raw Materials']);
|
||||
btn.addClass('btn-primary');
|
||||
}
|
||||
|
||||
if (flt(doc.produced_qty) < flt(doc.material_transferred_for_manufacturing)) {
|
||||
frm.add_custom_button(__('Update Finished Goods'),
|
||||
cur_frm.cscript['Update Finished Goods'], __("Stock Entry"));
|
||||
var btn = frm.add_custom_button(__('Finish'),
|
||||
cur_frm.cscript['Update Finished Goods']);
|
||||
|
||||
if(doc.material_transferred_for_manufacturing==doc.qty) {
|
||||
// all materials transferred for manufacturing,
|
||||
// make this primary
|
||||
btn.addClass('btn-primary');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -179,7 +221,7 @@ $.extend(cur_frm.cscript, {
|
||||
flt(this.frm.doc.qty) - flt(this.frm.doc.material_transferred_for_manufacturing);
|
||||
|
||||
frappe.prompt({fieldtype:"Int", label: __("Qty for {0}", [purpose]), fieldname:"qty",
|
||||
description: __("Max: {0}", [max]) },
|
||||
description: __("Max: {0}", [max]), 'default': max },
|
||||
function(data) {
|
||||
if(data.qty > max) {
|
||||
frappe.msgprint(__("Quantity must not be more than {0}", [max]));
|
||||
|
Loading…
Reference in New Issue
Block a user