From 8a5f31da34809741d713c3b71ae34a6fa3d995e5 Mon Sep 17 00:00:00 2001 From: Marica Date: Wed, 15 Jan 2020 19:24:39 +0530 Subject: [PATCH] fix: Applied query on PO Supplier popup field in Material Request. (#20233) --- .../doctype/material_request/material_request.js | 8 +++++++- .../doctype/material_request/material_request.py | 12 ++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/erpnext/stock/doctype/material_request/material_request.js b/erpnext/stock/doctype/material_request/material_request.js index 3cf347e9473..cf28e50e2d2 100644 --- a/erpnext/stock/doctype/material_request/material_request.js +++ b/erpnext/stock/doctype/material_request/material_request.js @@ -222,7 +222,13 @@ frappe.ui.form.on('Material Request', { fieldname:'default_supplier', fieldtype: 'Link', options: 'Supplier', - description: __('Selected Supplier must be the Default Supplier of one of the items below.'), + 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({ diff --git a/erpnext/stock/doctype/material_request/material_request.py b/erpnext/stock/doctype/material_request/material_request.py index 44b711b865e..eb76e1f7a38 100644 --- a/erpnext/stock/doctype/material_request/material_request.py +++ b/erpnext/stock/doctype/material_request/material_request.py @@ -371,6 +371,18 @@ def get_material_requests_based_on_supplier(supplier): material_requests = [] 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):