mirror of
https://github.com/frappe/erpnext.git
synced 2026-03-24 13:42:10 +01:00
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:
@@ -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) {
|
||||
|
||||
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user