diff --git a/erpnext/config/desktop.py b/erpnext/config/desktop.py
index 34f1599..ce9b255 100644
--- a/erpnext/config/desktop.py
+++ b/erpnext/config/desktop.py
@@ -48,5 +48,12 @@
 			"color": "#2c3e50",
 			"icon": "icon-phone",
 			"type": "module"
+		},
+		"Shopping Cart": {
+			"color": "#B7E090",
+			"icon": "icon-shopping-cart",
+			"label": _("Shopping Cart"),
+			"link": "Form/Shopping Cart Settings",
+			"type": "module"
 		}
 	}
diff --git a/erpnext/hooks.py b/erpnext/hooks.py
index 54b911a..ea65400 100644
--- a/erpnext/hooks.py
+++ b/erpnext/hooks.py
@@ -11,14 +11,18 @@
 app_include_js = "assets/js/erpnext.min.js"
 app_include_css = "assets/css/erpnext.css"
 web_include_js = "assets/js/erpnext-web.min.js"
+web_include_css = "assets/css/shopping-cart-web.css"
 
 after_install = "erpnext.setup.install.after_install"
 
 boot_session = "erpnext.startup.boot.boot_session"
 notification_config = "erpnext.startup.notifications.get_notification_config"
 
+on_session_creation = "erpnext.shopping_cart.utils.set_cart_count"
+on_logout = "erpnext.shopping_cart.utils.clear_cart_count"
+update_website_context = ["erpnext.shopping_cart.utils.update_website_context", "erpnext.startup.webutils.update_website_context"]
+
 dump_report_map = "erpnext.startup.report_data_map.data_map"
-update_website_context = "erpnext.startup.webutils.update_website_context"
 
 before_tests = "erpnext.setup.utils.before_tests"
 
@@ -36,7 +40,13 @@
 	"User": {
 		"validate": "erpnext.hr.doctype.employee.employee.validate_employee_role",
 		"on_update": "erpnext.hr.doctype.employee.employee.update_user_permissions"
-	}
+	},
+	"Sales Taxes and Charges Master": {
+		"on_update": "erpnext.shopping_cart.doctype.shopping_cart_settings.shopping_cart_settings.validate_cart_settings"
+	},
+	"Price List": {
+		"on_update": "erpnext.shopping_cart.doctype.shopping_cart_settings.shopping_cart_settings.validate_cart_settings"
+	},
 }
 
 scheduler_events = {
@@ -55,6 +65,5 @@
 	]
 }
 
-default_mail_footer = """<div style="padding: 7px; text-align: right; color: #888"><small>
-	<a style="color: #888" href="https://erpnext.com">Sent via ERPNext</a></div>"""
-
+default_mail_footer = """<div style="padding: 7px; text-align: right;">
+	<a style="color: #888; font-size: 80%;" href="https://erpnext.com">Sent via ERPNext</a></div>"""
diff --git a/erpnext/modules.txt b/erpnext/modules.txt
index 68d095e..243c2d8 100644
--- a/erpnext/modules.txt
+++ b/erpnext/modules.txt
@@ -9,3 +9,4 @@
 Support
 Utilities
 Contacts
+Shopping Cart
diff --git a/erpnext/patches/v4_2/party_model.py b/erpnext/patches/v4_2/party_model.py
index e1fa982..2871531 100644
--- a/erpnext/patches/v4_2/party_model.py
+++ b/erpnext/patches/v4_2/party_model.py
@@ -74,6 +74,9 @@
 	for d in accounts:
 		account_map.setdefault(d.name, d)
 
+	if not account_map:
+		return
+
 	for dt in ["Journal Voucher Detail", "GL Entry"]:
 		records = frappe.db.sql("""select name, account from `tab%s` where account in (%s)""" %
 			(dt, ", ".join(['%s']*len(account_map))), tuple(account_map.keys()))
diff --git a/erpnext/patches/v5_0/update_frozen_accounts_permission_role.py b/erpnext/patches/v5_0/update_frozen_accounts_permission_role.py
index f569695..e4bf9a9 100644
--- a/erpnext/patches/v5_0/update_frozen_accounts_permission_role.py
+++ b/erpnext/patches/v5_0/update_frozen_accounts_permission_role.py
@@ -7,6 +7,6 @@
 	account_settings = frappe.get_doc("Accounts Settings")
 
 	if not account_settings.frozen_accounts_modifier and account_settings.bde_auth_role:
-		account_settings.frozen_accounts_modifier = account_settings.bde_auth_role
+		frappe.db.set_value("Account Settings", None,
+			"frozen_accounts_modifier", account_settings.bde_auth_role)
 
-	account_settings.save()
diff --git a/erpnext/public/build.json b/erpnext/public/build.json
index 0998c53..3f6dd12 100644
--- a/erpnext/public/build.json
+++ b/erpnext/public/build.json
@@ -3,7 +3,8 @@
 		"public/css/erpnext.css"
 	],
 	"js/erpnext-web.min.js": [
-		"public/js/website_utils.js"
+		"public/js/website_utils.js",
+		"public/js/shopping_cart.js"
 	],
 	"js/erpnext.min.js": [
 		"public/js/conf.js",
@@ -11,5 +12,8 @@
 		"public/js/utils.js",
 		"public/js/queries.js",
 		"public/js/utils/party.js"
+	],
+	"css/shopping-cart-web.css":  [
+		"public/css/shopping_cart.css"
 	]
 }
diff --git a/erpnext/public/css/shopping_cart.css b/erpnext/public/css/shopping_cart.css
new file mode 100644
index 0000000..5e86972
--- /dev/null
+++ b/erpnext/public/css/shopping_cart.css
@@ -0,0 +1,11 @@
+.item-main-image {
+	max-width: 100%;
+	margin: auto;
+}
+.web-long-description {
+	font-size: 18px;
+	line-height: 200%;
+}
+.item-stock {
+	margin-bottom: 10px !important;
+}
diff --git a/erpnext/public/js/shopping_cart.js b/erpnext/public/js/shopping_cart.js
new file mode 100644
index 0000000..0c718b0
--- /dev/null
+++ b/erpnext/public/js/shopping_cart.js
@@ -0,0 +1,66 @@
+// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
+// License: GNU General Public License v3. See license.txt
+
+// shopping cart
+frappe.provide("shopping_cart");
+
+$(function() {
+	// update user
+	if(full_name) {
+		$('.navbar li[data-label="User"] a')
+			.html('<i class="icon-fixed-width icon-user"></i> ' + full_name);
+	}
+
+	// update login
+	shopping_cart.set_cart_count();
+});
+
+$.extend(shopping_cart, {
+	update_cart: function(opts) {
+		if(!full_name) {
+			if(localStorage) {
+				localStorage.setItem("last_visited", window.location.pathname);
+				localStorage.setItem("pending_add_to_cart", opts.item_code);
+			}
+			window.location.href = "/login";
+		} else {
+			return frappe.call({
+				type: "POST",
+				method: "erpnext.shopping_cart.cart.update_cart",
+				args: {
+					item_code: opts.item_code,
+					qty: opts.qty,
+					with_doc: opts.with_doc || 0
+				},
+				btn: opts.btn,
+				callback: function(r) {
+					if(opts.callback)
+						opts.callback(r);
+
+					shopping_cart.set_cart_count();
+				}
+			});
+		}
+	},
+
+	set_cart_count: function() {
+		var cart_count = getCookie("cart_count");
+		var $cart = $("#website-post-login").find('[data-label="Cart"]');
+		var $badge = $cart.find(".badge");
+		var $cog = $("#website-post-login").find(".dropdown-toggle");
+		var $cog_count = $cog.find(".cart-count");
+		if(cart_count) {
+			if($badge.length === 0) {
+				var $badge = $('<span class="badge pull-right"></span>').prependTo($cart.find("a"));
+			}
+			$badge.html(cart_count);
+			if($cog_count.length === 0) {
+				var $cog_count = $('<sup class="cart-count"></span>').insertAfter($cog.find(".icon-cog"));
+			}
+			$cog_count.html(cart_count);
+		} else {
+			$badge.remove();
+			$cog_count.remove();
+		}
+	}
+});
diff --git a/erpnext/shopping_cart/__init__.py b/erpnext/shopping_cart/__init__.py
new file mode 100644
index 0000000..656918b
--- /dev/null
+++ b/erpnext/shopping_cart/__init__.py
@@ -0,0 +1,126 @@
+# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
+# License: GNU General Public License v3. See license.txt
+
+from __future__ import unicode_literals
+import frappe
+from frappe import _
+from frappe.utils import get_fullname, flt
+from erpnext.shopping_cart.doctype.shopping_cart_settings.shopping_cart_settings import is_shopping_cart_enabled, get_default_territory
+
+# TODO
+# validate stock of each item in Website Warehouse or have a list of possible warehouses in Shopping Cart Settings
+
+def get_quotation(user=None):
+	if not user:
+		user = frappe.session.user
+	if user == "Guest":
+		raise frappe.PermissionError
+
+	is_shopping_cart_enabled()
+	party = get_party(user)
+	values = {
+		"order_type": "Shopping Cart",
+		party.doctype.lower(): party.name,
+		"docstatus": 0,
+		"contact_email": user
+	}
+
+	try:
+		quotation = frappe.get_doc("Quotation", values)
+	except frappe.DoesNotExistError:
+		quotation = frappe.new_doc("Quotation")
+		quotation.update(values)
+		if party.doctype == "Customer":
+			quotation.contact_person = frappe.db.get_value("Contact", {"customer": party.name, "email_id": user})
+		quotation.insert(ignore_permissions=True)
+
+	return quotation
+
+def set_item_in_cart(item_code, qty, user=None):
+	validate_item(item_code)
+	quotation = get_quotation(user=user)
+	qty = flt(qty)
+	quotation_item = quotation.get("quotation_details", {"item_code": item_code})
+
+	if qty==0:
+		if quotation_item:
+			# remove
+			quotation.get("quotation_details").remove(quotation_item[0])
+	else:
+		# add or update
+		if quotation_item:
+			quotation_item[0].qty = qty
+		else:
+			quotation.append("quotation_details", {
+				"doctype": "Quotation Item",
+				"item_code": item_code,
+				"qty": qty
+			})
+
+	quotation.save(ignore_permissions=True)
+	return quotation
+
+def set_address_in_cart(address_fieldname, address, user=None):
+	quotation = get_quotation(user=user)
+	validate_address(quotation, address_fieldname, address)
+
+	if quotation.get(address_fieldname) != address:
+		quotation.set(address_fieldname, address)
+		if address_fieldname=="customer_address":
+			quotation.set("address_display", None)
+		else:
+			quotation.set("shipping_address", None)
+
+		quotation.save(ignore_permissions=True)
+
+	return quotation
+
+def validate_item(item_code):
+	item = frappe.db.get_value("Item", item_code, ["item_name", "show_in_website"], as_dict=True)
+	if not item.show_in_website:
+		frappe.throw(_("{0} cannot be purchased using Shopping Cart").format(item.item_name))
+
+def validate_address(quotation, address_fieldname, address):
+	party = get_party(quotation.contact_email)
+	address_doc = frappe.get_doc(address)
+	if address_doc.get(party.doctype.lower()) != party.name:
+		if address_fieldname=="customer_address":
+			frappe.throw(_("Invalid Billing Address"))
+		else:
+			frappe.throw(_("Invalid Shipping Address"))
+
+def get_party(user):
+	def _get_party(user):
+		customer = frappe.db.get_value("Contact", {"email_id": user}, "customer")
+		if customer:
+			return frappe.get_doc("Customer", customer)
+
+		lead = frappe.db.get_value("Lead", {"email_id": user})
+		if lead:
+			return frappe.get_doc("Lead", lead)
+
+		# create a lead
+		lead = frappe.new_doc("Lead")
+		lead.update({
+			"email_id": user,
+			"lead_name": get_fullname(user),
+			"territory": guess_territory()
+		})
+		lead.insert(ignore_permissions=True)
+
+		return lead
+
+	if not getattr(frappe.local, "shopping_cart_party", None):
+		frappe.local.shopping_cart_party = {}
+
+	if not frappe.local.shopping_cart_party.get(user):
+		frappe.local.shopping_cart_party[user] = _get_party(user)
+
+	return frappe.local.shopping_cart_party[user]
+
+def guess_territory():
+	territory = None
+	if frappe.session.get("session_country"):
+		territory = frappe.db.get_value("Territory", frappe.session.get("session_country"))
+
+	return territory or get_default_territory()
diff --git a/erpnext/shopping_cart/cart.py b/erpnext/shopping_cart/cart.py
new file mode 100644
index 0000000..e39a54c
--- /dev/null
+++ b/erpnext/shopping_cart/cart.py
@@ -0,0 +1,434 @@
+# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
+# License: GNU General Public License v3. See license.txt
+
+from __future__ import unicode_literals
+import frappe
+from frappe import throw, _
+import frappe.defaults
+from frappe.utils import flt, get_fullname, fmt_money, cstr
+from erpnext.utilities.doctype.address.address import get_address_display
+from frappe.utils.nestedset import get_root_of
+
+class WebsitePriceListMissingError(frappe.ValidationError): pass
+
+def set_cart_count(quotation=None):
+	if not quotation:
+		quotation = _get_cart_quotation()
+	cart_count = cstr(len(quotation.get("quotation_details")))
+	frappe.local.cookie_manager.set_cookie("cart_count", cart_count)
+
+@frappe.whitelist()
+def get_cart_quotation(doc=None):
+	party = get_lead_or_customer()
+
+	if not doc:
+		quotation = _get_cart_quotation(party)
+		doc = quotation
+		set_cart_count(quotation)
+
+	return {
+		"doc": decorate_quotation_doc(doc),
+		"addresses": [{"name": address.name, "display": address.display}
+			for address in get_address_docs(party)],
+		"shipping_rules": get_applicable_shipping_rules(party)
+	}
+
+@frappe.whitelist()
+def place_order():
+	quotation = _get_cart_quotation()
+	quotation.company = frappe.db.get_value("Shopping Cart Settings", None, "company")
+	for fieldname in ["customer_address", "shipping_address_name"]:
+		if not quotation.get(fieldname):
+			throw(_("{0} is required").format(quotation.meta.get_label(fieldname)))
+
+	quotation.ignore_permissions = True
+	quotation.submit()
+
+	if quotation.lead:
+		# company used to create customer accounts
+		frappe.defaults.set_user_default("company", quotation.company)
+
+	from erpnext.selling.doctype.quotation.quotation import _make_sales_order
+	sales_order = frappe.get_doc(_make_sales_order(quotation.name, ignore_permissions=True))
+	for item in sales_order.get("sales_order_details"):
+		item.reserved_warehouse = frappe.db.get_value("Item", item.item_code, "website_warehouse") or None
+
+	sales_order.ignore_permissions = True
+	sales_order.insert()
+	sales_order.submit()
+	frappe.local.cookie_manager.delete_cookie("cart_count")
+
+	return sales_order.name
+
+@frappe.whitelist()
+def update_cart(item_code, qty, with_doc):
+	quotation = _get_cart_quotation()
+
+	qty = flt(qty)
+	if qty == 0:
+		quotation.set("quotation_details", quotation.get("quotation_details", {"item_code": ["!=", item_code]}))
+		if not quotation.get("quotation_details") and \
+			not quotation.get("__islocal"):
+				quotation.__delete = True
+
+	else:
+		quotation_items = quotation.get("quotation_details", {"item_code": item_code})
+		if not quotation_items:
+			quotation.append("quotation_details", {
+				"doctype": "Quotation Item",
+				"item_code": item_code,
+				"qty": qty
+			})
+		else:
+			quotation_items[0].qty = qty
+
+	apply_cart_settings(quotation=quotation)
+
+	if hasattr(quotation, "__delete"):
+		frappe.delete_doc("Quotation", quotation.name, ignore_permissions=True)
+		quotation = _get_cart_quotation()
+	else:
+		quotation.ignore_permissions = True
+		quotation.save()
+
+	set_cart_count(quotation)
+
+	if with_doc:
+		return get_cart_quotation(quotation)
+	else:
+		return quotation.name
+
+@frappe.whitelist()
+def update_cart_address(address_fieldname, address_name):
+	quotation = _get_cart_quotation()
+	address_display = get_address_display(frappe.get_doc("Address", address_name).as_dict())
+
+	if address_fieldname == "shipping_address_name":
+		quotation.shipping_address_name = address_name
+		quotation.shipping_address = address_display
+
+		if not quotation.customer_address:
+			address_fieldname == "customer_address"
+
+	if address_fieldname == "customer_address":
+		quotation.customer_address = address_name
+		quotation.address_display = address_display
+
+
+	apply_cart_settings(quotation=quotation)
+
+	quotation.ignore_permissions = True
+	quotation.save()
+
+	return get_cart_quotation(quotation)
+
+def guess_territory():
+	territory = None
+	geoip_country = frappe.session.get("session_country")
+	if geoip_country:
+		territory = frappe.db.get_value("Territory", geoip_country)
+
+	return territory or \
+		frappe.db.get_value("Shopping Cart Settings", None, "territory") or \
+			get_root_of("Territory")
+
+def decorate_quotation_doc(quotation_doc):
+	doc = frappe._dict(quotation_doc.as_dict())
+	for d in doc.get("quotation_details", []):
+		d.update(frappe.db.get_value("Item", d["item_code"],
+			["website_image", "description", "page_name"], as_dict=True))
+		d["formatted_rate"] = fmt_money(d.get("rate"), currency=doc.currency)
+		d["formatted_amount"] = fmt_money(d.get("amount"), currency=doc.currency)
+
+	for d in doc.get("other_charges", []):
+		d["formatted_tax_amount"] = fmt_money(flt(d.get("tax_amount")) / doc.conversion_rate,
+			currency=doc.currency)
+
+	doc.formatted_grand_total_export = fmt_money(doc.grand_total_export,
+		currency=doc.currency)
+
+	return doc
+
+def _get_cart_quotation(party=None):
+	if not party:
+		party = get_lead_or_customer()
+
+	quotation = frappe.db.get_value("Quotation",
+		{party.doctype.lower(): party.name, "order_type": "Shopping Cart", "docstatus": 0})
+
+	if quotation:
+		qdoc = frappe.get_doc("Quotation", quotation)
+	else:
+		qdoc = frappe.get_doc({
+			"doctype": "Quotation",
+			"naming_series": frappe.defaults.get_user_default("shopping_cart_quotation_series") or "QTN-CART-",
+			"quotation_to": party.doctype,
+			"company": frappe.db.get_value("Shopping Cart Settings", None, "company"),
+			"order_type": "Shopping Cart",
+			"status": "Draft",
+			"docstatus": 0,
+			"__islocal": 1,
+			(party.doctype.lower()): party.name
+		})
+
+		if party.doctype == "Customer":
+			qdoc.contact_person = frappe.db.get_value("Contact", {"email_id": frappe.session.user,
+				"customer": party.name})
+
+		qdoc.ignore_permissions = True
+		qdoc.run_method("set_missing_values")
+		apply_cart_settings(party, qdoc)
+
+	return qdoc
+
+def update_party(fullname, company_name=None, mobile_no=None, phone=None):
+	party = get_lead_or_customer()
+
+	if party.doctype == "Lead":
+		party.company_name = company_name
+		party.lead_name = fullname
+		party.mobile_no = mobile_no
+		party.phone = phone
+	else:
+		party.customer_name = company_name or fullname
+		party.customer_type == "Company" if company_name else "Individual"
+
+		contact_name = frappe.db.get_value("Contact", {"email_id": frappe.session.user,
+			"customer": party.name})
+		contact = frappe.get_doc("Contact", contact_name)
+		contact.first_name = fullname
+		contact.last_name = None
+		contact.customer_name = party.customer_name
+		contact.mobile_no = mobile_no
+		contact.phone = phone
+		contact.ignore_permissions = True
+		contact.save()
+
+	party_doc = frappe.get_doc(party.as_dict())
+	party_doc.ignore_permissions = True
+	party_doc.save()
+
+	qdoc = _get_cart_quotation(party)
+	if not qdoc.get("__islocal"):
+		qdoc.customer_name = company_name or fullname
+		qdoc.run_method("set_missing_lead_customer_details")
+		qdoc.ignore_permissions = True
+		qdoc.save()
+
+def apply_cart_settings(party=None, quotation=None):
+	if not party:
+		party = get_lead_or_customer()
+	if not quotation:
+		quotation = _get_cart_quotation(party)
+
+	cart_settings = frappe.get_doc("Shopping Cart Settings")
+
+	billing_territory = get_address_territory(quotation.customer_address) or \
+		party.territory or get_root_of("Territory")
+
+	set_price_list_and_rate(quotation, cart_settings, billing_territory)
+
+	quotation.run_method("calculate_taxes_and_totals")
+
+	set_taxes(quotation, cart_settings, billing_territory)
+
+	_apply_shipping_rule(party, quotation, cart_settings)
+
+def set_price_list_and_rate(quotation, cart_settings, billing_territory):
+	"""set price list based on billing territory"""
+	quotation.selling_price_list = cart_settings.get_price_list(billing_territory)
+
+	# reset values
+	quotation.price_list_currency = quotation.currency = \
+		quotation.plc_conversion_rate = quotation.conversion_rate = None
+	for item in quotation.get("quotation_details"):
+		item.price_list_rate = item.discount_percentage = item.rate = item.amount = None
+
+	# refetch values
+	quotation.run_method("set_price_list_and_item_details")
+
+	# set it in cookies for using in product page
+	frappe.local.cookie_manager.set_cookie("selling_price_list", quotation.selling_price_list)
+
+def set_taxes(quotation, cart_settings, billing_territory):
+	"""set taxes based on billing territory"""
+	quotation.taxes_and_charges = cart_settings.get_tax_master(billing_territory)
+
+	# clear table
+	quotation.set("other_charges", [])
+
+	# append taxes
+	quotation.append_taxes_from_master("other_charges", "taxes_and_charges")
+
+def get_lead_or_customer():
+	customer = frappe.db.get_value("Contact", {"email_id": frappe.session.user}, "customer")
+	if customer:
+		return frappe.get_doc("Customer", customer)
+
+	lead = frappe.db.get_value("Lead", {"email_id": frappe.session.user})
+	if lead:
+		return frappe.get_doc("Lead", lead)
+	else:
+		lead_doc = frappe.get_doc({
+			"doctype": "Lead",
+			"email_id": frappe.session.user,
+			"lead_name": get_fullname(frappe.session.user),
+			"territory": guess_territory(),
+			"status": "Open" # TODO: set something better???
+		})
+
+		if frappe.session.user not in ("Guest", "Administrator"):
+			lead_doc.ignore_permissions = True
+			lead_doc.insert()
+
+		return lead_doc
+
+def get_address_docs(party=None):
+	if not party:
+		party = get_lead_or_customer()
+
+	address_docs = frappe.db.sql("""select * from `tabAddress`
+		where `%s`=%s order by name""" % (party.doctype.lower(), "%s"), party.name,
+		as_dict=True, update={"doctype": "Address"})
+
+	for address in address_docs:
+		address.display = get_address_display(address)
+		address.display = (address.display).replace("\n", "<br>\n")
+
+	return address_docs
+
+@frappe.whitelist()
+def apply_shipping_rule(shipping_rule):
+	quotation = _get_cart_quotation()
+
+	quotation.shipping_rule = shipping_rule
+
+	apply_cart_settings(quotation=quotation)
+
+	quotation.ignore_permissions = True
+	quotation.save()
+
+	return get_cart_quotation(quotation)
+
+def _apply_shipping_rule(party=None, quotation=None, cart_settings=None):
+	shipping_rules = get_shipping_rules(party, quotation, cart_settings)
+
+	if not shipping_rules:
+		return
+
+	elif quotation.shipping_rule not in shipping_rules:
+		quotation.shipping_rule = shipping_rules[0]
+
+	quotation.run_method("apply_shipping_rule")
+	quotation.run_method("calculate_taxes_and_totals")
+
+def get_applicable_shipping_rules(party=None, quotation=None):
+	shipping_rules = get_shipping_rules(party, quotation)
+
+	if shipping_rules:
+		rule_label_map = frappe.db.get_values("Shipping Rule", shipping_rules, "label")
+		# we need this in sorted order as per the position of the rule in the settings page
+		return [[rule, rule_label_map.get(rule)] for rule in shipping_rules]
+
+def get_shipping_rules(party=None, quotation=None, cart_settings=None):
+	if not party:
+		party = get_lead_or_customer()
+	if not quotation:
+		quotation = _get_cart_quotation()
+	if not cart_settings:
+		cart_settings = frappe.get_doc("Shopping Cart Settings")
+
+	# set shipping rule based on shipping territory
+	shipping_territory = get_address_territory(quotation.shipping_address_name) or \
+		party.territory
+
+	shipping_rules = cart_settings.get_shipping_rules(shipping_territory)
+
+	return shipping_rules
+
+def get_address_territory(address_name):
+	"""Tries to match city, state and country of address to existing territory"""
+	territory = None
+
+	if address_name:
+		address_fields = frappe.db.get_value("Address", address_name,
+			["city", "state", "country"])
+		for value in address_fields:
+			territory = frappe.db.get_value("Territory", value)
+			if territory:
+				break
+
+	return territory
+
+import unittest
+test_dependencies = ["Item", "Price List", "Contact", "Shopping Cart Settings"]
+
+class TestCart(unittest.TestCase):
+	def tearDown(self):
+		return
+
+		cart_settings = frappe.get_doc("Shopping Cart Settings")
+		cart_settings.ignore_permissions = True
+		cart_settings.enabled = 0
+		cart_settings.save()
+
+	def enable_shopping_cart(self):
+		return
+		if not frappe.db.get_value("Shopping Cart Settings", None, "enabled"):
+			cart_settings = frappe.get_doc("Shopping Cart Settings")
+			cart_settings.ignore_permissions = True
+			cart_settings.enabled = 1
+			cart_settings.save()
+
+	def test_get_lead_or_customer(self):
+		frappe.session.user = "test@example.com"
+		party1 = get_lead_or_customer()
+		party2 = get_lead_or_customer()
+		self.assertEquals(party1.name, party2.name)
+		self.assertEquals(party1.doctype, "Lead")
+
+		frappe.session.user = "test_contact_customer@example.com"
+		party = get_lead_or_customer()
+		self.assertEquals(party.name, "_Test Customer")
+
+	def test_add_to_cart(self):
+		self.enable_shopping_cart()
+		frappe.session.user = "test@example.com"
+
+		update_cart("_Test Item", 1)
+
+		quotation = _get_cart_quotation()
+		quotation_items = quotation.get("quotation_details", {"item_code": "_Test Item"})
+		self.assertTrue(quotation_items)
+		self.assertEquals(quotation_items[0].qty, 1)
+
+		return quotation
+
+	def test_update_cart(self):
+		self.test_add_to_cart()
+
+		update_cart("_Test Item", 5)
+
+		quotation = _get_cart_quotation()
+		quotation_items = quotation.get("quotation_details", {"item_code": "_Test Item"})
+		self.assertTrue(quotation_items)
+		self.assertEquals(quotation_items[0].qty, 5)
+
+		return quotation
+
+	def test_remove_from_cart(self):
+		quotation0 = self.test_add_to_cart()
+
+		update_cart("_Test Item", 0)
+
+		quotation = _get_cart_quotation()
+		self.assertEquals(quotation0.name, quotation.name)
+
+		quotation_items = quotation.get("quotation_details", {"item_code": "_Test Item"})
+		self.assertEquals(quotation_items, [])
+
+	def test_place_order(self):
+		quotation = self.test_update_cart()
+		sales_order_name = place_order()
+		sales_order = frappe.get_doc("Sales Order", sales_order_name)
+		self.assertEquals(sales_order.getone({"item_code": "_Test Item"}).prevdoc_docname, quotation.name)
diff --git a/erpnext/shopping_cart/doctype/__init__.py b/erpnext/shopping_cart/doctype/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/shopping_cart/doctype/__init__.py
diff --git a/erpnext/shopping_cart/doctype/shopping_cart_price_list/__init__.py b/erpnext/shopping_cart/doctype/shopping_cart_price_list/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/shopping_cart/doctype/shopping_cart_price_list/__init__.py
diff --git a/erpnext/shopping_cart/doctype/shopping_cart_price_list/shopping_cart_price_list.json b/erpnext/shopping_cart/doctype/shopping_cart_price_list/shopping_cart_price_list.json
new file mode 100644
index 0000000..12b6290
--- /dev/null
+++ b/erpnext/shopping_cart/doctype/shopping_cart_price_list/shopping_cart_price_list.json
@@ -0,0 +1,23 @@
+{
+ "creation": "2013-06-20 16:00:18.000000", 
+ "docstatus": 0, 
+ "doctype": "DocType", 
+ "fields": [
+  {
+   "fieldname": "selling_price_list", 
+   "fieldtype": "Link", 
+   "in_list_view": 1, 
+   "label": "Price List", 
+   "options": "Price List", 
+   "permlevel": 0, 
+   "reqd": 1
+  }
+ ], 
+ "idx": 1, 
+ "istable": 1, 
+ "modified": "2013-12-20 19:30:47.000000", 
+ "modified_by": "Administrator", 
+ "module": "Shopping Cart", 
+ "name": "Shopping Cart Price List", 
+ "owner": "Administrator"
+}
\ No newline at end of file
diff --git a/erpnext/shopping_cart/doctype/shopping_cart_price_list/shopping_cart_price_list.py b/erpnext/shopping_cart/doctype/shopping_cart_price_list/shopping_cart_price_list.py
new file mode 100644
index 0000000..cd92576
--- /dev/null
+++ b/erpnext/shopping_cart/doctype/shopping_cart_price_list/shopping_cart_price_list.py
@@ -0,0 +1,12 @@
+# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
+# License: GNU General Public License v3. See license.txt
+
+# For license information, please see license.txt
+
+from __future__ import unicode_literals
+import frappe
+
+from frappe.model.document import Document
+
+class ShoppingCartPriceList(Document):
+	pass
\ No newline at end of file
diff --git a/erpnext/shopping_cart/doctype/shopping_cart_settings/__init__.py b/erpnext/shopping_cart/doctype/shopping_cart_settings/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/shopping_cart/doctype/shopping_cart_settings/__init__.py
diff --git a/erpnext/shopping_cart/doctype/shopping_cart_settings/shopping_cart_settings.js b/erpnext/shopping_cart/doctype/shopping_cart_settings/shopping_cart_settings.js
new file mode 100644
index 0000000..5ea8e3e
--- /dev/null
+++ b/erpnext/shopping_cart/doctype/shopping_cart_settings/shopping_cart_settings.js
@@ -0,0 +1,10 @@
+// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
+// License: GNU General Public License v3. See license.txt
+
+$.extend(cur_frm.cscript, {
+	onload: function() {
+		if(cur_frm.doc.__onload && cur_frm.doc.__onload.quotation_series) {
+			cur_frm.fields_dict.quotation_series.df.options = cur_frm.doc.__onload.quotation_series;
+		}
+	}
+});
diff --git a/erpnext/shopping_cart/doctype/shopping_cart_settings/shopping_cart_settings.json b/erpnext/shopping_cart/doctype/shopping_cart_settings/shopping_cart_settings.json
new file mode 100644
index 0000000..7340930
--- /dev/null
+++ b/erpnext/shopping_cart/doctype/shopping_cart_settings/shopping_cart_settings.json
@@ -0,0 +1,115 @@
+{
+ "creation": "2013-06-19 15:57:32", 
+ "description": "Default settings for Shopping Cart", 
+ "docstatus": 0, 
+ "doctype": "DocType", 
+ "fields": [
+  {
+   "fieldname": "enabled", 
+   "fieldtype": "Check", 
+   "in_list_view": 1, 
+   "label": "Enable Shopping Cart", 
+   "permlevel": 0
+  }, 
+  {
+   "fieldname": "section_break_2", 
+   "fieldtype": "Section Break", 
+   "permlevel": 0
+  }, 
+  {
+   "fieldname": "company", 
+   "fieldtype": "Link", 
+   "in_list_view": 1, 
+   "label": "Company", 
+   "options": "Company", 
+   "permlevel": 0, 
+   "reqd": 1
+  }, 
+  {
+   "description": "<a href=\"#Sales Browser/Territory\">Add / Edit</a>", 
+   "fieldname": "default_territory", 
+   "fieldtype": "Link", 
+   "ignore_user_permissions": 1, 
+   "in_list_view": 1, 
+   "label": "Default Territory", 
+   "options": "Territory", 
+   "permlevel": 0, 
+   "reqd": 1
+  }, 
+  {
+   "fieldname": "column_break_4", 
+   "fieldtype": "Column Break", 
+   "permlevel": 0
+  }, 
+  {
+   "description": "<a href=\"#Sales Browser/Customer Group\">Add / Edit</a>", 
+   "fieldname": "default_customer_group", 
+   "fieldtype": "Link", 
+   "ignore_user_permissions": 1, 
+   "label": "Default Customer Group", 
+   "options": "Customer Group", 
+   "permlevel": 0, 
+   "reqd": 1
+  }, 
+  {
+   "fieldname": "quotation_series", 
+   "fieldtype": "Select", 
+   "label": "Quotation Series", 
+   "permlevel": 0, 
+   "reqd": 1
+  }, 
+  {
+   "fieldname": "section_break_6", 
+   "fieldtype": "Section Break", 
+   "permlevel": 0
+  }, 
+  {
+   "fieldname": "price_lists", 
+   "fieldtype": "Table", 
+   "label": "Shopping Cart Price Lists", 
+   "options": "Shopping Cart Price List", 
+   "permlevel": 0, 
+   "reqd": 0
+  }, 
+  {
+   "fieldname": "shipping_rules", 
+   "fieldtype": "Table", 
+   "label": "Shopping Cart Shipping Rules", 
+   "options": "Shopping Cart Shipping Rule", 
+   "permlevel": 0, 
+   "reqd": 0
+  }, 
+  {
+   "fieldname": "column_break_10", 
+   "fieldtype": "Column Break", 
+   "permlevel": 0
+  }, 
+  {
+   "fieldname": "sales_taxes_and_charges_masters", 
+   "fieldtype": "Table", 
+   "label": "Shopping Cart Taxes and Charges Masters", 
+   "options": "Shopping Cart Taxes and Charges Master", 
+   "permlevel": 0, 
+   "reqd": 0
+  }
+ ], 
+ "icon": "icon-shopping-cart", 
+ "idx": 1, 
+ "issingle": 1, 
+ "modified": "2014-05-26 03:05:53.747800", 
+ "modified_by": "Administrator", 
+ "module": "Shopping Cart", 
+ "name": "Shopping Cart Settings", 
+ "owner": "Administrator", 
+ "permissions": [
+  {
+   "create": 1, 
+   "email": 1, 
+   "permlevel": 0, 
+   "print": 1, 
+   "read": 1, 
+   "role": "Website Manager", 
+   "write": 1
+  }
+ ]
+}
\ No newline at end of file
diff --git a/erpnext/shopping_cart/doctype/shopping_cart_settings/shopping_cart_settings.py b/erpnext/shopping_cart/doctype/shopping_cart_settings/shopping_cart_settings.py
new file mode 100644
index 0000000..48e31f6
--- /dev/null
+++ b/erpnext/shopping_cart/doctype/shopping_cart_settings/shopping_cart_settings.py
@@ -0,0 +1,215 @@
+# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
+# License: GNU General Public License v3. See license.txt
+
+# For license information, please see license.txt
+
+from __future__ import unicode_literals
+import frappe
+from frappe import _, msgprint
+from frappe.utils import comma_and
+from frappe.model.document import Document
+from frappe.utils.nestedset import get_ancestors_of
+from erpnext.utilities.doctype.address.address import get_territory_from_address
+
+class ShoppingCartSetupError(frappe.ValidationError): pass
+
+class ShoppingCartSettings(Document):
+	def onload(self):
+		self.get("__onload").quotation_series = frappe.get_meta("Quotation").get_options("naming_series")
+
+	def validate(self):
+		if self.enabled:
+			self.validate_price_lists()
+			self.validate_tax_masters()
+			self.validate_exchange_rates_exist()
+
+	def on_update(self):
+		frappe.db.set_default("shopping_cart_enabled", self.get("enabled") or 0)
+		frappe.db.set_default("shopping_cart_quotation_series", self.get("quotation_series"))
+
+	def validate_overlapping_territories(self, parentfield, fieldname):
+		# for displaying message
+		doctype = self.meta.get_field(parentfield).options
+
+		# specify atleast one entry in the table
+		self.validate_table_has_rows(parentfield, raise_exception=ShoppingCartSetupError)
+
+		territory_name_map = self.get_territory_name_map(parentfield, fieldname)
+		for territory, names in territory_name_map.items():
+			if len(names) > 1:
+				frappe.throw(_("{0} {1} has a common territory {2}").format(_(doctype), comma_and(names), territory), ShoppingCartSetupError)
+
+		return territory_name_map
+
+	def validate_price_lists(self):
+		territory_name_map = self.validate_overlapping_territories("price_lists", "selling_price_list")
+
+		# validate that a Shopping Cart Price List exists for the default territory as a catch all!
+		price_list_for_default_territory = self.get_name_from_territory(self.default_territory, "price_lists",
+			"selling_price_list")
+
+		if not price_list_for_default_territory:
+			msgprint(_("Please specify a Price List which is valid for Territory") +
+				": " + self.default_territory, raise_exception=ShoppingCartSetupError)
+
+	def validate_tax_masters(self):
+		self.validate_overlapping_territories("sales_taxes_and_charges_masters",
+			"sales_taxes_and_charges_master")
+
+	def get_territory_name_map(self, parentfield, fieldname):
+		territory_name_map = {}
+
+		# entries in table
+		names = [doc.get(fieldname) for doc in self.get(parentfield)]
+
+		if names:
+			# for condition in territory check
+			parenttype = frappe.get_meta(self.meta.get_options(parentfield)).get_options(fieldname)
+
+			# to validate territory overlap
+			# make a map of territory: [list of names]
+			# if list against each territory has more than one element, raise exception
+			territory_name = frappe.db.sql("""select `territory`, `parent`
+				from `tabApplicable Territory`
+				where `parenttype`=%s and `parent` in (%s)""" %
+				("%s", ", ".join(["%s"]*len(names))), tuple([parenttype] + names))
+
+			for territory, name in territory_name:
+				territory_name_map.setdefault(territory, []).append(name)
+
+				if len(territory_name_map[territory]) > 1:
+					territory_name_map[territory].sort(key=lambda val: names.index(val))
+
+		return territory_name_map
+
+	def validate_exchange_rates_exist(self):
+		"""check if exchange rates exist for all Price List currencies (to company's currency)"""
+		company_currency = frappe.db.get_value("Company", self.company, "default_currency")
+		if not company_currency:
+			msgprint(_("Please specify currency in Company") + ": " + self.company,
+				raise_exception=ShoppingCartSetupError)
+
+		price_list_currency_map = frappe.db.get_values("Price List",
+			[d.selling_price_list for d in self.get("price_lists")],
+			"currency")
+
+		# check if all price lists have a currency
+		for price_list, currency in price_list_currency_map.items():
+			if not currency:
+				frappe.throw(_("Currency is required for Price List {0}").format(price_list))
+
+		expected_to_exist = [currency + "-" + company_currency
+			for currency in price_list_currency_map.values()
+			if currency != company_currency]
+
+		if expected_to_exist:
+			exists = frappe.db.sql_list("""select name from `tabCurrency Exchange`
+				where name in (%s)""" % (", ".join(["%s"]*len(expected_to_exist)),),
+				tuple(expected_to_exist))
+
+			missing = list(set(expected_to_exist).difference(exists))
+
+			if missing:
+				msgprint(_("Missing Currency Exchange Rates for {0}").format(comma_and(missing)),
+					raise_exception=ShoppingCartSetupError)
+
+	def get_name_from_territory(self, territory, parentfield, fieldname):
+		name = None
+		territory_name_map = self.get_territory_name_map(parentfield, fieldname)
+
+		if territory_name_map.get(territory):
+			name = territory_name_map.get(territory)
+		else:
+			territory_ancestry = self.get_territory_ancestry(territory)
+			for ancestor in territory_ancestry:
+				if territory_name_map.get(ancestor):
+					name = territory_name_map.get(ancestor)
+					break
+
+		return name
+
+	def get_price_list(self, billing_territory):
+		price_list = self.get_name_from_territory(billing_territory, "price_lists", "selling_price_list")
+		return price_list and price_list[0] or None
+
+	def get_tax_master(self, billing_territory):
+		tax_master = self.get_name_from_territory(billing_territory, "sales_taxes_and_charges_masters",
+			"sales_taxes_and_charges_master")
+		return tax_master and tax_master[0] or None
+
+	def get_shipping_rules(self, shipping_territory):
+		return self.get_name_from_territory(shipping_territory, "shipping_rules", "shipping_rule")
+
+	def get_territory_ancestry(self, territory):
+		if not hasattr(self, "_territory_ancestry"):
+			self._territory_ancestry = {}
+
+		if not self._territory_ancestry.get(territory):
+			self._territory_ancestry[territory] = get_ancestors_of("Territory", territory)
+
+		return self._territory_ancestry[territory]
+
+def validate_cart_settings(doc, method):
+	frappe.get_doc("Shopping Cart Settings", "Shopping Cart Settings").run_method("validate")
+
+def get_shopping_cart_settings():
+	if not getattr(frappe.local, "shopping_cart_settings", None):
+		frappe.local.shopping_cart_settings = frappe.get_doc("Shopping Cart Settings", "Shopping Cart Settings")
+
+	return frappe.local.shopping_cart_settings
+
+def get_default_territory():
+	return get_shopping_cart_settings().default_territory
+
+def is_shopping_cart_enabled():
+	if not get_shopping_cart_settings().enabled:
+		frappe.throw(_("You need to enable Shopping Cart"), ShoppingCartSetupError)
+
+def apply_shopping_cart_settings(quotation, method):
+	"""Called via a validate hook on Quotation"""
+	from erpnext.shopping_cart import get_party
+	if quotation.order_type != "Shopping Cart":
+		return
+
+	quotation.billing_territory = (get_territory_from_address(quotation.customer_address)
+		or get_party(quotation.contact_email).territory or get_default_territory())
+	quotation.shipping_territory = (get_territory_from_address(quotation.shipping_address_name)
+		or get_party(quotation.contact_email).territory or get_default_territory())
+
+	set_price_list(quotation)
+	set_taxes_and_charges(quotation)
+	quotation.calculate_taxes_and_totals()
+	set_shipping_rule(quotation)
+
+def set_price_list(quotation):
+	previous_selling_price_list = quotation.selling_price_list
+	quotation.selling_price_list = get_shopping_cart_settings().get_price_list(quotation.billing_territory)
+
+	if not quotation.selling_price_list:
+		quotation.selling_price_list = get_shopping_cart_settings().get_price_list(get_default_territory())
+
+	if previous_selling_price_list != quotation.selling_price_list:
+		quotation.price_list_currency = quotation.currency = quotation.plc_conversion_rate = quotation.conversion_rate = None
+		for d in quotation.get("quotation_details"):
+			d.price_list_rate = d.discount_percentage = d.rate = d.amount = None
+
+	quotation.set_price_list_and_item_details()
+
+def set_taxes_and_charges(quotation):
+	previous_taxes_and_charges = quotation.taxes_and_charges
+	quotation.taxes_and_charges = get_shopping_cart_settings().get_tax_master(quotation.billing_territory)
+
+	if previous_taxes_and_charges != quotation.taxes_and_charges:
+		quotation.set_other_charges()
+
+def set_shipping_rule(quotation):
+	shipping_rules = get_shopping_cart_settings().get_shipping_rules(quotation.shipping_territory)
+	if not shipping_rules:
+		quotation.remove_shipping_charge()
+		return
+
+	if quotation.shipping_rule not in shipping_rules:
+		quotation.remove_shipping_charge()
+		quotation.shipping_rule = shipping_rules[0]
+
+	quotation.apply_shipping_rule()
diff --git a/erpnext/shopping_cart/doctype/shopping_cart_settings/test_shopping_cart_settings.py b/erpnext/shopping_cart/doctype/shopping_cart_settings/test_shopping_cart_settings.py
new file mode 100644
index 0000000..a45aaa4
--- /dev/null
+++ b/erpnext/shopping_cart/doctype/shopping_cart_settings/test_shopping_cart_settings.py
@@ -0,0 +1,79 @@
+# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
+# License: GNU General Public License v3. See license.txt
+
+# For license information, please see license.txt
+
+from __future__ import unicode_literals
+import frappe
+import unittest
+from erpnext.shopping_cart.doctype.shopping_cart_settings.shopping_cart_settings import ShoppingCartSetupError
+
+class TestShoppingCartSettings(unittest.TestCase):
+	def setUp(self):
+		frappe.db.sql("""delete from `tabSingles` where doctype="Shipping Cart Settings" """)
+		frappe.db.sql("""delete from `tabShopping Cart Price List`""")
+		frappe.db.sql("""delete from `tabShopping Cart Taxes and Charges Master`""")
+		frappe.db.sql("""delete from `tabShopping Cart Shipping Rule`""")
+		
+	def get_cart_settings(self):
+		return frappe.get_doc({"doctype": "Shopping Cart Settings",
+			"company": "_Test Company"})
+		
+	def test_price_list_territory_overlap(self):
+		cart_settings = self.get_cart_settings()
+		
+		def _add_price_list(price_list):
+			cart_settings.append("price_lists", {
+				"doctype": "Shopping Cart Price List",
+				"selling_price_list": price_list
+			})
+		
+		for price_list in ("_Test Price List Rest of the World", "_Test Price List India",
+			"_Test Price List"):
+			_add_price_list(price_list)
+		
+		controller = cart_settings
+		controller.validate_overlapping_territories("price_lists", "selling_price_list")
+		
+		_add_price_list("_Test Price List 2")
+		
+		controller = cart_settings
+		self.assertRaises(ShoppingCartSetupError, controller.validate_overlapping_territories,
+			"price_lists", "selling_price_list")
+			
+		return cart_settings
+		
+	def test_taxes_territory_overlap(self):
+		cart_settings = self.get_cart_settings()
+		
+		def _add_tax_master(tax_master):
+			cart_settings.append("sales_taxes_and_charges_masters", {
+				"doctype": "Shopping Cart Taxes and Charges Master",
+				"sales_taxes_and_charges_master": tax_master
+			})
+		
+		for tax_master in ("_Test Sales Taxes and Charges Master", "_Test India Tax Master"):
+			_add_tax_master(tax_master)
+			
+		controller = cart_settings
+		controller.validate_overlapping_territories("sales_taxes_and_charges_masters",
+			"sales_taxes_and_charges_master")
+			
+		_add_tax_master("_Test Sales Taxes and Charges Master - Rest of the World")
+		
+		controller = cart_settings
+		self.assertRaises(ShoppingCartSetupError, controller.validate_overlapping_territories,
+			"sales_taxes_and_charges_masters", "sales_taxes_and_charges_master")
+		
+	def test_exchange_rate_exists(self):
+		frappe.db.sql("""delete from `tabCurrency Exchange`""")
+		
+		cart_settings = self.test_price_list_territory_overlap()
+		controller = cart_settings
+		self.assertRaises(ShoppingCartSetupError, controller.validate_exchange_rates_exist)
+		
+		from erpnext.setup.doctype.currency_exchange.test_currency_exchange import test_records as \
+			currency_exchange_records
+		frappe.get_doc(currency_exchange_records[0]).insert()
+		controller.validate_exchange_rates_exist()
+		
diff --git a/erpnext/shopping_cart/doctype/shopping_cart_shipping_rule/__init__.py b/erpnext/shopping_cart/doctype/shopping_cart_shipping_rule/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/shopping_cart/doctype/shopping_cart_shipping_rule/__init__.py
diff --git a/erpnext/shopping_cart/doctype/shopping_cart_shipping_rule/shopping_cart_shipping_rule.json b/erpnext/shopping_cart/doctype/shopping_cart_shipping_rule/shopping_cart_shipping_rule.json
new file mode 100644
index 0000000..5ff55f9
--- /dev/null
+++ b/erpnext/shopping_cart/doctype/shopping_cart_shipping_rule/shopping_cart_shipping_rule.json
@@ -0,0 +1,23 @@
+{
+ "creation": "2013-07-03 13:15:34.000000", 
+ "docstatus": 0, 
+ "doctype": "DocType", 
+ "fields": [
+  {
+   "fieldname": "shipping_rule", 
+   "fieldtype": "Link", 
+   "in_list_view": 1, 
+   "label": "Shipping Rule", 
+   "options": "Shipping Rule", 
+   "permlevel": 0, 
+   "reqd": 1
+  }
+ ], 
+ "idx": 1, 
+ "istable": 1, 
+ "modified": "2013-12-20 19:30:47.000000", 
+ "modified_by": "Administrator", 
+ "module": "Shopping Cart", 
+ "name": "Shopping Cart Shipping Rule", 
+ "owner": "Administrator"
+}
\ No newline at end of file
diff --git a/erpnext/shopping_cart/doctype/shopping_cart_shipping_rule/shopping_cart_shipping_rule.py b/erpnext/shopping_cart/doctype/shopping_cart_shipping_rule/shopping_cart_shipping_rule.py
new file mode 100644
index 0000000..17aa964
--- /dev/null
+++ b/erpnext/shopping_cart/doctype/shopping_cart_shipping_rule/shopping_cart_shipping_rule.py
@@ -0,0 +1,12 @@
+# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
+# License: GNU General Public License v3. See license.txt
+
+# For license information, please see license.txt
+
+from __future__ import unicode_literals
+import frappe
+
+from frappe.model.document import Document
+
+class ShoppingCartShippingRule(Document):
+	pass
\ No newline at end of file
diff --git a/erpnext/shopping_cart/doctype/shopping_cart_taxes_and_charges_master/__init__.py b/erpnext/shopping_cart/doctype/shopping_cart_taxes_and_charges_master/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/shopping_cart/doctype/shopping_cart_taxes_and_charges_master/__init__.py
diff --git a/erpnext/shopping_cart/doctype/shopping_cart_taxes_and_charges_master/shopping_cart_taxes_and_charges_master.json b/erpnext/shopping_cart/doctype/shopping_cart_taxes_and_charges_master/shopping_cart_taxes_and_charges_master.json
new file mode 100644
index 0000000..bfe31e5
--- /dev/null
+++ b/erpnext/shopping_cart/doctype/shopping_cart_taxes_and_charges_master/shopping_cart_taxes_and_charges_master.json
@@ -0,0 +1,23 @@
+{
+ "creation": "2013-06-20 16:57:03.000000", 
+ "docstatus": 0, 
+ "doctype": "DocType", 
+ "fields": [
+  {
+   "fieldname": "sales_taxes_and_charges_master", 
+   "fieldtype": "Link", 
+   "in_list_view": 1, 
+   "label": "Tax Master", 
+   "options": "Sales Taxes and Charges Master", 
+   "permlevel": 0, 
+   "reqd": 1
+  }
+ ], 
+ "idx": 1, 
+ "istable": 1, 
+ "modified": "2013-12-20 19:30:47.000000", 
+ "modified_by": "Administrator", 
+ "module": "Shopping Cart", 
+ "name": "Shopping Cart Taxes and Charges Master", 
+ "owner": "Administrator"
+}
\ No newline at end of file
diff --git a/erpnext/shopping_cart/doctype/shopping_cart_taxes_and_charges_master/shopping_cart_taxes_and_charges_master.py b/erpnext/shopping_cart/doctype/shopping_cart_taxes_and_charges_master/shopping_cart_taxes_and_charges_master.py
new file mode 100644
index 0000000..e0d0f9f
--- /dev/null
+++ b/erpnext/shopping_cart/doctype/shopping_cart_taxes_and_charges_master/shopping_cart_taxes_and_charges_master.py
@@ -0,0 +1,12 @@
+# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
+# License: GNU General Public License v3. See license.txt
+
+# For license information, please see license.txt
+
+from __future__ import unicode_literals
+import frappe
+
+from frappe.model.document import Document
+
+class ShoppingCartTaxesandChargesMaster(Document):
+	pass
diff --git a/erpnext/shopping_cart/product.py b/erpnext/shopping_cart/product.py
new file mode 100644
index 0000000..5a86d1d
--- /dev/null
+++ b/erpnext/shopping_cart/product.py
@@ -0,0 +1,54 @@
+# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
+# License: GNU General Public License v3. See license.txt
+
+from __future__ import unicode_literals
+
+import frappe
+from frappe.utils import cint, fmt_money, cstr
+from erpnext.shopping_cart.cart import _get_cart_quotation
+from urllib import unquote
+
+@frappe.whitelist(allow_guest=True)
+def get_product_info(item_code):
+	"""get product price / stock info"""
+	if not cint(frappe.db.get_default("shopping_cart_enabled")):
+		return {}
+
+	cart_quotation = _get_cart_quotation()
+
+	price_list = cstr(unquote(frappe.local.request.cookies.get("selling_price_list")))
+
+	warehouse = frappe.db.get_value("Item", item_code, "website_warehouse")
+	if warehouse:
+		in_stock = frappe.db.sql("""select actual_qty from tabBin where
+			item_code=%s and warehouse=%s""", (item_code, warehouse))
+		if in_stock:
+			in_stock = in_stock[0][0] > 0 and 1 or 0
+	else:
+		in_stock = -1
+
+	price = price_list and frappe.db.sql("""select price_list_rate, currency from
+		`tabItem Price` where item_code=%s and price_list=%s""",
+		(item_code, price_list), as_dict=1) or []
+
+	price = price and price[0] or None
+	qty = 0
+
+	if price:
+		price["formatted_price"] = fmt_money(price["price_list_rate"], currency=price["currency"])
+
+		price["currency"] = not cint(frappe.db.get_default("hide_currency_symbol")) \
+			and (frappe.db.get_value("Currency", price.currency, "symbol") or price.currency) \
+			or ""
+
+		if frappe.session.user != "Guest":
+			item = cart_quotation.get({"item_code": item_code})
+			if item:
+				qty = item[0].qty
+
+	return {
+		"price": price,
+		"stock": in_stock,
+		"uom": frappe.db.get_value("Item", item_code, "stock_uom"),
+		"qty": qty
+	}
diff --git a/erpnext/shopping_cart/test_shopping_cart.py b/erpnext/shopping_cart/test_shopping_cart.py
new file mode 100644
index 0000000..f77522a
--- /dev/null
+++ b/erpnext/shopping_cart/test_shopping_cart.py
@@ -0,0 +1,230 @@
+# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
+# License: GNU General Public License v3. See license.txt
+
+from __future__ import unicode_literals
+import unittest
+import frappe
+from erpnext.shopping_cart import get_quotation, set_item_in_cart
+
+class TestShoppingCart(unittest.TestCase):
+	"""
+		Note:
+		Shopping Cart == Quotation
+	"""
+	def setUp(self):
+		frappe.set_user("Administrator")
+		self.enable_shopping_cart()
+
+	def tearDown(self):
+		frappe.set_user("Administrator")
+		self.disable_shopping_cart()
+
+	def test_get_cart_new_user(self):
+		self.login_as_new_user()
+
+		# test if lead is created and quotation with new lead is fetched
+		quotation = get_quotation()
+		self.assertEquals(quotation.quotation_to, "Lead")
+		self.assertEquals(frappe.db.get_value("Lead", quotation.lead, "email_id"), "test_cart_user@example.com")
+		self.assertEquals(quotation.customer, None)
+		self.assertEquals(quotation.contact_email, frappe.session.user)
+
+		return quotation
+
+	def test_get_cart_lead(self):
+		self.login_as_lead()
+
+		# test if quotation with lead is fetched
+		quotation = get_quotation()
+		self.assertEquals(quotation.quotation_to, "Lead")
+		self.assertEquals(quotation.lead, frappe.db.get_value("Lead", {"email_id": "test_cart_lead@example.com"}))
+		self.assertEquals(quotation.customer, None)
+		self.assertEquals(quotation.contact_email, frappe.session.user)
+
+		return quotation
+
+	def test_get_cart_customer(self):
+		self.login_as_customer()
+
+		# test if quotation with customer is fetched
+		quotation = get_quotation()
+		self.assertEquals(quotation.quotation_to, "Customer")
+		self.assertEquals(quotation.customer, "_Test Customer")
+		self.assertEquals(quotation.lead, None)
+		self.assertEquals(quotation.contact_email, frappe.session.user)
+
+		return quotation
+
+	def test_add_to_cart(self):
+		self.login_as_lead()
+
+		# add first item
+		set_item_in_cart("_Test Item", 1)
+		quotation = self.test_get_cart_lead()
+		self.assertEquals(quotation.get("quotation_details")[0].item_code, "_Test Item")
+		self.assertEquals(quotation.get("quotation_details")[0].qty, 1)
+		self.assertEquals(quotation.get("quotation_details")[0].amount, 10)
+
+		# add second item
+		set_item_in_cart("_Test Item 2", 1)
+		quotation = self.test_get_cart_lead()
+		self.assertEquals(quotation.get("quotation_details")[1].item_code, "_Test Item 2")
+		self.assertEquals(quotation.get("quotation_details")[1].qty, 1)
+		self.assertEquals(quotation.get("quotation_details")[1].amount, 20)
+
+		self.assertEquals(len(quotation.get("quotation_details")), 2)
+
+	def test_update_cart(self):
+		# first, add to cart
+		self.test_add_to_cart()
+
+		# update first item
+		set_item_in_cart("_Test Item", 5)
+		quotation = self.test_get_cart_lead()
+		self.assertEquals(quotation.get("quotation_details")[0].item_code, "_Test Item")
+		self.assertEquals(quotation.get("quotation_details")[0].qty, 5)
+		self.assertEquals(quotation.get("quotation_details")[0].amount, 50)
+		self.assertEquals(quotation.net_total, 70)
+		self.assertEquals(len(quotation.get("quotation_details")), 2)
+
+	def test_remove_from_cart(self):
+		# first, add to cart
+		self.test_add_to_cart()
+
+		# remove first item
+		set_item_in_cart("_Test Item", 0)
+		quotation = self.test_get_cart_lead()
+		self.assertEquals(quotation.get("quotation_details")[0].item_code, "_Test Item 2")
+		self.assertEquals(quotation.get("quotation_details")[0].qty, 1)
+		self.assertEquals(quotation.get("quotation_details")[0].amount, 20)
+		self.assertEquals(quotation.net_total, 20)
+		self.assertEquals(len(quotation.get("quotation_details")), 1)
+
+		# remove second item
+		set_item_in_cart("_Test Item 2", 0)
+		quotation = self.test_get_cart_lead()
+		self.assertEquals(quotation.net_total, 0)
+		self.assertEquals(len(quotation.get("quotation_details")), 0)
+
+	def test_set_billing_address(self):
+		return
+
+		# first, add to cart
+		self.test_add_to_cart()
+
+		quotation = self.test_get_cart_lead()
+		default_address = frappe.get_doc("Address", {"lead": quotation.lead, "is_primary_address": 1})
+		self.assertEquals("customer_address", default_address.name)
+
+	def test_set_shipping_address(self):
+		# first, add to cart
+		self.test_add_to_cart()
+
+
+
+	def test_shipping_rule(self):
+		self.test_set_shipping_address()
+
+		# check if shipping rule changed
+		pass
+
+	def test_price_list(self):
+		self.test_set_billing_address()
+
+		# check if price changed
+		pass
+
+	def test_place_order(self):
+		pass
+
+	# helper functions
+	def enable_shopping_cart(self):
+		settings = frappe.get_doc("Shopping Cart Settings", "Shopping Cart Settings")
+
+		if settings.default_territory == "_Test Territory Rest Of The World":
+			settings.enabled = 1
+		else:
+			settings.update({
+				"enabled": 1,
+				"company": "_Test Company",
+				"default_territory": "_Test Territory Rest Of The World",
+				"default_customer_group": "_Test Customer Group",
+				"quotation_series": "_T-Quotation-"
+			})
+			settings.set("price_lists", [
+				# price lists
+				{"doctype": "Shopping Cart Price List", "parentfield": "price_lists",
+					"selling_price_list": "_Test Price List India"},
+				{"doctype": "Shopping Cart Price List", "parentfield": "price_lists",
+					"selling_price_list": "_Test Price List Rest of the World"}
+			])
+			settings.set("sales_taxes_and_charges_masters", [
+				# tax masters
+				{"doctype": "Shopping Cart Taxes and Charges Master", "parentfield": "sales_taxes_and_charges_masters",
+					"sales_taxes_and_charges_master": "_Test India Tax Master"},
+				{"doctype": "Shopping Cart Taxes and Charges Master", "parentfield": "sales_taxes_and_charges_masters",
+					"sales_taxes_and_charges_master": "_Test Sales Taxes and Charges Master - Rest of the World"},
+			])
+			settings.set("shipping_rules", {"doctype": "Shopping Cart Shipping Rule", "parentfield": "shipping_rules",
+					"shipping_rule": "_Test Shipping Rule - India"})
+
+		settings.save()
+		frappe.local.shopping_cart_settings = None
+
+	def disable_shopping_cart(self):
+		settings = frappe.get_doc("Shopping Cart Settings", "Shopping Cart Settings")
+		settings.enabled = 0
+		settings.save()
+		frappe.local.shopping_cart_settings = None
+
+	def login_as_new_user(self):
+		frappe.set_user("test_cart_user@example.com")
+
+	def login_as_lead(self):
+		self.create_lead()
+		frappe.set_user("test_cart_lead@example.com")
+
+	def login_as_customer(self):
+		frappe.set_user("test_contact_customer@example.com")
+
+	def create_lead(self):
+		if frappe.db.get_value("Lead", {"email_id": "test_cart_lead@example.com"}):
+			return
+
+		lead = frappe.get_doc({
+			"doctype": "Lead",
+			"email_id": "test_cart_lead@example.com",
+			"lead_name": "_Test Website Lead",
+			"status": "Open",
+			"territory": "_Test Territory Rest Of The World"
+		})
+		lead.insert(ignore_permissions=True)
+
+		frappe.get_doc({
+			"doctype": "Address",
+			"address_line1": "_Test Address Line 1",
+			"address_title": "_Test Cart Lead Address",
+			"address_type": "Office",
+			"city": "_Test City",
+			"country": "United States",
+			"lead": lead.name,
+			"lead_name": "_Test Website Lead",
+			"is_primary_address": 1,
+			"phone": "+91 0000000000"
+		}).insert(ignore_permissions=True)
+
+		frappe.get_doc({
+			"doctype": "Address",
+			"address_line1": "_Test Address Line 1",
+			"address_title": "_Test Cart Lead Address",
+			"address_type": "Home",
+			"city": "_Test City",
+			"country": "India",
+			"lead": lead.name,
+			"lead_name": "_Test Website Lead",
+			"phone": "+91 0000000000"
+		}).insert(ignore_permissions=True)
+
+
+test_dependencies = ["Sales Taxes and Charges Master", "Price List", "Item Price", "Shipping Rule", "Currency Exchange",
+	"Customer Group", "Lead", "Customer", "Contact", "Address", "Item"]
diff --git a/erpnext/shopping_cart/utils.py b/erpnext/shopping_cart/utils.py
new file mode 100644
index 0000000..ee011a4
--- /dev/null
+++ b/erpnext/shopping_cart/utils.py
@@ -0,0 +1,47 @@
+# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
+# License: GNU General Public License v3. See license.txt
+
+from __future__ import unicode_literals
+
+import frappe
+import frappe.defaults
+from frappe.utils import cint
+
+def show_cart_count():
+	if (frappe.db.get_default("shopping_cart_enabled") and
+		frappe.db.get_value("User", frappe.session.user, "user_type") == "Website User"):
+		return True
+
+	return False
+
+def set_cart_count(login_manager):
+	if show_cart_count():
+		from .shopping_cart.cart import set_cart_count
+		set_cart_count()
+
+def clear_cart_count(login_manager):
+	if show_cart_count():
+		frappe.local.cookie_manager.delete_cookie("cart_count")
+
+def update_website_context(context):
+	post_login = []
+	cart_enabled = cint(frappe.db.get_default("shopping_cart_enabled"))
+	context["shopping_cart_enabled"] = cart_enabled
+
+	if cart_enabled:
+		post_login += [
+			{"label": "Cart", "url": "cart", "icon": "icon-shopping-cart", "class": "cart-count"},
+			{"class": "divider"}
+		]
+
+	post_login += [
+		{"label": "User", "url": "user", "icon": "icon-user"},
+		{"label": "Addresses", "url": "addresses", "icon": "icon-map-marker"},
+		{"label": "My Orders", "url": "orders", "icon": "icon-list"},
+		{"label": "My Tickets", "url": "tickets", "icon": "icon-tags"},
+		{"label": "Invoices", "url": "invoices", "icon": "icon-file-text"},
+		{"label": "Shipments", "url": "shipments", "icon": "icon-truck"},
+		{"class": "divider"}
+	]
+
+	context["post_login"] = post_login + context.get("post_login", [])
diff --git a/erpnext/templates/includes/cart.js b/erpnext/templates/includes/cart.js
new file mode 100644
index 0000000..90cfea5
--- /dev/null
+++ b/erpnext/templates/includes/cart.js
@@ -0,0 +1,297 @@
+// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
+// License: GNU General Public License v3. See license.txt
+
+// js inside blog page
+
+// shopping cart
+frappe.provide("shopping_cart");
+
+$.extend(shopping_cart, {
+	show_error: function(title, text) {
+		$("#cart-container").html('<div class="well"><h4>' + title + '</h4> ' + text + '</div>');
+	},
+
+	bind_events: function() {
+		// bind update button
+		$(document).on("click", ".item-update-cart button", function() {
+			var item_code = $(this).attr("data-item-code");
+			shopping_cart.update_cart({
+				item_code: item_code,
+				qty: $('input[data-item-code="'+item_code+'"]').val(),
+				with_doc: 1,
+				btn: this,
+				callback: function(r) {
+					if(!r.exc) {
+						shopping_cart.render(r.message);
+						var $button = $('button[data-item-code="'+item_code+'"]').addClass("btn-success");
+						setTimeout(function() { $button.removeClass("btn-success"); }, 1000);
+					}
+				},
+			});
+		});
+
+		$("#cart-add-shipping-address").on("click", function() {
+			window.location.href = "address?address_fieldname=shipping_address_name";
+		});
+
+		$("#cart-add-billing-address").on("click", function() {
+			window.location.href = "address?address_fieldname=customer_address";
+		});
+
+		$(".btn-place-order").on("click", function() {
+			shopping_cart.place_order(this);
+		});
+	},
+
+	render: function(out) {
+		var doc = out.doc;
+		var addresses = out.addresses;
+
+		var $cart_items = $("#cart-items").empty();
+		var $cart_taxes = $("#cart-taxes").empty();
+		var $cart_totals = $("#cart-totals").empty();
+		var $cart_billing_address = $("#cart-billing-address").empty();
+		var $cart_shipping_address = $("#cart-shipping-address").empty();
+
+		var no_items = $.map(doc.quotation_details || [],
+			function(d) { return d.item_code || null;}).length===0;
+		if(no_items) {
+			shopping_cart.show_error("Empty :-(", frappe._("Go ahead and add something to your cart."));
+			$("#cart-addresses").toggle(false);
+			return;
+		}
+
+		var shipping_rule_added = false;
+		var taxes_exist = false;
+		var shipping_rule_labels = $.map(out.shipping_rules || [], function(rule) { return rule[1]; });
+
+		$.each(doc.quotation_details || [], function(i, d) {
+			shopping_cart.render_item_row($cart_items, d);
+		});
+
+		$.each(doc.other_charges || [], function(i, d) {
+			if(out.shipping_rules && out.shipping_rules.length &&
+				shipping_rule_labels.indexOf(d.description)!==-1) {
+					shipping_rule_added = true;
+					shopping_cart.render_tax_row($cart_taxes, d, out.shipping_rules);
+			} else {
+				shopping_cart.render_tax_row($cart_taxes, d);
+			}
+
+			taxes_exist = true;
+		});
+
+		if(out.shipping_rules && out.shipping_rules.length && !shipping_rule_added) {
+			shopping_cart.render_tax_row($cart_taxes, {description: "", formatted_tax_amount: ""},
+				out.shipping_rules);
+			taxes_exist = true;
+		}
+
+		if(taxes_exist)
+			$('<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>"
+		});
+
+		if(!(addresses && addresses.length)) {
+			$cart_shipping_address.html('<div class="well">'+frappe._("Hey! Go ahead and add an address")+'</div>');
+		} else {
+			shopping_cart.render_address($cart_shipping_address, addresses, doc.shipping_address_name);
+			shopping_cart.render_address($cart_billing_address, addresses, doc.customer_address);
+		}
+	},
+
+	render_item_row: function($cart_items, doc) {
+		doc.image_html = doc.website_image ?
+			'<div style="height: 120px; overflow: hidden;"><img src="' + doc.website_image + '" /></div>' :
+			'{% include "templates/includes/product_missing_image.html" %}';
+
+		if(doc.description === doc.item_name) doc.description = "";
+
+		$(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>\
+						<p>%(description)s</p>\
+					</div>\
+				</div>\
+			</div>\
+			<div class="col-md-3 col-sm-3 text-right">\
+				<div class="input-group item-update-cart">\
+					<input type="text" placeholder="Qty" value="%(qty)s" \
+						data-item-code="%(item_code)s" class="text-right form-control">\
+					<div class="input-group-btn">\
+						<button class="btn btn-primary" data-item-code="%(item_code)s">\
+							<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>\
+			</div>\
+		</div><hr>', doc)).appendTo($cart_items);
+	},
+
+	render_tax_row: function($cart_taxes, doc, shipping_rules) {
+		var shipping_selector;
+		if(shipping_rules) {
+			shipping_selector = '<select class="form-control">' + $.map(shipping_rules, function(rule) {
+					return '<option value="' + rule[0] + '">' + rule[1] + '</option>' }).join("\n") +
+				'</select>';
+		}
+
+		var $tax_row = $(repl('<div class="row">\
+			<div class="col-md-9 col-sm-9">\
+				<div class="row">\
+					<div class="col-md-9 col-md-offset-3">' +
+					(shipping_selector || '<p>%(description)s</p>') +
+					'</div>\
+				</div>\
+			</div>\
+			<div class="col-md-3 col-sm-3 text-right">\
+				<p' + (shipping_selector ? ' style="margin-top: 5px;"' : "") + '>%(formatted_tax_amount)s</p>\
+			</div>\
+		</div>', doc)).appendTo($cart_taxes);
+
+		if(shipping_selector) {
+			$tax_row.find('select option').each(function(i, opt) {
+				if($(opt).html() == doc.description) {
+					$(opt).attr("selected", "selected");
+				}
+			});
+			$tax_row.find('select').on("change", function() {
+				shopping_cart.apply_shipping_rule($(this).val(), this);
+			});
+		}
+	},
+
+	apply_shipping_rule: function(rule, btn) {
+		return frappe.call({
+			btn: btn,
+			type: "POST",
+			method: "erpnext.shopping_cart.cart.apply_shipping_rule",
+			args: { shipping_rule: rule },
+			callback: function(r) {
+				if(!r.exc) {
+					shopping_cart.render(r.message);
+				}
+			}
+		});
+	},
+
+	render_address: function($address_wrapper, addresses, address_name) {
+		$.each(addresses, function(i, address) {
+			$(repl('<div class="panel panel-default"> \
+				<div class="panel-heading"> \
+					<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" \
+							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> \
+			</div>', address))
+				.css({"margin": "10px auto"})
+				.appendTo($address_wrapper);
+		});
+
+		$address_wrapper.find(".panel-heading")
+			.find(".address-title")
+				.css({"cursor": "pointer"})
+				.on("click", function() {
+					$address_wrapper.find('.panel-collapse[data-address-name="'
+						+$(this).attr("data-address-name")+'"]').collapse("toggle");
+				});
+
+		$address_wrapper.find('input[type="checkbox"]').on("click", function() {
+			if($(this).prop("checked")) {
+				var me = this;
+				$address_wrapper.find('input[type="checkbox"]').each(function(i, chk) {
+					if($(chk).attr("data-address-name")!=$(me).attr("data-address-name")) {
+						$(chk).prop("checked", false);
+					}
+				});
+
+				return frappe.call({
+					type: "POST",
+					method: "erpnext.shopping_cart.cart.update_cart_address",
+					args: {
+						address_fieldname: $address_wrapper.attr("data-fieldname"),
+						address_name: $(this).attr("data-address-name")
+					},
+					callback: function(r) {
+						if(!r.exc) {
+							shopping_cart.render(r.message);
+						}
+					}
+				});
+			} else {
+				return false;
+			}
+		});
+
+		$address_wrapper.find('input[type="checkbox"][data-address-name="'+ address_name +'"]')
+			.prop("checked", true);
+
+		$address_wrapper.find(".panel-collapse").collapse({
+			parent: $address_wrapper,
+			toggle: false
+		});
+
+		$address_wrapper.find('.panel-collapse[data-address-name="'+ address_name +'"]')
+			.collapse("show");
+	},
+
+	place_order: function(btn) {
+		return frappe.call({
+			type: "POST",
+			method: "erpnext.shopping_cart.cart.place_order",
+			btn: btn,
+			callback: function(r) {
+				if(r.exc) {
+					var msg = "";
+					if(r._server_messages) {
+						msg = JSON.parse(r._server_messages || []).join("<br>");
+					}
+
+					$("#cart-error")
+						.empty()
+						.html(msg || frappe._("Something went wrong!"))
+						.toggle(true);
+				} else {
+					window.location.href = "order?name=" + encodeURIComponent(r.message);
+				}
+			}
+		});
+	}
+});
+
+$(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("Oops!", frappe._("Price List not configured."));
+				} else if(r["403"]) {
+					shopping_cart.show_error("Hey!", frappe._("You need to be logged in to view your cart."));
+				} else {
+					shopping_cart.show_error("Oops!", frappe._("Something went wrong."));
+				}
+			} else {
+				shopping_cart.set_cart_count();
+				shopping_cart.render(r.message);
+			}
+		}
+	});
+});
diff --git a/erpnext/templates/includes/product_page.js b/erpnext/templates/includes/product_page.js
index 42d4ae7..03520fc 100644
--- a/erpnext/templates/includes/product_page.js
+++ b/erpnext/templates/includes/product_page.js
@@ -7,7 +7,7 @@
 	
 	frappe.call({
 		type: "POST",
-		method: "shopping_cart.shopping_cart.product.get_product_info",
+		method: "erpnext.shopping_cart.product.get_product_info",
 		args: {
 			item_code: "{{ name }}"
 		},
diff --git a/erpnext/templates/includes/sale.html b/erpnext/templates/includes/sale.html
new file mode 100644
index 0000000..e823248
--- /dev/null
+++ b/erpnext/templates/includes/sale.html
@@ -0,0 +1,85 @@
+<div class="sale-content">
+    <ul class="breadcrumb">
+    	<li><a href="index">Home</a></li>
+    	<li><a href="{{ parent_link }}">{{ parent_title }}</a></li>
+    	<li class="active"><i class="icon-file icon-fixed-width"></i> {{ doc.name }}</li>
+    </ul>
+	<h3><i class="icon-file icon-fixed-width"></i> {{ doc.name }}</h3>
+	{% if doc.name == _("Not Allowed") -%}
+		<script>ask_to_login();</script>
+	{% else %}
+	<hr>
+	<div>
+	<div class="row">
+		<div class="col-xs-6">
+			{% if doc.status -%}{{ doc.status }}{%- endif %}
+		</div>
+		<div class="col-xs-6">
+			<span class="pull-right">{{ frappe.utils.formatdate(doc.posting_date or doc.transaction_date) }}</span>
+		</div>
+	</div>
+	<br>
+	<div class="row">
+		<div class="col-md-12">
+		<table class="table table-bordered">
+			<tbody>
+				<tr>
+					<th>Sr</th>
+					<th>Item Name</th>
+					<th>Description</th>
+					<th>Qty</th>
+					<th>UoM</th>
+					<th>Basic Rate</th>
+					<th>Amount</th>
+				</tr>
+				{%- for row in doc.get({"doctype": doc.doctype + " Item"}) %}
+				<tr>
+					<td style="width: 3%;">{{ row.idx }}</td>
+					<td style="width: 20%;">{{ row.item_name }}</td>
+					<td style="width: 37%;">{{ row.description }}</td>
+					<td style="width: 5%; text-align: right;">{{ row.qty }}</td>
+					<td style="width: 5%;">{{ row.stock_uom }}</td>
+					<td style="width: 15%; text-align: right;">{{ frappe.utils.fmt_money(row.rate, currency=doc.currency) }}</td>
+					<td style="width: 15%; text-align: right;">{{ frappe.utils.fmt_money(row.amount, currency=doc.currency) }}</td>
+				</tr>
+				{% endfor -%}
+			</tbody>
+		</table>
+		</div>
+	</div>
+	<div class="row">
+		<div class="col-md-6"></div>
+		<div class="col-md-6">
+		<table cellspacing=0 width=100%>
+		<tbody>
+			<tr>
+				<td>Net Total</td>
+				<td width=40% style="text-align: right;">{{
+					frappe.utils.fmt_money(doc.net_total/doc.conversion_rate, currency=doc.currency)
+				}}</td>
+			</tr>
+			{%- for charge in doc.get({"doctype":"Sales Taxes and Charges"}) -%}
+			{%- if not charge.included_in_print_rate -%}
+			<tr>
+				<td>{{ charge.description }}</td>
+				<td style="text-align: right;">{{ frappe.utils.fmt_money(charge.tax_amount / doc.conversion_rate, currency=doc.currency) }}</td>
+			</tr>
+			{%- endif -%}
+			{%- endfor -%}
+			<tr>
+				<td>Grand Total</td>
+				<td style="text-align: right;">{{ frappe.utils.fmt_money(doc.grand_total_export, currency=doc.currency) }}</td>
+			</tr>
+			<tr style='font-weight: bold'>
+				<td>Rounded Total</td>
+				<td style="text-align: right;">{{ frappe.utils.fmt_money(doc.rounded_total_export, currency=doc.currency) }}</td>
+			</tr>
+		</tbody>
+		</table>
+		</div>
+	</div>
+	</div>
+	{%- endif %}
+</div>
+
+<!-- no-sidebar -->
diff --git a/erpnext/templates/includes/sales_transactions.html b/erpnext/templates/includes/sales_transactions.html
new file mode 100644
index 0000000..e8717af
--- /dev/null
+++ b/erpnext/templates/includes/sales_transactions.html
@@ -0,0 +1,30 @@
+<script>
+$(document).ready(function() {
+	global_number_format = "{{ global_number_format }}";
+	currency = "{{ currency }}";
+	frappe.currency_symbols = {{ currency_symbols }};
+});
+</script>
+
+{% include "templates/includes/transactions.html" %}
+
+<script>
+	var render = function(doc) {
+		doc.grand_total_export = format_currency(doc.grand_total_export, doc.currency);
+		if(!doc.status) doc.status = "";
+
+		$(repl('<a href="{{ page }}?name=%(name)s" class="list-group-item">\
+				<div class="row">\
+					<div class="col-md-6">\
+						<div class="row col-md-12">%(name)s</div>\
+						<div class="row col-md-12 text-muted">%(items)s</div>\
+						<div class="row col-md-12">%(status)s</div>\
+					</div>\
+					<div class="col-md-3 text-right">%(grand_total_export)s</div>\
+					<div class="col-md-3 text-right text-muted">%(creation)s</div>\
+				</div>\
+			</a>', doc)).appendTo($list);
+	};
+</script>
+
+<!-- no-sidebar -->
diff --git a/erpnext/templates/includes/transactions.html b/erpnext/templates/includes/transactions.html
new file mode 100644
index 0000000..b0eda19
--- /dev/null
+++ b/erpnext/templates/includes/transactions.html
@@ -0,0 +1,53 @@
+<div class="transactions-content">
+    <ul class="breadcrumb">
+    	<li><a href="index">Home</a></li>
+    	<li class="active"><i class="{{ icon }} icon-fixed-width"></i> {{ title }}</li>
+    </ul>
+	<p id="msgprint-alert" class="alert alert-danger"
+		style="display: none;">&nbsp;</p>
+	<div class="list-group transaction-list">
+		<div class="progress progress-striped active">
+			<div class="progress-bar progress-bar-info" style="width: 100%;"></div>
+		</div>
+	</div>
+	<div class="text-center">
+		<button class="btn btn-default btn-show-more hide">More</button>
+	</div>
+</div>
+<script>
+var get_transactions = function(btn) {
+	frappe.call({
+		method: "{{ method }}",
+		args: { start: start },
+		btn: btn,
+		callback: function(r) {
+			$list.find(".progress").remove();
+			$show_more.toggleClass("hide", !(r.message && r.message.length===20));
+			if(!(r.message && r.message.length)) {
+				if(!$list.html().trim()) {
+					$list.html("<div class='text-muted'>\
+						{{ empty_list_message }}</div>");
+				}
+				return;
+			}
+
+			start += r.message.length;
+
+			$.each(r.message, function(i, doc) {
+				render(doc);
+			});
+		}
+	})
+};
+
+$(document).ready(function() {
+	window.start = 0;
+	window.$list = $(".transaction-list");
+	window.$list.find(".list-group-item").remove();
+	window.$show_more = $(".btn-show-more").on("click", function() { get_transactions(this); })
+
+	get_transactions();
+});
+</script>
+
+<!-- no-sidebar -->
diff --git a/erpnext/templates/pages/address.html b/erpnext/templates/pages/address.html
new file mode 100644
index 0000000..95ddb76
--- /dev/null
+++ b/erpnext/templates/pages/address.html
@@ -0,0 +1,112 @@
+{% block title %} {{ title }} {% endblock %}
+
+{% block header %}<h2>{{ title }}</h2>{% endblock %}
+
+{% block content %}
+{% macro render_fields(docfields) -%}
+{% for df in docfields -%}
+	{% if df.fieldtype == "Data" -%}
+	<fieldset>
+		<label>{{ df.label }}</label>
+		<input class="form-control" type="text" placeholder="Type {{ df.label }}"
+			data-fieldname="{{ df.fieldname }}" data-fieldtype="{{ df.fieldtype }}"
+			{% if doc and doc.get(df.fieldname) -%} value="{{ doc[df.fieldname] }}" {%- endif %}>
+	</fieldset>
+	{% elif df.fieldtype == "Check" -%}
+	<fieldset class="checkbox">
+		<label><input type="checkbox" data-fieldname="{{ df.fieldname }}"
+			data-fieldtype="{{ df.fieldtype }}"
+			{% if doc and frappe.utils.cint(doc.get(df.fieldname)) -%} checked="checked" {%- endif %}>
+			{{ df.label }}</label>
+	</fieldset>
+	{% elif df.fieldtype in ("Select", "Link") -%}
+	<fieldset>
+		{% set select_options = frappe.get_list(df.options)|map(attribute="name")
+			if df.fieldtype == "Link" else df.options.split("\n") %}
+		<label>{{ df.label }}</label>
+		<select class="form-control" data-fieldname="{{ df.fieldname }}" data-fieldtype="{{ df.fieldtype }}">
+			{% for value in select_options -%}
+			{% if doc and doc.get(df.fieldname) == value -%}
+			<option selected="selected">{{ value }}</option>
+			{% else -%}
+			<option>{{ value }}</option>
+			{%- endif %}
+			{%- endfor %}
+		</select>
+	</fieldset>
+	{%- endif %}
+{%- endfor %}
+{%- endmacro %}
+
+<div class="container content">
+    <ul class="breadcrumb">
+    	<li><a href="index">Home</a></li>
+    	<li><a href="addresses">My Addresses</a></li>
+    	<li class="active"><i class="icon-map-marker icon-fixed-width"></i> {{ title }}</li>
+    </ul>
+	<h3><i class="icon-map-marker icon-fixed-width"></i> {{ title }}</h3>
+	<button type="button" class="btn btn-primary pull-right" id="address-save"><i class="icon-ok"></i>
+		{{ doc and "Save" or "Insert" }}</button>
+	<div class="clearfix"></div>
+	<hr>
+	<div id="address-error" class="alert alert-danger" style="display:none"></div>
+	<form autocomplete="on">
+		<div class="row">
+			<section class="col-md-6">
+				{{ render_fields(meta.left_fields) }}
+			</section>
+			<section class="col-md-6">
+				{{ render_fields(meta.right_fields) }}
+			</section>
+		</section>
+	</form>
+</div>
+
+<script>
+;(function() {
+	console.log("yoyo");
+	frappe.ready(function() {
+		bind_save();
+	});
+
+	var bind_save = function() {
+		$("#address-save").on("click", function() {
+			console.log("clicked!");
+
+			var fields = {
+				name: "{{ docname or '' }}"
+			};
+
+			$("form").find("[data-fieldname]").each(function(i, input) {
+				var $input = $(input);
+				var fieldname = $(input).attr("data-fieldname");
+				var fieldtype = $(input).attr("data-fieldtype");
+
+				if(fieldtype == "Check") {
+					fields[fieldname] = $input.is(":checked") ? 1 : 0;
+				} else {
+					fields[fieldname] = $input.val();
+				}
+			});
+
+			frappe.call({
+				btn: $(this),
+				type: "POST",
+				method: "shopping_cart.templates.pages.address.save_address",
+				args: { fields: fields, address_fieldname: get_url_arg("address_fieldname") },
+				error_msg: "#address-error",
+				callback: function(r) {
+					if(get_url_arg("address_fieldname")) {
+						window.location.href = "cart";
+					} else {
+						window.location.href = "address?name=" + encodeURIComponent(r.message);
+					}
+				}
+			});
+		});
+	};
+})();
+</script>
+
+<!-- no-sidebar -->
+{% endblock %}
diff --git a/erpnext/templates/pages/address.py b/erpnext/templates/pages/address.py
new file mode 100644
index 0000000..46dde92
--- /dev/null
+++ b/erpnext/templates/pages/address.py
@@ -0,0 +1,62 @@
+# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
+# License: GNU General Public License v3. See license.txt
+
+from __future__ import unicode_literals
+import json
+
+import frappe
+from erpnext.shopping_cart.cart import get_lead_or_customer, update_cart_address
+from frappe.desk.form.meta import get_meta
+
+no_cache = 1
+no_sitemap = 1
+
+def get_context(context):
+	def _get_fields(fieldnames):
+		return [frappe._dict(zip(["label", "fieldname", "fieldtype", "options"],
+				[df.label, df.fieldname, df.fieldtype, df.options]))
+			for df in get_meta("Address").get("fields", {"fieldname": ["in", fieldnames]})]
+
+	docname = doc = None
+	title = "New Address"
+	if frappe.form_dict.name:
+		doc = frappe.get_doc("Address", frappe.form_dict.name)
+		docname = doc.name
+		title = doc.name
+
+	return {
+		"doc": doc,
+		"meta": frappe._dict({
+			"left_fields": _get_fields(["address_title", "address_type", "address_line1", "address_line2",
+				"city", "state", "pincode", "country"]),
+			"right_fields": _get_fields(["email_id", "phone", "fax", "is_primary_address",
+				"is_shipping_address"])
+		}),
+		"docname": docname,
+		"title": title
+	}
+
+@frappe.whitelist()
+def save_address(fields, address_fieldname=None):
+	party = get_lead_or_customer()
+	fields = json.loads(fields)
+
+	if fields.get("name"):
+		doc = frappe.get_doc("Address", fields.get("name"))
+	else:
+		doc = frappe.get_doc({"doctype": "Address", "__islocal": 1})
+
+	doc.update(fields)
+
+	party_fieldname = party.doctype.lower()
+	doc.update({
+		party_fieldname: party.name,
+		(party_fieldname + "_name"): party.get(party_fieldname + "_name")
+	})
+	doc.ignore_permissions = True
+	doc.save()
+
+	if address_fieldname:
+		update_cart_address(address_fieldname, doc.name)
+
+	return doc.name
diff --git a/erpnext/templates/pages/addresses.html b/erpnext/templates/pages/addresses.html
new file mode 100644
index 0000000..58a9798
--- /dev/null
+++ b/erpnext/templates/pages/addresses.html
@@ -0,0 +1,52 @@
+{% block title %} {{ "My Addresses" }} {% endblock %}
+
+{% block header %}<h2>My Addresses</h2>{% endblock %}
+
+{% block breadcrumbs %}{% include "templates/includes/breadcrumbs.html" %}{% endblock %}
+
+{% block content %}
+<div class="addresses-content">
+	<p><a class="btn btn-default" href="address"><i class="icon-plus"> New Address</i></a></p>
+	<hr>
+	<div id="address-list">
+		<div class="progress progress-striped active">
+			<div class="progress-bar progress-bar-info" style="width: 100%;"></div>
+		</div>
+	</div>
+</div>
+
+<script>
+;(function() {
+	var fetch_addresses = function() {
+		frappe.call({
+			method: "shopping_cart.templates.pages.addresses.get_addresses",
+			callback: function(r) {
+				$("#address-list .progress").remove();
+				var $list = $("#address-list");
+
+				if(!(r.message && r.message.length)) {
+					$list.html("<div class='alert'>No Addresses Found</div>");
+					return;
+				}
+
+				$.each(r.message, function(i, address) {
+					address.url_name = encodeURIComponent(address.name);
+					$(repl('<div> \
+						<p><a href="address?name=%(url_name)s">%(name)s</a></p> \
+						<p>%(display)s</p> \
+						<hr> \
+					</div>', address)).appendTo($list);
+				});
+			}
+		});
+	};
+
+	$(document).ready(function() {
+		fetch_addresses();
+	});
+})();
+</script>
+
+<!-- no-sidebar -->
+{% endblock %}
+
diff --git a/erpnext/templates/pages/addresses.py b/erpnext/templates/pages/addresses.py
new file mode 100644
index 0000000..531d3a3
--- /dev/null
+++ b/erpnext/templates/pages/addresses.py
@@ -0,0 +1,13 @@
+# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
+# License: GNU General Public License v3. See license.txt
+
+from __future__ import unicode_literals
+import frappe
+from erpnext.shopping_cart.cart import get_address_docs
+
+no_cache = 1
+no_sitemap = 1
+
+@frappe.whitelist()
+def get_addresses():
+	return get_address_docs()
diff --git a/erpnext/templates/pages/cart.html b/erpnext/templates/pages/cart.html
new file mode 100644
index 0000000..a8dc03e
--- /dev/null
+++ b/erpnext/templates/pages/cart.html
@@ -0,0 +1,57 @@
+{% block title %} {{ "Shopping Cart" }} {% endblock %}
+
+{% block header %}<h2><i class="icon-shopping-cart"></i> Shopping Cart</h2>{% endblock %}
+
+{% block script %}{% include "templates/includes/cart.js" %}{% endblock %}
+
+{% block content %}
+<div class="cart-content">
+	<div class="progress progress-striped active">
+		<div class="progress-bar progress-bar-info" style="width: 100%;"></div>
+	</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>
+		<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-plus"></span> New Shipping Address</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-plus"></span> New Billing Address</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>
+
+<!-- no-sidebar -->
+{% endblock %}
+
diff --git a/erpnext/templates/pages/cart.py b/erpnext/templates/pages/cart.py
new file mode 100644
index 0000000..9c9f096
--- /dev/null
+++ b/erpnext/templates/pages/cart.py
@@ -0,0 +1,7 @@
+# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
+# License: GNU General Public License v3. See license.txt
+
+from __future__ import unicode_literals
+
+no_cache = 1
+no_sitemap = 1
\ No newline at end of file
diff --git a/erpnext/templates/pages/invoice.html b/erpnext/templates/pages/invoice.html
new file mode 100644
index 0000000..13b0e72
--- /dev/null
+++ b/erpnext/templates/pages/invoice.html
@@ -0,0 +1,6 @@
+{% block title %} {{ doc.name }} {% endblock %}
+
+{% block header %}<h2>{{ doc.name }}</h2>{% endblock %}
+
+{% block content%}{% include "templates/includes/sale.html" %}{% endblock %}
+
diff --git a/erpnext/templates/pages/invoice.py b/erpnext/templates/pages/invoice.py
new file mode 100644
index 0000000..5b55007
--- /dev/null
+++ b/erpnext/templates/pages/invoice.py
@@ -0,0 +1,31 @@
+# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
+# License: GNU General Public License v3. See license.txt
+
+from __future__ import unicode_literals
+import frappe
+from frappe import _
+from frappe.utils import flt, fmt_money
+from shopping_cart.templates.utils import get_transaction_context
+
+no_cache = 1
+no_sitemap = 1
+
+def get_context(context):
+	invoice_context = frappe._dict({
+		"parent_link": "invoices",
+		"parent_title": "Invoices"
+	})
+	invoice_context.update(get_transaction_context("Sales Invoice", frappe.form_dict.name))
+	modify_status(invoice_context.doc)
+	return invoice_context
+	
+def modify_status(doc):
+	doc.status = ""
+	if flt(doc.outstanding_amount):
+		doc.status = '<span class="label %s"><i class="icon-fixed-width %s"></i> %s</span>' % \
+			("label-warning", "icon-exclamation-sign", 
+			_("To Pay") + " = " + fmt_money(doc.outstanding_amount, currency=doc.currency))
+	else:
+		doc.status = '<span class="label %s"><i class="icon-fixed-width %s"></i> %s</span>' % \
+			("label-success", "icon-ok", _("Paid"))
+		
\ No newline at end of file
diff --git a/erpnext/templates/pages/invoices.html b/erpnext/templates/pages/invoices.html
new file mode 100644
index 0000000..9f493ca
--- /dev/null
+++ b/erpnext/templates/pages/invoices.html
@@ -0,0 +1,6 @@
+{% block title %} {{ title }} {% endblock %}
+
+{% block header %}<h2>{{ title }}</h2>{% endblock %}
+
+{% block content %}{% include "templates/includes/sales_transactions.html" %}{% endblock %}
+
diff --git a/erpnext/templates/pages/invoices.py b/erpnext/templates/pages/invoices.py
new file mode 100644
index 0000000..98c5140
--- /dev/null
+++ b/erpnext/templates/pages/invoices.py
@@ -0,0 +1,29 @@
+# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
+# License: GNU General Public License v3. See license.txt
+
+from __future__ import unicode_literals
+import frappe
+from shopping_cart.templates.utils import get_currency_context
+
+no_cache = 1
+no_sitemap = 1
+
+def get_context(context):
+	invoices_context = get_currency_context()
+	invoices_context.update({
+		"title": "Invoices",
+		"method": "shopping_cart.templates.pages.invoices.get_invoices",
+		"icon": "icon-file-text",
+		"empty_list_message": "No Invoices Found",
+		"page": "invoice"
+	})
+	return invoices_context
+	
+@frappe.whitelist()
+def get_invoices(start=0):
+	from shopping_cart.templates.utils import get_transaction_list
+	from shopping_cart.templates.pages.invoice import modify_status
+	invoices = get_transaction_list("Sales Invoice", start, ["outstanding_amount"])
+	for d in invoices:
+		modify_status(d)
+	return invoices
\ No newline at end of file
diff --git a/erpnext/templates/pages/order.html b/erpnext/templates/pages/order.html
new file mode 100644
index 0000000..13b0e72
--- /dev/null
+++ b/erpnext/templates/pages/order.html
@@ -0,0 +1,6 @@
+{% block title %} {{ doc.name }} {% endblock %}
+
+{% block header %}<h2>{{ doc.name }}</h2>{% endblock %}
+
+{% block content%}{% include "templates/includes/sale.html" %}{% endblock %}
+
diff --git a/erpnext/templates/pages/order.py b/erpnext/templates/pages/order.py
new file mode 100644
index 0000000..832a60e
--- /dev/null
+++ b/erpnext/templates/pages/order.py
@@ -0,0 +1,34 @@
+# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
+# License: GNU General Public License v3. See license.txt
+
+from __future__ import unicode_literals
+import frappe
+from frappe import _
+from shopping_cart.templates.utils import get_transaction_context
+
+no_cache = 1
+no_sitemap = 1
+
+def get_context(context):
+	order_context = frappe._dict({
+		"parent_link": "orders",
+		"parent_title": "My Orders"
+	})
+
+	order_context.update(get_transaction_context("Sales Order", frappe.form_dict.name))
+	modify_status(order_context.doc)
+	return order_context
+
+def modify_status(doc):
+	doc.status = []
+	if 0 < doc.per_billed < 100:
+		doc.status.append(("label-warning", "icon-ok", _("Partially Billed")))
+	elif doc.per_billed == 100:
+		doc.status.append(("label-success", "icon-ok", _("Billed")))
+
+	if 0 < doc.per_delivered < 100:
+		doc.status.append(("label-warning", "icon-truck", _("Partially Delivered")))
+	elif doc.per_delivered == 100:
+		doc.status.append(("label-success", "icon-truck", _("Delivered")))
+	doc.status = " " + " ".join(('<span class="label %s"><i class="icon-fixed-width %s"></i> %s</span>' % s
+			for s in doc.status))
diff --git a/erpnext/templates/pages/orders.html b/erpnext/templates/pages/orders.html
new file mode 100644
index 0000000..d58cbd8
--- /dev/null
+++ b/erpnext/templates/pages/orders.html
@@ -0,0 +1,5 @@
+{% block title %} {{ title }} {% endblock %}
+
+{% block header %}<h2>{{ title }}</h2>{% endblock %}
+
+{% block content %}{% include "templates/includes/sales_transactions.html" %}{% endblock %}
diff --git a/erpnext/templates/pages/orders.py b/erpnext/templates/pages/orders.py
new file mode 100644
index 0000000..c443b6a
--- /dev/null
+++ b/erpnext/templates/pages/orders.py
@@ -0,0 +1,30 @@
+# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
+# License: GNU General Public License v3. See license.txt
+
+from __future__ import unicode_literals
+import frappe
+from shopping_cart.templates.utils import get_currency_context, get_transaction_list
+from shopping_cart.templates.pages.order import modify_status
+
+no_cache = 1
+no_sitemap = 1
+
+def get_context(context):
+	orders_context = get_currency_context()
+	orders_context.update({
+		"title": "My Orders",
+		"method": "shopping_cart.templates.pages.orders.get_orders",
+		"icon": "icon-list",
+		"empty_list_message": "No Orders Yet",
+		"page": "order",
+	})
+	return orders_context
+	
+@frappe.whitelist()
+def get_orders(start=0):
+	orders = get_transaction_list("Sales Order", start, ["per_billed", "per_delivered"])
+	for d in orders:
+		modify_status(d)
+		
+	return orders
+	
\ No newline at end of file
diff --git a/erpnext/templates/pages/shipment.html b/erpnext/templates/pages/shipment.html
new file mode 100644
index 0000000..13b0e72
--- /dev/null
+++ b/erpnext/templates/pages/shipment.html
@@ -0,0 +1,6 @@
+{% block title %} {{ doc.name }} {% endblock %}
+
+{% block header %}<h2>{{ doc.name }}</h2>{% endblock %}
+
+{% block content%}{% include "templates/includes/sale.html" %}{% endblock %}
+
diff --git a/erpnext/templates/pages/shipment.py b/erpnext/templates/pages/shipment.py
new file mode 100644
index 0000000..ba98e1d
--- /dev/null
+++ b/erpnext/templates/pages/shipment.py
@@ -0,0 +1,17 @@
+# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
+# License: GNU General Public License v3. See license.txt
+
+from __future__ import unicode_literals
+import frappe
+from shopping_cart.templates.utils import get_transaction_context
+
+no_cache = 1
+no_sitemap = 1
+
+def get_context(context):
+	shipment_context = frappe._dict({
+		"parent_link": "shipments",
+		"parent_title": "Shipments"
+	})
+	shipment_context.update(get_transaction_context("Delivery Note", frappe.form_dict.name))
+	return shipment_context
diff --git a/erpnext/templates/pages/shipments.html b/erpnext/templates/pages/shipments.html
new file mode 100644
index 0000000..d58cbd8
--- /dev/null
+++ b/erpnext/templates/pages/shipments.html
@@ -0,0 +1,5 @@
+{% block title %} {{ title }} {% endblock %}
+
+{% block header %}<h2>{{ title }}</h2>{% endblock %}
+
+{% block content %}{% include "templates/includes/sales_transactions.html" %}{% endblock %}
diff --git a/erpnext/templates/pages/shipments.py b/erpnext/templates/pages/shipments.py
new file mode 100644
index 0000000..fe28c7e
--- /dev/null
+++ b/erpnext/templates/pages/shipments.py
@@ -0,0 +1,25 @@
+# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
+# License: GNU General Public License v3. See license.txt
+
+from __future__ import unicode_literals
+import frappe
+from shopping_cart.templates.utils import get_currency_context
+
+no_cache = 1
+no_sitemap = 1
+
+def get_context(context):
+	shipments_context = get_currency_context()
+	shipments_context.update({
+		"title": "Shipments",
+		"method": "shopping_cart.templates.pages.shipments.get_shipments",
+		"icon": "icon-truck",
+		"empty_list_message": "No Shipments Found",
+		"page": "shipment"
+	})
+	return shipments_context
+	
+@frappe.whitelist()
+def get_shipments(start=0):
+	from shopping_cart.templates.utils import get_transaction_list
+	return get_transaction_list("Delivery Note", start)
diff --git a/erpnext/templates/pages/ticket.html b/erpnext/templates/pages/ticket.html
new file mode 100644
index 0000000..39c69df
--- /dev/null
+++ b/erpnext/templates/pages/ticket.html
@@ -0,0 +1,116 @@
+{% block title %} {{ title }} {% endblock %}
+
+{% block header %}<h2><i class="icon-ticket icon-fixed-width"></i> {{ title }}</h2>{% endblock %}
+
+{% block content %}
+{% set status_label = {
+	"Open": "label-success",
+	"To Reply": "label-danger",
+	"Closed": "label-default"
+} %}
+
+<div class="ticket-content">
+    <ul class="breadcrumb">
+    	<li><a href="index">Home</a></li>
+    	<li><a href="tickets">My Tickets</a></li>
+    	<li class="active"><i class="icon-ticket icon-fixed-width"></i> {{ doc.name or "" }}</li>
+    </ul>
+	{% if not doc -%}
+		<script>ask_to_login();</script>
+	{% else %}
+	<hr>
+	{%- if doc.status -%}
+	{% if doc.status == "Waiting for Customer" -%}
+		{% set status = "To Reply" %}
+	{% else %}
+		{% set status = doc.status %}
+	{%- endif -%}
+	<div class="row">
+		<div class="col-md-2" style="margin-bottom: 7px;">
+			<span class="label {{ status_label.get(status) or 'label-default' }}">{{ status }}</span>
+		</div>
+		<div class="col-md-8">
+			<div class="row col-md-12">{{ doc.subject }}</div>
+		</div>
+		<div class="col-md-2">
+			<span class="text-muted pull-right">{{ frappe.utils.formatdate(doc.creation) }}</span>
+		</div>
+	</div>
+	<div class="row">
+		<h4 class="col-xs-6">Messages</h4>
+		<div class="col-xs-6">
+			 <button class="btn btn-sm btn-primary pull-right" id="ticket-reply">
+				  <i class="icon-envelope icon-fixed-width"></i> Reply</button>
+			 <button class="btn btn-sm btn-success pull-right hide" id="ticket-reply-send">
+				  <i class="icon-arrow-right icon-fixed-width"></i> Send</button>
+		</div>
+	</div>
+	<p id="ticket-alert" class="alert alert-danger"
+		style="display: none;">&nbsp;</p>
+	<div>
+		<table class="table table-bordered table-striped" id="ticket-thread">
+			<tbody>
+				{%- for comm in
+					(doc.get({"doctype":"Communication"})|sort(reverse=True, attribute="creation")) %}
+				<tr>
+					<td>
+					<h5 style="text-transform: none">
+						{{ comm.sender }} on {{ frappe.utils.formatdate(comm.creation) }}</h5>
+					<hr>
+					<p>{{ frappe.utils.is_html(comm.content) and comm.content or
+						comm.content.replace("\n", "<br>")}}</p>
+					</td>
+				</tr>
+				{% endfor -%}
+			</tbody>
+		</table>
+	</div>
+	{%- endif -%}
+	{% endif -%}
+</div>
+
+<script>
+$(document).ready(function() {
+	$("#ticket-reply").on("click", function() {
+		if(!$("#ticket-reply-editor").length) {
+			$('<tr id="ticket-reply-editor"><td>\
+				<h5 style="text-transform: none">Reply</h5>\
+				<hr>\
+				<textarea rows=10 class="form-control" style="resize: vertical;"></textarea>\
+			</td></tr>').prependTo($("#ticket-thread").find("tbody"));
+			$("#ticket-reply").addClass("hide");
+			$("#ticket-reply-send").removeClass("hide");
+		}
+	});
+
+	$("#ticket-reply-send").on("click", function() {
+		var reply = $("#ticket-reply-editor").find("textarea").val().trim();
+		if(!reply) {
+			msgprint("Please write something in reply!");
+		} else {
+			frappe.call({
+				type: "POST",
+				method: "shopping_cart.templates.pages.ticket.add_reply",
+				btn: this,
+				args: { ticket: "{{ doc.name }}", message: reply },
+				callback: function(r) {
+					if(r.exc) {
+						msgprint(r._server_messages
+							? JSON.parse(r._server_messages).join("<br>")
+							: "Something went wrong!");
+					} else {
+						window.location.reload();
+					}
+				}
+			})
+		}
+	});
+});
+
+var msgprint = function(txt) {
+	if(txt) $("#ticket-alert").html(txt).toggle(true);
+}
+</script>
+
+<!-- no-sidebar -->
+{% endblock %}
diff --git a/erpnext/templates/pages/ticket.py b/erpnext/templates/pages/ticket.py
new file mode 100644
index 0000000..9582146
--- /dev/null
+++ b/erpnext/templates/pages/ticket.py
@@ -0,0 +1,41 @@
+# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
+# License: GNU General Public License v3. See license.txt
+
+from __future__ import unicode_literals
+import frappe
+from frappe import _
+from frappe.utils import today
+
+no_cache = 1
+no_sitemap = 1
+
+def get_context(context):
+	doc = frappe.get_doc("Support Ticket", frappe.form_dict.name)
+	if doc.raised_by == frappe.session.user:
+		ticket_context = {
+			"title": doc.name,
+			"doc": doc
+		}
+	else:
+		ticket_context = {"title": "Not Allowed", "doc": {}}
+
+	return ticket_context
+
+@frappe.whitelist()
+def add_reply(ticket, message):
+	if not message:
+		raise frappe.throw(_("Please write something"))
+
+	doc = frappe.get_doc("Support Ticket", ticket)
+	if doc.raised_by != frappe.session.user:
+		raise frappe.throw(_("You are not allowed to reply to this ticket."), frappe.PermissionError)
+
+	comm = frappe.get_doc({
+		"doctype":"Communication",
+		"subject": doc.subject,
+		"content": message,
+		"sender": doc.raised_by,
+		"sent_or_received": "Received"
+	})
+	comm.insert(ignore_permissions=True)
+
diff --git a/erpnext/templates/pages/tickets.html b/erpnext/templates/pages/tickets.html
new file mode 100644
index 0000000..6c03313
--- /dev/null
+++ b/erpnext/templates/pages/tickets.html
@@ -0,0 +1,92 @@
+{% block title %} {{ title }} {% endblock %}
+
+{% block header %}<h2>{{ title }}</h2>{% endblock %}
+
+{% block content %}
+{% include "templates/includes/transactions.html" %}
+
+<script>
+	var status_label = {
+		"Open": "label-success",
+		"Waiting for Customer": "label-danger",
+		"Closed": "label-default"
+	}
+
+	var render = function(doc) {
+		doc.status = doc.status.trim();
+		doc.label_class = status_label[doc.status] || "label-default";
+		if(doc.status==="Waiting for Customer") doc.status = "To Reply";
+
+		$(repl('<a href="{{ page }}?name=%(name)s" class="list-group-item">\
+				<div class="row">\
+					<div class="col-md-2" style="margin-bottom: 7px;"><span class="label %(label_class)s">\
+						%(status)s</span></div>\
+					<div class="col-md-8">\
+						<div class="row col-md-12">%(name)s</div>\
+						<div class="row col-md-12 text-muted">%(subject)s</div>\
+					</div>\
+					<div class="col-md-2 pull-right">\
+						<span class="text-muted">%(creation)s</span>\
+					</div>\
+				</div>\
+			</a>', doc)).appendTo($list);
+	};
+
+	frappe.ready(function() {
+		if(!window.$new_ticket) {
+			window.$new_ticket = $('<div>\
+					<button class="btn btn-primary" style="margin-bottom: 15px;" id="new-ticket">\
+						<i class="icon-tag icon-fixed-width"></i> New Ticket\
+					</button>\
+					<button class="btn btn-success hide" style="margin-bottom: 15px;" id="new-ticket-send">\
+						<i class="icon-arrow-right icon-fixed-width"></i> Send\
+					</button>\
+				</div>').insertBefore(".transaction-list");
+		}
+
+		window.$new_ticket.find("#new-ticket").on("click", function() {
+			$(this).addClass("hide");
+			$(window.$new_ticket).find("#new-ticket-send").removeClass("hide");
+			$('<div class="well" id="ticket-editor">\
+					<div class="form-group"><input class="form-control" type="data"\
+						 placeholder="Subject" data-fieldname="subject"></div>\
+					<div class="form-group"><textarea rows=10 class="form-control" \
+						 style="resize: vertical;" placeholder="Message" \
+						 data-fieldname="message"></textarea></div>\
+				</div>')
+				.insertAfter(window.$new_ticket);
+		});
+
+		window.$new_ticket.find("#new-ticket-send").on("click", function() {
+			var subject = $("#ticket-editor").find('[data-fieldname="subject"]').val().trim();
+			var message = $("#ticket-editor").find('[data-fieldname="message"]').val().trim();
+			if(!(subject && message)) {
+				msgprint("Please write something in subject and message!");
+			} else {
+				frappe.call({
+					type: "POST",
+					method: "shopping_cart.templates.pages.tickets.make_new_ticket",
+					btn: this,
+					args: { subject: subject, message: message },
+					callback: function(r) {
+						if(r.exc) {
+							msgprint(r._server_messages
+								? JSON.parse(r._server_messages).join("<br>")
+								: "Something went wrong!");
+						} else {
+							window.location.href = "ticket?name=" + encodeURIComponent(r.message);
+						}
+					}
+				})
+			}
+		});
+	});
+
+	var msgprint = function(txt) {
+		if(txt) $("#msgprint-alert").html(txt).toggle(true);
+	}
+</script>
+
+<!-- no-sidebar -->
+{% endblock %}
+
diff --git a/erpnext/templates/pages/tickets.py b/erpnext/templates/pages/tickets.py
new file mode 100644
index 0000000..158173f
--- /dev/null
+++ b/erpnext/templates/pages/tickets.py
@@ -0,0 +1,54 @@
+# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
+# License: GNU General Public License v3. See license.txt
+
+from __future__ import unicode_literals
+import frappe
+from frappe.utils import cint, formatdate
+
+no_cache = 1
+no_sitemap = 1
+
+def get_context(context):
+	return {
+		"title": "My Tickets",
+		"method": "shopping_cart.templates.pages.tickets.get_tickets",
+		"icon": "icon-ticket",
+		"empty_list_message": "No Tickets Raised",
+		"page": "ticket"
+	}
+
+@frappe.whitelist()
+def get_tickets(start=0):
+	tickets = frappe.db.sql("""select name, subject, status, creation
+		from `tabSupport Ticket` where raised_by=%s
+		order by modified desc
+		limit %s, 20""", (frappe.session.user, cint(start)), as_dict=True)
+	for t in tickets:
+		t.creation = formatdate(t.creation)
+
+	return tickets
+
+@frappe.whitelist()
+def make_new_ticket(subject, message):
+	if not (subject and message):
+		raise frappe.throw(_("Please write something in subject and message!"))
+
+	ticket = frappe.get_doc({
+		"doctype":"Support Ticket",
+		"subject": subject,
+		"raised_by": frappe.session.user,
+	})
+	ticket.insert(ignore_permissions=True)
+
+	comm = frappe.get_doc({
+		"doctype":"Communication",
+		"subject": subject,
+		"content": message,
+		"sender": frappe.session.user,
+		"sent_or_received": "Received",
+		"reference_doctype": "Support Ticket",
+		"reference_name": ticket.name
+	})
+	comm.insert(ignore_permissions=True)
+
+	return ticket.name
diff --git a/erpnext/templates/pages/user.html b/erpnext/templates/pages/user.html
new file mode 100644
index 0000000..b4a1a39
--- /dev/null
+++ b/erpnext/templates/pages/user.html
@@ -0,0 +1,57 @@
+{% block title %} {{ "My Profile" }} {% endblock %}
+
+{% block header %}<h2>My Profile</h2>{% endblock %}
+
+{% block content %}
+<div class="user-content" style="max-width: 500px;">
+    <ul class="breadcrumb">
+    	<li><a href="index">Home</a></li>
+    	<li class="active"><i class="icon-user icon-fixed-width"></i> My Profile</li>
+    </ul>
+	<div class="alert alert-warning" id="message" style="display: none;"></div>
+	<form>
+		<fieldset>
+			<label>Full Name</label>
+			<input class="form-control" type="text" id="fullname" placeholder="Your Name">
+		</fieldset>
+		<fieldset>
+			<label>Company Name</label>
+			<input class="form-control" type="text" id="company_name" placeholder="Company Name" value="{{ company_name }}">
+		</fieldset>
+		<fieldset>
+			<label>Mobile No</label>
+			<input class="form-control" type="text" id="mobile_no" placeholder="Mobile No" value="{{ mobile_no }}">
+		</fieldset>
+		<fieldset>
+			<label>Phone</label>
+			<input class="form-control" type="text" id="phone" placeholder="Phone" value="{{ phone }}">
+		</fieldset>
+		<button id="update_user" type="submit" class="btn btn-default">Update</button>
+	</form>
+</div>
+<script>
+$(document).ready(function() {
+	$("#fullname").val(getCookie("full_name") || "");
+	$("#update_user").click(function() {
+		frappe.call({
+			method: "shopping_cart.templates.pages.user.update_user",
+			type: "POST",
+			args: {
+				fullname: $("#fullname").val(),
+				company_name: $("#company_name").val(),
+				mobile_no: $("#mobile_no").val(),
+				phone: $("#phone").val()
+			},
+			btn: this,
+			msg: $("#message"),
+			callback: function(r) {
+				if(!r.exc) $("#user-full-name").html($("#fullname").val());
+			}
+		});
+		return false;
+	})
+})
+</script>
+<!-- no-sidebar -->
+{% endblock %}
+
diff --git a/erpnext/templates/pages/user.py b/erpnext/templates/pages/user.py
new file mode 100644
index 0000000..5869e98
--- /dev/null
+++ b/erpnext/templates/pages/user.py
@@ -0,0 +1,40 @@
+# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
+# License: GNU General Public License v3. See license.txt
+
+from __future__ import unicode_literals
+import frappe
+from frappe import _
+from frappe.utils import cstr
+from erpnext.shopping_cart.cart import get_lead_or_customer
+
+no_cache = 1
+no_sitemap = 1
+
+def get_context(context):
+	party = get_lead_or_customer()
+	if party.doctype == "Lead":
+		mobile_no = party.mobile_no
+		phone = party.phone
+	else:
+		mobile_no, phone = frappe.db.get_value("Contact", {"email_id": frappe.session.user, 
+			"customer": party.name}, ["mobile_no", "phone"])
+		
+	return {
+		"company_name": cstr(party.customer_name if party.doctype == "Customer" else party.company_name),
+		"mobile_no": cstr(mobile_no),
+		"phone": cstr(phone)
+	}
+	
+@frappe.whitelist()
+def update_user(fullname, password=None, company_name=None, mobile_no=None, phone=None):
+	from erpnext.shopping_cart.cart import update_party
+	update_party(fullname, company_name, mobile_no, phone)
+	
+	if not fullname:
+		return _("Name is required")
+		
+	frappe.db.set_value("User", frappe.session.user, "first_name", fullname)
+	frappe.local.cookie_manager.set_cookie("full_name", fullname)
+	
+	return _("Updated")
+	
\ No newline at end of file
diff --git a/erpnext/templates/utils.py b/erpnext/templates/utils.py
index 9892924..139e63a 100644
--- a/erpnext/templates/utils.py
+++ b/erpnext/templates/utils.py
@@ -2,7 +2,10 @@
 # License: GNU General Public License v3. See license.txt
 
 from __future__ import unicode_literals
-import frappe
+
+import frappe, json
+from frappe import _
+from frappe.utils import cint, formatdate
 
 @frappe.whitelist(allow_guest=True)
 def send_message(subject="Website Query", message="", sender="", status="Open"):
@@ -18,3 +21,47 @@
 		"sent_or_received": "Received"
 	})
 	comm.insert(ignore_permissions=True)
+
+def get_transaction_list(doctype, start, additional_fields=None):
+	# find customer id
+	customer = frappe.db.get_value("Contact", {"email_id": frappe.session.user},
+		"customer")
+
+	if customer:
+		if additional_fields:
+			additional_fields = ", " + ", ".join(("`%s`" % f for f in additional_fields))
+		else:
+			additional_fields = ""
+
+		transactions = frappe.db.sql("""select name, creation, currency, grand_total_export
+			%s
+			from `tab%s` where customer=%s and docstatus=1
+			order by creation desc
+			limit %s, 20""" % (additional_fields, doctype, "%s", "%s"),
+			(customer, cint(start)), as_dict=True)
+		for doc in transactions:
+			items = frappe.db.sql_list("""select item_name
+				from `tab%s Item` where parent=%s limit 6""" % (doctype, "%s"), doc.name)
+			doc.items = ", ".join(items[:5]) + ("..." if (len(items) > 5) else "")
+			doc.creation = formatdate(doc.creation)
+		return transactions
+	else:
+		return []
+
+def get_currency_context():
+	return {
+		"global_number_format": frappe.db.get_default("number_format") or "#,###.##",
+		"currency": frappe.db.get_default("currency"),
+		"currency_symbols": json.dumps(dict(frappe.db.sql("""select name, symbol
+			from tabCurrency where ifnull(enabled,0)=1""")))
+	}
+
+def get_transaction_context(doctype, name):
+	customer = frappe.db.get_value("Contact", {"email_id": frappe.session.user},
+		"customer")
+
+	doc = frappe.get_doc(doctype, name)
+	if doc.customer != customer:
+		return { "doc": frappe._dict({"name": _("Not Allowed")}) }
+	else:
+		return { "doc": doc }
diff --git a/erpnext/translations/ar.csv b/erpnext/translations/ar.csv
index 4e587db..aefb890 100644
--- a/erpnext/translations/ar.csv
+++ b/erpnext/translations/ar.csv
@@ -3329,3 +3329,49 @@
 {0} {1}: Cost Center is mandatory for Item {2},{0} {1}: مركز التكلفة إلزامي القطعة ل{2}
 {0}: {1} not found in Invoice Details table,{0}: {1} غير موجود في جدول تفاصيل الفاتورة
 ﻿ (Half Day),(نصف يوم)
+"<a href=""#Sales Browser/Customer Group"">Add / Edit</a>","<a href=""#Sales Browser/Customer Group""> إضافة / تحرير < / A>"
+"<a href=""#Sales Browser/Territory"">Add / Edit</a>","<a href=""#Sales Browser/Territory""> إضافة / تحرير < / A>"
+Billed,توصف
+Company,شركة
+Currency is required for Price List {0},مطلوب العملة ل قائمة الأسعار {0}
+Default Customer Group,المجموعة الافتراضية العملاء
+Default Territory,الافتراضي الإقليم
+Delivered,تسليم
+Enable Shopping Cart,تمكين سلة التسوق
+Go ahead and add something to your cart.,المضي قدما وإضافة شيء إلى عربة التسوق.
+Hey! Go ahead and add an address,احترس المضي قدما وإضافة عنوان
+Invalid Billing Address,عنوان الفواتير غير صالحة
+Invalid Shipping Address,العنوان شحن غير صالحة
+Missing Currency Exchange Rates for {0},أسعار صرف العملات في عداد المفقودين ل {0}
+Name is required,مطلوب اسم
+Not Allowed,غير مسموح
+Paid,مدفوع
+Partially Billed,وصفت جزئيا
+Partially Delivered,سلمت جزئيا
+Please specify a Price List which is valid for Territory,الرجاء تحديد قائمة الأسعار التي هي صالحة للأراضي
+Please specify currency in Company,يرجى تحديد العملة في شركة
+Please write something,يرجى كتابة شيء
+Please write something in subject and message!,يرجى كتابة شيء في الموضوع و رسالة !
+Price List,قائمة الأسعار
+Price List not configured.,قائمة السعر لم يتم تكوين.
+Quotation Series,سلسلة الاقتباس
+Shipping Rule,الشحن القاعدة
+Shopping Cart,سلة التسوق
+Shopping Cart Price List,عربة التسوق قائمة الأسعار
+Shopping Cart Price Lists,سلة التسوق قوائم الأسعار
+Shopping Cart Settings,إعدادات سلة التسوق
+Shopping Cart Shipping Rule,سلة التسوق الشحن القاعدة
+Shopping Cart Shipping Rules,سلة التسوق قواعد الشحن
+Shopping Cart Taxes and Charges Master,التسوق سلة الضرائب والرسوم ماجستير
+Shopping Cart Taxes and Charges Masters,التسوق سلة الضرائب والرسوم الماجستير
+Something went wrong!,ذهب شيئا خاطئا!
+Something went wrong.,ذهب شيئا خاطئا.
+Tax Master,ماستر الضرائب
+To Pay,على الدفع
+Updated,تحديث
+You are not allowed to reply to this ticket.,لا يسمح لك للرد على هذه التذكرة .
+You need to be logged in to view your cart.,تحتاج إلى تسجيل الدخول لمشاهدة عربة التسوق.
+You need to enable Shopping Cart,تحتاج إلى تمكين سلة التسوق
+{0} cannot be purchased using Shopping Cart,{0} لا يمكن شراؤها باستخدام عربة التسوق
+{0} is required,{0} مطلوب
+{0} {1} has a common territory {2},{0} {1} لديه أراضي مشتركة {2}
diff --git a/erpnext/translations/de.csv b/erpnext/translations/de.csv
index a1c0a56..ac797e1 100644
--- a/erpnext/translations/de.csv
+++ b/erpnext/translations/de.csv
@@ -3460,3 +3460,51 @@
 {0} {1} status is Unstopped,{0} {1} Status unstopped
 {0} {1}: Cost Center is mandatory for Item {2},{0} {1}: Kostenstelle ist obligatorisch für Artikel {2}
 {0}: {1} not found in Invoice Details table,{0}: {1} nicht in der Rechnungs Details-Tabelle gefunden
+"<a href=""#Sales Browser/Customer Group"">Add / Edit</a>","<a href=""#Sales Browser/Customer Group""> Hinzufügen / Bearbeiten </ a>"
+"<a href=""#Sales Browser/Territory"">Add / Edit</a>","<a href=""#Sales Browser/Territory""> Hinzufügen / Bearbeiten </ a>"
+Billed,Abgerechnet
+Company,Unternehmen
+Currency is required for Price List {0},Die Währung ist für Preisliste erforderlich {0}
+Default Customer Group,Standardkundengruppe
+Default Territory,Standardregion
+Default settings for Shopping Cart,Standardeinstellungen für Einkaufswagen
+Delivered,Geliefert
+Enable Shopping Cart,Einkaufswagen aktivieren
+Go ahead and add something to your cart.,Gehen Sie voran und fügen Sie etwas in Ihren Warenkorb.
+Hey! Go ahead and add an address,Hallo! Gehen Sie voran und fügen Sie eine Adresse
+Invalid Billing Address,Ungültige Rechnungsadresse
+Invalid Shipping Address,Falsche Lieferadresse
+Missing Currency Exchange Rates for {0},Fehlende Wechselkurse für {0}
+Name is required,Name ist erforderlich
+Not Allowed,Nicht erlaubt
+Paid,bezahlt
+Partially Billed,teilweise Angekündigt
+Partially Delivered,teilweise Lieferung
+Please specify a Price List which is valid for Territory,"Legen Sie eine Preisliste fest, die für die Region gültig ist"
+Please specify currency in Company,Geben Sie die Währung im Unternehmen an
+Please write something,Bitte schreiben Sie etwas
+Please write something in subject and message!,Bitte schreiben Sie etwas in Betreff und die Nachricht !
+Price List,Preisliste
+Price List not configured.,Preisliste nicht konfiguriert.
+Quotation Series,Angebotsserie
+Shipping Rule,Versandregel
+Shopping Cart,Einkaufswagen
+Shopping Cart Price List,Einkaufswagen Preisliste
+Shopping Cart Price Lists,Einkaufswagen Preislisten
+Shopping Cart Settings,Einkaufswageneinstellungen
+Shopping Cart Shipping Rule,Einkaufswagen-Versandregel
+Shopping Cart Shipping Rules,Einkaufswagen-Versandregeln
+Shopping Cart Taxes and Charges Master,Einkaufswagen-Steuern und Abgabenstamm
+Shopping Cart Taxes and Charges Masters,Einkaufswagen-Steuern und Abgabenstämme
+Something went wrong!,Etwas ist schiefgelaufen!
+Something went wrong.,Es gab ein Problem.
+Tax Master,Steuerstamm
+To Pay,To Pay
+Updated,Aktualisiert
+Website Manager,
+You are not allowed to reply to this ticket.,"Sie sind nicht berechtigt, auf diesem Ticket antworten ."
+You need to be logged in to view your cart.,"Sie müssen angemeldet sein, um Ihren Warenkorb zu sehen."
+You need to enable Shopping Cart,Sie benötigen den Einkaufswagen zu ermöglichen
+{0} cannot be purchased using Shopping Cart,{0} kann nicht mit Einkaufswagen erworben werden
+{0} is required,{0} ist erforderlich
+{0} {1} has a common territory {2},{0} {1} hat einen gemeinsamen Territorium {2}
diff --git a/erpnext/translations/el.csv b/erpnext/translations/el.csv
index 4e1e05f..7526120 100644
--- a/erpnext/translations/el.csv
+++ b/erpnext/translations/el.csv
@@ -3329,3 +3329,49 @@
 {0} {1} status is Unstopped,{0} {1} η κατάσταση είναι ανεμπόδιστη
 {0} {1}: Cost Center is mandatory for Item {2},{0} {1}: Κέντρο Κόστους είναι υποχρεωτική για τη θέση {2}
 {0}: {1} not found in Invoice Details table,{0}: {1} δεν βρέθηκε στον πίνακα Στοιχεία τιμολογίου
+"<a href=""#Sales Browser/Customer Group"">Add / Edit</a>","<a href=""#Sales Browser/Customer Group""> Προσθήκη / Επεξεργασία < / a>"
+"<a href=""#Sales Browser/Territory"">Add / Edit</a>","<a href=""#Sales Browser/Territory""> Προσθήκη / Επεξεργασία < / a>"
+Billed,Χρεώνεται
+Company,Εταιρεία
+Currency is required for Price List {0},Νόμισμα απαιτείται για Τιμοκατάλογος {0}
+Default Customer Group,Προεπιλογή Ομάδα πελατών
+Default Territory,Έδαφος Προεπιλογή
+Delivered,Δημοσιεύθηκε
+Enable Shopping Cart,Ενεργοποίηση Καλάθι Αγορών
+Go ahead and add something to your cart.,Προχωρήστε και να προσθέσω κάτι στο καλάθι σας.
+Hey! Go ahead and add an address,Γειά! Προχωρήστε και να προσθέσετε μια διεύθυνση
+Invalid Billing Address,Μη έγκυρη διεύθυνση χρέωσης
+Invalid Shipping Address,Μη έγκυρη διεύθυνση αποστολής
+Missing Currency Exchange Rates for {0},Λείπει Τιμές συναλλάγματος για {0}
+Name is required,Όνομα απαιτείται
+Not Allowed,δεν επιτρέπονται κατοικίδια
+Paid,Αμειβόμενος
+Partially Billed,μερικώς Billed
+Partially Delivered,μερικώς Δημοσιεύθηκε
+Please specify a Price List which is valid for Territory,Παρακαλείστε να προσδιορίσετε μια λίστα τιμών που ισχύει για Επικράτεια
+Please specify currency in Company,Παρακαλείστε να προσδιορίσετε το νόμισμα στην εταιρεία
+Please write something,Παρακαλώ γράψτε κάτι
+Please write something in subject and message!,Παρακαλώ γράψτε κάτι στο θέμα και το μήνυμα !
+Price List,Τιμοκατάλογος
+Price List not configured.,Τιμοκατάλογος δεν έχει ρυθμιστεί.
+Quotation Series,Σειρά Προσφοράς
+Shipping Rule,Αποστολές Κανόνας
+Shopping Cart,Καλάθι Αγορών
+Shopping Cart Price List,Shopping Τιμοκατάλογος Καλάθι
+Shopping Cart Price Lists,Τιμοκατάλογοι Καλάθι Αγορών
+Shopping Cart Settings,Ρυθμίσεις Καλάθι Αγορών
+Shopping Cart Shipping Rule,Καλάθι Αγορών αποστολή Κανόνας
+Shopping Cart Shipping Rules,Κανόνες Shipping Καλάθι Αγορών
+Shopping Cart Taxes and Charges Master,Φόροι Καλάθι και Χρεώσεις Δάσκαλος
+Shopping Cart Taxes and Charges Masters,Φόροι Καλάθι και Χρεώσεις Masters
+Something went wrong!,Κάτι πήγε στραβά!
+Something went wrong.,Κάτι πήγε στραβά.
+Tax Master,Δάσκαλος φόρου
+To Pay,να πληρώσει
+Updated,Ενημέρωση
+You are not allowed to reply to this ticket.,Δεν επιτρέπεται να απαντήσετε σε αυτό το εισιτήριο .
+You need to be logged in to view your cart.,Θα πρέπει να είστε συνδεδεμένοι για να δείτε το καλάθι σας.
+You need to enable Shopping Cart,Χρειάζεται να ενεργοποιήσετε Καλάθι Αγορών
+{0} cannot be purchased using Shopping Cart,{0} δεν μπορούν να αγοραστούν χρησιμοποιώντας Καλάθι Αγορών
+{0} is required,{0} απαιτείται
+{0} {1} has a common territory {2},{0} {1} έχει ένα κοινό έδαφος {2}
diff --git a/erpnext/translations/es.csv b/erpnext/translations/es.csv
index 0fe2847..1688562 100644
--- a/erpnext/translations/es.csv
+++ b/erpnext/translations/es.csv
@@ -3335,3 +3335,49 @@
 {0} {1} status is Unstopped,{0} {1} Estado es destapados
 {0} {1}: Cost Center is mandatory for Item {2},{0} {1}: Centro de Costo es obligatorio para el punto {2}
 {0}: {1} not found in Invoice Details table,{0}: {1} no se encuentra en la factura Detalles mesa
+"<a href=""#Sales Browser/Customer Group"">Add / Edit</a>","<a href=""#Sales Browser/Customer grupo""> Añadir / Editar < / a>"
+"<a href=""#Sales Browser/Territory"">Add / Edit</a>","<a href=""#Sales Browser/Territory""> Añadir / Editar < / a>"
+Billed,Anunciado
+Company,Empresa
+Currency is required for Price List {0},Se requiere de divisas para el precio de lista {0}
+Default Customer Group,Grupo predeterminado Cliente
+Default Territory,Territorio predeterminado
+Delivered,liberado
+Enable Shopping Cart,Habilitar Compras
+Go ahead and add something to your cart.,Seguir adelante y añadir algo a su carrito.
+Hey! Go ahead and add an address,¡Hey! Seguir adelante y añadir una dirección
+Invalid Billing Address,No válida dirección de facturación
+Invalid Shipping Address,Dirección no válida de envío
+Missing Currency Exchange Rates for {0},Missing Tipo de Cambio para {0}
+Name is required,El nombre es necesario
+Not Allowed,No se permite
+Paid,pagado
+Partially Billed,Parcialmente Anunciado
+Partially Delivered,Parcialmente Entregado
+Please specify a Price List which is valid for Territory,"Por favor, especifique una lista de precios que es válido para el territorio"
+Please specify currency in Company,"Por favor, especifique la moneda en la empresa"
+Please write something,"Por favor, escribir algo"
+Please write something in subject and message!,"Por favor, escriba algo en asunto y el mensaje !"
+Price List,Lista de Precios
+Price List not configured.,Lista de precios no está configurado.
+Quotation Series,Serie Cotización
+Shipping Rule,Regla de envío
+Shopping Cart,Cesta de la compra
+Shopping Cart Price List,Cesta de la compra Precio de lista
+Shopping Cart Price Lists,Compras Listas de precios
+Shopping Cart Settings,Compras Ajustes
+Shopping Cart Shipping Rule,Compras Regla de envío
+Shopping Cart Shipping Rules,Compras Reglas de Envío
+Shopping Cart Taxes and Charges Master,Compras Impuestos y Cargos Maestro
+Shopping Cart Taxes and Charges Masters,Carrito impuestos y las cargas Masters
+Something went wrong!,¡Algo salió mal!
+Something went wrong.,Algo salió mal.
+Tax Master,Maestro de Impuestos
+To Pay,Pagar
+Updated,actualizado
+You are not allowed to reply to this ticket.,No se le permite responder a este boleto.
+You need to be logged in to view your cart.,Tienes que estar registrado para ver su carrito.
+You need to enable Shopping Cart,Necesita habilitar Compras
+{0} cannot be purchased using Shopping Cart,{0} no puede ser comprado usando Compras
+{0} is required,{0} es necesario
+{0} {1} has a common territory {2},{0} {1} tiene un territorio común {2}
diff --git a/erpnext/translations/fr.csv b/erpnext/translations/fr.csv
index 2d3af17..34cdafa 100644
--- a/erpnext/translations/fr.csv
+++ b/erpnext/translations/fr.csv
@@ -3330,3 +3330,49 @@
 {0} {1} status is Unstopped,Vous ne pouvez pas reporter le numéro de rangée supérieure ou égale à numéro de la ligne actuelle pour ce type de charge
 {0} {1}: Cost Center is mandatory for Item {2},{0} {1}: Centre de coûts est obligatoire pour objet {2}
 {0}: {1} not found in Invoice Details table,{0}: {1} ne trouve pas dans la table Détails de la facture
+"<a href=""#Sales Browser/Customer Group"">Add / Edit</a>","<a href=""#Sales Browser/Customer Group""> Ajouter / Modifier < / a>"
+"<a href=""#Sales Browser/Territory"">Add / Edit</a>","<a href=""#Sales Browser/Territory""> Ajouter / Modifier < / a>"
+Billed,Facturé
+Company,Entreprise
+Currency is required for Price List {0},{0} est obligatoire
+Default Customer Group,Groupe de clients par défaut
+Default Territory,Territoire défaut
+Delivered,Livré
+Enable Shopping Cart,Activer Panier
+Go ahead and add something to your cart.,Allez-y et ajouter quelque chose à votre panier.
+Hey! Go ahead and add an address,Hé ! Allez-y et ajoutez une adresse
+Invalid Billing Address,"Pour exécuter un test ajouter le nom du module dans la route après '{0}' . Par exemple, {1}"
+Invalid Shipping Address,effondrement
+Missing Currency Exchange Rates for {0},Vider le cache
+Name is required,Le nom est obligatoire
+Not Allowed,"Groupe ajoutée, rafraîchissant ..."
+Paid,payé
+Partially Billed,partiellement Facturé
+Partially Delivered,Livré partiellement
+Please specify a Price List which is valid for Territory,S&#39;il vous plaît spécifier une liste de prix qui est valable pour le territoire
+Please specify currency in Company,S&#39;il vous plaît préciser la devise dans la société
+Please write something,S'il vous plaît écrire quelque chose
+Please write something in subject and message!,S'il vous plaît écrire quelque chose dans le thème et le message !
+Price List,Liste des Prix
+Price List not configured.,Liste des prix non configuré.
+Quotation Series,Série de devis
+Shipping Rule,Livraison règle
+Shopping Cart,Panier
+Shopping Cart Price List,Panier Liste des prix
+Shopping Cart Price Lists,Panier Liste des prix
+Shopping Cart Settings,Panier Paramètres
+Shopping Cart Shipping Rule,Panier Livraison règle
+Shopping Cart Shipping Rules,Panier Règles d&#39;expédition
+Shopping Cart Taxes and Charges Master,Panier taxes et redevances Maître
+Shopping Cart Taxes and Charges Masters,Panier Taxes et frais de maîtrise
+Something went wrong!,Quelque chose s'est mal passé!
+Something went wrong.,Une erreur est survenue.
+Tax Master,Maître d&#39;impôt
+To Pay,à payer
+Updated,Mise à jour
+You are not allowed to reply to this ticket.,Vous n'êtes pas autorisé à répondre à ce billet .
+You need to be logged in to view your cart.,Vous devez être connecté pour voir votre panier.
+You need to enable Shopping Cart,Poster n'existe pas . S'il vous plaît ajoutez poste !
+{0} cannot be purchased using Shopping Cart,Envoyer permanence {0} ?
+{0} is required,{0} ne peut pas être acheté en utilisant Panier
+{0} {1} has a common territory {2},Alternative lien de téléchargement
diff --git a/erpnext/translations/hi.csv b/erpnext/translations/hi.csv
index e109249..b9b64fe 100644
--- a/erpnext/translations/hi.csv
+++ b/erpnext/translations/hi.csv
@@ -3329,3 +3329,49 @@
 {0} {1} status is Unstopped,{0} {1} स्थिति unstopped है
 {0} {1}: Cost Center is mandatory for Item {2},{0} {1}: लागत केंद्र मद के लिए अनिवार्य है {2}
 {0}: {1} not found in Invoice Details table,{0} {1} चालान विवरण तालिका में नहीं मिला
+"<a href=""#Sales Browser/Customer Group"">Add / Edit</a>","<a href=""#Sales Browser/Customer Group""> जोड़ें / संपादित करें </ a >"
+"<a href=""#Sales Browser/Territory"">Add / Edit</a>","<a href=""#Sales Browser/Territory""> जोड़ें / संपादित करें </ a >"
+Billed,का बिल
+Company,कंपनी
+Currency is required for Price List {0},मुद्रा मूल्य सूची के लिए आवश्यक है {0}
+Default Customer Group,डिफ़ॉल्ट ग्राहक समूह
+Default Territory,Default टेरिटरी
+Delivered,दिया गया
+Enable Shopping Cart,शॉपिंग कार्ट सक्षम करें
+Go ahead and add something to your cart.,आगे बढ़ो और अपनी गाड़ी को कुछ जोड़ सकते.
+Hey! Go ahead and add an address,अरे! आगे बढ़ो और एक पते जोड़
+Invalid Billing Address,अवैध बिलिंग पता
+Invalid Shipping Address,अवैध शिपिंग पता
+Missing Currency Exchange Rates for {0},के लिए मुद्रा विनिमय दरें गुम {0}
+Name is required,नाम आवश्यक है
+Not Allowed,अनुमति नहीं
+Paid,प्रदत्त
+Partially Billed,आंशिक रूप से बिल
+Partially Delivered,आंशिक रूप से वितरित
+Please specify a Price List which is valid for Territory,राज्य क्षेत्र के लिए मान्य है जो एक मूल्य सूची निर्दिष्ट करें
+Please specify currency in Company,कंपनी में मुद्रा निर्दिष्ट करें
+Please write something,कुछ लिखें
+Please write something in subject and message!,विषय और संदेश में कुछ लिखने के लिए धन्यवाद !
+Price List,कीमत सूची
+Price List not configured.,मूल्य सूची कॉन्फ़िगर नहीं.
+Quotation Series,कोटेशन सीरीज
+Shipping Rule,नौवहन नियम
+Shopping Cart,खरीदारी की टोकरी
+Shopping Cart Price List,शॉपिंग कार्ट में मूल्य सूची
+Shopping Cart Price Lists,शॉपिंग कार्ट में मूल्य सूची
+Shopping Cart Settings,शॉपिंग कार्ट सेटिंग्स
+Shopping Cart Shipping Rule,शॉपिंग कार्ट शिपिंग नियम
+Shopping Cart Shipping Rules,शॉपिंग कार्ट शिपिंग नियम
+Shopping Cart Taxes and Charges Master,शॉपिंग कार्ट में करों और शुल्कों मास्टर
+Shopping Cart Taxes and Charges Masters,शॉपिंग कार्ट में करों और शुल्कों मास्टर्स
+Something went wrong!,कुछ गलत हो गया!
+Something went wrong.,कुछ गलत हो गया.
+Tax Master,टैक्स मास्टर
+To Pay,भुगतान करने के लिए
+Updated,अद्यतित
+You are not allowed to reply to this ticket.,आप इस टिकट का उत्तर देने की अनुमति नहीं है .
+You need to be logged in to view your cart.,आप अपनी गाड़ी को देखने के लिए लॉग इन करना होगा.
+You need to enable Shopping Cart,आप शॉपिंग कार्ट में सक्रिय करने की जरूरत
+{0} cannot be purchased using Shopping Cart,{0} शॉपिंग कार्ट का उपयोग कर खरीदा नहीं जा सकता
+{0} is required,{0} के लिए आवश्यक है
+{0} {1} has a common territory {2},{0} {1} एक सामान्य क्षेत्र है {2}
diff --git a/erpnext/translations/hr.csv b/erpnext/translations/hr.csv
index 4f5c050..70a8a90 100644
--- a/erpnext/translations/hr.csv
+++ b/erpnext/translations/hr.csv
@@ -3329,3 +3329,49 @@
 {0} {1} status is Unstopped,{0} {1} status Unstopped
 {0} {1}: Cost Center is mandatory for Item {2},{0} {1}: troška je obvezno za točku {2}
 {0}: {1} not found in Invoice Details table,{0}: {1} nije pronađen u Pojedinosti dostavnice stolu
+"<a href=""#Sales Browser/Customer Group"">Add / Edit</a>","<a href=""#Sales Browser/Customer Group""> Dodaj / Uredi < />"
+"<a href=""#Sales Browser/Territory"">Add / Edit</a>","<a href=""#Sales Browser/Territory""> Dodaj / Uredi < />"
+Billed,Naplaćeno
+Company,Društvo
+Currency is required for Price List {0},Valuta je potrebno za Cjenika {0}
+Default Customer Group,Zadani Korisnik Grupa
+Default Territory,Zadani Regija
+Delivered,Isporučena
+Enable Shopping Cart,Omogućite Košarica
+Go ahead and add something to your cart.,Ići naprijed i dodati nešto u košaricu.
+Hey! Go ahead and add an address,Hej! Ići naprijed i dodati adresu
+Invalid Billing Address,Pogrešna adresa naplate
+Invalid Shipping Address,Invalid Dostava Adresa
+Missing Currency Exchange Rates for {0},Nedostaje Tečajne stope za {0}
+Name is required,Ime je potrebno
+Not Allowed,Not Allowed
+Paid,plaćen
+Partially Billed,djelomično Naplaćeno
+Partially Delivered,djelomično Isporučeno
+Please specify a Price List which is valid for Territory,Navedite cjenik koji vrijedi za teritoriju
+Please specify currency in Company,Navedite valutu u Društvu
+Please write something,Molimo napisati nešto
+Please write something in subject and message!,Molimo napisati nešto u temi i poruke !
+Price List,Cjenik
+Price List not configured.,Popis Cijena nije konfiguriran.
+Quotation Series,Ponuda Serija
+Shipping Rule,Dostava Pravilo
+Shopping Cart,Košarica
+Shopping Cart Price List,Košarica Cjenik
+Shopping Cart Price Lists,Košarica cjenike
+Shopping Cart Settings,Košarica Postavke
+Shopping Cart Shipping Rule,Košarica Dostava Pravilo
+Shopping Cart Shipping Rules,Košarica Dostava Pravila
+Shopping Cart Taxes and Charges Master,Košarica poreze i troškove Master
+Shopping Cart Taxes and Charges Masters,Košarica Porezi i naknade Masters
+Something went wrong!,Nešto je pošlo po krivu!
+Something went wrong.,Nešto je pošlo po zlu.
+Tax Master,Porezna Master
+To Pay,platiti
+Updated,Obnovljeno
+You are not allowed to reply to this ticket.,Vi ne smijete odgovoriti na ovu kartu.
+You need to be logged in to view your cart.,Morate biti prijavljeni da biste vidjeli svoju košaricu.
+You need to enable Shopping Cart,Morate omogućiti Košarica
+{0} cannot be purchased using Shopping Cart,{0} ne može se kupiti pomoću Košarica
+{0} is required,{0} je potrebno
+{0} {1} has a common territory {2},{0} {1} ima zajednički teritorij {2}
diff --git a/erpnext/translations/id.csv b/erpnext/translations/id.csv
index dfd93cf..025baa0 100644
--- a/erpnext/translations/id.csv
+++ b/erpnext/translations/id.csv
@@ -3329,3 +3329,49 @@
 {0} {1} status is Unstopped,{0} {1} status unstopped
 {0} {1}: Cost Center is mandatory for Item {2},{0} {1}: Biaya Pusat adalah wajib untuk Item {2}
 {0}: {1} not found in Invoice Details table,{0}: {1} tidak ditemukan dalam Faktur Rincian table
+"<a href=""#Sales Browser/Customer Group"">Add / Edit</a>","<a href=""#Sales Browser/Customer Group""> Add / Edit </ a>"
+"<a href=""#Sales Browser/Territory"">Add / Edit</a>","<a href=""#Sales Browser/Territory""> Tambah / Edit </ a>"
+Billed,Ditagih
+Company,Perusahaan
+Currency is required for Price List {0},Mata Uang diperlukan untuk Daftar Harga {0}
+Default Customer Group,Bawaan Pelanggan Grup
+Default Territory,Wilayah standar
+Delivered,Disampaikan
+Enable Shopping Cart,Aktifkan Keranjang Belanja
+Go ahead and add something to your cart.,Pergi ke depan dan menambahkan sesuatu ke keranjang Anda.
+Hey! Go ahead and add an address,Hei! Pergi ke depan dan menambahkan alamat
+Invalid Billing Address,Alamat Penagihan valid
+Invalid Shipping Address,Alamat Pengiriman valid
+Missing Currency Exchange Rates for {0},Hilang Kurs mata uang Tarif untuk {0}
+Name is required,Nama dibutuhkan
+Not Allowed,Tidak Diizinkan
+Paid,Terbayar
+Partially Billed,Sebagian Ditagih
+Partially Delivered,Sebagian Disampaikan
+Please specify a Price List which is valid for Territory,Tentukan Daftar Harga yang berlaku untuk Wilayah
+Please specify currency in Company,Silakan tentukan mata uang di Perusahaan
+Please write something,Silahkan menulis sesuatu
+Please write something in subject and message!,Silahkan menulis sesuatu dalam subjek dan pesan!
+Price List,Daftar Harga
+Price List not configured.,Daftar Harga belum dikonfigurasi.
+Quotation Series,Quotation Series
+Shipping Rule,Aturan Pengiriman
+Shopping Cart,Daftar Belanja
+Shopping Cart Price List,Daftar Belanja Daftar Harga
+Shopping Cart Price Lists,Daftar Harga Daftar Belanja
+Shopping Cart Settings,Pengaturan Keranjang Belanja
+Shopping Cart Shipping Rule,Belanja Pengiriman Rule
+Shopping Cart Shipping Rules,Daftar Belanja Pengiriman Aturan
+Shopping Cart Taxes and Charges Master,Pajak Keranjang Belanja dan Biaya Guru
+Shopping Cart Taxes and Charges Masters,Daftar Belanja Pajak dan Biaya Masters
+Something went wrong!,Ada yang tidak beres!
+Something went wrong.,Ada Sesuatu yang tidak beres.
+Tax Master,Guru Pajak
+To Pay,Untuk Bayar
+Updated,Diperbarui
+You are not allowed to reply to this ticket.,Anda tidak diizinkan untuk membalas tiket ini.
+You need to be logged in to view your cart.,Anda harus login untuk melihat keranjang Anda.
+You need to enable Shopping Cart,Anda harus mengaktifkan Keranjang Belanja
+{0} cannot be purchased using Shopping Cart,{0} tidak dapat dibeli dengan menggunakan Keranjang Belanja
+{0} is required,{0} diperlukan
+{0} {1} has a common territory {2},{0} {1} memiliki wilayah umum {2}
diff --git a/erpnext/translations/it.csv b/erpnext/translations/it.csv
index 6ca5f99..f59fdd6 100644
--- a/erpnext/translations/it.csv
+++ b/erpnext/translations/it.csv
@@ -3329,3 +3329,49 @@
 {0} {1} status is Unstopped,{0} {1} stato è unstopped
 {0} {1}: Cost Center is mandatory for Item {2},{0} {1}: centro di costo è obbligatoria per la voce {2}
 {0}: {1} not found in Invoice Details table,{0}: {1} non trovato in fattura tabella Dettagli
+"<a href=""#Sales Browser/Customer Group"">Add / Edit</a>","<a href=""#Sales Browser/Customer Group""> Aggiungi / Modifica < / a>"
+"<a href=""#Sales Browser/Territory"">Add / Edit</a>","<a href=""#Sales Browser/Territory""> Aggiungi / Modifica < / a>"
+Billed,Addebbitato
+Company,Azienda
+Currency is required for Price List {0},È richiesto di valuta per il listino prezzi {0}
+Default Customer Group,Gruppo Clienti Predefinito
+Default Territory,Territorio Predefinito
+Delivered,Consegnato
+Enable Shopping Cart,Abilita Carello Acquisti
+Go ahead and add something to your cart.,Vai avanti e aggiungere qualcosa al tuo carrello.
+Hey! Go ahead and add an address,Ehi! Vai avanti e aggiungere un indirizzo
+Invalid Billing Address,Valido indirizzo di fatturazione
+Invalid Shipping Address,Valido Indirizzo di spedizione
+Missing Currency Exchange Rates for {0},Manca valuta Tassi di cambio {0}
+Name is required,Il nome è obbligatorio
+Not Allowed,non sono ammessi
+Paid,pagato
+Partially Billed,parzialmente Fatturato
+Partially Delivered,parzialmente Consegnato
+Please specify a Price List which is valid for Territory,Si prega di specificare una lista di prezzi è valido per il Territorio
+Please specify currency in Company,Si prega di specificare la valuta in Azienda
+Please write something,Si prega di scrivere qualcosa
+Please write something in subject and message!,Si prega di scrivere qualcosa in oggetto e il messaggio !
+Price List,Listino Prezzi
+Price List not configured.,Prezzo di listino non è configurato.
+Quotation Series,Serie Quotazione
+Shipping Rule,Spedizione Rule
+Shopping Cart,Carrello spesa
+Shopping Cart Price List,Carrello Prezzo di listino
+Shopping Cart Price Lists,Carrello Listini
+Shopping Cart Settings,Carrello Impostazioni
+Shopping Cart Shipping Rule,Carrello Spedizioni Rule
+Shopping Cart Shipping Rules,Carrello Regole di Spedizione
+Shopping Cart Taxes and Charges Master,Carrello Tasse e Spese master
+Shopping Cart Taxes and Charges Masters,Carrello Tasse e Costi Masters
+Something went wrong!,Qualcosa è andato storto!
+Something went wrong.,Qualcosa è andato storto.
+Tax Master,Tax Maestro
+To Pay,To Pay
+Updated,Aggiornato
+You are not allowed to reply to this ticket.,Non sei autorizzato a rispondere a questo biglietto .
+You need to be logged in to view your cart.,Devi essere loggato per vedere il tuo carrello.
+You need to enable Shopping Cart,È necessario abilitare Carrello
+{0} cannot be purchased using Shopping Cart,{0} non può essere acquistato tramite Carrello
+{0} is required,{0} è richiesto
+{0} {1} has a common territory {2},{0} {1} ha un territorio comune {2}
diff --git a/erpnext/translations/ja.csv b/erpnext/translations/ja.csv
index c779aa6..e755a4a 100644
--- a/erpnext/translations/ja.csv
+++ b/erpnext/translations/ja.csv
@@ -3335,3 +3335,49 @@
 {0} {1} status is Unstopped,{0} {1}ステータスが塞がです
 {0} {1}: Cost Center is mandatory for Item {2},{0} {1}：コストセンターではアイテムのために必須である{2}
 {0}: {1} not found in Invoice Details table,{0}：{1}請求書詳細テーブルにない
+"<a href=""#Sales Browser/Customer Group"">Add / Edit</a>","もし、ごhref=""#Sales Browser/Customer Group"">追加/編集</ A>"
+"<a href=""#Sales Browser/Territory"">Add / Edit</a>","もし、ごhref=""#Sales Browser/Territory"">追加/編集</ A>"
+Billed,課金
+Company,会社
+Currency is required for Price List {0},通貨は価格表{0}に必要です
+Default Customer Group,デフォルトの顧客グループ
+Default Territory,デフォルトの地域
+Delivered,配送
+Enable Shopping Cart,ショッピングカートを使用可能に
+Go ahead and add something to your cart.,先に行くと、ショッピングカートに何かを追加。
+Hey! Go ahead and add an address,ハイ！先に行くとアドレスを追加
+Invalid Billing Address,無効な請求先住所
+Invalid Shipping Address,無効な配送先住所
+Missing Currency Exchange Rates for {0},{0}のために為替レートが不足して
+Name is required,名前が必要です
+Not Allowed,許可されていない
+Paid,料金
+Partially Billed,部分的に銘打た
+Partially Delivered,部分的に配信
+Please specify a Price List which is valid for Territory,地域で有効な価格表を指定してください
+Please specify currency in Company,会社で通貨を指定してください
+Please write something,何かを書いてください
+Please write something in subject and message!,件名とメッセージで何かを書いてください！
+Price List,価格リスト
+Price List not configured.,価格表が構成されていません。
+Quotation Series,引用シリーズ
+Shipping Rule,出荷ルール
+Shopping Cart,カート
+Shopping Cart Price List,ショッピングカート価格表
+Shopping Cart Price Lists,ショッピングカート価格表
+Shopping Cart Settings,ショッピングカートの設定
+Shopping Cart Shipping Rule,ショッピングカート配送ルール
+Shopping Cart Shipping Rules,ショッピングカート配送ルール
+Shopping Cart Taxes and Charges Master,ショッピングカートの税金、料金マスター
+Shopping Cart Taxes and Charges Masters,ショッピングカートの税金、料金のマスターズ
+Something went wrong!,何かが間違っていた！
+Something went wrong.,エラーが発生しました。
+Tax Master,税金のマスター
+To Pay,支払わなければ
+Updated,更新日
+You are not allowed to reply to this ticket.,あなたは、このチケットに返信することはできません。
+You need to be logged in to view your cart.,あなたは買い物カゴを見るためにログインする必要があります。
+You need to enable Shopping Cart,あなたはショッピングカートを有効にする必要があります
+{0} cannot be purchased using Shopping Cart,{0}ショッピングカートを使用して購入することはできません
+{0} is required,{0}が必要である
+{0} {1} has a common territory {2},{0} {1}は、共通の領土を持っている{2}
diff --git a/erpnext/translations/kn.csv b/erpnext/translations/kn.csv
index 8dae972..f01e48a 100644
--- a/erpnext/translations/kn.csv
+++ b/erpnext/translations/kn.csv
@@ -3329,3 +3329,49 @@
 {0} {1} status is Unstopped,{0} {1} ಸ್ಥಿತಿಯನ್ನು unstopped ಆಗಿದೆ
 {0} {1}: Cost Center is mandatory for Item {2},{0} {1}: ವೆಚ್ಚ ಸೆಂಟರ್ ಐಟಂ ಕಡ್ಡಾಯ {2}
 {0}: {1} not found in Invoice Details table,{0}: {1} ಸರಕುಪಟ್ಟಿ ವಿವರಗಳು ಟೇಬಲ್ ಕಂಡುಬಂದಿಲ್ಲ
+"<a href=""#Sales Browser/Customer Group"">Add / Edit</a>","ಕವಿದ href=""#Sales Browser/Customer Group""> ಸೇರಿಸಿ / ಸಂಪಾದಿಸಿ </ ಒಂದು >"
+"<a href=""#Sales Browser/Territory"">Add / Edit</a>","ಕವಿದ href=""#Sales Browser/Territory""> ಸೇರಿಸಿ / ಸಂಪಾದಿಸಿ </ ಒಂದು >"
+Billed,ಖ್ಯಾತವಾದ
+Company,ಕಂಪನಿ
+Currency is required for Price List {0},ಕರೆನ್ಸಿ ಬೆಲೆ ಪಟ್ಟಿ ಅಗತ್ಯವಿದೆ {0}
+Default Customer Group,ಡೀಫಾಲ್ಟ್ ಗ್ರಾಹಕ ಗುಂಪಿನ
+Default Territory,ಡೀಫಾಲ್ಟ್ ಪ್ರದೇಶ
+Delivered,ತಲುಪಿಸಲಾಗಿದೆ
+Enable Shopping Cart,ಶಾಪಿಂಗ್ ಕಾರ್ಟ್ ಸಕ್ರಿಯಗೊಳಿಸಿ
+Go ahead and add something to your cart.,ಮುಂದೆ ಹೋಗಿ ಮತ್ತು ನಿಮ್ಮ ಕಾರ್ಟ್ ಏನಾದರೂ ಸೇರಿಸಿ.
+Hey! Go ahead and add an address,ಹೇ! ಮುಂದೆ ಹೋಗಿ ಒಂದು ಸೇರಿಸಿ
+Invalid Billing Address,ಅಮಾನ್ಯವಾದ ಬಿಲ್ಲಿಂಗ್ ವಿಳಾಸ
+Invalid Shipping Address,ಅಮಾನ್ಯವಾದ ಶಿಪ್ಪಿಂಗ್ ವಿಳಾಸ
+Missing Currency Exchange Rates for {0},ಕರೆನ್ಸಿ ವಿನಿಮಯ ದರಗಳು ಮಿಸ್ಸಿಂಗ್ {0}
+Name is required,ಹೆಸರು ಅಗತ್ಯವಿದೆ
+Not Allowed,ಅನುಮತಿಸಲಾಗುವುದಿಲ್ಲ
+Paid,ಪಾವತಿಸಿದ
+Partially Billed,ಭಾಗಶಃ ಖ್ಯಾತವಾದ
+Partially Delivered,ಭಾಗಶಃ ತಲುಪಿಸಲಾಗಿದೆ
+Please specify a Price List which is valid for Territory,ಪ್ರದೇಶ ಮಾನ್ಯ ಬೆಲೆ ಪಟ್ಟಿ ಸೂಚಿಸಲು ದಯವಿಟ್ಟು
+Please specify currency in Company,ಕಂಪನಿ ಕರೆನ್ಸಿ ಸೂಚಿಸಲು ದಯವಿಟ್ಟು
+Please write something,ಏನೋ ಬರೆಯಲು ಮಾಡಿ
+Please write something in subject and message!,ವಿಷಯ ಮತ್ತು ಸಂದೇಶದ ಏನೋ ಬರೆಯಲು ಮಾಡಿ !
+Price List,ಬೆಲೆ ಪಟ್ಟಿ
+Price List not configured.,ಬೆಲೆ ಪಟ್ಟಿ ಕಾನ್ಫಿಗರ್.
+Quotation Series,ನುಡಿಮುತ್ತುಗಳು ಸರಣಿ
+Shipping Rule,ಶಿಪ್ಪಿಂಗ್ ರೂಲ್
+Shopping Cart,ಶಾಪಿಂಗ್ ಕಾರ್ಟ್
+Shopping Cart Price List,ಶಾಪಿಂಗ್ ಕಾರ್ಟ್ ಬೆಲೆ ಪಟ್ಟಿ
+Shopping Cart Price Lists,ಶಾಪಿಂಗ್ ಕಾರ್ಟ್ ಬೆಲೆ ಪಟ್ಟಿ
+Shopping Cart Settings,ಶಾಪಿಂಗ್ ಕಾರ್ಟ್ ಸೆಟ್ಟಿಂಗ್ಗಳು
+Shopping Cart Shipping Rule,ಶಾಪಿಂಗ್ ಕಾರ್ಟ್ ಶಿಪ್ಪಿಂಗ್ ರೂಲ್
+Shopping Cart Shipping Rules,ಶಾಪಿಂಗ್ ಕಾರ್ಟ್ ಶಿಪ್ಪಿಂಗ್ ನಿಯಮಗಳು
+Shopping Cart Taxes and Charges Master,ಶಾಪಿಂಗ್ ಕಾರ್ಟ್ ತೆರಿಗೆಗಳು ಮತ್ತು ಶುಲ್ಕಗಳು ಮಾಸ್ಟರ್
+Shopping Cart Taxes and Charges Masters,ಶಾಪಿಂಗ್ ಕಾರ್ಟ್ ತೆರಿಗೆಗಳು ಮತ್ತು ಶುಲ್ಕಗಳು ಮಾಸ್ಟರ್ಸ್
+Something went wrong!,ಏನೋ ತಪ್ಪಾಗಿದೆ!
+Something went wrong.,ಯಾವುದೋ ತಪ್ಪು ಸಂಭವಿಸಿದೆ.
+Tax Master,ತೆರಿಗೆ ಮಾಸ್ಟರ್
+To Pay,ಪಾವತಿಸಲು
+Updated,ನವೀಕರಿಸಲಾಗಿದೆ
+You are not allowed to reply to this ticket.,ಈ ಟಿಕೆಟ್ ಪ್ರತ್ಯುತ್ತರ ಅನುಮತಿಸಲಾಗುವುದಿಲ್ಲ.
+You need to be logged in to view your cart.,ನಿಮ್ಮ ಕಾರ್ಟ್ ಲಾಗಿನ್ ಅಗತ್ಯವಿದೆ.
+You need to enable Shopping Cart,ನೀವು ಶಾಪಿಂಗ್ ಕಾರ್ಟ್ ಸಕ್ರಿಯಗೊಳಿಸಬೇಕು
+{0} cannot be purchased using Shopping Cart,{0} ಶಾಪಿಂಗ್ ಕಾರ್ಟ್ ಬಳಸಿ ಕೊಳ್ಳಬಹುದು ಸಾಧ್ಯವಿಲ್ಲ
+{0} is required,{0} ಅಗತ್ಯವಿದೆ
+{0} {1} has a common territory {2},{0} {1} ಸಾಮಾನ್ಯ ಪ್ರದೇಶವನ್ನು ಹೊಂದಿದೆ {2}
diff --git a/erpnext/translations/ko.csv b/erpnext/translations/ko.csv
index 34e7a44..4a7ea61 100644
--- a/erpnext/translations/ko.csv
+++ b/erpnext/translations/ko.csv
@@ -3329,3 +3329,49 @@
 {0} {1} status is Unstopped,{0} {1} 상태 Unstopped입니다
 {0} {1}: Cost Center is mandatory for Item {2},{0} {1} : 코스트 센터는 항목에 대해 필수입니다 {2}
 {0}: {1} not found in Invoice Details table,{0} {1} 송장 정보 테이블에서 찾을 수 없습니다
+"<a href=""#Sales Browser/Customer Group"">Add / Edit</a>","만약 당신이 좋아 href=""#Sales Browser/Customer Group""> 추가 / 편집 </ A>"
+"<a href=""#Sales Browser/Territory"">Add / Edit</a>","만약 당신이 좋아 href=""#Sales Browser/Territory""> 추가 / 편집 </ A>"
+Billed,청구
+Company,회사
+Currency is required for Price List {0},환율은 가격 목록에 필요한 {0}
+Default Customer Group,기본 고객 그룹
+Default Territory,기본 지역
+Delivered,배달
+Enable Shopping Cart,쇼핑 카트를 사용
+Go ahead and add something to your cart.,가서 당신의 손수레로 뭔가를 추가 할 수 있습니다.
+Hey! Go ahead and add an address,야!가서 주소를 추가
+Invalid Billing Address,잘못된 청구 주소
+Invalid Shipping Address,잘못된 배송 주소
+Missing Currency Exchange Rates for {0},를 위해 환율 누락 {0}
+Name is required,이름이 필요합니다
+Not Allowed,허용하지 않음
+Paid,유료
+Partially Billed,일부 청구
+Partially Delivered,부분적으로 배달
+Please specify a Price List which is valid for Territory,지역에 유효한 가격 목록을 지정하십시오
+Please specify currency in Company,회사에 통화를 지정하십시오
+Please write something,뭔가를 작성 해주세요
+Please write something in subject and message!,제목과 메시지에 무언가를 써주세요!
+Price List,가격리스트
+Price List not configured.,가격 목록이 구성되어 있지.
+Quotation Series,견적 시리즈
+Shipping Rule,배송 규칙
+Shopping Cart,쇼핑 카트
+Shopping Cart Price List,쇼핑 카트의 가격 목록
+Shopping Cart Price Lists,쇼핑 카트의 가격 목록
+Shopping Cart Settings,쇼핑 카트 설정
+Shopping Cart Shipping Rule,장바구니 배송 규칙
+Shopping Cart Shipping Rules,장바구니 배송 규칙
+Shopping Cart Taxes and Charges Master,쇼핑 카트 세금과 요금 마스터
+Shopping Cart Taxes and Charges Masters,쇼핑 카트 세금과 요금의 석사
+Something went wrong!,문제가 발생했습니다!
+Something went wrong.,문제가 발생했습니다.
+Tax Master,세금 마스터
+To Pay,지불하는
+Updated,업데이트
+You are not allowed to reply to this ticket.,당신이 티켓에 회신 할 수 없습니다.
+You need to be logged in to view your cart.,당신은 당신의 카트를 보려면 로그인해야합니다.
+You need to enable Shopping Cart,당신은 쇼핑 카트를 활성화해야
+{0} cannot be purchased using Shopping Cart,{0} 쇼핑 카트를 사용하여 구입 할 수 없습니다
+{0} is required,{0}이 필요합니다
+{0} {1} has a common territory {2},{0} {1} 공통의 영토가 {2}
diff --git a/erpnext/translations/nl.csv b/erpnext/translations/nl.csv
index f8bc987..94cab1d 100644
--- a/erpnext/translations/nl.csv
+++ b/erpnext/translations/nl.csv
@@ -3329,3 +3329,49 @@
 {0} {1} status is Unstopped,{0} {1} status ontsloten
 {0} {1}: Cost Center is mandatory for Item {2},{0} {1}: kostenplaats is verplicht voor Item {2}
 {0}: {1} not found in Invoice Details table,{0}: {1} niet gevonden in Factuur Details tabel
+"<a href=""#Sales Browser/Customer Group"">Add / Edit</a>","<a href=""#Sales Browser/Customer Group""> toevoegen / bewerken < / a>"
+"<a href=""#Sales Browser/Territory"">Add / Edit</a>","<a href=""#Sales Browser/Territory""> toevoegen / bewerken < / a>"
+Billed,Gefactureerd
+Company,Vennootschap
+Currency is required for Price List {0},Valuta is vereist voor prijslijst {0}
+Default Customer Group,Standaard Klant Groep
+Default Territory,Standaard Territory
+Delivered,Geleverd
+Enable Shopping Cart,Enable Winkelwagen
+Go ahead and add something to your cart.,Ga je gang en iets toe te voegen aan uw winkelwagen.
+Hey! Go ahead and add an address,Hé! Ga je gang en voeg een adres
+Invalid Billing Address,Ongeldig Factuuradres
+Invalid Shipping Address,Ongeldig verzendadres
+Missing Currency Exchange Rates for {0},Ontbrekende wisselkoersen gedurende {0}
+Name is required,Naam is vereist
+Not Allowed,niet toegestaan
+Paid,betaald
+Partially Billed,gedeeltelijk gefactureerde
+Partially Delivered,gedeeltelijk Geleverd
+Please specify a Price List which is valid for Territory,Geef een prijslijst die geldig is voor het grondgebied
+Please specify currency in Company,Specificeer munt in Bedrijf
+Please write something,Iets schrijven aub
+Please write something in subject and message!,Schrijf iets in het onderwerp en een bericht !
+Price List,Prijslijst
+Price List not configured.,Prijslijst niet geconfigureerd.
+Quotation Series,Offerte Series
+Shipping Rule,Verzending Rule
+Shopping Cart,Winkelwagen
+Shopping Cart Price List,Winkelwagen Prijslijst
+Shopping Cart Price Lists,Winkelwagen Prijslijsten
+Shopping Cart Settings,Winkelwagen Instellingen
+Shopping Cart Shipping Rule,Winkelwagen Scheepvaart Rule
+Shopping Cart Shipping Rules,Winkelwagen Scheepvaart Regels
+Shopping Cart Taxes and Charges Master,Winkelwagen en-heffingen Master
+Shopping Cart Taxes and Charges Masters,Winkelwagen en-heffingen Masters
+Something went wrong!,Er ging iets mis!
+Something went wrong.,Er is iets fout gegaan
+Tax Master,Fiscale Master
+To Pay,te betalen
+Updated,Bijgewerkt
+You are not allowed to reply to this ticket.,Het is niet toegestaan ​​om te reageren op dit kaartje .
+You need to be logged in to view your cart.,Je moet ingelogd zijn om uw winkelwagentje te bekijken.
+You need to enable Shopping Cart,U moet Winkelwagen stellen
+{0} cannot be purchased using Shopping Cart,{0} kan niet worden aangeschaft met Winkelwagen
+{0} is required,{0} is verplicht
+{0} {1} has a common territory {2},{0} {1} heeft een gemeenschappelijk grondgebied {2}
diff --git a/erpnext/translations/pt-BR.csv b/erpnext/translations/pt-BR.csv
index df558c5..7796842 100644
--- a/erpnext/translations/pt-BR.csv
+++ b/erpnext/translations/pt-BR.csv
@@ -3377,3 +3377,49 @@
 {0} {1} status is Unstopped,{0} {1} status é abrirão
 {0} {1}: Cost Center is mandatory for Item {2},{0} {1}: Centro de Custo é obrigatória para item {2}
 {0}: {1} not found in Invoice Details table,{0}: {1} não foi encontrado na fatura Detalhes Mesa
+"<a href=""#Sales Browser/Customer Group"">Add / Edit</a>","<a href=""#Sales Browser/Customer grupo""> Adicionar / Editar </ a>"
+"<a href=""#Sales Browser/Territory"">Add / Edit</a>","<a href=""#Sales Browser/Territory""> Adicionar / Editar </ a>"
+Billed,Faturado
+Company,Empresa
+Currency is required for Price List {0},Moeda é necessário para Preço de {0}
+Default Customer Group,Grupo de Clientes padrão
+Default Territory,Território padrão
+Delivered,Entregue
+Enable Shopping Cart,Ativar Carrinho de Compras
+Go ahead and add something to your cart.,Vá em frente e acrescentar algo ao seu carrinho.
+Hey! Go ahead and add an address,Ei! Vá em frente e adicionar um endereço
+Invalid Billing Address,Inválido Endereço de Cobrança
+Invalid Shipping Address,Inválido envio Endereço
+Missing Currency Exchange Rates for {0},Falta de câmbio de moeda para {0}
+Name is required,Nome é obrigatório
+Not Allowed,não Permitido
+Paid,pago
+Partially Billed,parcialmente faturado
+Partially Delivered,parcialmente entregues
+Please specify a Price List which is valid for Territory,"Por favor, especifique uma lista de preços que é válido para o território"
+Please specify currency in Company,"Por favor, especificar a moeda em Empresa"
+Please write something,"Por favor, escreva algo"
+Please write something in subject and message!,"Por favor, escreva algo no assunto e uma mensagem !"
+Price List,Lista de Preços
+Price List not configured.,Lista de Preço não configurado.
+Quotation Series,Série citação
+Shipping Rule,Regra de envio
+Shopping Cart,Carrinho de Compras
+Shopping Cart Price List,Carrinho de Compras Lista de Preços
+Shopping Cart Price Lists,Carrinho listas de preços
+Shopping Cart Settings,Carrinho Configurações
+Shopping Cart Shipping Rule,Carrinho de Compras Rule envio
+Shopping Cart Shipping Rules,Carrinho Regras frete
+Shopping Cart Taxes and Charges Master,Carrinho impostos e taxas Mestre
+Shopping Cart Taxes and Charges Masters,Carrinho Impostos e Taxas de mestrado
+Something went wrong!,Algo deu errado!
+Something went wrong.,Algo deu errado.
+Tax Master,Imposto de Mestre
+To Pay,pagar
+Updated,Atualizado
+You are not allowed to reply to this ticket.,Você não tem permissão para responder a este bilhete .
+You need to be logged in to view your cart.,Você precisa estar logado para ver seu carrinho.
+You need to enable Shopping Cart,Você precisa habilitar o Carrinho de Compras
+{0} cannot be purchased using Shopping Cart,{0} não pode ser comprado usando Carrinho de Compras
+{0} is required,{0} é necessária
+{0} {1} has a common territory {2},{0} {1} tem um território comum {2}
diff --git a/erpnext/translations/pt.csv b/erpnext/translations/pt.csv
index 18c4617..b4d9bd6 100644
--- a/erpnext/translations/pt.csv
+++ b/erpnext/translations/pt.csv
@@ -3329,3 +3329,49 @@
 {0} {1} status is Unstopped,{0} {1} status é abrirão
 {0} {1}: Cost Center is mandatory for Item {2},{0} {1}: Centro de Custo é obrigatória para item {2}
 {0}: {1} not found in Invoice Details table,{0}: {1} não foi encontrado na fatura Detalhes Mesa
+"<a href=""#Sales Browser/Customer Group"">Add / Edit</a>","<a href=""#Sales Browser/Customer Group""> toevoegen / bewerken < / a>"
+"<a href=""#Sales Browser/Territory"">Add / Edit</a>","<a href=""#Sales Browser/Territory""> toevoegen / bewerken < / a>"
+Billed,Faturado
+Company,Companhia
+Currency is required for Price List {0},Moeda é necessário para Preço de {0}
+Default Customer Group,Grupo de Clientes padrão
+Default Territory,Território padrão
+Delivered,Entregue
+Enable Shopping Cart,Ativar Carrinho de Compras
+Go ahead and add something to your cart.,Vá em frente e acrescentar algo ao seu carrinho.
+Hey! Go ahead and add an address,Ei! Vá em frente e adicionar um endereço
+Invalid Billing Address,Inválido Endereço de Cobrança
+Invalid Shipping Address,Inválido envio Endereço
+Missing Currency Exchange Rates for {0},Falta de câmbio de moeda para {0}
+Name is required,Nome é obrigatório
+Not Allowed,não Permitido
+Paid,betaald
+Partially Billed,gedeeltelijk gefactureerde
+Partially Delivered,gedeeltelijk Geleverd
+Please specify a Price List which is valid for Territory,"Por favor, especifique uma lista de preços que é válido para o território"
+Please specify currency in Company,"Por favor, especificar a moeda em Empresa"
+Please write something,Iets schrijven aub
+Please write something in subject and message!,Schrijf iets in het onderwerp en een bericht !
+Price List,Lista de Preços
+Price List not configured.,Lista de Preço não configurado.
+Quotation Series,Série citação
+Shipping Rule,Regra de envio
+Shopping Cart,Carrinho de Compras
+Shopping Cart Price List,Carrinho de Compras Lista de Preços
+Shopping Cart Price Lists,Carrinho listas de preços
+Shopping Cart Settings,Carrinho Configurações
+Shopping Cart Shipping Rule,Carrinho de Compras Rule envio
+Shopping Cart Shipping Rules,Carrinho Regras frete
+Shopping Cart Taxes and Charges Master,Carrinho impostos e taxas Mestre
+Shopping Cart Taxes and Charges Masters,Carrinho Impostos e Taxas de mestrado
+Something went wrong!,Algo deu errado!
+Something went wrong.,Algo deu errado.
+Tax Master,Imposto de Mestre
+To Pay,te betalen
+Updated,Atualizado
+You are not allowed to reply to this ticket.,Het is niet toegestaan ​​om te reageren op dit kaartje .
+You need to be logged in to view your cart.,Você precisa estar logado para ver seu carrinho.
+You need to enable Shopping Cart,Você precisa habilitar o Carrinho de Compras
+{0} cannot be purchased using Shopping Cart,{0} não pode ser comprado usando Carrinho de Compras
+{0} is required,{0} é necessária
+{0} {1} has a common territory {2},{0} {1} tem um território comum {2}
diff --git a/erpnext/translations/ro.csv b/erpnext/translations/ro.csv
index fc6d6ce..a5aa7c4 100644
--- a/erpnext/translations/ro.csv
+++ b/erpnext/translations/ro.csv
@@ -3329,3 +3329,49 @@
 {0} {1} status is Unstopped,{0} {1} statut este destupate
 {0} {1}: Cost Center is mandatory for Item {2},{0} {1}: Cost Center este obligatorie pentru postul {2}
 {0}: {1} not found in Invoice Details table,{0}: {1} nu a fost găsit în factură Detalii masă
+"<a href=""#Sales Browser/Customer Group"">Add / Edit</a>","<a href=""#Sales Browser/Customer Group""> Add / Edit </ a>"
+"<a href=""#Sales Browser/Territory"">Add / Edit</a>","<a href=""#Sales Browser/Territory""> Add / Edit </ a>"
+Billed,Facturat
+Company,Firma
+Currency is required for Price List {0},Monedă este necesară pentru lista de prețuri {0}
+Default Customer Group,Implicit Client Group
+Default Territory,Implicit Teritoriul
+Delivered,Livrat
+Enable Shopping Cart,Activați Cosul de cumparaturi
+Go ahead and add something to your cart.,Du-te și adaugă ceva la coș.
+Hey! Go ahead and add an address,Hei! Du-te și adăugați o adresă
+Invalid Billing Address,Adresa de facturare invalid
+Invalid Shipping Address,Adresa Transport invalid
+Missing Currency Exchange Rates for {0},Lipsește valutar Curs valutar pentru {0}
+Name is required,Este necesar numele
+Not Allowed,Nu este permis
+Paid,Platit
+Partially Billed,Parțial Taxat
+Partially Delivered,Parțial livrate
+Please specify a Price List which is valid for Territory,"Vă rugăm să specificați o listă de prețuri, care este valabil pentru teritoriul"
+Please specify currency in Company,Vă rugăm să specificați în valută de companie
+Please write something,Vă rugăm să scrieți ceva
+Please write something in subject and message!,Vă rugăm să scrieți ceva în subiect și un mesaj!
+Price List,Lista de prețuri
+Price List not configured.,Lista de prețuri nu a fost configurat.
+Quotation Series,Citat Series
+Shipping Rule,Regula de transport maritim
+Shopping Cart,Cosul de cumparaturi
+Shopping Cart Price List,Cosul de cumparaturi Lista de prețuri
+Shopping Cart Price Lists,Cosul de cumparaturi Liste de prețuri
+Shopping Cart Settings,Setări Cosul de cumparaturi
+Shopping Cart Shipping Rule,Cosul de cumparaturi Regula Transport
+Shopping Cart Shipping Rules,Cosul de cumparaturi Reguli de expediere
+Shopping Cart Taxes and Charges Master,Taxele coș de cumpărături și taxe de Master
+Shopping Cart Taxes and Charges Masters,Cumpărături Impozite și taxe cos Masters
+Something went wrong!,Ceva a mers prost!
+Something went wrong.,Ceva nu a funcționat.
+Tax Master,Taxa de Master
+To Pay,Pentru a Pay
+Updated,Actualizat
+You are not allowed to reply to this ticket.,Nu vi se permite să răspundeți la acest bilet.
+You need to be logged in to view your cart.,Ai nevoie să fii logat pentru a vedea cosul de cumparaturi.
+You need to enable Shopping Cart,Ai nevoie pentru a permite Cosul de cumparaturi
+{0} cannot be purchased using Shopping Cart,{0} nu pot fi achiziționate cu ajutorul Cosul de cumparaturi
+{0} is required,{0} este necesară
+{0} {1} has a common territory {2},{0} {1} are un teritoriu comun {2}
diff --git a/erpnext/translations/ru.csv b/erpnext/translations/ru.csv
index 09d409e..d79039c 100644
--- a/erpnext/translations/ru.csv
+++ b/erpnext/translations/ru.csv
@@ -3332,3 +3332,49 @@
 {0} {1} status is Unstopped,{0} {1} статус отверзутся
 {0} {1}: Cost Center is mandatory for Item {2},{0} {1}: МВЗ является обязательным для п. {2}
 {0}: {1} not found in Invoice Details table,{0} {1} не найден в счете-фактуре таблице
+"<a href=""#Sales Browser/Customer Group"">Add / Edit</a>","<a href=""#Sales Browser/Customer Group""> Добавить / Изменить </>"
+"<a href=""#Sales Browser/Territory"">Add / Edit</a>","<a href=""#Sales Browser/Territory""> Добавить / Изменить </>"
+Billed,Объявленный
+Company,Организация
+Currency is required for Price List {0},Валюта необходима для Прейскурантом {0}
+Default Customer Group,По умолчанию Группа клиентов
+Default Territory,По умолчанию Территория
+Delivered,Доставлено
+Enable Shopping Cart,Включить Корзина
+Go ahead and add something to your cart.,Идем дальше и добавить что-то в корзину.
+Hey! Go ahead and add an address,16.35 Эй! Идем дальше и добавить адрес
+Invalid Billing Address,Неверный Адрес для выставления счета
+Invalid Shipping Address,Неверный адрес пересылки
+Missing Currency Exchange Rates for {0},Отсутствует валютный курс для {0}
+Name is required,Имя обязательно
+Not Allowed,Не разрешены
+Paid,Оплачено
+Partially Billed,Частично Объявленный
+Partially Delivered,Частично Поставляются
+Please specify a Price List which is valid for Territory,"Пожалуйста, сформулируйте прайс-лист, который действителен для территории"
+Please specify currency in Company,"Пожалуйста, сформулируйте валюту в компании"
+Please write something,"Пожалуйста, напишите что-нибудь"
+Please write something in subject and message!,"Пожалуйста, напишите что-нибудь в тему и текст сообщения!"
+Price List,Прайс-лист
+Price List not configured.,Прайс-лист не настроен.
+Quotation Series,Цитата серии
+Shipping Rule,Правило Доставка
+Shopping Cart,Корзина
+Shopping Cart Price List,Корзина Прайс-лист
+Shopping Cart Price Lists,Корзина Прайс-листы
+Shopping Cart Settings,Корзина Настройки
+Shopping Cart Shipping Rule,Корзина Правило Доставка
+Shopping Cart Shipping Rules,Корзина Правила Доставка
+Shopping Cart Taxes and Charges Master,Корзина Налоги и сборы Мастер
+Shopping Cart Taxes and Charges Masters,Налоги Корзина Торговые и сборы Мастера
+Something went wrong!,Что-то пошло не так!
+Something went wrong.,Что-то пошло не так.
+Tax Master,Налоговый Мастер
+To Pay,Платить
+Updated,Обновлено
+You are not allowed to reply to this ticket.,Вы не можете отвечать на этот билет.
+You need to be logged in to view your cart.,"Вы должны войти в систему, чтобы просмотреть свою корзину."
+You need to enable Shopping Cart,Вам необходимо включить Корзина
+{0} cannot be purchased using Shopping Cart,{0} не может быть приобретен с помощью Корзина
+{0} is required,{0} требуется
+{0} {1} has a common territory {2},{0} {1} имеет общую территорию {2}
diff --git a/erpnext/translations/sr.csv b/erpnext/translations/sr.csv
index 8ff80e0..8a84ef7 100644
--- a/erpnext/translations/sr.csv
+++ b/erpnext/translations/sr.csv
@@ -3329,3 +3329,49 @@
 {0} {1} status is Unstopped,{0} {1} статус отверзутся
 {0} {1}: Cost Center is mandatory for Item {2},{0} {1}: Трошкови Центар је обавезан за пункт {2}
 {0}: {1} not found in Invoice Details table,{0}: {1} није пронађен у табели Фактура Детаљи
+"<a href=""#Sales Browser/Customer Group"">Add / Edit</a>","<а хреф=""#Салес Бровсер/Цустомер Гроуп""> Додај / Уреди < />"
+"<a href=""#Sales Browser/Territory"">Add / Edit</a>","<а хреф=""#Салес Бровсер/Территори""> Додај / Уреди < />"
+Billed,Изграђена
+Company,Компанија
+Currency is required for Price List {0},Валюта необходима для Прейскурантом {0}
+Default Customer Group,Уобичајено групу потрошача
+Default Territory,Уобичајено Територија
+Delivered,Испоручено
+Enable Shopping Cart,Омогући Корпа
+Go ahead and add something to your cart.,Само напред и додати нешто у вашој корпи.
+Hey! Go ahead and add an address,Хеј! Само напред и додај адресу
+Invalid Billing Address,Неверный Адрес для выставления счета
+Invalid Shipping Address,Неверный адрес пересылки
+Missing Currency Exchange Rates for {0},Отсутствует валютный курс для {0}
+Name is required,Име је обавезно
+Not Allowed,Не разрешены
+Paid,плаћен
+Partially Billed,Делимично Изграђена
+Partially Delivered,Делимично Испоручено
+Please specify a Price List which is valid for Territory,Наведите ценовник који важи за територију
+Please specify currency in Company,Наведите валуту у компанији
+Please write something,Молимо вас да напишете нешто
+Please write something in subject and message!,Молимо вас да напишете нешто у теми и поруци !
+Price List,Ценовник
+Price List not configured.,Ценовник није подесио.
+Quotation Series,Цитат серија
+Shipping Rule,Достава Правило
+Shopping Cart,Корпа
+Shopping Cart Price List,Корпа Ценовник
+Shopping Cart Price Lists,Корпа Ценовници
+Shopping Cart Settings,Корпа Подешавања
+Shopping Cart Shipping Rule,Корпа Достава Правило
+Shopping Cart Shipping Rules,Корпа испоруке Правила
+Shopping Cart Taxes and Charges Master,Корпа такси и накнада Мастер
+Shopping Cart Taxes and Charges Masters,Корпа такси и накнада Мастерс
+Something went wrong!,Нешто је пошло наопако!
+Something went wrong.,Нешто је пошло наопако.
+Tax Master,Пореска Мастер
+To Pay,То Паи
+Updated,Ажурирано
+You are not allowed to reply to this ticket.,Нисте дозвољено да одговори на ову карту .
+You need to be logged in to view your cart.,Морате бити пријављени да бисте видели вашу корпу.
+You need to enable Shopping Cart,Вам необходимо включить Корзина
+{0} cannot be purchased using Shopping Cart,{0} не может быть приобретен с помощью Корзина
+{0} is required,{0} требуется
+{0} {1} has a common territory {2},{0} {1} имеет общую территорию {2}
diff --git a/erpnext/translations/ta.csv b/erpnext/translations/ta.csv
index c32864b..7717a7f 100644
--- a/erpnext/translations/ta.csv
+++ b/erpnext/translations/ta.csv
@@ -3329,3 +3329,49 @@
 {0} {1} status is Unstopped,{0} {1} நிலையை ஐபோனில் இருக்கிறது
 {0} {1}: Cost Center is mandatory for Item {2},{0} {1}: செலவு மையம் பொருள் கட்டாய {2}
 {0}: {1} not found in Invoice Details table,{0} {1} விலைப்பட்டியல் விவரம் அட்டவணையில் இல்லை
+"<a href=""#Sales Browser/Customer Group"">Add / Edit</a>","மிக href=""#Sales Browser/Customer Group""> சேர் / திருத்து </ a>"
+"<a href=""#Sales Browser/Territory"">Add / Edit</a>","மிக href=""#Sales Browser/Territory""> சேர் / திருத்து </ a>"
+Billed,கட்டணம்
+Company,நிறுவனம்
+Currency is required for Price List {0},நாணய விலை பட்டியல் தேவை {0}
+Default Customer Group,முன்னிருப்பு வாடிக்கையாளர் பிரிவு
+Default Territory,முன்னிருப்பு மண்டலம்
+Delivered,வழங்கினார்
+Enable Shopping Cart,வணிக வண்டியில் செயல்படுத்த
+Go ahead and add something to your cart.,முன்னோக்கி சென்று உங்கள் வண்டி ஒன்று சேர்க்க.
+Hey! Go ahead and add an address,ஏய்! போய் ஒரு முகவரியை சேர்க்க
+Invalid Billing Address,தவறான பில்லிங் முகவரி
+Invalid Shipping Address,செல்லாத கப்பல் முகவரி
+Missing Currency Exchange Rates for {0},ஐந்து நாணய மாற்று விகிதங்கள் காணவில்லை {0}
+Name is required,பெயர் தேவை
+Not Allowed,அனுமதி இல்லை
+Paid,பணம்
+Partially Billed,பகுதி கூறப்படுவது
+Partially Delivered,பகுதியளவு வழங்கப்படுகிறது
+Please specify a Price List which is valid for Territory,மண்டலம் செல்லுபடியாகும் ஒரு விலை பட்டியல் குறிப்பிடவும்
+Please specify currency in Company,நிறுவனத்தின் நாணய குறிப்பிடவும்
+Please write something,ஏதாவது எழுத கொள்ளவும்
+Please write something in subject and message!,பொருள் மற்றும் செய்தி ஏதாவது எழுத கொள்ளவும் !
+Price List,விலை பட்டியல்
+Price List not configured.,விலை பட்டியல் கட்டமைக்கப்பட்ட.
+Quotation Series,மேற்கோள் தொடர்
+Shipping Rule,கப்பல் விதி
+Shopping Cart,வணிக வண்டி
+Shopping Cart Price List,வணிக வண்டியில் விலை பட்டியல்
+Shopping Cart Price Lists,வணிக வண்டியில் விலை பட்டியல்கள்
+Shopping Cart Settings,வணிக வண்டியில் அமைப்புகள்
+Shopping Cart Shipping Rule,வணிக வண்டியில் கப்பல் போக்குவரத்து விதி
+Shopping Cart Shipping Rules,வணிக வண்டியில் கப்பல் போக்குவரத்து விதிகள்
+Shopping Cart Taxes and Charges Master,வணிக வண்டியில் வரிகள் மற்றும் கட்டணங்கள் மாஸ்டர்
+Shopping Cart Taxes and Charges Masters,வணிக வண்டியில் வரிகள் மற்றும் கட்டணங்கள் முதுநிலை
+Something went wrong!,ஏதோ தவறு!
+Something went wrong.,ஏதோ தவறு நடந்துவிட்டது.
+Tax Master,வரி மாஸ்டர்
+To Pay,பணம்
+Updated,புதுப்பிக்கப்பட்ட
+You are not allowed to reply to this ticket.,இந்த டிக்கெட் பதில் அனுமதி இல்லை .
+You need to be logged in to view your cart.,உங்கள் வண்டி பார்வையிட உள்நுழைந்திருக்க வேண்டும்.
+You need to enable Shopping Cart,வணிக வண்டியில் செயல்படுத்த வேண்டும்
+{0} cannot be purchased using Shopping Cart,{0} வணிக வண்டியில் பயன்படுத்தி வாங்க முடியாது
+{0} is required,{0} தேவைப்படுகிறது
+{0} {1} has a common territory {2},{0} {1} ஒரு பொதுவான பகுதியில் உள்ளது {2}
diff --git a/erpnext/translations/th.csv b/erpnext/translations/th.csv
index 8043eca..7f59ef7 100644
--- a/erpnext/translations/th.csv
+++ b/erpnext/translations/th.csv
@@ -3329,3 +3329,49 @@
 {0} {1} status is Unstopped,{0} {1} สถานะ เบิก
 {0} {1}: Cost Center is mandatory for Item {2},{0} {1}: ศูนย์ต้นทุนจำเป็นสำหรับรายการ {2}
 {0}: {1} not found in Invoice Details table,{0}: {1} ไม่พบในตารางรายละเอียดใบแจ้งหนี้
+"<a href=""#Sales Browser/Customer Group"">Add / Edit</a>","<a href=""#Sales Browser/Customer Group""> เพิ่ม / แก้ไข </ a>"
+"<a href=""#Sales Browser/Territory"">Add / Edit</a>","<a href=""#Sales Browser/Territory""> เพิ่ม / แก้ไข </ a>"
+Billed,เรียกเก็บเงิน
+Company,บริษัท
+Currency is required for Price List {0},สกุลเงิน เป็นสิ่งจำเป็นสำหรับ ราคาตามรายการ {0}
+Default Customer Group,กลุ่มลูกค้าเริ่มต้น
+Default Territory,ดินแดนเริ่มต้น
+Delivered,ส่ง
+Enable Shopping Cart,เปิดใช้งานรถเข็น
+Go ahead and add something to your cart.,ไปข้างหน้าและเพิ่มสิ่งที่รถเข็นของคุณ
+Hey! Go ahead and add an address,นี่ ไปข้างหน้าและเพิ่มที่อยู่
+Invalid Billing Address,ที่อยู่ การเรียกเก็บเงิน ไม่ถูกต้อง
+Invalid Shipping Address,ที่อยู่ ในการจัดส่ง ที่ไม่ถูกต้อง
+Missing Currency Exchange Rates for {0},หายไป สกุลเงิน อัตราแลกเปลี่ยน เพื่อ {0}
+Name is required,ชื่อจะต้อง
+Not Allowed,ไม่อนุญาตให้
+Paid,ต้องจ่าย
+Partially Billed,ในจำนวน บางส่วน
+Partially Delivered,ส่ง บางส่วน
+Please specify a Price List which is valid for Territory,โปรดระบุรายชื่อราคาที่ถูกต้องสำหรับดินแดน
+Please specify currency in Company,โปรดระบุสกุลเงินใน บริษัท
+Please write something,กรุณาเขียน บางสิ่งบางอย่าง
+Please write something in subject and message!,กรุณาเขียน อะไรบางอย่างใน เรื่อง และ ข้อความ !
+Price List,บัญชีแจ้งราคาสินค้า
+Price List not configured.,ราคาไม่ได้กำหนดค่า
+Quotation Series,ชุดใบเสนอราคา
+Shipping Rule,กฎการจัดส่งสินค้า
+Shopping Cart,รถเข็นช้อปปิ้ง
+Shopping Cart Price List,รายการสินค้าราคาสินค้าในรถเข็น
+Shopping Cart Price Lists,ช้อปปิ้งสินค้าราคา Lists
+Shopping Cart Settings,การตั้งค่ารถเข็น
+Shopping Cart Shipping Rule,ช้อปปิ้งรถเข็นกฎการจัดส่งสินค้า
+Shopping Cart Shipping Rules,รถเข็นกฎการจัดส่งสินค้า
+Shopping Cart Taxes and Charges Master,ภาษีรถเข็นและปริญญาโทค่าใช้จ่าย
+Shopping Cart Taxes and Charges Masters,ภาษีรถเข็นช้อปปิ้งและปริญญาโทค่าใช้จ่าย
+Something went wrong!,สิ่งที่ผิดพลาด!
+Something went wrong.,สิ่งที่ผิดพลาด
+Tax Master,ปริญญาโทภาษี
+To Pay,การชำระเงิน
+Updated,อัพเดต
+You are not allowed to reply to this ticket.,คุณยังไม่ได้ รับอนุญาตให้ ตอบกลับ ตั๋ว นี้
+You need to be logged in to view your cart.,คุณต้องเข้าสู่ระบบเพื่อดูรถเข็นของคุณ
+You need to enable Shopping Cart,คุณต้อง เปิดการใช้งาน รถเข็น
+{0} cannot be purchased using Shopping Cart,{0} ไม่สามารถ ซื้อโดยใช้ รถเข็น
+{0} is required,{0} จะต้อง
+{0} {1} has a common territory {2},{0} {1} มีดินแดน ที่พบบ่อย {2}
diff --git a/erpnext/translations/tr.csv b/erpnext/translations/tr.csv
index 174c03f..cf023dd 100644
--- a/erpnext/translations/tr.csv
+++ b/erpnext/translations/tr.csv
@@ -3329,3 +3329,49 @@
 {0} {1} status is Unstopped,{0} {1} durumu Unstopped olduğunu
 {0} {1}: Cost Center is mandatory for Item {2},{0} {1}: Maliyet Merkezi Ürün için zorunludur {2}
 {0}: {1} not found in Invoice Details table,{0}: {1} Fatura Ayrıntıları tablosunda bulunamadı
+"<a href=""#Sales Browser/Customer Group"">Add / Edit</a>","<a href=""#Sales Browser/Customer Group""> Ekle / Düzenle </ a>"
+"<a href=""#Sales Browser/Territory"">Add / Edit</a>","<a href=""#Sales Browser/Territory""> Ekle / Düzenle </ a>"
+Billed,Faturalanmış
+Company,Şirket
+Currency is required for Price List {0},Döviz Fiyat Listesi için gereklidir {0}
+Default Customer Group,Varsayılan Müşteri Grubu
+Default Territory,Standart Bölge
+Delivered,Teslim Edildi
+Enable Shopping Cart,Alışveriş sepeti etkinleştirin
+Go ahead and add something to your cart.,Devam edin ve sepetinize şey eklemek.
+Hey! Go ahead and add an address,Hey! Devam edin ve bir adres eklemek
+Invalid Billing Address,Geçersiz Fatura Adresi
+Invalid Shipping Address,Geçersiz Teslimat Adresi
+Missing Currency Exchange Rates for {0},Döviz Kurların eksik {0}
+Name is required,Adı gerekli
+Not Allowed,İzin Verilmedi
+Paid,Ödendi
+Partially Billed,Kısmen Faturalı
+Partially Delivered,Kısmen Teslim
+Please specify a Price List which is valid for Territory,Territory için geçerli olan bir Fiyat Listesi belirtin
+Please specify currency in Company,Şirket para birimi belirtiniz
+Please write something,Bir şeyler yazınız
+Please write something in subject and message!,Konu ve mesaj bir şeyler yazınız!
+Price List,Fiyat listesi
+Price List not configured.,Fiyat Listesi yapılandırılmamış.
+Quotation Series,Teklif Serisi
+Shipping Rule,Kargo Kural
+Shopping Cart,Alışveriş Sepeti
+Shopping Cart Price List,Alışveriş Sepeti Fiyat Listesi
+Shopping Cart Price Lists,Alışveriş Sepeti Fiyat Listeleri
+Shopping Cart Settings,Alışveriş sepeti Ayarları
+Shopping Cart Shipping Rule,Alışveriş Sepeti Kargo Kural
+Shopping Cart Shipping Rules,Alışveriş Sepeti Nakliye Kuralları
+Shopping Cart Taxes and Charges Master,Alışveriş Sepeti Vergi ve Harçlar Usta
+Shopping Cart Taxes and Charges Masters,Alışveriş Sepeti Vergi ve Harçlar Masters
+Something went wrong!,Bir şeyler yanlış gitti!
+Something went wrong.,Bir şeyler yanlış gitti.
+Tax Master,Vergi Usta
+To Pay,Ödeme
+Updated,Güncellenmiş
+You are not allowed to reply to this ticket.,Bu bilet için cevap izin verilmez.
+You need to be logged in to view your cart.,Eğer sepeti görmek için oturum açmanız gerekir.
+You need to enable Shopping Cart,Sen Alışveriş Sepeti etkinleştirmeniz gerekir
+{0} cannot be purchased using Shopping Cart,{0} sepeti kullanarak satın alınamaz
+{0} is required,{0} gereklidir
+{0} {1} has a common territory {2},"{0} {1}, ortak bir bölge var {2}"
diff --git a/erpnext/translations/vi.csv b/erpnext/translations/vi.csv
index 3e714f5..ab272e9 100644
--- a/erpnext/translations/vi.csv
+++ b/erpnext/translations/vi.csv
@@ -3329,3 +3329,49 @@
 {0} {1} status is Unstopped,{0} {1} tình trạng là Unstopped
 {0} {1}: Cost Center is mandatory for Item {2},{0} {1}: Trung tâm chi phí là bắt buộc đối với hàng {2}
 {0}: {1} not found in Invoice Details table,{0}: {1} không tìm thấy trong hóa đơn chi tiết bảng
+"<a href=""#Sales Browser/Customer Group"">Add / Edit</a>",{0} là cần thiết
+"<a href=""#Sales Browser/Territory"">Add / Edit</a>",Tiền tệ là cần thiết cho Giá liệt kê {0}
+Billed,Một cái gì đó đã đi sai!
+Company,Giỏ hàng Giá liệt kê
+Currency is required for Price List {0},Danh sách giá
+Default Customer Group,Xin vui lòng viết một cái gì đó trong chủ đề và thông điệp!
+Default Territory,Vui lòng ghi rõ tiền tệ tại Công ty
+Delivered,"Nếu được chỉ định, gửi các bản tin sử dụng địa chỉ email này"
+Enable Shopping Cart,Dòng báo giá
+Go ahead and add something to your cart.,Được quảng cáo một phần
+Hey! Go ahead and add an address,Một cái gì đó đã đi sai.
+Invalid Billing Address,Thuế Thạc sĩ
+Invalid Shipping Address,Để trả tiền
+Missing Currency Exchange Rates for {0},Quy tắc vận chuyển
+Name is required,{0} không thể mua được bằng Giỏ hàng
+Not Allowed,Giỏ hàng Thuế và phí Thạc sĩ
+Paid,Quy định vận chuyển Giỏ hàng
+Partially Billed,Bạn cần phải kích hoạt Giỏ hàng
+Partially Delivered,Địa chỉ thanh toán không hợp lệ
+Please specify a Price List which is valid for Territory,Mặc định Territory
+Please specify currency in Company,Giỏ hàng Vận chuyển Rule
+Please write something,Giỏ hàng Chức năng Giá
+Please write something in subject and message!,{0} {1} có một lãnh thổ chung {2}
+Price List,"<a href=""#Sales Browser/Customer Group""> Add / Edit </ a>"
+Price List not configured.,Một phần Giao
+Quotation Series,Giỏ hàng Thuế và phí Masters
+Shipping Rule,Này ! Đi trước và thêm một địa chỉ
+Shopping Cart,"<a href=""#Sales Browser/Territory""> Add / Edit </ a>"
+Shopping Cart Price List,Đã cập nhật
+Shopping Cart Price Lists,Danh sách giá không được cấu hình.
+Shopping Cart Settings,Mặc định khách hàng Nhóm
+Shopping Cart Shipping Rule,Bạn cần phải đăng nhập để xem giỏ hàng của bạn.
+Shopping Cart Shipping Rules,Không phép
+Shopping Cart Taxes and Charges Master,Công ty
+Shopping Cart Taxes and Charges Masters,Địa chỉ Vận chuyển không hợp lệ
+Something went wrong!,Bạn không được phép trả lời vé này.
+Something went wrong.,Đi trước và thêm một cái gì đó vào giỏ hàng của bạn.
+Tax Master,Giao
+To Pay,Thanh toán
+Updated,Xin vui lòng viết một cái gì đó
+You are not allowed to reply to this ticket.,Vui lòng xác định Bảng giá có giá trị trong lãnh thổ
+You need to be logged in to view your cart.,Giỏ hàng
+You need to enable Shopping Cart,Giỏ hàng mua sắm thiết lập
+{0} cannot be purchased using Shopping Cart,Lập hóa đơn
+{0} is required,Cho phép Giỏ hàng
+{0} {1} has a common territory {2},Yêu cầu nhập tên
diff --git a/erpnext/translations/zh-cn.csv b/erpnext/translations/zh-cn.csv
index faef822..36a4473 100644
--- a/erpnext/translations/zh-cn.csv
+++ b/erpnext/translations/zh-cn.csv
@@ -3377,3 +3377,49 @@
 {0} {1} status is Unstopped,{0} {1}状态为开通
 {0} {1}: Cost Center is mandatory for Item {2},{0} {1}：成本中心是强制性的项目{2}
 {0}: {1} not found in Invoice Details table,{0}：{1}不是在发票明细表中找到
+"<a href=""#Sales Browser/Customer Group"">Add / Edit</a>","<a href=""#Sales Browser/Customer Group"">添加/编辑</a>"
+"<a href=""#Sales Browser/Territory"">Add / Edit</a>","<a href=""#Sales Browser/Territory"">添加/编辑</a>"
+Billed,计费
+Company,公司
+Currency is required for Price List {0},货币需要价格表{0}
+Default Customer Group,默认用户组
+Default Territory,默认领地
+Delivered,交付
+Enable Shopping Cart,启用的购物车
+Go ahead and add something to your cart.,来吧，讲一下你的车。
+Hey! Go ahead and add an address,嘿！来吧，添加一个地址
+Invalid Billing Address,无效的帐单地址
+Invalid Shipping Address,无效的送货地址
+Missing Currency Exchange Rates for {0},缺少货币汇率的{0}
+Name is required,名称是必需的
+Not Allowed,不允许
+Paid,支付
+Partially Billed,部分帐单
+Partially Delivered,部分交付
+Please specify a Price List which is valid for Territory,请指定一个价格表，有效期为领地
+Please specify currency in Company,请公司指定的货币
+Please write something,请写东西
+Please write something in subject and message!,请写东西的主题和消息！
+Price List,价格表
+Price List not configured.,未配置价格表。
+Quotation Series,系列报价
+Shipping Rule,送货规则
+Shopping Cart,购物车
+Shopping Cart Price List,购物车价格表
+Shopping Cart Price Lists,购物车价目表
+Shopping Cart Settings,购物车设置
+Shopping Cart Shipping Rule,购物车运费规则
+Shopping Cart Shipping Rules,购物车运费规则
+Shopping Cart Taxes and Charges Master,购物车税收和收费硕士
+Shopping Cart Taxes and Charges Masters,购物车税收和收费硕士
+Something went wrong!,出事了！
+Something went wrong.,出事了。
+Tax Master,税务硕士
+To Pay,支付方式
+Updated,更新
+You are not allowed to reply to this ticket.,你不允许回复此票。
+You need to be logged in to view your cart.,您需要登录才能查看您的购物车。
+You need to enable Shopping Cart,您需要启用的购物车
+{0} cannot be purchased using Shopping Cart,{0}不能使用购物车购买
+{0} is required,{0}是必需的
+{0} {1} has a common territory {2},{0} {1}有一个共同的领土{2}
diff --git a/erpnext/translations/zh-tw.csv b/erpnext/translations/zh-tw.csv
index 29522e6..609806b 100644
--- a/erpnext/translations/zh-tw.csv
+++ b/erpnext/translations/zh-tw.csv
@@ -3377,3 +3377,49 @@
 {0} {1} status is Unstopped,{0} {1}狀態為開通
 {0} {1}: Cost Center is mandatory for Item {2},{0} {1}：成本中心是強制性的項目{2}
 {0}: {1} not found in Invoice Details table,{0}：{1}不是在發票明細表中找到
+"<a href=""#Sales Browser/Customer Group"">Add / Edit</a>","<a href=""#Sales Browser/Customer Group"">添加/編輯</a>"
+"<a href=""#Sales Browser/Territory"">Add / Edit</a>","<a href=""#Sales Browser/Territory"">添加/編輯</a>"
+Billed,計費
+Company,公司
+Currency is required for Price List {0},貨幣需要價格表{0}
+Default Customer Group,默認用戶組
+Default Territory,默認領地
+Delivered,交付
+Enable Shopping Cart,啟用的購物車
+Go ahead and add something to your cart.,來吧，講一下你的車。
+Hey! Go ahead and add an address,嘿！來吧，添加一個地址
+Invalid Billing Address,無效的帳單地址
+Invalid Shipping Address,無效的送貨地址
+Missing Currency Exchange Rates for {0},缺少貨幣匯率的{0}
+Name is required,名稱是必需的
+Not Allowed,不允許
+Paid,支付
+Partially Billed,部分帳單
+Partially Delivered,部分交付
+Please specify a Price List which is valid for Territory,請指定一個價格表，有效期為領地
+Please specify currency in Company,請公司指定的貨幣
+Please write something,請寫東西
+Please write something in subject and message!,請寫東西的主題和消息！
+Price List,價格表
+Price List not configured.,未配置價格表。
+Quotation Series,系列報價
+Shipping Rule,送貨規則
+Shopping Cart,購物車
+Shopping Cart Price List,購物車價格表
+Shopping Cart Price Lists,購物車價目表
+Shopping Cart Settings,購物車設置
+Shopping Cart Shipping Rule,購物車運費規則
+Shopping Cart Shipping Rules,購物車運費規則
+Shopping Cart Taxes and Charges Master,購物車稅收和收費碩士
+Shopping Cart Taxes and Charges Masters,購物車稅收和收費碩士
+Something went wrong!,出事了！
+Something went wrong.,出事了。
+Tax Master,稅務碩士
+To Pay,支付方式
+Updated,更新
+You are not allowed to reply to this ticket.,你不允許回复此票。
+You need to be logged in to view your cart.,您需要登錄才能查看您的購物車。
+You need to enable Shopping Cart,您需要啟用的購物車
+{0} cannot be purchased using Shopping Cart,{0}不能使用購物車購買
+{0} is required,{0}是必需的
+{0} {1} has a common territory {2},{0} {1}有一個共同的領土{2}
