fix: use set_query on sales_order link field in work order
This commit is contained in:
@@ -101,6 +101,17 @@ frappe.ui.form.on("Work Order", {
|
|||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
|
frm.set_query("sales_order", function () {
|
||||||
|
if (frm.doc.production_item) {
|
||||||
|
return {
|
||||||
|
query: "erpnext.manufacturing.doctype.work_order.work_order.query_sales_order",
|
||||||
|
filters: {
|
||||||
|
production_item: frm.doc.production_item,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// formatter for work order operation
|
// formatter for work order operation
|
||||||
frm.set_indicator_formatter("operation", function (doc) {
|
frm.set_indicator_formatter("operation", function (doc) {
|
||||||
return frm.doc.qty == doc.completed_qty ? "green" : "orange";
|
return frm.doc.qty == doc.completed_qty ? "green" : "orange";
|
||||||
@@ -506,7 +517,6 @@ frappe.ui.form.on("Work Order", {
|
|||||||
callback: function (r) {
|
callback: function (r) {
|
||||||
if (r.message) {
|
if (r.message) {
|
||||||
frm.set_value("sales_order", "");
|
frm.set_value("sales_order", "");
|
||||||
frm.trigger("set_sales_order");
|
|
||||||
erpnext.in_production_item_onchange = true;
|
erpnext.in_production_item_onchange = true;
|
||||||
|
|
||||||
$.each(
|
$.each(
|
||||||
@@ -568,23 +578,6 @@ frappe.ui.form.on("Work Order", {
|
|||||||
frm.toggle_reqd("transfer_material_against", frm.doc.operations && frm.doc.operations.length > 0);
|
frm.toggle_reqd("transfer_material_against", frm.doc.operations && frm.doc.operations.length > 0);
|
||||||
},
|
},
|
||||||
|
|
||||||
set_sales_order: function (frm) {
|
|
||||||
if (frm.doc.production_item) {
|
|
||||||
frappe.call({
|
|
||||||
method: "erpnext.manufacturing.doctype.work_order.work_order.query_sales_order",
|
|
||||||
args: { production_item: frm.doc.production_item },
|
|
||||||
callback: function (r) {
|
|
||||||
frm.set_query("sales_order", function () {
|
|
||||||
erpnext.in_production_item_onchange = true;
|
|
||||||
return {
|
|
||||||
filters: [["Sales Order", "name", "in", r.message]],
|
|
||||||
};
|
|
||||||
});
|
|
||||||
},
|
|
||||||
});
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
additional_operating_cost: function (frm) {
|
additional_operating_cost: function (frm) {
|
||||||
erpnext.work_order.calculate_cost(frm.doc);
|
erpnext.work_order.calculate_cost(frm.doc);
|
||||||
erpnext.work_order.calculate_total_cost(frm);
|
erpnext.work_order.calculate_total_cost(frm);
|
||||||
|
|||||||
@@ -2004,17 +2004,19 @@ def stop_unstop(work_order, status):
|
|||||||
|
|
||||||
|
|
||||||
@frappe.whitelist()
|
@frappe.whitelist()
|
||||||
def query_sales_order(production_item: str) -> list[str]:
|
@frappe.validate_and_sanitize_search_inputs
|
||||||
|
def query_sales_order(doctype, txt, searchfield, start, page_len, filters) -> list[str]:
|
||||||
return frappe.get_list(
|
return frappe.get_list(
|
||||||
"Sales Order",
|
"Sales Order",
|
||||||
|
fields=["name"],
|
||||||
filters=[
|
filters=[
|
||||||
["Sales Order", "docstatus", "=", 1],
|
["Sales Order", "docstatus", "=", 1],
|
||||||
],
|
],
|
||||||
or_filters=[
|
or_filters=[
|
||||||
["Sales Order Item", "item_code", "=", production_item],
|
["Sales Order Item", "item_code", "=", filters.get("production_item")],
|
||||||
["Packed Item", "item_code", "=", production_item],
|
["Packed Item", "item_code", "=", filters.get("production_item")],
|
||||||
],
|
],
|
||||||
pluck="name",
|
as_list=True,
|
||||||
distinct=True,
|
distinct=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user