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 482a2ae..78af1ef 100644
--- a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py
+++ b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py
@@ -192,8 +192,6 @@
 	if isinstance(doc, basestring):
 		doc = json.loads(doc)
 
-	validate_duplicate_supplier_quotation(doc)
-
 	try:
 		sq_doc = frappe.get_doc({
 			"doctype": "Supplier Quotation",
@@ -245,13 +243,3 @@
 		args = doc.get('suppliers')[cint(supplier_idx) - 1]
 		doc.update_supplier_part_no(args)
 		return doc
-
-@frappe.whitelist()
-def validate_duplicate_supplier_quotation(args):
-	data = frappe.db.sql("""select sq.name as name from `tabSupplier Quotation` sq, 
-		`tabSupplier Quotation Item` sqi where sqi.parent = sq.name and sq.supplier = %(supplier)s 
-		and sqi.request_for_quotation = %(rfq)s and sq.docstatus < 2""",
-		{'supplier': args.get('supplier'), 'rfq': args.get('name')}, as_dict=True)
-
-	if data and data[0] and data[0].name:
-		frappe.throw(_("Already supplier quotation has created"))
diff --git a/erpnext/templates/includes/rfq.js b/erpnext/templates/includes/rfq.js
index 42dcc3a..46357d4 100644
--- a/erpnext/templates/includes/rfq.js
+++ b/erpnext/templates/includes/rfq.js
@@ -18,6 +18,7 @@
 		this.change_rate();
 		this.terms();
 		this.submit_rfq();
+		this.navigate_quotations();
 	},
 
 	onfocus_select_all: function(){
@@ -89,5 +90,12 @@
 				}
 			})
 		})
+	},
+
+	navigate_quotations: function() {
+		$('.quotations').click(function(){
+			name = $(this).attr('idx')
+			window.location.href = "/quotations/" + encodeURIComponent(name);
+		})
 	}
 })
diff --git a/erpnext/templates/pages/rfq.html b/erpnext/templates/pages/rfq.html
index a2b6a66..591d046 100644
--- a/erpnext/templates/pages/rfq.html
+++ b/erpnext/templates/pages/rfq.html
@@ -68,6 +68,31 @@
 				<textarea class="form-control terms-feedback" style="height: 100px;"></textarea>
 			</div>
 		</div>
+		<hr>
+		<div class="row">
+			<div class="result">
+				<div class="col-xs-12">
+					<p class="text-muted small">{{ _("Quotations: ") }}</p>
+					{% if doc.rfq_links %}
+						{% for d in doc.rfq_links %}
+							<div class="web-list-item transaction-list-item quotations" idx="{{d.name}}">
+								<div class="row">
+									<div class="col-sm-6">
+										<span class="indicator darkgrey"><a href="/quotations/{{d.name}}">{{d.name}}</a></span>
+									</div>
+									<div class="col-sm-3">
+										<span class="small darkgrey">{{d.status}}</span>
+									</div>
+									<div class="col-sm-3">
+										<span class="small darkgrey">{{d.transaction_date}}</span>
+									</div>
+								</div>
+							</div>
+						{% endfor %}
+					{% endif %}
+				</div>
+			</div>
+		</div>
     </div>
 </div>
 
diff --git a/erpnext/templates/pages/rfq.py b/erpnext/templates/pages/rfq.py
index decae41..abc2890 100644
--- a/erpnext/templates/pages/rfq.py
+++ b/erpnext/templates/pages/rfq.py
@@ -4,6 +4,7 @@
 from __future__ import unicode_literals
 import frappe
 from frappe import _
+from frappe.utils import formatdate
 from erpnext.controllers.website_list_for_contact import (get_customers_suppliers,
 					get_party_details)
 
@@ -13,6 +14,7 @@
 	context.doc = frappe.get_doc(frappe.form_dict.doctype, frappe.form_dict.name)
 	context.parents = frappe.form_dict.parents
 	context.doc.supplier = get_supplier()
+	context.doc.rfq_links = get_link_quotation(context.doc.supplier, context.doc.name)
 	unauthorized_user(context.doc.supplier)
 	update_supplier_details(context)
 	context["title"] = frappe.form_dict.name
@@ -41,4 +43,18 @@
 	context.doc.currency = supplier_doc.default_currency or frappe.db.get_value("Company", context.doc.company, "default_currency")
 	context.doc.currency_symbol = frappe.db.get_value("Currency", context.doc.currency, "symbol")
 	context.doc.number_format = frappe.db.get_value("Currency", context.doc.currency, "number_format")
-	context.doc.buying_price_list = supplier_doc.default_price_list or ''
\ No newline at end of file
+	context.doc.buying_price_list = supplier_doc.default_price_list or ''
+
+def get_link_quotation(supplier, rfq):
+	quotation = frappe.db.sql(""" select distinct `tabSupplier Quotation Item`.parent as name,
+		`tabSupplier Quotation`.status, `tabSupplier Quotation`.transaction_date from
+		`tabSupplier Quotation Item`, `tabSupplier Quotation` where `tabSupplier Quotation`.docstatus < 2 and
+		`tabSupplier Quotation Item`.request_for_quotation =%(name)s and
+		`tabSupplier Quotation Item`.parent = `tabSupplier Quotation`.name and
+		`tabSupplier Quotation`.supplier = %(supplier)s order by `tabSupplier Quotation`.creation desc""",
+		{'name': rfq, 'supplier': supplier}, as_dict=1)
+
+	for data in quotation:
+		data.transaction_date = formatdate(data.transaction_date)
+
+	return quotation or None
