In RFQ, get items from material requests based on possible supplier
diff --git a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js
index 2822733..113dbe0 100644
--- a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js
+++ b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js
@@ -134,21 +134,19 @@
 						}
 					})
 				}, __("Get items from"));
-			cur_frm.add_custom_button(__('Possible Supplier'),
-				function() {
-					
-
-					
-					//Create a dialog window for the user to pick their supplier
+				
+				// Get items from open Material Requests based on supplier
+				cur_frm.add_custom_button(__('Possible Supplier'), function() {
+					// Create a dialog window for the user to pick their supplier
 					var d = new frappe.ui.Dialog({
 						title: __('Select Possible Supplier'),
 						fields: [
 						{fieldname: 'supplier', fieldtype:'Link', options:'Supplier', label:'Supplier', reqd:1},
-						{fieldname: 'ok_button', fieldtype:'Button', label:'Get Material Requests'},
+						{fieldname: 'ok_button', fieldtype:'Button', label:'Get Items from Material Requests'},
 						]
 					});
 					
-					//On the user clicking the ok button
+					// On the user clicking the ok button
 					d.fields_dict.ok_button.input.onclick = function() {
 						var btn = d.fields_dict.ok_button.input;
 						var v = d.get_values();
@@ -156,7 +154,7 @@
 							$(btn).set_working();
 							
 							erpnext.utils.map_current_doc({
-								method: "erpnext.buying.doctype.request_for_quotation.request_for_quotation.get_matreq_from_possible_supplier",
+								method: "erpnext.buying.doctype.request_for_quotation.request_for_quotation.get_item_from_material_requests_based_on_supplier",
 								source_name: v.supplier,
 								get_query_filters: {
 									material_request_type: "Purchase",
@@ -167,10 +165,8 @@
 								}
 							});
 							$(btn).done_working();
-							//msgprint("Loaded Material Requests");
 							d.hide();
 						}
-					
 					}	
 					d.show();
 				}, __("Get items from"));
diff --git a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py
index 9592534..6300864 100644
--- a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py
+++ b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py
@@ -6,13 +6,13 @@
 import frappe, json
 from frappe import _
 from frappe.model.mapper import get_mapped_doc
-from frappe.utils import get_url, random_string, cint
+from frappe.utils import get_url, cint
 from frappe.utils.user import get_user_fullname
 from frappe.utils.print_format import download_pdf
 from frappe.desk.form.load import get_attachments
 from frappe.core.doctype.communication.email import make
 from erpnext.accounts.party import get_party_account_currency, get_party_details
-from erpnext.stock.doctype.material_request.material_request import set_missing_values, make_request_for_quotation
+from erpnext.stock.doctype.material_request.material_request import set_missing_values
 from erpnext.controllers.buying_controller import BuyingController
 
 STANDARD_USERS = ("Guest", "Administrator")
@@ -246,42 +246,47 @@
 		return doc
 		
 @frappe.whitelist()
-def get_matreq_from_possible_supplier(source_name, target_doc = None):
+def get_item_from_material_requests_based_on_supplier(source_name, target_doc = None):
+	mr_items_list = frappe.db.sql("""
+		SELECT
+			mr.name, mr_item.item_code
+		FROM
+			`tabItem` as item, 
+			`tabItem Supplier` as item_supp, 
+			`tabMaterial Request Item` as mr_item, 
+			`tabMaterial Request`  as mr 
+		WHERE item_supp.supplier = %(supplier)s 
+			AND item.name = item_supp.parent 
+			AND mr_item.parent = mr.name 
+			AND mr_item.item_code = item.name 
+			AND mr.status != "Stopped" 
+			AND mr.material_request_type = "Purchase" 
+			AND mr.docstatus = 1 
+			AND mr.per_ordered < 99.99""", {"supplier": source_name}, as_dict=1)
+	
+	material_requests = {}
+	for d in mr_items_list:
+		material_requests.setdefault(d.name, []).append(d.item_code)
 
-	item_list = frappe.db.sql("""SELECT matreq.name, matreqi.item_code
-		FROM `tabItem` as item, 
-			`tabItem Supplier` as itemsup, 
-			`tabMaterial Request Item` as matreqi, 
-			`tabMaterial Request`  as matreq 
-		WHERE itemsup.supplier = %(supplier)s 
-			AND item.name = itemsup.parent 
-			AND matreqi.parent = matreq.name 
-			AND matreqi.item_code = item.name 
-			AND matreq.status != "Stopped" 
-			AND matreq.material_request_type = "Purchase" 
-			AND matreq.docstatus = 1 
-			AND matreq.per_ordered < 99.99""", \
-		{"supplier": source_name},as_dict=1)
-	for d in item_list:
-		frappe.msgprint(d.name + " - " + d.item_code)
-		target_doc = get_mapped_doc("Material Request", d.name, 	{
-		"Material Request": {
-			"doctype": "Request for Quotation",
-			"validation": {
-				"docstatus": ["=", 1],
-				"material_request_type": ["=", "Purchase"],
-				
+	for mr, items in material_requests.items():
+		target_doc = get_mapped_doc("Material Request", mr, {
+			"Material Request": {
+				"doctype": "Request for Quotation",
+				"validation": {
+					"docstatus": ["=", 1],
+					"material_request_type": ["=", "Purchase"],
+				}
+			},
+			"Material Request Item": {
+				"doctype": "Request for Quotation Item",
+				"condition": lambda row: row.item_code in items,
+				"field_map": [
+					["name", "material_request_item"],
+					["parent", "material_request"],
+					["uom", "uom"]
+				]
 			}
-		},
-		"Material Request Item": {
-			"doctype": "Request for Quotation Item",
-			"condition": lambda doc: doc.item_code == d.item_code,
-			"field_map": [
-				["name", "material_request_item"],
-				["parent", "material_request"],
-				["uom", "uom"]
-			]
-		}
-	}, target_doc)
+		}, target_doc)
+		
 	return target_doc
 		
\ No newline at end of file