From a195dd3c1f8a49b0d81bfe9248cc1b4d12ac165e Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Mon, 11 Mar 2024 11:07:40 +0530 Subject: [PATCH] fix: MR Default Supplier search query (backport #40273) (#40351) fix: MR Default Supplier search query (cherry picked from commit c0a1f298a114642c2cffdd27cd067f4c184eed3d) Co-authored-by: s-aga-r --- .../material_request/material_request.py | 29 +++++++++++++------ 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/erpnext/stock/doctype/material_request/material_request.py b/erpnext/stock/doctype/material_request/material_request.py index 2487497efc9..9bbe1424b49 100644 --- a/erpnext/stock/doctype/material_request/material_request.py +++ b/erpnext/stock/doctype/material_request/material_request.py @@ -595,17 +595,28 @@ def get_default_supplier_query(doctype, txt, searchfield, start, page_len, filte 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), + supplier = frappe.qb.DocType("Supplier") + item_default = frappe.qb.DocType("Item Default") + query = ( + frappe.qb.from_(supplier) + .left_join(item_default) + .on(supplier.name == item_default.default_supplier) + .select(item_default.default_supplier) + .where( + (item_default.parent.isin(item_list)) + & (item_default.default_supplier.notnull()) + & (supplier[searchfield].like(f"%{txt}%")) + ) + .offset(start) + .limit(page_len) ) + meta = frappe.get_meta("Supplier") + if meta.show_title_field_in_link and meta.title_field: + query = query.select(supplier[meta.title_field]) + + return query.run(as_dict=False) + @frappe.whitelist() def make_supplier_quotation(source_name, target_doc=None):