fix: remove supplier selection dialog when creating Purchase Order from Material Request (#53391)

Co-authored-by: jeraldin2003 <jeraldin2003>
Co-authored-by: Nikhil Kothari <nik.kothari22@live.com>
This commit is contained in:
Jeraldin P J
2026-03-16 09:45:30 +05:30
committed by GitHub
parent 9e8c70e6b4
commit c09ea94133
2 changed files with 5 additions and 72 deletions

View File

@@ -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) {

View File

@@ -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):