From 78777d6ed4b2da74cda83e77516435482e5b3014 Mon Sep 17 00:00:00 2001 From: Sagar Vora Date: Tue, 9 Mar 2021 20:35:08 +0530 Subject: [PATCH] fix: fetch Material Requests of type Customer Provided in Stock Entry using Get Items From (#24756) Co-authored-by: walstanb --- erpnext/public/js/utils.js | 40 ++++++++++--------- .../stock/doctype/stock_entry/stock_entry.js | 28 +++++++++++-- 2 files changed, 47 insertions(+), 21 deletions(-) diff --git a/erpnext/public/js/utils.js b/erpnext/public/js/utils.js index e5bd4d7e050..e5b50d86eda 100755 --- a/erpnext/public/js/utils.js +++ b/erpnext/public/js/utils.js @@ -595,21 +595,7 @@ erpnext.utils.update_child_items = function(opts) { } erpnext.utils.map_current_doc = function(opts) { - let query_args = {}; - if (opts.get_query_filters) { - query_args.filters = opts.get_query_filters; - } - - if (opts.get_query_method) { - query_args.query = opts.get_query_method; - } - - if (query_args.filters || query_args.query) { - opts.get_query = () => { - return query_args; - } - } - var _map = function() { + function _map() { if($.isArray(cur_frm.doc.items) && cur_frm.doc.items.length > 0) { // remove first item row if empty if(!cur_frm.doc.items[0].item_code) { @@ -683,8 +669,22 @@ erpnext.utils.map_current_doc = function(opts) { } }); } - if(opts.source_doctype) { - var d = new frappe.ui.form.MultiSelectDialog({ + + let query_args = {}; + if (opts.get_query_filters) { + query_args.filters = opts.get_query_filters; + } + + if (opts.get_query_method) { + query_args.query = opts.get_query_method; + } + + if (query_args.filters || query_args.query) { + opts.get_query = () => query_args; + } + + if (opts.source_doctype) { + const d = new frappe.ui.form.MultiSelectDialog({ doctype: opts.source_doctype, target: opts.target, date_field: opts.date_field || undefined, @@ -703,7 +703,11 @@ erpnext.utils.map_current_doc = function(opts) { _map(); }, }); - } else if(opts.source_name) { + + return d; + } + + if (opts.source_name) { opts.source_name = [opts.source_name]; _map(); } diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.js b/erpnext/stock/doctype/stock_entry/stock_entry.js index 726118d06d1..dfb530b22a0 100644 --- a/erpnext/stock/doctype/stock_entry/stock_entry.js +++ b/erpnext/stock/doctype/stock_entry/stock_entry.js @@ -231,15 +231,37 @@ frappe.ui.form.on('Stock Entry', { }, __("Get Items From")); frm.add_custom_button(__('Material Request'), function() { - erpnext.utils.map_current_doc({ + const allowed_request_types = ["Material Transfer", "Material Issue", "Customer Provided"]; + const depends_on_condition = "eval:doc.material_request_type==='Customer Provided'"; + const d = erpnext.utils.map_current_doc({ method: "erpnext.stock.doctype.material_request.material_request.make_stock_entry", source_doctype: "Material Request", target: frm, date_field: "schedule_date", - setters: {}, + setters: [{ + fieldtype: 'Select', + label: __('Purpose'), + options: allowed_request_types.join("\n"), + fieldname: 'material_request_type', + default: "Material Transfer", + mandatory: 1, + change() { + if (this.value === 'Customer Provided') { + d.dialog.get_field("customer").set_focus(); + } + }, + }, + { + fieldtype: 'Link', + label: __('Customer'), + options: 'Customer', + fieldname: 'customer', + depends_on: depends_on_condition, + mandatory_depends_on: depends_on_condition, + }], get_query_filters: { docstatus: 1, - material_request_type: ["in", ["Material Transfer", "Material Issue"]], + material_request_type: ["in", allowed_request_types], status: ["not in", ["Transferred", "Issued"]] } })