diff --git a/erpnext/buying/doctype/purchase_common/purchase_common.js b/erpnext/buying/doctype/purchase_common/purchase_common.js
index c03ccc8..8030979 100644
--- a/erpnext/buying/doctype/purchase_common/purchase_common.js
+++ b/erpnext/buying/doctype/purchase_common/purchase_common.js
@@ -221,6 +221,44 @@
 
 	tc_name: function() {
 		this.get_terms();
+	},
+	link_requests: function() { 
+		
+		cur_frm.add_custom_button(__("Link to Material Requests"),
+			function() {
+				my_items = []
+				for (var i in cur_frm.doc.items) {
+					if(!cur_frm.doc.items[i].material_request){
+						my_items.push(cur_frm.doc.items[i].item_code);
+					}
+					
+				}
+				frappe.call({	
+					method: "erpnext.buying.doctype.purchase_common.purchase_common.get_linked_material_requests", 
+					args:{
+						items: my_items						
+					}, 
+					callback: function(r) { 
+						//frm.reload_doc();
+						console.log(r.message);
+						for (var i in cur_frm.doc.items) {
+							var qty = cur_frm.doc.items[i].qty;
+							(r.message || []).forEach(function(d) {
+								if (d[0].qty > 0 && qty > 0 && cur_frm.doc.items[i].item_code == d[0].item_code)
+								{
+									cur_frm.doc.items[i].material_request = d[0].mr_name;
+									cur_frm.doc.items[i].material_request_item = d[0].mr_item;
+									my_qty = Math.min(qty, d[0].qty);
+									qty = qty - my_qty;
+									d[0].qty = d[0].qty  - my_qty;
+								}
+							
+							});
+						}
+					}
+				});
+			});
+
 	}
 });
 
diff --git a/erpnext/buying/doctype/purchase_common/purchase_common.py b/erpnext/buying/doctype/purchase_common/purchase_common.py
index 8435f3b..6c10fe1 100644
--- a/erpnext/buying/doctype/purchase_common/purchase_common.py
+++ b/erpnext/buying/doctype/purchase_common/purchase_common.py
@@ -2,7 +2,7 @@
 # License: GNU General Public License v3. See license.txt
 
 from __future__ import unicode_literals
-import frappe
+import frappe, json
 from frappe.utils import flt, cstr, cint
 from frappe import _
 
@@ -79,4 +79,28 @@
 		status = frappe.db.get_value(doctype, docname, "status")
 
 		if status == "Closed":
-			frappe.throw(_("{0} {1} status is {2}").format(doctype, docname, status), frappe.InvalidStatusError)
\ No newline at end of file
+			frappe.throw(_("{0} {1} status is {2}").format(doctype, docname, status), frappe.InvalidStatusError)
+			
+@frappe.whitelist()
+def get_linked_material_requests(items):
+	items = json.loads(items)
+	mr_list = []
+	for item in items:
+		material_request = frappe.db.sql("""SELECT distinct mr.name AS mr_name, 
+				(mr_item.qty - mr_item.ordered_qty) AS qty, 
+				mr_item.item_code AS item_code,
+				mr_item.name AS mr_item 
+			FROM `tabMaterial Request` mr, `tabMaterial Request Item` mr_item
+			WHERE mr.name = mr_item.parent
+				AND mr_item.item_code = %(item)s 
+				AND mr.material_request_type = 'Purchase'
+				AND mr.per_ordered < 99.99
+				AND mr.docstatus = 1
+				AND mr.status != 'Stopped'
+                        ORDER BY mr_item.item_code ASC""",{"item": item}, as_dict=1)
+		if material_request:
+			mr_list.append(material_request)
+	
+	return mr_list
+	
+	
\ No newline at end of file
diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.js b/erpnext/buying/doctype/purchase_order/purchase_order.js
index f2f04fe..2fa3864 100644
--- a/erpnext/buying/doctype/purchase_order/purchase_order.js
+++ b/erpnext/buying/doctype/purchase_order/purchase_order.js
@@ -56,6 +56,7 @@
 			}
 		} else if(doc.docstatus===0) {
 			cur_frm.cscript.add_from_mappers();
+			cur_frm.cscript.link_requests(); 
 		}
 
 		if(doc.docstatus == 1 && in_list(["Closed", "Delivered"], doc.status)) {
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 113dbe0..6568b6d 100644
--- a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js
+++ b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js
@@ -43,6 +43,7 @@
 				});
 			});
 		}
+		
 	},
 
 	make_suppplier_quotation: function(frm) {
@@ -134,7 +135,7 @@
 						}
 					})
 				}, __("Get items from"));
-				
+				cur_frm.cscript.link_requests();
 				// 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
@@ -170,6 +171,7 @@
 					}	
 					d.show();
 				}, __("Get items from"));
+				
 		}
 	},
 
diff --git a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.js b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.js
index b3bdeb0..5da2d7c 100644
--- a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.js
+++ b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.js
@@ -16,6 +16,7 @@
 
 		}
 		else if (this.frm.doc.docstatus===0) {
+			
 			cur_frm.add_custom_button(__('Material Request'),
 				function() {
 					erpnext.utils.map_current_doc({
@@ -30,6 +31,7 @@
 						}
 					})
 				}, __("Get items from"));
+			cur_frm.cscript.link_requests(); 
 		}
 	},
 
