diff --git a/erpnext/templates/generators/item.html b/erpnext/templates/generators/item.html
index 535edcd..af4a795 100644
--- a/erpnext/templates/generators/item.html
+++ b/erpnext/templates/generators/item.html
@@ -27,22 +27,31 @@
 					{{ _("Item Code") }}: <span itemprop="productID">{{ name }}</span></p>
 				<br>
 				<div style="min-height: 100px; margin: 10px 0;">
-					<div class="item-price-info" style="display: none;">
-						<h4 class="item-price" itemprop="price"></h4>
-						<div class="item-stock" itemprop="availablity"></div>
-						<div id="item-add-to-cart">
-							<button class="btn btn-primary">
-								<i class="icon-shopping-cart"></i> + {{ _("Add to Cart") }}</button>
-						</div>
-						<div id="item-update-cart" class="input-group col-md-4" style="display: none;
-							padding-left: 0px; padding-right: 0px;">
-							<input class="form-control" type="text">
-							<div class="input-group-btn">
-								<button class="btn btn-primary">
-									<i class="icon-ok"></i></button>
-							</div>
-						</div>
-					</div>
+					<h4 class="item-price" itemprop="price"></h4>
+					<div class="item-stock" itemprop="availablity"></div>
+                    <div class="item-cart hide">
+    					<div id="item-add-to-cart">
+    						<button class="btn btn-primary btn-sm">
+    							{{ _("Add to Cart") }}</button>
+    					</div>
+    					<div id="item-update-cart"
+                            style="display: none;
+    						padding-left: 0px; padding-right: 0px;
+                            padding-top: 10px;">
+    						<div>
+                                <input class="form-control"
+                                    type="text" style="max-width: 140px;">
+                            </div>
+    						<div style="margin-top: 10px;">
+    							<button class="btn btn-default btn-sm">
+                                {{ _("Update") }}</button>
+    						</div>
+                            <div style="margin-top: 5px;">
+                                <a href="/cart" class="text-muted small">
+                                    {{ _("View Cart") }}</a>
+                            </div>
+    					</div>
+                    </div>
 				</div>
 			</div>
 		</div>
diff --git a/erpnext/templates/includes/address_row.html b/erpnext/templates/includes/address_row.html
index f7eaa76..fd287ad 100644
--- a/erpnext/templates/includes/address_row.html
+++ b/erpnext/templates/includes/address_row.html
@@ -1,19 +1,8 @@
 <div class="web-list-item">
-    <a href="/addresses?name={{ doc.name }}" no-pjax>
-    <div class="row">
-        <div class="col-sm-4">
-            <span class="strong">{{ doc.address_title }}</span>
-        </div>
-        <div class="col-sm-2">
-            {{ doc.address_type }}
-        </div>
-        <div class="col-sm-4">
-            {{ doc.address_line1 }}<br>
-            {% if doc.address_line2 %}{{ doc.address_line2 }}<br>{% endif %}
-            {{ doc.city }}<br>
-        </div>
-        <div class="col-sm-2">
-            {% if doc.state %}{{ doc.state }}, {% endif %}{{ doc.country }}
+    <a href="/addresses?name={{ doc.name }}" no-pjax class="no-decoration">
+        <h4 class="strong">{{ doc.address_title }}</h4>
+        <p class="text-muted small">
+            {{ frappe.get_doc(doc).get_display() }}
         </div>
     </div>
     </a>
diff --git a/erpnext/templates/includes/cart.css b/erpnext/templates/includes/cart.css
new file mode 100644
index 0000000..ed98846
--- /dev/null
+++ b/erpnext/templates/includes/cart.css
@@ -0,0 +1,7 @@
+.cart-content {
+	min-height: 400px;
+}
+
+.cart-header, .cart-footer {
+	margin-bottom: 40px;
+}
diff --git a/erpnext/templates/includes/cart.js b/erpnext/templates/includes/cart.js
index d5956f9..349e2f5 100644
--- a/erpnext/templates/includes/cart.js
+++ b/erpnext/templates/includes/cart.js
@@ -92,12 +92,12 @@
 			$('<hr>').appendTo($cart_taxes);
 
 		shopping_cart.render_tax_row($cart_totals, {
-			description: "<strong>Total</strong>",
-			formatted_tax_amount: "<strong>" + doc.formatted_grand_total_export + "</strong>"
+			description: "",
+			formatted_tax_amount: __("Total") + ": <strong>" + doc.formatted_grand_total_export + "</strong>"
 		});
 
 		if(!(addresses && addresses.length)) {
-			$cart_shipping_address.html('<div class="msg-box">'+frappe._("Hey! Go ahead and add an address")+'</div>');
+			$cart_shipping_address.html('<p>'+frappe._("Please add a new address")+'</p>');
 		} else {
 			shopping_cart.render_address($cart_shipping_address, addresses, doc.shipping_address_name);
 			shopping_cart.render_address($cart_billing_address, addresses, doc.customer_address);
@@ -113,9 +113,9 @@
 		$(repl('<div class="row">\
 			<div class="col-md-9 col-sm-9">\
 				<div class="row">\
-					<div class="col-md-3">%(image_html)s</div>\
-					<div class="col-md-9">\
-						<h4><a href="%(page_name)s">%(item_name)s</a></h4>\
+					<div class="col-md-2">%(image_html)s</div>\
+					<div class="col-md-10">\
+						<h5><a href="%(page_name)s">%(item_name)s</a></h5>\
 						<p>%(description)s</p>\
 					</div>\
 				</div>\
@@ -129,8 +129,8 @@
 							<i class="icon-ok"></i></button>\
 					</div>\
 				</div>\
-				<p style="margin-top: 10px;">at %(formatted_rate)s</p>\
-				<small class="text-muted" style="margin-top: 10px;">= %(formatted_amount)s</small>\
+				<p class="text-muted small" style="margin-top: 10px;">' + __("Rate") + ': %(formatted_rate)s</p>\
+				<small style="margin-top: 10px;">%(formatted_amount)s</small>\
 			</div>\
 		</div><hr>', doc)).appendTo($cart_items);
 	},
@@ -189,12 +189,12 @@
 					<div class="row"> \
 						<div class="col-md-10 address-title" \
 							data-address-name="%(name)s"><strong>%(name)s</strong></div> \
-						<div class="col-md-2"><input type="checkbox" \
+						<div class="col-md-2 text-right"><input type="checkbox" \
 							data-address-name="%(name)s"></div> \
 					</div> \
 				</div> \
 				<div class="panel-collapse collapse" data-address-name="%(name)s"> \
-					<div class="panel-body">%(display)s</div> \
+					<div class="panel-body text-muted small">%(display)s</div> \
 				</div> \
 			</div>', address))
 				.css({"margin": "10px auto"})
@@ -274,24 +274,24 @@
 
 $(document).ready(function() {
 	shopping_cart.bind_events();
-	return frappe.call({
-		type: "POST",
-		method: "erpnext.shopping_cart.cart.get_cart_quotation",
-		callback: function(r) {
-			$("#cart-container").removeClass("hide");
-			$(".progress").remove();
-			if(r.exc) {
-				if(r.exc.indexOf("WebsitePriceListMissingError")!==-1) {
-					shopping_cart.show_error("Configuration Error", frappe._("Price List not configured."));
-				} else if(r["403"]) {
-					shopping_cart.show_error("Not Allowed", frappe._("You need to be logged in to view your cart."));
-				} else {
-					shopping_cart.show_error("Error", frappe._("Something went wrong."));
-				}
-			} else {
-				shopping_cart.set_cart_count();
-				shopping_cart.render(r.message);
-			}
-		}
-	});
+	// return frappe.call({
+	// 	type: "POST",
+	// 	method: "erpnext.shopping_cart.cart.get_cart_quotation",
+	// 	callback: function(r) {
+	// 		$("#cart-container").removeClass("hide");
+	// 		$(".loading").remove();
+	// 		if(r.exc) {
+	// 			if(r.exc.indexOf("WebsitePriceListMissingError")!==-1) {
+	// 				shopping_cart.show_error("Configuration Error", frappe._("Price List not configured."));
+	// 			} else if(r["403"]) {
+	// 				shopping_cart.show_error("Not Allowed", frappe._("You need to be logged in to view your cart."));
+	// 			} else {
+	// 				shopping_cart.show_error("Error", frappe._("Something went wrong."));
+	// 			}
+	// 		} else {
+	// 			shopping_cart.set_cart_count();
+	// 			shopping_cart.render(r.message);
+	// 		}
+	// 	}
+	// });
 });
diff --git a/erpnext/templates/includes/issue_row.html b/erpnext/templates/includes/issue_row.html
index 16a8f7b..8e87fca 100644
--- a/erpnext/templates/includes/issue_row.html
+++ b/erpnext/templates/includes/issue_row.html
@@ -1,21 +1,15 @@
 <div class="web-list-item">
+    <a class="no-decoration" href="/issues?name={{ doc.name }}" no-pjax>
     <div class="row">
-        <div class="col-sm-6">
-            <a class="no-decoration" href="/issues?name={{ doc.name }}" no-pjax>
-                {{ doc.subject }}
-            </a>
+        <div class="col-xs-8">
+            <span class="indicator {{ "red" if doc.status=="Open" else "blue"   }}">
+                {{ doc.name }}</span>
+                <span style="margin-left: 15px;">
+                    {{ doc.subject }}</span>
         </div>
-        <div class="col-sm-2">
-            <span class="indicator {{ "red" if doc.status=="Open" else "blue" }}">
-                {{ doc.status }}</span>
-        </div>
-        <div class="col-sm-2">
-            <a class="text-muted text-right" href="/issues?name={{ doc.name }}" no-pjax>
-                {{ doc.name }}
-            </a>
-        </div>
-        <div class="col-sm-2 text-muted text-right small">
+        <div class="col-xs-4 text-right small">
             {{ frappe.format_date(doc.creation) }}
         </div>
     </div>
+    </a>
 </div>
diff --git a/erpnext/templates/includes/macros.html b/erpnext/templates/includes/macros.html
index 6748a5e..487968b 100644
--- a/erpnext/templates/includes/macros.html
+++ b/erpnext/templates/includes/macros.html
@@ -6,11 +6,25 @@
 {% endmacro %}
 
 {% macro product_image(website_image, css_class="") %}
-<div class="product-image {% if not website_image -%} missing-image {%- endif %} {{ css_class }}">
-	{% if website_image -%}
-		<img src="{{ frappe.utils.quoted(website_image) | abs_url }}" class="img-responsive">
-	{%- else -%}
-		<i class="centered octicon octicon-device-camera"></i>
-	{%- endif %}
-</div>
+    <div class="product-image {% if not website_image -%} missing-image {%- endif %} {{ css_class }}">
+    	{% if website_image -%}
+    		<img src="{{ frappe.utils.quoted(website_image) | abs_url }}" class="img-responsive">
+    	{%- else -%}
+    		<i class="centered octicon octicon-device-camera"></i>
+    	{%- endif %}
+    </div>
+{% endmacro %}
+
+{% macro item_name_and_description(d) %}
+    <div class="row">
+        <div class="col-xs-4 col-sm-2 order-image-col">
+            <div class="order-image">
+                {{ product_image_square(d.image) }}
+            </div>
+        </div>
+        <div class="col-xs-8 col-sm-10">
+            {{ d.item_code }}
+            <p class="text-muted small">{{ d.description }}</p>
+        </div>
+    </div>
 {% endmacro %}
diff --git a/erpnext/templates/includes/order.css b/erpnext/templates/includes/order.css
new file mode 100644
index 0000000..54c8d0f
--- /dev/null
+++ b/erpnext/templates/includes/order.css
@@ -0,0 +1,25 @@
+.order-container {
+	margin: 50px 0px;
+}
+
+.order-items {
+	margin: 20px 0px;
+}
+
+.order-item-table {
+	margin: 0px -15px;
+}
+
+.order-item-header {
+	border-bottom: 1px solid #d1d8dd;
+}
+
+.order-image-col {
+	padding-right: 0px;
+}
+
+.order-image {
+	max-width: 55px;
+	max-height: 55px;
+	margin-top: -5px;
+}
diff --git a/erpnext/templates/includes/product_page.js b/erpnext/templates/includes/product_page.js
index 4f4f11c..98331a4 100644
--- a/erpnext/templates/includes/product_page.js
+++ b/erpnext/templates/includes/product_page.js
@@ -1,10 +1,10 @@
 // Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
 // License: GNU General Public License v3. See license.txt
 
-$(document).ready(function() {
+frappe.ready(function() {
 	var item_code = $('[itemscope] [itemprop="productID"]').text().trim();
 	var qty = 0;
-	
+
 	frappe.call({
 		type: "POST",
 		method: "erpnext.shopping_cart.product.get_product_info",
@@ -12,10 +12,12 @@
 			item_code: "{{ name }}"
 		},
 		callback: function(r) {
+			console.log(r.message);
+			$(".item-cart").toggleClass("hide", !!!r.message.price);
 			if(r.message && r.message.price) {
 				$(".item-price")
 					.html(r.message.price.formatted_price + " per " + r.message.uom);
-				
+
 				if(r.message.stock==0) {
 					$(".item-stock").html("<div class='help'>Not in stock</div>");
 				}
@@ -23,18 +25,17 @@
 					$(".item-stock").html("<div style='color: green'>\
 						<i class='icon-check'></i> Available (in stock)</div>");
 				}
-				
-				$(".item-price-info").toggle(true);
-				
+
 				if(r.message.qty) {
 					qty = r.message.qty;
-					toggle_update_cart(qty);
-					$("#item-update-cart input").val(qty);
+					toggle_update_cart(r.message.qty);
+				} else {
+					toggle_update_cart(0);
 				}
 			}
 		}
 	})
-	
+
 	$("#item-add-to-cart button").on("click", function() {
 		shopping_cart.update_cart({
 			item_code: item_code,
@@ -45,10 +46,10 @@
 					qty = 1;
 				}
 			},
-			btn: this, 
+			btn: this,
 		});
 	});
-	
+
 	$("#item-update-cart button").on("click", function() {
 		shopping_cart.update_cart({
 			item_code: item_code,
@@ -63,7 +64,7 @@
 			},
 		});
 	});
-	
+
 	if(localStorage && localStorage.getItem("pending_add_to_cart") && full_name) {
 		localStorage.removeItem("pending_add_to_cart");
 		$("#item-add-to-cart button").trigger("click");
@@ -75,4 +76,4 @@
 	$("#item-update-cart")
 		.toggle(qty ? true : false)
 		.find("input").val(qty);
-}
\ No newline at end of file
+}
diff --git a/erpnext/templates/includes/transaction_row.html b/erpnext/templates/includes/transaction_row.html
index a677fa5..9b9fd52 100644
--- a/erpnext/templates/includes/transaction_row.html
+++ b/erpnext/templates/includes/transaction_row.html
@@ -1,29 +1,22 @@
-{% set doc = frappe.get_doc(doc) %}
 <div class="web-list-item">
 <a href="/{{ pathname }}/{{ doc.name }}" no-pjax>
 <div class="row">
-	<div class="col-sm-6 col-xs-7">
+	<div class="col-sm-8 col-xs-7">
 		<div class="row">
-			<div class="col-sm-9">{{ doc.customer or doc.supplier }}</div>
+			<div class="col-sm-9">
+                <div>{{ doc.name }}</div>
+                <div class="small text-muted">{{ doc.items_preview }}</div>
+            </div>
 			<div class="col-sm-3">
-				{%- if doc.status_percent > 0 -%}
-					{%- if doc.status_percent % 100 == 0 -%}
-					<span class="indicator green">{{ doc.status_display }}</span>
-					{%- else -%}
-					<span class="indicator orange">{{ doc.status_display }}</span>
-					{%- endif -%}
-				{%- elif doc.status -%}
-					<span class="indicator blue">{{ doc.status }}</span>
-				{%- endif -%}
+                <span class="indicator {{ doc.indicator_color or "darkgrey" }}">
+                    {{ doc.indicator_title or doc.status or "Submitted" }}
+                </span>
 			</div>
 		</div>
 	</div>
 	<div class="col-sm-2 col-xs-5 text-right">
 		{{ doc.get_formatted("grand_total") }}
 	</div>
-	<div class="col-sm-2 text-muted text-right">
-		{{ doc.name }}
-	</div>
 	<div class="col-sm-2 small text-muted text-right" title="{{ frappe.utils.format_datetime(doc.creation, "medium") }}">
 		{{ frappe.utils.pretty_date(doc.creation) }}</div>
 </div>
diff --git a/erpnext/templates/pages/cart.html b/erpnext/templates/pages/cart.html
index e4e4a6a..2e15728 100644
--- a/erpnext/templates/pages/cart.html
+++ b/erpnext/templates/pages/cart.html
@@ -3,53 +3,84 @@
 {% block header %}<h2>{{ _("My Cart") }}</h2>{% endblock %}
 
 {% block script %}{% include "templates/includes/cart.js" %}{% endblock %}
+{% block style %}{% include "templates/includes/cart.css" %}{% endblock %}
 
 {% block content %}
+
+{% from "erpnext/templates/includes/macros.html" import item_name_and_description %}
+
 <div class="cart-content">
-	<div class="text-muted progress">{{ _("Loading") }}...</div>
-	<div id="cart-container" class="hide">
-		<p class="pull-right"><button class="btn btn-success btn-place-order" type="button">
-			{{ _("Place Order") }}</button></p>
-		<div class="clearfix"></div>
+	<p class="text-muted loading">{{ _("Loading") }}...</p>
+	<div id="cart-container">
+        <div class="cart-header">
+    		<p class="pull-right"><button class="btn btn-primary btn-place-order btn-sm" type="button">
+    			{{ _("Place Order") }}</button></p>
+    		<div class="clearfix"></div>
+        </div>
 		<div id="cart-error" class="alert alert-danger" style="display: none;"></div>
-		<hr>
-		<div class="row">
-			<div class="col-md-9 col-sm-9">
-				<div class="row">
-					<div class="col-md-9 col-md-offset-3"><h4>{{ _("Item Details") }}</h4></div>
-				</div>
-			</div>
-			<div class="col-md-3 col-sm-3 text-right"><h4>{{ _("Qty, Amount") }}</h4></div>
-		</div><hr>
-		<div id="cart-items">
-		</div>
-		<div id="cart-taxes">
-		</div>
-		<div id="cart-totals">
-		</div>
-		<hr>
-		<div id="cart-addresses">
-			<div class="row">
-				<div class="col-md-6">
-					<h4>{{ _("Shipping Address") }}</h4>
-					<div id="cart-shipping-address" class="panel-group"
-						data-fieldname="shipping_address_name"></div>
-					<button class="btn btn-default" type="button" id="cart-add-shipping-address">
-						<span class="icon icon-list"></span> {{ _("Manage Addresses") }}</button>
-				</div>
-				<div class="col-md-6">
-					<h4>Billing Address</h4>
-					<div id="cart-billing-address" class="panel-group"
-						data-fieldname="customer_address"></div>
-					<button class="btn btn-default" type="button" id="cart-add-billing-address">
-						<span class="icon icon-list"></span> {{ _("Manage Addresses") }}</button>
-				</div>
-			</div>
-			<hr>
-		</div>
-		<p class="pull-right"><button class="btn btn-success btn-place-order" type="button">
-			{{ _("Place Order") }}</button></p>
-	</div>
+    	<div id="cart-items">
+            {% if doc.items %}
+            {% for d in doc.items %}
+            <div class="cart-item">
+                <div class="row">
+                    <div class="col-sm-8 col-xs-6">
+                        {{ item_name_and_description(d) }}
+                    </div>
+                    <div class="col-sm-4 col-xs-6 text-right">
+        				<div class="item-update-cart">
+        					<div class="clearfix">
+                                <input type="text" placeholder="Qty"
+                                style="max-width: 60px"
+                                value="{{ d.qty }}"
+        						data-item-code="{{ d.item_code }}"
+                                class="text-right form-control pull-right">
+                            </div>
+        					<div class="text-right">
+        						<button class="btn btn-default btn-sm"
+                                    data-item-code="{{ d.item_code }}">
+                                </button>
+        					</div>
+        				</div>
+        				<p class="text-muted small" style="margin-top: 10px;">
+                            {{ _("Rate") + ': ' + d.get_formatted("rate") }}
+                        </p>
+        				<small style="margin-top: 10px;">
+                            {{ d.get_formatted("amount") }}</small>
+        			</div>
+                </div>
+            </div>
+            {% endfor %}
+            {% else %}
+            <p>{{ _("Cart is Empty") }}</p>
+            {% endif %}
+    	</div>
+    	<div id="cart-taxes">
+    	</div>
+    	<div id="cart-totals">
+    	</div>
+    	<div id="cart-addresses">
+    		<div class="row">
+    			<div class="col-md-6">
+    				<h4>{{ _("Shipping Address") }}</h4>
+    				<div id="cart-shipping-address" class="panel-group"
+    					data-fieldname="shipping_address_name"></div>
+    				<button class="btn btn-default btn-sm" type="button" id="cart-add-shipping-address">
+    					{{ _("Manage Addresses") }}</button>
+    			</div>
+    			<div class="col-md-6">
+    				<h4>Billing Address</h4>
+    				<div id="cart-billing-address" class="panel-group"
+    					data-fieldname="customer_address"></div>
+    				<button class="btn btn-default btn-sm" type="button" id="cart-add-billing-address">
+    					{{ _("Manage Addresses") }}</button>
+    			</div>
+    		</div>
+    	</div>
+    	<p class="cart-footer text-right">
+            <button class="btn btn-primary btn-place-order btn-sm" type="button">
+    		{{ _("Place Order") }}</button></p>
+    	</div>
+    </div>
 </div>
 
 <!-- no-sidebar -->
diff --git a/erpnext/templates/pages/cart.py b/erpnext/templates/pages/cart.py
index fe50f0f..bb8645d 100644
--- a/erpnext/templates/pages/cart.py
+++ b/erpnext/templates/pages/cart.py
@@ -2,7 +2,13 @@
 # License: GNU General Public License v3. See license.txt
 from __future__ import unicode_literals
 
-from __future__ import unicode_literals
-
 no_cache = 1
-no_sitemap = 1
\ No newline at end of file
+no_sitemap = 1
+
+import frappe
+from erpnext.shopping_cart.cart import get_cart_quotation
+
+def get_context(context):
+	context.update(get_cart_quotation())
+
+	print context
diff --git a/erpnext/templates/pages/order.html b/erpnext/templates/pages/order.html
new file mode 100644
index 0000000..c3bca5b
--- /dev/null
+++ b/erpnext/templates/pages/order.html
@@ -0,0 +1,90 @@
+{% block header %}
+<h1>{{ doc.name }}</h1>
+<!-- <h6 class="text-muted">{{ doc._title or doc.doctype }}</h6> -->
+{% endblock %}
+
+{% block style %}{% include "templates/includes/order.css" %}{% endblock %}
+
+{% block content %}
+
+{% from "erpnext/templates/includes/macros.html" import item_name_and_description %}
+
+<div class="row">
+    <div class="col-xs-6">
+        <span class="indicator {{ doc.indicator_color or "darkgrey" }}">
+            {{ doc.indicator_title or doc.status or "Submitted" }}
+        </span>
+    </div>
+    <div class="col-xs-6 text-muted text-right h6">
+        {{ doc.get_formatted("transaction_date") }}
+    </div>
+</div>
+
+{% if doc._header %}
+{{ doc._header }}
+{% endif %}
+
+<div class="order-container">
+
+    <!-- items -->
+    <div class="order-item-table">
+        <div class="row order-items order-item-header">
+            <div class="col-sm-8 col-xs-6 h6">
+                {{ _("Item") }}
+            </div>
+            <div class="col-sm-2 col-xs-3 text-right h6">
+                {{ _("Quantity") }}
+            </div>
+            <div class="col-sm-2 col-xs-3 text-right h6">
+                {{ _("Amount") }}
+            </div>
+        </div>
+        {% for d in doc.items %}
+        <div class="row order-items">
+            <div class="col-sm-8 col-xs-6">
+                {{ item_name_and_description(d) }}
+            </div>
+            <div class="col-sm-2 col-xs-3 text-right">
+                {{ d.qty }}
+                {% if 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">
+                {{ d.get_formatted("amount") }}
+                <p class="text-muted small">{{
+                    _("Rate: {0}").format(d.get_formatted("rate")) }}</p>
+            </div>
+        </div>
+        {% endfor %}
+    </div>
+
+    <!-- taxes -->
+    <div class="order-taxes row small">
+        <div class="col-sm-8"><!-- empty --></div>
+        <div class="col-sm-4">
+            {% if doc.taxes %}
+            <div class="row">
+                <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 %}
+            <div class="row">
+                <div class="col-xs-6 text-right">{{ d.description }}</div>
+                <div class="col-xs-6 text-right">
+                    {{ d.get_formatted("total") }}</div>
+            </div>
+            {% endfor %}
+            <div class="row">
+                <div class="col-xs-6 text-right">{{ _("Grand Total") }}</div>
+                <div class="col-xs-6 text-right">
+                    {{ doc.get_formatted("grand_total") }}</div>
+            </div>
+        </div>
+    </div>
+</div>
+
+{% endblock %}
diff --git a/erpnext/templates/pages/order.py b/erpnext/templates/pages/order.py
new file mode 100644
index 0000000..260490d
--- /dev/null
+++ b/erpnext/templates/pages/order.py
@@ -0,0 +1,15 @@
+# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
+# License: GNU General Public License v3. See license.txt
+
+from __future__ import unicode_literals
+import frappe
+
+from frappe import _
+
+def get_context(context):
+	context.no_cache = 1
+	context.doc = frappe.get_doc(frappe.form_dict.doctype, frappe.form_dict.name)
+	context.parents = frappe.form_dict.parents
+
+	if not context.doc.has_permission("read"):
+		frappe.throw(_("Not Permitted"), frappe.PermissionError)
