diff --git a/erpnext/accounts/party.py b/erpnext/accounts/party.py
index 365aa7f..310e412 100644
--- a/erpnext/accounts/party.py
+++ b/erpnext/accounts/party.py
@@ -7,7 +7,6 @@
 import frappe
 from frappe import _, msgprint, scrub
 from frappe.contacts.doctype.address.address import get_company_address, get_default_address
-from frappe.contacts.doctype.contact.contact import get_contact_details
 from frappe.core.doctype.user_permission.user_permission import get_permitted_documents
 from frappe.model.utils import get_fetch_values
 from frappe.query_builder.functions import Abs, Date, Sum
@@ -294,7 +293,21 @@
 			}
 		)
 	else:
-		party_details.update(get_contact_details(party_details.contact_person))
+		fields = [
+			"name as contact_person",
+			"full_name as contact_display",
+			"email_id as contact_email",
+			"mobile_no as contact_mobile",
+			"phone as contact_phone",
+			"designation as contact_designation",
+			"department as contact_department",
+		]
+
+		contact_details = frappe.db.get_value(
+			"Contact", party_details.contact_person, fields, as_dict=True
+		)
+
+		party_details.update(contact_details)
 
 
 def set_other_values(party_details, party, party_type):
diff --git a/erpnext/templates/includes/rfq.js b/erpnext/templates/includes/rfq.js
index 37beb5a..ed0f1b1 100644
--- a/erpnext/templates/includes/rfq.js
+++ b/erpnext/templates/includes/rfq.js
@@ -73,6 +73,7 @@
 
 	submit_rfq(){
 		$('.btn-sm').click(function(){
+			debugger
 			frappe.freeze();
 			frappe.call({
 				type: "POST",
@@ -82,6 +83,7 @@
 				},
 				btn: this,
 				callback: function(r){
+					debugger
 					frappe.unfreeze();
 					if(r.message){
 						$('.btn-sm').hide()
diff --git a/erpnext/templates/includes/rfq/rfq_macros.html b/erpnext/templates/includes/rfq/rfq_macros.html
index 88724c3..78ec6ff 100644
--- a/erpnext/templates/includes/rfq/rfq_macros.html
+++ b/erpnext/templates/includes/rfq/rfq_macros.html
@@ -1,19 +1,25 @@
 {% from "erpnext/templates/includes/macros.html" import product_image_square, product_image %}
 
 {% macro item_name_and_description(d, doc) %}
-    <div class="row">
-        <div class="col-3">
-			{{ product_image(d.image) }}
-        </div>
-        <div class="col-9">
-            {{ d.item_code }}
-            <p class="text-muted small">{{ d.description }}</p>
+	<div class="row">
+		<div class="col-3">
+			{% if d.image %}
+				{{ product_image(d.image) }}
+			{% else %}
+				<div class="website-image h-100 w-100" style="background-color:var(--gray-100);text-align: center;line-height: 3.6;">
+					{{ frappe.utils.get_abbr(d.item_name)}}
+				</div>
+			{% endif %}
+		</div>
+		<div class="col-9">
+			{{ d.item_code }}
+			<p class="text-muted small">{{ d.description }}</p>
 			{% set supplier_part_no = frappe.db.get_value("Item Supplier", {'parent': d.item_code, 'supplier': doc.supplier}, "supplier_part_no") %}
 			<p class="text-muted small supplier-part-no">
 				{% if supplier_part_no %}
 					{{_("Supplier Part No") + ": "+ supplier_part_no}}
 				{% endif %}
 			</p>
-        </div>
-    </div>
+		</div>
+	</div>
 {% endmacro %}
diff --git a/erpnext/templates/pages/order.html b/erpnext/templates/pages/order.html
index bc34ad5..97bf487 100644
--- a/erpnext/templates/pages/order.html
+++ b/erpnext/templates/pages/order.html
@@ -1,5 +1,5 @@
 {% extends "templates/web.html" %}
-{% from "erpnext/templates/includes/order/order_macros.html" import item_name_and_description %}
+{% from "erpnext/templates/includes/macros.html" import product_image %}
 
 {% block breadcrumbs %}
 	{% include "templates/includes/breadcrumbs.html" %}
@@ -34,18 +34,6 @@
 				</a>
 			</ul>
 		</div>
-		{% if show_pay_button %}
-			<div class="form-column col-sm-6">
-				<div class="page-header-actions-block" data-html-block="header-actions">
-					<p>
-						<a href="/api/method/erpnext.accounts.doctype.payment_request.payment_request.make_payment_request?dn={{ doc.name }}&dt={{ doc.doctype }}&submit_doc=1&order_type=Shopping Cart"
-							class="btn btn-primary btn-sm" id="pay-for-order">
-							{{ _("Pay") }} {{doc.get_formatted("grand_total") }}
-						</a>
-					</p>
-				</div>
-			</div>
-		{% endif %}
 	</div>
 {% endblock %}
 
@@ -130,42 +118,6 @@
 		</div>
 	</div>
 
-	{% if enabled_checkout and ((doc.doctype=="Sales Order" and doc.per_billed <= 0)
-		or (doc.doctype=="Sales Invoice" and doc.outstanding_amount> 0)) %}
-		<div class="panel panel-default">
-			<div class="panel-collapse">
-				<div class="panel-body text-muted small">
-					<div class="row">
-						<div class="form-column col-sm-6">
-							{% if available_loyalty_points %}
-							<div class="panel-heading">
-								<div class="row">
-									<div class="form-column col-sm-6 address-title">
-										<strong>Loyalty Points</strong>
-									</div>
-								</div>
-							</div>
-
-							<div class="form-group">
-								<div class="h6">Enter Loyalty Points</div>
-								<div class="control-input-wrapper">
-									<div class="control-input">
-										<input class="form-control" type="number" min="0"
-											max="{{ available_loyalty_points }}" id="loyalty-point-to-redeem">
-									</div>
-									<p class="help-box small text-muted d-none d-sm-block"> Available Points: {{
-										available_loyalty_points }} </p>
-								</div>
-							</div>
-							{% endif %}
-						</div>
-					</div>
-				</div>
-			</div>
-		</div>
-	{% endif %}
-
-
 	{% if attachments %}
 		<div class="order-item-table">
 			<div class="row order-items order-item-header text-muted">
@@ -193,15 +145,27 @@
 	{% endif %}
 {% endblock %}
 
-{% block script %}
-	<script> {% include "templates/pages/order.js" %}</script>
-	<script>
-		window.doc_info = {
-			customer: '{{doc.customer}}',
-			doctype: '{{ doc.doctype }}',
-			doctype_name: '{{ doc.name }}',
-			grand_total: '{{ doc.grand_total }}',
-			currency: '{{ doc.currency }}'
-		}
-	</script>
-{% endblock %}
\ No newline at end of file
+{% macro item_name_and_description(d) %}
+	<div class="row item_name_and_description">
+		<div class="col-xs-4 col-sm-2 order-image-col">
+			<div class="order-image h-100">
+				{% if d.thumbnail or d.image %}
+					{{ product_image(d.thumbnail or d.image, no_border=True) }}
+				{% else %}
+					<div class="no-image-cart-item" style="min-height: 100px;">
+						{{ frappe.utils.get_abbr(d.item_name) or "NA" }}
+					</div>
+				{% endif %}
+			</div>
+		</div>
+		<div class="col-xs-8 col-sm-10">
+			{{ d.item_code }}
+			<div class="text-muted small item-description">
+				{{ html2text(d.description) | truncate(140) }}
+			</div>
+			<span class="text-muted mt-2 d-l-n order-qty">
+				{{ _("Qty ") }}({{ d.get_formatted("qty") }})
+			</span>
+		</div>
+	</div>
+{% endmacro %}
\ No newline at end of file
diff --git a/erpnext/templates/pages/rfq.html b/erpnext/templates/pages/rfq.html
index 6516482..d371bf2 100644
--- a/erpnext/templates/pages/rfq.html
+++ b/erpnext/templates/pages/rfq.html
@@ -1,7 +1,7 @@
 {% extends "templates/web.html" %}
 
 {% block header %}
-<h1>{{ doc.name }}</h1>
+<h1 style="margin-top: 10px;">{{ doc.name }}</h1>
 {% endblock %}
 
 {% block script %}
@@ -16,7 +16,7 @@
 {% if doc.items %}
 <button class="btn btn-primary btn-sm"
     type="button">
-    {{ _("Submit") }}</button>
+    {{ _("Make Quotation") }}</button>
 {% endif %}
 {% endblock %}
 
