From 9f6c95549af2c24daf48b0620324dc25283079cb Mon Sep 17 00:00:00 2001 From: Marica Date: Wed, 15 Jan 2020 19:24:28 +0530 Subject: [PATCH] fix: Applied query on PO Supplier popup field in Material Request. (#20231) --- .../doctype/material_request/material_request.js | 15 +++++++++++++-- .../doctype/material_request/material_request.py | 12 ++++++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/erpnext/stock/doctype/material_request/material_request.js b/erpnext/stock/doctype/material_request/material_request.js index 935d61310e..7ef2d6460f 100644 --- a/erpnext/stock/doctype/material_request/material_request.js +++ b/erpnext/stock/doctype/material_request/material_request.js @@ -230,8 +230,19 @@ frappe.ui.form.on('Material Request', { make_purchase_order: function(frm) { frappe.prompt( - {fieldname:'default_supplier', label: __('For Default Supplier (optional)'), description: __('Selected Supplier\ - must be the Default Supplier of one of the items below.'), fieldtype: 'Link', options: 'Supplier'}, + { + label: __('For Default Supplier (Optional)'), + fieldname:'default_supplier', + fieldtype: 'Link', + options: 'Supplier', + description: __('Select a Supplier from the Default Supplier List of the items below.'), + get_query: () => { + return{ + query: "erpnext.stock.doctype.material_request.material_request.get_default_supplier_query", + filters: {'doc': frm.doc.name} + } + } + }, (values) => { frappe.model.open_mapped_doc({ method: "erpnext.stock.doctype.material_request.material_request.make_purchase_order", diff --git a/erpnext/stock/doctype/material_request/material_request.py b/erpnext/stock/doctype/material_request/material_request.py index 44e890cc50..6531e095b8 100644 --- a/erpnext/stock/doctype/material_request/material_request.py +++ b/erpnext/stock/doctype/material_request/material_request.py @@ -386,6 +386,18 @@ def get_material_requests_based_on_supplier(supplier): return material_requests, supplier_items +def get_default_supplier_query(doctype, txt, searchfield, start, page_len, filters): + doc = frappe.get_doc("Material Request", filters.get("doc")) + item_list = [] + for d in doc.items: + item_list.append(d.item_code) + + return frappe.db.sql("""select default_supplier + from `tabItem Default` + where parent in ({0}) and + default_supplier IS NOT NULL + """.format(', '.join(['%s']*len(item_list))),tuple(item_list)) + @frappe.whitelist() def make_supplier_quotation(source_name, target_doc=None): def postprocess(source, target_doc):