From c09ea941336abb5bb6d7e3d5ed29240f666459c3 Mon Sep 17 00:00:00 2001 From: Jeraldin P J <113301032+jeraldin2003@users.noreply.github.com> Date: Mon, 16 Mar 2026 09:45:30 +0530 Subject: [PATCH] fix: remove supplier selection dialog when creating Purchase Order from Material Request (#53391) Co-authored-by: jeraldin2003 Co-authored-by: Nikhil Kothari --- .../material_request/material_request.js | 32 +++---------- .../material_request/material_request.py | 45 ------------------- 2 files changed, 5 insertions(+), 72 deletions(-) diff --git a/erpnext/stock/doctype/material_request/material_request.js b/erpnext/stock/doctype/material_request/material_request.js index 625d6490a9d..e0bbff4cbda 100644 --- a/erpnext/stock/doctype/material_request/material_request.js +++ b/erpnext/stock/doctype/material_request/material_request.js @@ -410,33 +410,11 @@ frappe.ui.form.on("Material Request", { }, make_purchase_order: function (frm) { - frappe.prompt( - { - label: __("For Default Supplier (Optional)"), - fieldname: "default_supplier", - fieldtype: "Link", - options: "Supplier", - description: __( - "Select a Supplier from the Default Suppliers of the items below. On selection, a Purchase Order will be made against items belonging to the selected Supplier only." - ), - 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", - frm: frm, - args: { default_supplier: values.default_supplier }, - run_link_triggers: true, - }); - }, - __("Enter Supplier"), - __("Create") - ); + frappe.model.open_mapped_doc({ + method: "erpnext.stock.doctype.material_request.material_request.make_purchase_order", + frm: frm, + run_link_triggers: true, + }); }, make_request_for_quotation: function (frm) { diff --git a/erpnext/stock/doctype/material_request/material_request.py b/erpnext/stock/doctype/material_request/material_request.py index b4e6101aa0d..055cab92673 100644 --- a/erpnext/stock/doctype/material_request/material_request.py +++ b/erpnext/stock/doctype/material_request/material_request.py @@ -20,7 +20,6 @@ from frappe.utils import cint, cstr, flt, get_link_to_form, getdate, new_line_se from erpnext.buying.utils import check_on_hold_or_closed_status, validate_for_items from erpnext.controllers.buying_controller import BuyingController from erpnext.manufacturing.doctype.work_order.work_order import get_item_details -from erpnext.stock.doctype.item.item import get_item_defaults from erpnext.stock.stock_balance import get_indented_qty, update_bin_qty from erpnext.subcontracting.doctype.subcontracting_bom.subcontracting_bom import ( get_subcontracting_boms_for_finished_goods, @@ -505,17 +504,6 @@ def make_purchase_order( def postprocess(source, target_doc): target_doc.is_subcontracted = is_subcontracted - if frappe.flags.args and frappe.flags.args.default_supplier: - # items only for given default supplier - supplier_items = [] - for d in target_doc.items: - if is_subcontracted and not d.item_code: - continue - default_supplier = get_item_defaults(d.item_code, target_doc.company).get("default_supplier") - if frappe.flags.args.default_supplier == default_supplier: - supplier_items.append(d) - target_doc.items = supplier_items - set_missing_values(source, target_doc) def select_item(d): @@ -697,39 +685,6 @@ def get_material_requests_based_on_supplier( return material_requests -@frappe.whitelist() -@frappe.validate_and_sanitize_search_inputs -def get_default_supplier_query( - doctype: Any, txt: str, searchfield: str, start: int, page_len: int, filters: dict -): - doc = frappe.get_doc("Material Request", filters.get("doc")) - item_list = [] - for d in doc.items: - item_list.append(d.item_code) - - 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: str, target_doc: str | Document | None = None): def postprocess(source, target_doc):