diff --git a/erpnext/hooks.py b/erpnext/hooks.py
index fc8d39b..4df83af 100644
--- a/erpnext/hooks.py
+++ b/erpnext/hooks.py
@@ -50,7 +50,8 @@
 
 fixtures = ["Web Form"]
 
-website_generators = ["Item Group", "Item", "BOM", "Sales Partner", "Job Opening", "Student Admission"]
+website_generators = ["Item Group", "Item", "BOM", "Sales Partner",
+	"Job Opening", "Student Admission"]
 
 website_context = {
 	"favicon": 	"/assets/erpnext/images/favicon.png",
@@ -83,7 +84,7 @@
 	{"from_route": "/quotations/<path:name>", "to_route": "order",
 		"defaults": {
 			"doctype": "Quotation",
-			"parents": [{"label": _("Quotations"), "route": "quotation"}]
+			"parents": [{"label": _("Quotations"), "route": "quotations"}]
 		}
 	},
 	{"from_route": "/shipments", "to_route": "Delivery Note"},
diff --git a/erpnext/public/css/website.css b/erpnext/public/css/website.css
index 0245675..733194a 100644
--- a/erpnext/public/css/website.css
+++ b/erpnext/public/css/website.css
@@ -62,11 +62,6 @@
 .featured-products {
   border-top: 1px solid #EBEFF2;
 }
-.transaction-list-item:hover,
-.transaction-list-item:active,
-.transaction-list-item:focus {
-  background-color: #fafbfc;
-}
 .transaction-list-item .indicator {
   font-weight: inherit;
   color: #8D99A6;
diff --git a/erpnext/public/less/website.less b/erpnext/public/less/website.less
index 79a89a0..25172a1 100644
--- a/erpnext/public/less/website.less
+++ b/erpnext/public/less/website.less
@@ -76,12 +76,6 @@
 }
 
 .transaction-list-item {
-	&:hover,
-	&:active,
-	&:focus {
-		background-color: @light-bg;
-	}
-
 	.indicator {
 		font-weight: inherit;
 		color: @text-muted;
diff --git a/erpnext/schools/doctype/student_group/test_student_group.js b/erpnext/schools/doctype/student_group/test_student_group.js
index df72ae9..634ad18 100644
--- a/erpnext/schools/doctype/student_group/test_student_group.js
+++ b/erpnext/schools/doctype/student_group/test_student_group.js
@@ -57,7 +57,7 @@
 					() => frappe.set_route("Form", ('Student Group/' + index)),
 					() => frappe.timeout(0.5),
 					() => frappe.tests.click_button('Get Students'),
-					() => frappe.timeout(0.5),
+					() => frappe.timeout(1),
 					() => {
 						assert.equal(cur_frm.doc.students.length, 5, 'Successfully fetched list of students');
 					},
diff --git a/erpnext/selling/doctype/quotation/quotation.js b/erpnext/selling/doctype/quotation/quotation.js
index c149742..3e5e52f 100644
--- a/erpnext/selling/doctype/quotation/quotation.js
+++ b/erpnext/selling/doctype/quotation/quotation.js
@@ -38,10 +38,6 @@
 
 		var me = this;
 
-		if (doc.valid_till && frappe.datetime.get_diff(doc.valid_till, frappe.datetime.get_today()) < 0) {
-			this.frm.set_intro(__("Validity period of this quotation has ended"));
-		}
-
 		if (doc.__islocal) {
 			this.frm.set_value('valid_till', frappe.datetime.add_months(doc.transaction_date, 1))
 		}
diff --git a/erpnext/selling/doctype/quotation/quotation.py b/erpnext/selling/doctype/quotation/quotation.py
index 5eb8b06..1e6dbca 100644
--- a/erpnext/selling/doctype/quotation/quotation.py
+++ b/erpnext/selling/doctype/quotation/quotation.py
@@ -14,6 +14,14 @@
 }
 
 class Quotation(SellingController):
+	def set_indicator(self):
+		if self.docstatus==1:
+			self.indicator_color = 'blue'
+			self.indicator_title = 'Submitted'
+		if self.valid_till and getdate(self.valid_till) < getdate(nowdate()):
+			self.indicator_color = 'darkgrey'
+			self.indicator_title = 'Expired'
+
 	def validate(self):
 		super(Quotation, self).validate()
 		self.set_status()
diff --git a/erpnext/selling/doctype/quotation/quotation_list.js b/erpnext/selling/doctype/quotation/quotation_list.js
index 204ace1..8baf9b2 100644
--- a/erpnext/selling/doctype/quotation/quotation_list.js
+++ b/erpnext/selling/doctype/quotation/quotation_list.js
@@ -1,9 +1,13 @@
 frappe.listview_settings['Quotation'] = {
 	add_fields: ["customer_name", "base_grand_total", "status",
-		"company", "currency"],
+		"company", "currency", 'valid_till'],
 	get_indicator: function(doc) {
 		if(doc.status==="Submitted") {
-			return [__("Submitted"), "blue", "status,=,Submitted"];
+			if (doc.valid_till && doc.valid_till < frappe.datetime.nowdate()) {
+				return [__("Expired"), "darkgrey", "valid_till,<," + frappe.datetime.nowdate()];
+			} else {
+				return [__("Submitted"), "blue", "status,=,Submitted"];
+			}
 		} else if(doc.status==="Ordered") {
 			return [__("Ordered"), "green", "status,=,Ordered"];
 		} else if(doc.status==="Lost") {
diff --git a/erpnext/templates/includes/order/order_taxes.html b/erpnext/templates/includes/order/order_taxes.html
index 471576f..462d77d 100644
--- a/erpnext/templates/includes/order/order_taxes.html
+++ b/erpnext/templates/includes/order/order_taxes.html
@@ -1,22 +1,22 @@
 {% if doc.taxes %}
 <div class="row tax-net-total-row">
-    <div class="col-xs-8 text-right">{{ _("Net Total") }}</div>
-    <div class="col-xs-4 text-right">
+    <div class="col-xs-6 text-right">{{ _("Net Total") }}</div>
+    <div class="col-xs-6 text-right">
         {{ doc.get_formatted("net_total") }}</div>
 </div>
 {% endif %}
 {% for d in doc.taxes %}
 {% if d.base_tax_amount > 0 %}
 <div class="row tax-row">
-    <div class="col-xs-8 text-right">{{ d.description }}</div>
-    <div class="col-xs-4 text-right">
+    <div class="col-xs-6 text-right">{{ d.description }}</div>
+    <div class="col-xs-6 text-right">
         {{ d.get_formatted("base_tax_amount") }}</div>
 </div>
 {% endif %}
 {% endfor %}
 <div class="row tax-grand-total-row">
-    <div class="col-xs-8 text-right text-uppercase h6 text-muted">{{ _("Grand Total") }}</div>
-    <div class="col-xs-4 text-right">
+    <div class="col-xs-6 text-right text-uppercase h6 text-muted">{{ _("Grand Total") }}</div>
+    <div class="col-xs-6 text-right">
         <span class="tax-grand-total bold">
             {{ doc.get_formatted("grand_total") }}
         </span>
diff --git a/erpnext/templates/includes/transaction_row.html b/erpnext/templates/includes/transaction_row.html
index 10d7605..0e47f7d 100644
--- a/erpnext/templates/includes/transaction_row.html
+++ b/erpnext/templates/includes/transaction_row.html
@@ -1,23 +1,22 @@
 <div class="web-list-item transaction-list-item">
 	<a href="/{{ pathname }}/{{ doc.name }}">
 		<div class="row">
-			<div class="col-sm-5">
-				<span class="indicator small {{ doc.indicator_color or "darkgrey" }}">
+			<div class="col-sm-4" style='margin-top: -3px;'>
+				<span class="indicator small {{ doc.indicator_color or ("blue" if doc.docstatus==1 else "darkgrey") }}">
 				{{ doc.name }}</span>
 				<div class="small text-muted transaction-time"
 					title="{{ frappe.utils.format_datetime(doc.modified, "medium") }}">
-					{{ frappe.utils.format_datetime(doc.modified, "medium") }}
+					{{ frappe.utils.global_date_format(doc.modified) }}
 				</div>
 			</div>
-			<div class="col-sm-4 items-preview ellipsis small">
-				{{ doc.items_preview }}
+			<div class="col-sm-5">
+				<div class="small text-muted items-preview ellipsis">
+					{{ doc.items_preview }}
+				</div>
 			</div>
 			<div class="col-sm-3 text-right bold">
 				{{ doc.get_formatted("grand_total") }}
 			</div>
-			<!-- <div class="col-sm-3 text-right">
-
-			</div> -->
 		</div>
 	</a>
 </div>
diff --git a/erpnext/templates/pages/order.html b/erpnext/templates/pages/order.html
index 2481808..8a495b1 100644
--- a/erpnext/templates/pages/order.html
+++ b/erpnext/templates/pages/order.html
@@ -7,21 +7,44 @@
 
 {% block title %}{{ doc.name }}{% endblock %}
 
-{% block header %}<h1>{{ doc.name }}</h1>{% endblock %}
+{% block header %}
+	<h1>{{ doc.name }}</h1>
+{% endblock %}
+
+{% block header_actions %}
+<a class='btn btn-xs btn-default' href='/printview?doctype={{ doc.doctype}}&name={{ doc.name }}&format={{ print_format }}' target="_blank" rel="noopener noreferrer">{{ _("Print") }}</a>
+{% endblock %}
 
 {% block page_content %}
 
 <div class="row transaction-subheading">
     <div class="col-xs-6">
-        <span class="indicator {{ doc.indicator_color or "darkgrey" }}">
+        <span class="indicator {{ doc.indicator_color or ("blue" if doc.docstatus==1 else "darkgrey") }}">
             {{ doc.indicator_title or doc.status or "Submitted" }}
         </span>
 	</div>
     <div class="col-xs-6 text-muted text-right small">
         {{ frappe.utils.formatdate(doc.transaction_date, 'medium') }}
+		{% if doc.valid_till %}
+		<p>
+        {{ _("Valid Till") }}: {{ frappe.utils.formatdate(doc.valid_till, 'medium') }}
+		</p>
+		{% endif %}
     </div>
 </div>
 
+<p class='small' style='padding-top: 15px;'>
+{% if doc.doctype == 'Supplier Quotation' %}
+    <b>{{ doc.supplier_name}}</b>
+{% else %}
+    <b>{{ doc.customer_name}}</b>
+{% endif %}
+{% if doc.contact_display %}
+	<br>
+	{{ doc.contact_display }}
+{% endif %}
+</p>
+
 {% if doc._header %}
 {{ doc._header }}
 {% endif %}
@@ -31,29 +54,29 @@
     <!-- items -->
     <div class="order-item-table">
         <div class="row order-items order-item-header text-muted">
-            <div class="col-sm-8 col-xs-6 h6 text-uppercase">
+            <div class="col-sm-6 col-xs-6 h6 text-uppercase">
                 {{ _("Item") }}
             </div>
-            <div class="col-sm-2 col-xs-3 text-right h6 text-uppercase">
+            <div class="col-sm-3 col-xs-3 text-right h6 text-uppercase">
                 {{ _("Quantity") }}
             </div>
-            <div class="col-sm-2 col-xs-3 text-right h6 text-uppercase">
+            <div class="col-sm-3 col-xs-3 text-right h6 text-uppercase">
                 {{ _("Amount") }}
             </div>
         </div>
         {% for d in doc.items %}
         <div class="row order-items">
-            <div class="col-sm-8 col-xs-6">
+            <div class="col-sm-6 col-xs-6">
                 {{ item_name_and_description(d) }}
             </div>
-            <div class="col-sm-2 col-xs-3 text-right">
+            <div class="col-sm-3 col-xs-3 text-right">
                 {{ d.qty }}
                 {% if d.delivered_qty is defined and d.delivered_qty != None %}
                 <p class="text-muted small">{{
                     _("Delivered: {0}").format(d.delivered_qty) }}</p>
                 {% endif %}
             </div>
-            <div class="col-sm-2 col-xs-3 text-right">
+            <div class="col-sm-3 col-xs-3 text-right">
                 {{ d.get_formatted("amount")	 }}
                 <p class="text-muted small">{{
                     _("@ {0}").format(d.get_formatted("rate")) }}</p>
@@ -72,8 +95,8 @@
 </div>
 
 <div class="cart-taxes row small">
-    <div class="col-sm-8"><!-- empty --></div>
-    <div class="col-sm-4">
+    <div class="col-sm-6"><!-- empty --></div>
+    <div class="col-sm-6">
 		{% if enabled_checkout %}
 	        {% if (doc.doctype=="Sales Order" and doc.per_billed <= 0)
 				or (doc.doctype=="Sales Invoice" and doc.outstanding_amount > 0) %}
@@ -86,7 +109,7 @@
 			{% endif %}
 		{% endif %}
 	</div>
-	
+
 {% if attachments %}
 <div class="order-item-table">
 	<div class="row order-items order-item-header text-muted">
@@ -106,4 +129,9 @@
 </div>
 {% endif %}
 </div>
+{% if doc.terms %}
+<div class="terms-and-condition text-muted small">
+    <hr><p>{{ doc.terms }}</p>
+</div>
+{% endif %}
 {% endblock %}
diff --git a/erpnext/templates/pages/order.py b/erpnext/templates/pages/order.py
index 7551a0f..110eb57 100644
--- a/erpnext/templates/pages/order.py
+++ b/erpnext/templates/pages/order.py
@@ -15,7 +15,7 @@
 		context.doc.set_indicator()
 
 	if show_attachments():
-                context.attachments = get_attachments(frappe.form_dict.doctype, frappe.form_dict.name)
+		context.attachments = get_attachments(frappe.form_dict.doctype, frappe.form_dict.name)
 
 	context.parents = frappe.form_dict.parents
 	context.title = frappe.form_dict.name
@@ -28,5 +28,6 @@
 		frappe.throw(_("Not Permitted"), frappe.PermissionError)
 
 def get_attachments(dt, dn):
-        return frappe.get_all("File", fields=["name", "file_name", "file_url", "is_private"],
-                              filters = {"attached_to_name": dn, "attached_to_doctype": dt, "is_private":0})
+        return frappe.get_all("File",
+			fields=["name", "file_name", "file_url", "is_private"],
+			filters = {"attached_to_name": dn, "attached_to_doctype": dt, "is_private":0})
