mirror of
https://github.com/frappe/erpnext.git
synced 2026-06-07 15:12:51 +00:00
Added make Production Order button against Material Request
This commit is contained in:
@@ -139,6 +139,7 @@ erpnext.production_order = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
set_default_warehouse: function(frm) {
|
set_default_warehouse: function(frm) {
|
||||||
|
if (!(frm.doc.wip_warehouse || frm.doc.fg_warehouse)) {
|
||||||
frappe.call({
|
frappe.call({
|
||||||
method: "erpnext.manufacturing.doctype.production_order.production_order.get_default_warehouse",
|
method: "erpnext.manufacturing.doctype.production_order.production_order.get_default_warehouse",
|
||||||
|
|
||||||
@@ -151,6 +152,7 @@ erpnext.production_order = {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$.extend(cur_frm.cscript, {
|
$.extend(cur_frm.cscript, {
|
||||||
before_submit: function() {
|
before_submit: function() {
|
||||||
|
|||||||
@@ -53,6 +53,10 @@ erpnext.buying.MaterialRequestController = erpnext.buying.BuyingController.exten
|
|||||||
cur_frm.add_custom_button(__("Supplier Quotation"),
|
cur_frm.add_custom_button(__("Supplier Quotation"),
|
||||||
this.make_supplier_quotation, __("Make"));
|
this.make_supplier_quotation, __("Make"));
|
||||||
|
|
||||||
|
if(doc.material_request_type === "Manufacture" && doc.status === "Submitted")
|
||||||
|
cur_frm.add_custom_button(__("Production Order"),
|
||||||
|
this.make_production_order, __("Make"));
|
||||||
|
|
||||||
cur_frm.page.set_inner_btn_group_as_primary(__("Make"));
|
cur_frm.page.set_inner_btn_group_as_primary(__("Make"));
|
||||||
|
|
||||||
// stop
|
// stop
|
||||||
@@ -165,6 +169,64 @@ erpnext.buying.MaterialRequestController = erpnext.buying.BuyingController.exten
|
|||||||
method: "erpnext.stock.doctype.material_request.material_request.make_stock_entry",
|
method: "erpnext.stock.doctype.material_request.material_request.make_stock_entry",
|
||||||
frm: cur_frm
|
frm: cur_frm
|
||||||
});
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
make_production_order: function() {
|
||||||
|
var items = []
|
||||||
|
$.each(cur_frm.doc["items"] || [], function(i, d) {
|
||||||
|
items.push(d.item_code);
|
||||||
|
});
|
||||||
|
var d = new frappe.ui.Dialog({
|
||||||
|
title: __("Production Order"),
|
||||||
|
fields: [
|
||||||
|
{
|
||||||
|
"fieldtype": "Link",
|
||||||
|
"label": __("Production Item"),
|
||||||
|
"fieldname": "item",
|
||||||
|
"options": "Item",
|
||||||
|
"reqd": 1,
|
||||||
|
"get_query": function() {
|
||||||
|
return {
|
||||||
|
"filters": [
|
||||||
|
['item_code', 'in', items],
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
d.set_primary_action(__("Make"), function() {
|
||||||
|
frappe.call({
|
||||||
|
method:"erpnext.stock.doctype.material_request.material_request.validate_production_item",
|
||||||
|
args: {
|
||||||
|
"item_code": d.get_values().item
|
||||||
|
},
|
||||||
|
callback: function(r) {
|
||||||
|
if(!r.message) {
|
||||||
|
msgprint("Cannot create Production Order for selected Item.")
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
frappe.call({
|
||||||
|
method:"erpnext.stock.doctype.material_request.material_request.make_production_order",
|
||||||
|
args: {
|
||||||
|
"source_name": cur_frm.doc.name,
|
||||||
|
"item_code": d.get_values().item,
|
||||||
|
},
|
||||||
|
callback: function(r) {
|
||||||
|
if(!r.exe) {
|
||||||
|
var doclist = frappe.model.sync(r.message);
|
||||||
|
frappe.set_route("Form", doclist[0].doctype, doclist[0].name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
d.show();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -327,3 +327,23 @@ def make_stock_entry(source_name, target_doc=None):
|
|||||||
}, target_doc, set_missing_values)
|
}, target_doc, set_missing_values)
|
||||||
|
|
||||||
return doclist
|
return doclist
|
||||||
|
|
||||||
|
|
||||||
|
@frappe.whitelist()
|
||||||
|
def validate_production_item(item_code):
|
||||||
|
return frappe.db.get_value("Item", item_code, "is_pro_applicable")
|
||||||
|
|
||||||
|
@frappe.whitelist()
|
||||||
|
def make_production_order(source_name, item_code):
|
||||||
|
material_request= frappe.get_doc("Material Request", source_name)
|
||||||
|
prod_order = frappe.new_doc("Production Order")
|
||||||
|
prod_order.production_item = item_code
|
||||||
|
prod_order.qty = 0
|
||||||
|
for d in material_request.items:
|
||||||
|
if d.item_code == item_code:
|
||||||
|
prod_order.qty = d.qty - d.ordered_qty
|
||||||
|
prod_order.fg_warehouse = d.warehouse
|
||||||
|
prod_order.expected_delivery_date = d.schedule_date
|
||||||
|
prod_order.sales_order = d.sales_order_no
|
||||||
|
prod_order.material_request = material_request.name
|
||||||
|
return prod_order
|
||||||
|
|||||||
Reference in New Issue
Block a user