Merge branch 'hotfix'
diff --git a/erpnext/__init__.py b/erpnext/__init__.py
index 10f6570..a92e105 100644
--- a/erpnext/__init__.py
+++ b/erpnext/__init__.py
@@ -2,7 +2,7 @@
 from __future__ import unicode_literals
 import frappe
 
-__version__ = '7.1.11'
+__version__ = '7.1.12'
 
 def get_default_company(user=None):
 	'''Get default company for user'''
diff --git a/erpnext/accounts/report/accounts_receivable/accounts_receivable.html b/erpnext/accounts/report/accounts_receivable/accounts_receivable.html
index 75c3e8c..f463c07 100644
--- a/erpnext/accounts/report/accounts_receivable/accounts_receivable.html
+++ b/erpnext/accounts/report/accounts_receivable/accounts_receivable.html
@@ -4,7 +4,7 @@
 <h2 class="text-center">{%= __(report.report_name) %}</h2>
 <h4 class="text-center">{%= filters.customer || filters.supplier %} </h4>
 <h5 class="text-center">
-	{%= filters.ageing_based_on %}
+	{%= __(filters.ageing_based_on) %}
 	{%= __("Until") %}
 	{%= dateutil.str_to_user(filters.report_date) %}
 </h5>
@@ -12,7 +12,7 @@
 <table class="table table-bordered">
 	<thead>
 		<tr>
-			{% if(__(report.report_name) == "Accounts Receivable" || __(report.report_name) == "Accounts Payable") { %}
+			{% if(report.report_name === "Accounts Receivable" || report.report_name === "Accounts Payable") { %}
 				<th style="width: 15%">{%= __("Date") %}</th>
 				<th style="width: 15%">{%= __("Ref") %}</th>
 				<th style="width: 40%">{%= __("Party") %}</th>
@@ -30,7 +30,7 @@
 	<tbody>
 		{% for(var i=0, l=data.length; i<l; i++) { %}
 			<tr>
-			{% if(__(report.report_name) == "Accounts Receivable" || __(report.report_name) == "Accounts Payable") { %}
+			{% if(report.report_name === "Accounts Receivable" || report.report_name === "Accounts Payable") { %}
 				{% if(data[i][__("Customer")] || data[i][__("Supplier")]) { %}
 					<td>{%= dateutil.str_to_user(data[i][__("Posting Date")]) %}</td>
 					<td>{%= data[i][__("Voucher Type")] %}
@@ -38,21 +38,21 @@
 					<td>{%= data[i][__("Customer Name")] || data[i][__("Customer")] || data[i][__("Supplier Name")] || data[i][__("Supplier")] %}
 						<br>{%= __("Remarks") %}: {%= data[i][__("Remarks")] %}</td>
 					<td style="text-align: right">
-						{%= format_currency(data[i][__("Invoiced Amount")], data[i]["currency"]) %}</td>
+						{%= format_currency(data[i]["Invoiced Amount"], data[i]["currency"]) %}</td>
 					<td style="text-align: right">
-						{%= format_currency(data[i][__("Paid Amount")], data[i]["currency"]) %}</td>
+						{%= format_currency(data[i]["Paid Amount"], data[i]["currency"]) %}</td>
 					<td style="text-align: right">
-						{%= format_currency(data[i][__("Outstanding Amount")], data[i]["currency"]) %}</td>
+						{%= format_currency(data[i]["Outstanding Amount"], data[i]["currency"]) %}</td>
 				{% } else { %}
 					<td></td>
 					<td></td>
 					<td><b>{%= __("Total") %}</b></td>
 					<td style="text-align: right">
-						{%= format_currency(data[i][__("Invoiced Amount")]) %}</td>
+						{%= format_currency(data[i]["Invoiced Amount"]) %}</td>
 					<td style="text-align: right">
-						{%= format_currency(data[i][__("Paid Amount")]) %}</td>
+						{%= format_currency(data[i]["Paid Amount"]) %}</td>
 					<td style="text-align: right">
-						{%= format_currency(data[i][__("Outstanding Amount")]) %}</td>
+						{%= format_currency(data[i]["Outstanding Amount"]) %}</td>
 				{% } %}
 			{% } else { %}
 				{% if(data[i][__("Customer")] || data[i][__("Supplier")]|| "&nbsp;") { %}
@@ -71,4 +71,4 @@
 		{% } %}
 	</tbody>
 </table>
-<p class="text-right text-muted">Printed On {%= dateutil.str_to_user(dateutil.get_datetime_as_string()) %}</p>
\ No newline at end of file
+<p class="text-right text-muted">{{ __("Printed On") }}{%= dateutil.str_to_user(dateutil.get_datetime_as_string()) %}</p>
\ No newline at end of file
diff --git a/erpnext/accounts/report/balance_sheet/balance_sheet.py b/erpnext/accounts/report/balance_sheet/balance_sheet.py
index fbfaa41..8963bb4 100644
--- a/erpnext/accounts/report/balance_sheet/balance_sheet.py
+++ b/erpnext/accounts/report/balance_sheet/balance_sheet.py
@@ -4,7 +4,7 @@
 from __future__ import unicode_literals
 import frappe
 from frappe import _
-from frappe.utils import flt
+from frappe.utils import flt, cint
 from erpnext.accounts.report.financial_statements import (get_period_list, get_columns, get_data)
 
 def execute(filters=None):
@@ -92,12 +92,13 @@
 def check_opening_balance(asset, liability, equity):
 	# Check if previous year balance sheet closed
 	opening_balance = 0
+	float_precision = cint(frappe.db.get_default("float_precision")) or 2
 	if asset:
-		opening_balance = flt(asset[0].get("opening_balance", 0))
+		opening_balance = flt(asset[0].get("opening_balance", 0), float_precision)
 	if liability:
-		opening_balance -= flt(liability[0].get("opening_balance", 0))
+		opening_balance -= flt(liability[0].get("opening_balance", 0), float_precision)
 	if equity:
-		opening_balance -= flt(equity[0].get("opening_balance", 0))
+		opening_balance -= flt(equity[0].get("opening_balance", 0), float_precision)
 
 	if opening_balance:
 		return _("Previous Financial Year is not closed"),opening_balance
diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.py b/erpnext/buying/doctype/purchase_order/purchase_order.py
index 54ca07b..197928a 100644
--- a/erpnext/buying/doctype/purchase_order/purchase_order.py
+++ b/erpnext/buying/doctype/purchase_order/purchase_order.py
@@ -231,6 +231,7 @@
 			"target_parent_dt": "Sales Order",
 			"target_dt": "Sales Order Item",
 			'target_field': 'ordered_qty',
+			"join_field": "sales_order_item",
 			"target_parent_field": ''
 		})
 
diff --git a/erpnext/controllers/sales_and_purchase_return.py b/erpnext/controllers/sales_and_purchase_return.py
index ae03a35..3e22681 100644
--- a/erpnext/controllers/sales_and_purchase_return.py
+++ b/erpnext/controllers/sales_and_purchase_return.py
@@ -207,6 +207,7 @@
 			target_doc.rejected_qty = -1* source_doc.rejected_qty
 			target_doc.qty = -1* source_doc.qty
 			target_doc.purchase_order = source_doc.purchase_order
+			target_doc.purchase_order_item = source_doc.purchase_order_item
 			target_doc.rejected_warehouse = source_doc.rejected_warehouse
 		elif doctype == "Purchase Invoice":
 			target_doc.received_qty = -1* source_doc.received_qty
diff --git a/erpnext/controllers/status_updater.py b/erpnext/controllers/status_updater.py
index fcddc8f..da09e26 100644
--- a/erpnext/controllers/status_updater.py
+++ b/erpnext/controllers/status_updater.py
@@ -271,19 +271,19 @@
 					%(update_modified)s
 				where name='%(name)s'""" % args)
 
-		# update field
-		if args.get('status_field'):
-			frappe.db.sql("""update `tab%(target_parent_dt)s`
-				set %(status_field)s = if(%(target_parent_field)s<0.001,
-					'Not %(keyword)s', if(%(target_parent_field)s>=99.99,
-					'Fully %(keyword)s', 'Partly %(keyword)s'))
-				where name='%(name)s'""" % args)
+			# update field
+			if args.get('status_field'):
+				frappe.db.sql("""update `tab%(target_parent_dt)s`
+					set %(status_field)s = if(%(target_parent_field)s<0.001,
+						'Not %(keyword)s', if(%(target_parent_field)s>=99.99,
+						'Fully %(keyword)s', 'Partly %(keyword)s'))
+					where name='%(name)s'""" % args)
 
-		if update_modified:
-			target = frappe.get_doc(args["target_parent_dt"], args["name"])
-			target.set_status(update=True)
-			target.notify_update()
-			notify_status(target)
+			if update_modified:
+				target = frappe.get_doc(args["target_parent_dt"], args["name"])
+				target.set_status(update=True)
+				target.notify_update()
+				notify_status(target)
 
 	def _update_modified(self, args, update_modified):
 		args['update_modified'] = ''
diff --git a/erpnext/hr/report/monthly_salary_register/monthly_salary_register.py b/erpnext/hr/report/monthly_salary_register/monthly_salary_register.py
index 2c6cf72..6e1265e 100644
--- a/erpnext/hr/report/monthly_salary_register/monthly_salary_register.py
+++ b/erpnext/hr/report/monthly_salary_register/monthly_salary_register.py
@@ -8,32 +8,32 @@
 
 def execute(filters=None):
 	if not filters: filters = {}
-	
+
 	salary_slips = get_salary_slips(filters)
 	columns, earning_types, ded_types = get_columns(salary_slips)
 	ss_earning_map = get_ss_earning_map(salary_slips)
 	ss_ded_map = get_ss_ded_map(salary_slips)
-	
-	
+
+
 	data = []
 	for ss in salary_slips:
 		row = [ss.name, ss.employee, ss.employee_name, ss.branch, ss.department, ss.designation,
 			ss.company, ss.month, ss.leave_withut_pay, ss.payment_days]
-			
+
 		for e in earning_types:
 			row.append(ss_earning_map.get(ss.name, {}).get(e))
-			
+
 		row += [ss.arrear_amount, ss.leave_encashment_amount, ss.gross_pay]
-		
+
 		for d in ded_types:
 			row.append(ss_ded_map.get(ss.name, {}).get(d))
-		
+
 		row += [ss.total_deduction, ss.net_pay]
-		
+
 		data.append(row)
-	
+
 	return columns, data
-	
+
 def get_columns(salary_slips):
 	columns = [
 		_("Salary Slip ID") + ":Link/Salary Slip:150",_("Employee") + ":Link/Employee:120", _("Employee Name") + "::140", _("Branch") + ":Link/Branch:120",
@@ -41,7 +41,7 @@
 		_("Company") + ":Link/Company:120", _("Month") + "::80", _("Leave Without Pay") + ":Float:130",
 		_("Payment Days") + ":Float:120"
 	]
-	
+
 	salary_components = {_("Earning"): [], _("Deduction"): []}
 
 	for component in frappe.db.sql("""select distinct sd.salary_component, sc.type
@@ -61,47 +61,47 @@
 	conditions, filters = get_conditions(filters)
 	salary_slips = frappe.db.sql("""select * from `tabSalary Slip` where docstatus = 1 %s
 		order by employee, month""" % conditions, filters, as_dict=1)
-	
+
 	if not salary_slips:
-		msgprint(_("No salary slip found for month: ") + cstr(filters.get("month")) + 
-			_(" and year: ") + cstr(filters.get("fiscal_year")), raise_exception=1)
-	
+		frappe.throw(_("No salary slip found for month {0} and year {1}").format(
+			filters.get("month"), filters.get("fiscal_year")))
+
 	return salary_slips
-	
+
 def get_conditions(filters):
 	conditions = ""
 	if filters.get("month"):
-		month = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", 
+		month = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov",
 			"Dec"].index(filters["month"]) + 1
 		filters["month"] = month
 		conditions += " and month = %(month)s"
-	
+
 	if filters.get("fiscal_year"): conditions += " and fiscal_year = %(fiscal_year)s"
 	if filters.get("company"): conditions += " and company = %(company)s"
 	if filters.get("employee"): conditions += " and employee = %(employee)s"
-	
+
 	return conditions, filters
-	
+
 def get_ss_earning_map(salary_slips):
-	ss_earnings = frappe.db.sql("""select parent, salary_component, amount 
+	ss_earnings = frappe.db.sql("""select parent, salary_component, amount
 		from `tabSalary Detail` where parent in (%s)""" %
 		(', '.join(['%s']*len(salary_slips))), tuple([d.name for d in salary_slips]), as_dict=1)
-	
+
 	ss_earning_map = {}
 	for d in ss_earnings:
 		ss_earning_map.setdefault(d.parent, frappe._dict()).setdefault(d.salary_component, [])
 		ss_earning_map[d.parent][d.salary_component] = flt(d.amount)
-	
+
 	return ss_earning_map
 
 def get_ss_ded_map(salary_slips):
-	ss_deductions = frappe.db.sql("""select parent, salary_component, amount 
+	ss_deductions = frappe.db.sql("""select parent, salary_component, amount
 		from `tabSalary Detail` where parent in (%s)""" %
 		(', '.join(['%s']*len(salary_slips))), tuple([d.name for d in salary_slips]), as_dict=1)
-	
+
 	ss_ded_map = {}
 	for d in ss_deductions:
 		ss_ded_map.setdefault(d.parent, frappe._dict()).setdefault(d.salary_component, [])
 		ss_ded_map[d.parent][d.salary_component] = flt(d.amount)
-	
+
 	return ss_ded_map
\ No newline at end of file
diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index 57dbc59..5f8531d 100644
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -346,4 +346,6 @@
 erpnext.patches.v7_0.repost_gle_for_pi_with_update_stock #2016-11-01
 erpnext.patches.v7_1.add_account_user_role_for_timesheet
 erpnext.patches.v7_0.set_base_amount_in_invoice_payment_table
-erpnext.patches.v7_1.update_invoice_status
\ No newline at end of file
+erpnext.patches.v7_1.update_invoice_status
+erpnext.patches.v7_0.po_status_issue_for_pr_return
+erpnext.patches.v7_1.update_missing_salary_component_type
diff --git a/erpnext/patches/v7_0/po_status_issue_for_pr_return.py b/erpnext/patches/v7_0/po_status_issue_for_pr_return.py
new file mode 100644
index 0000000..6e92ffb
--- /dev/null
+++ b/erpnext/patches/v7_0/po_status_issue_for_pr_return.py
@@ -0,0 +1,36 @@
+# 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
+
+def execute():
+	parent_list = []
+	count = 0
+	for data in frappe.db.sql(""" 
+		select 
+			`tabPurchase Receipt Item`.purchase_order, `tabPurchase Receipt Item`.name,
+			`tabPurchase Receipt Item`.item_code, `tabPurchase Receipt Item`.idx,
+			`tabPurchase Receipt Item`.parent
+		from 
+			`tabPurchase Receipt Item`, `tabPurchase Receipt`
+		where
+			`tabPurchase Receipt Item`.parent = `tabPurchase Receipt`.name and
+			`tabPurchase Receipt Item`.purchase_order_item is null and
+			`tabPurchase Receipt Item`.purchase_order is not null and
+			`tabPurchase Receipt`.is_return = 1""", as_dict=1):
+			name = frappe.db.get_value('Purchase Order Item', 
+				{'item_code': data.item_code, 'parent': data.purchase_order, 'idx': data.idx}, 'name')
+
+			if name:
+				frappe.db.set_value('Purchase Receipt Item', data.name, 'purchase_order_item', name, update_modified=False)
+				parent_list.append(data.parent)
+
+			count +=1
+			if count % 200 == 0:
+				frappe.db.commit()
+
+	if len(parent_list) > 0:
+		for parent in set(parent_list):
+			doc = frappe.get_doc('Purchase Receipt', parent)
+			doc.update_qty(update_modified=False)
\ No newline at end of file
diff --git a/erpnext/patches/v7_1/update_missing_salary_component_type.py b/erpnext/patches/v7_1/update_missing_salary_component_type.py
new file mode 100644
index 0000000..7f6002d
--- /dev/null
+++ b/erpnext/patches/v7_1/update_missing_salary_component_type.py
@@ -0,0 +1,25 @@
+from __future__ import unicode_literals
+
+import frappe
+
+'''
+Some components do not have type set, try and guess whether they turn up in
+earnings or deductions in existing salary slips
+'''
+
+def execute():
+	for s in frappe.db.sql('select name from `tabSalary Component` where ifnull(type, "")=""'):
+		compontent = frappe.get_doc('Salary Component', s[0])
+
+		# guess
+		guess = frappe.db.sql('''select
+			parentfield from `tabSalary Detail`
+			where salary_component=%s limit 1''', s[0])
+
+		if guess:
+			compontent.type = 'Earning' if guess[0][0]=='earnings' else 'Deduction'
+
+		else:
+			compontent.type = 'Deduction'
+
+		compontent.save()
\ No newline at end of file
diff --git a/erpnext/patches/v7_1/update_portal_roles.py b/erpnext/patches/v7_1/update_portal_roles.py
index 695f998..506adb9 100644
--- a/erpnext/patches/v7_1/update_portal_roles.py
+++ b/erpnext/patches/v7_1/update_portal_roles.py
@@ -2,6 +2,7 @@
 
 def execute():
 	frappe.reload_doctype('Role')
+	frappe.reload_doctype('User')
 	for role_name in ('Customer', 'Supplier', 'Student'):
 		if frappe.db.exists('Role', role_name):
 			frappe.db.set_value('Role', role_name, 'desk_access', 0)
diff --git a/erpnext/public/css/website.css b/erpnext/public/css/website.css
index 2bfcd3e..6a1d311 100644
--- a/erpnext/public/css/website.css
+++ b/erpnext/public/css/website.css
@@ -181,7 +181,6 @@
 }
 .cart-dropdown-container .cart-items-dropdown {
   max-height: 350px;
-  overflow: auto;
 }
 .cart-dropdown-container .cart-items-dropdown .cart-dropdown {
   display: block;
diff --git a/erpnext/public/js/shopping_cart.js b/erpnext/public/js/shopping_cart.js
index ace7fd8..1617283 100644
--- a/erpnext/public/js/shopping_cart.js
+++ b/erpnext/public/js/shopping_cart.js
@@ -65,7 +65,7 @@
 		var cart_count = getCookie("cart_count");
 
 		if(cart_count) {
-			$(".shopping-cart").toggleClass('hidden', true);
+			$(".shopping-cart").toggleClass('hidden', false);
 		}
 
 		var $cart = $('.cart-icon');
diff --git a/erpnext/public/less/website.less b/erpnext/public/less/website.less
index ce36e5f..b270b8b 100644
--- a/erpnext/public/less/website.less
+++ b/erpnext/public/less/website.less
@@ -233,7 +233,6 @@
 
 	.cart-items-dropdown {
 		max-height: 350px;
-		overflow: auto;
 	}
 
 	.cart-items-dropdown .cart-dropdown {
diff --git a/erpnext/selling/doctype/sales_order/sales_order.json b/erpnext/selling/doctype/sales_order/sales_order.json
index 888a231..707f6c4 100644
--- a/erpnext/selling/doctype/sales_order/sales_order.json
+++ b/erpnext/selling/doctype/sales_order/sales_order.json
@@ -372,7 +372,7 @@
    "in_list_view": 0, 
    "label": "Customer's Purchase Order", 
    "length": 0, 
-   "no_copy": 1, 
+   "no_copy": 0, 
    "oldfieldname": "po_no", 
    "oldfieldtype": "Data", 
    "permlevel": 0, 
@@ -403,7 +403,7 @@
    "in_list_view": 0, 
    "label": "Customer's Purchase Order Date", 
    "length": 0, 
-   "no_copy": 1, 
+   "no_copy": 0, 
    "oldfieldname": "po_date", 
    "oldfieldtype": "Date", 
    "permlevel": 0, 
@@ -3226,7 +3226,7 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2016-11-05 08:09:08.921026", 
+ "modified": "2016-11-14 16:07:45.817880", 
  "modified_by": "Administrator", 
  "module": "Selling", 
  "name": "Sales Order", 
diff --git a/erpnext/stock/report/stock_balance/stock_balance.js b/erpnext/stock/report/stock_balance/stock_balance.js
index 43b3657..434c092 100644
--- a/erpnext/stock/report/stock_balance/stock_balance.js
+++ b/erpnext/stock/report/stock_balance/stock_balance.js
@@ -8,6 +8,7 @@
 			"label": __("From Date"),
 			"fieldtype": "Date",
 			"width": "80",
+			"reqd": 1,
 			"default": sys_defaults.year_start_date,
 		},
 		{
@@ -15,6 +16,7 @@
 			"label": __("To Date"),
 			"fieldtype": "Date",
 			"width": "80",
+			"reqd": 1,
 			"default": frappe.datetime.get_today()
 		},
 		{
diff --git a/erpnext/templates/generators/item.html b/erpnext/templates/generators/item.html
index 5a8116c..c0399a7 100644
--- a/erpnext/templates/generators/item.html
+++ b/erpnext/templates/generators/item.html
@@ -3,7 +3,7 @@
 {% block title %} {{ title }} {% endblock %}
 
 {% block breadcrumbs %}
-    {% include "templates/includes/breadcrumbs.html" %}
+	{% include "templates/includes/breadcrumbs.html" %}
 {% endblock %}
 
 {% block page_content %}
@@ -25,17 +25,17 @@
 					{{ _("Item Code") }}: <span itemprop="productID">{{ variant and variant.name or name }}</span></p>
 				<br>
 				<div class="item-attribute-selectors">
-                    {% if has_variants %}
-                    {% for d in attributes %}
+					{% if has_variants %}
+					{% for d in attributes %}
 					{% if attribute_values[d.attribute] -%}
-                    <div class="item-view-attribute {% if (attribute_values[d.attribute] | len)==1 -%} hidden {%- endif %}"
-                            style="margin-bottom: 10px;">
-                        <h6 class="text-muted">{{ _(d.attribute) }}</h6>
-                        <select class="form-control"
-                            style="max-width: 140px"
-                            data-attribute="{{ d.attribute }}">
+					<div class="item-view-attribute {% if (attribute_values[d.attribute] | len)==1 -%} hidden {%- endif %}"
+							style="margin-bottom: 10px;">
+						<h6 class="text-muted">{{ _(d.attribute) }}</h6>
+						<select class="form-control"
+							style="max-width: 140px"
+							data-attribute="{{ d.attribute }}">
 						{% for value in attribute_values[d.attribute] %}
-                        <option value="{{ value }}"
+						<option value="{{ value }}"
 						{% if selected_attributes and selected_attributes[d.attribute]==value -%}
 							selected
 						{%- elif disabled_attributes and value in disabled_attributes.get(d.attribute, []) -%}
@@ -43,12 +43,12 @@
 						{%- endif %}>
 							{{ _(value) }}
 						</option>
-                        {% endfor %}
-                        </select>
-                    </div>
+						{% endfor %}
+						</select>
+					</div>
 					{%- endif %}
-                    {% endfor %}
-                    {% endif %}
+					{% endfor %}
+					{% endif %}
 				</div>
 				<br>
 				<div style="min-height: 100px; margin: 10px 0;">
@@ -56,18 +56,17 @@
 						<h4 class="item-price" itemprop="price"></h4>
 						<div class="item-stock" itemprop="availability"></div>
 					</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;">
-    						<a href="/cart">{{ _("Goto Cart") }}</a>
-    					</div>
-                    </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;">
+							<a href="/cart" class='btn btn-sm btn-default'>
+								<i class='octicon octicon-check'></i>
+								{{ _("View in Cart") }}</a>
+						</div>
+					</div>
 				</div>
 			</div>
 		</div>
@@ -101,10 +100,10 @@
 <script>
 	{% include "templates/includes/product_page.js" %}
 
-    {% if variant_info %}
-    window.variant_info = {{ variant_info }};
-    {% else %}
-    window.variant_info = null;
-    {% endif %}
+	{% if variant_info %}
+	window.variant_info = {{ variant_info }};
+	{% else %}
+	window.variant_info = null;
+	{% endif %}
 </script>
 {% endblock %}
diff --git a/erpnext/templates/includes/cart/cart_dropdown.html b/erpnext/templates/includes/cart/cart_dropdown.html
index 071b281..de29b56 100644
--- a/erpnext/templates/includes/cart/cart_dropdown.html
+++ b/erpnext/templates/includes/cart/cart_dropdown.html
@@ -1,6 +1,6 @@
 <div class="cart-dropdown-container">
 	<div id="cart-error" class="alert alert-danger"
-	style="display: none;"></div>
+		style="display: none;"></div>
 	<div class="row cart-items-dropdown cart-item-header text-muted">
 		<div class="col-sm-6 col-xs-6 h6 text-uppercase">
 		{{ _("Item") }}
@@ -9,13 +9,13 @@
 		{{ _("Price") }}
 		</div>
 	</div>
-	
+
 	{% if doc.items %}
 	<div class="cart-items-dropdown">
 		{% include "templates/includes/cart/cart_items_dropdown.html" %}
 	</div>
 	<div class="checkout-btn">
-	<a href="/cart" class="btn btn-block btn-primary">{{ _("Checkout") }}</a>
+		<a href="/cart" class="btn btn-block btn-primary">{{ _("Checkout") }}</a>
 	</div>
 	{% else %}
 	<p>{{ _("Cart is Empty") }}</p>
diff --git a/erpnext/templates/includes/cart/cart_items_dropdown.html b/erpnext/templates/includes/cart/cart_items_dropdown.html
index 9a3dbf8..b2ba431 100644
--- a/erpnext/templates/includes/cart/cart_items_dropdown.html
+++ b/erpnext/templates/includes/cart/cart_items_dropdown.html
@@ -7,7 +7,6 @@
     </div>
     <div class="col-sm-4 col-xs-4 text-right col-amount">
         {{ d.get_formatted("amount") }}
-
     </div>
 </div>
 {% endfor %}
\ No newline at end of file
diff --git a/erpnext/templates/includes/macros.html b/erpnext/templates/includes/macros.html
index da21748..a25f313 100644
--- a/erpnext/templates/includes/macros.html
+++ b/erpnext/templates/includes/macros.html
@@ -1,7 +1,12 @@
 {% macro product_image_square(website_image, css_class="") %}
-{% if website_image -%} <meta itemprop="image" content="{{ frappe.utils.quoted(website_image) | abs_url }}"></meta>{%- endif %}
-<div class="product-image product-image-square {% if not website_image -%} missing-image {%- endif %} {{ css_class }}"
-	{% if website_image -%} style="background-image: url('{{ frappe.utils.quoted(website_image) | abs_url }}');" {%- endif %}>
+{% if website_image -%}
+	<meta itemprop="image" content="{{ frappe.utils.quoted(website_image) | abs_url }}"></meta>
+{%- endif %}
+<div class="product-image product-image-square
+	{% if not website_image -%} missing-image {%- endif %} {{ css_class }}"
+	{% if website_image -%}
+	style="background-image: url('{{ frappe.utils.quoted(website_image) | abs_url }}');"
+	{%- endif %}>
 </div>
 {% endmacro %}
 
diff --git a/erpnext/templates/includes/navbar/navbar_items.html b/erpnext/templates/includes/navbar/navbar_items.html
index f0c780d..87dea8f 100644
--- a/erpnext/templates/includes/navbar/navbar_items.html
+++ b/erpnext/templates/includes/navbar/navbar_items.html
@@ -2,7 +2,7 @@
 
 {% block navbar_right_extension %}
 	<li class="shopping-cart hidden">
-		<div class="cart-icon small">
+		<div class="cart-icon">
 			<a class="dropdown-toggle" href="#" data-toggle="dropdown" id="navLogin">
 				Cart <span class="badge-wrapper" id="cart-count"></span>
 			</a>
diff --git a/erpnext/templates/includes/order/order_macros.html b/erpnext/templates/includes/order/order_macros.html
index 41be449..70a1fd8 100644
--- a/erpnext/templates/includes/order/order_macros.html
+++ b/erpnext/templates/includes/order/order_macros.html
@@ -13,6 +13,7 @@
         </div>
     </div>
 {% endmacro %}
+
 {% macro item_name_and_description_cart(d) %}
     <div class="row item_name_dropdown">
         <div class="col-xs-4 col-sm-4 order-image-col">
@@ -21,15 +22,15 @@
             </div>
         </div>
         <div class="col-xs-8 col-sm-8">
-           {{ d.item_code|truncate(25) }}			
+           {{ d.item_code|truncate(25) }}
 			<div class="input-group number-spinner">
                 <span class="input-group-btn">
                     <button class="btn btn-default cart-btn" data-dir="dwn">
                         –</button>
                 </span>
-            <input class="form-control text-right cart-qty"
-            value = "{{ d.get_formatted('qty') }}"
-            data-item-code="{{ d.item_code }}">
+	            <input class="form-control text-right cart-qty"
+		            value = "{{ d.get_formatted('qty') }}"
+		            data-item-code="{{ d.item_code }}">
                 <span class="input-group-btn">
                     <button class="btn btn-default cart-btn" data-dir="up">
                         +</button>
diff --git a/erpnext/templates/utils.py b/erpnext/templates/utils.py
index f33e647..94f9242 100644
--- a/erpnext/templates/utils.py
+++ b/erpnext/templates/utils.py
@@ -10,15 +10,43 @@
 @frappe.whitelist(allow_guest=True)
 def send_message(subject="Website Query", message="", sender="", status="Open"):
 	from frappe.www.contact import send_message as website_send_message
+	lead = customer = None
 
 	website_send_message(subject, message, sender)
 
+	customer = frappe.db.get_value('Contact', dict(email_id=sender), 'customer')
+	if not customer:
+		lead = frappe.db.get_value('Lead', dict(email_id=sender))
+	if not lead:
+		new_lead = frappe.get_doc(dict(
+			doctype='Lead',
+			email_id = sender,
+			lead_name = sender.split('@')[0].title()
+		)).insert(ignore_permissions=True)
+
+	opportunity = frappe.get_doc(dict(
+		doctype='Opportunity',
+		enquiry_from = 'Customer' if customer else 'Lead',
+		status = 'Open',
+		title = subject,
+		to_discuss=message
+	))
+
+	if customer:
+		opportunity.customer = customer
+	else:
+		opportunity.lead = new_lead.name
+
+	opportunity.insert(ignore_permissions=True)
+
 	comm = frappe.get_doc({
 		"doctype":"Communication",
 		"subject": subject,
 		"content": message,
 		"sender": sender,
-		"sent_or_received": "Received"
+		"sent_or_received": "Received",
+		'reference_doctype': 'Opportunity',
+		'reference_name': opportunity.name
 	})
 	comm.insert(ignore_permissions=True)
 
diff --git a/erpnext/utilities/web_form/addresses/addresses.py b/erpnext/utilities/web_form/addresses/addresses.py
index 2334f8b..3fd1017 100644
--- a/erpnext/utilities/web_form/addresses/addresses.py
+++ b/erpnext/utilities/web_form/addresses/addresses.py
@@ -4,4 +4,4 @@
 
 def get_context(context):
 	# do your magic here
-	pass
+	context.show_sidebar = True