fix: use set_query on sales_order link field in work order

This commit is contained in:
Mihir Kandoi
2025-06-16 17:03:17 +05:30
parent c4bdf2a721
commit 6def182e1a
2 changed files with 17 additions and 22 deletions

View File

@@ -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
frm.set_indicator_formatter("operation", function (doc) {
return frm.doc.qty == doc.completed_qty ? "green" : "orange";
@@ -506,7 +517,6 @@ frappe.ui.form.on("Work Order", {
callback: function (r) {
if (r.message) {
frm.set_value("sales_order", "");
frm.trigger("set_sales_order");
erpnext.in_production_item_onchange = true;
$.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);
},
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) {
erpnext.work_order.calculate_cost(frm.doc);
erpnext.work_order.calculate_total_cost(frm);

View File

@@ -2004,17 +2004,19 @@ def stop_unstop(work_order, status):
@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(
"Sales Order",
fields=["name"],
filters=[
["Sales Order", "docstatus", "=", 1],
],
or_filters=[
["Sales Order Item", "item_code", "=", production_item],
["Packed Item", "item_code", "=", production_item],
["Sales Order Item", "item_code", "=", filters.get("production_item")],
["Packed Item", "item_code", "=", filters.get("production_item")],
],
pluck="name",
as_list=True,
distinct=True,
)