Merge branch 'responsive' of github.com:webnotes/erpnext into responsive
diff --git a/accounts/doctype/payment_to_invoice_matching_tool/payment_to_invoice_matching_tool.js b/accounts/doctype/payment_to_invoice_matching_tool/payment_to_invoice_matching_tool.js
index 8b35bc1..ac7d9d2 100644
--- a/accounts/doctype/payment_to_invoice_matching_tool/payment_to_invoice_matching_tool.js
+++ b/accounts/doctype/payment_to_invoice_matching_tool/payment_to_invoice_matching_tool.js
@@ -50,6 +50,7 @@
 		        where against_voucher_type = '%(dt)s' \
 		        and against_voucher = gle.voucher_no \
 		        and voucher_no != gle.voucher_no \
+				and account = gle.account \
 		        and ifnull(is_cancelled, 'No') = 'No') != \
 		        abs(ifnull(gle.debit, 0) - ifnull(gle.credit, 0)) \
 		    ORDER BY gle.posting_date DESC, gle.voucher_no DESC LIMIT 50", 
diff --git a/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.js b/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.js
index 53588e0..f04f895 100644
--- a/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.js
+++ b/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.js
@@ -147,7 +147,7 @@
     d.account_head = '';
   }
   else if(d.account_head && d.charge_type) {
-    arg = "{'charge_type' : '" + d.charge_type +"', 'account_head' : '" + d.account_head + "'}";
+    arg = "{'charge_type' : '" + d.charge_type + "', 'account_head' : '" + d.account_head + "'}";
     get_server_fields('get_rate', arg, 'purchase_tax_details', doc, cdt, cdn, 1);
   }
   refresh_field('account_head',d.name,'purchase_tax_details');
diff --git a/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.py b/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.py
index 1250db5..995415e 100644
--- a/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.py
+++ b/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.py
@@ -26,11 +26,11 @@
 
 
 class DocType:
-  def __init__(self, doc, doclist=[]):
-    self.doc = doc
-    self.doclist = doclist
+	def __init__(self, doc, doclist=[]):
+		self.doc = doc
+		self.doclist = doclist
 
-  # Get Tax Rate if account type is Tax
-  # ===================================================================
-  def get_rate(self, arg):
-    return get_obj('Purchase Common').get_rate(arg, self)
\ No newline at end of file
+	# Get Tax Rate if account type is Tax
+	# ===================================================================
+	def get_rate(self, arg):
+		return get_obj('Purchase Common').get_rate(arg, self)
\ No newline at end of file
diff --git a/accounts/doctype/sales_invoice_item/sales_invoice_item.txt b/accounts/doctype/sales_invoice_item/sales_invoice_item.txt
index 014a9f4..1a9cd48 100644
--- a/accounts/doctype/sales_invoice_item/sales_invoice_item.txt
+++ b/accounts/doctype/sales_invoice_item/sales_invoice_item.txt
@@ -1,8 +1,8 @@
 [
  {
-  "creation": "2013-04-19 11:00:07", 
+  "creation": "2013-06-04 11:02:19", 
   "docstatus": 0, 
-  "modified": "2013-05-22 12:07:00", 
+  "modified": "2013-06-26 14:34:00", 
   "modified_by": "Administrator", 
   "owner": "Administrator"
  }, 
@@ -243,7 +243,8 @@
   "oldfieldname": "serial_no", 
   "oldfieldtype": "Small Text", 
   "print_hide": 0, 
-  "read_only": 0
+  "read_only": 0, 
+  "reqd": 0
  }, 
  {
   "doctype": "DocField", 
diff --git a/accounts/report/purchase_invoice_trends/purchase_invoice_trends.py b/accounts/report/purchase_invoice_trends/purchase_invoice_trends.py
index a558a6c..659cb85 100644
--- a/accounts/report/purchase_invoice_trends/purchase_invoice_trends.py
+++ b/accounts/report/purchase_invoice_trends/purchase_invoice_trends.py
@@ -21,8 +21,7 @@
 def execute(filters=None):
 	if not filters: filters ={}
 	data = []
-	trans = "Purchase Invoice"
-	conditions = get_columns(filters, trans)
+	conditions = get_columns(filters, "Purchase Invoice")
 	data = get_data(filters, conditions)
 
 	return conditions["columns"], data 
\ No newline at end of file
diff --git a/accounts/report/purchase_register/purchase_register.py b/accounts/report/purchase_register/purchase_register.py
index d6233a4..655cf8c 100644
--- a/accounts/report/purchase_register/purchase_register.py
+++ b/accounts/report/purchase_register/purchase_register.py
@@ -40,9 +40,10 @@
 		# invoice details
 		purchase_order = list(set(invoice_po_pr_map.get(inv.name, {}).get("purchase_order", [])))
 		purchase_receipt = list(set(invoice_po_pr_map.get(inv.name, {}).get("purchase_receipt", [])))
+		project_name = list(set(invoice_po_pr_map.get(inv.name, {}).get("project_name", [])))
 
 		row = [inv.name, inv.posting_date, inv.supplier, inv.credit_to, 
-			account_map.get(inv.credit_to), inv.project_name, inv.bill_no, inv.bill_date, 
+			account_map.get(inv.credit_to), ", ".join(project_name), inv.bill_no, inv.bill_date, 
 			inv.remarks, ", ".join(purchase_order), ", ".join(purchase_receipt)]
 		
 		# map expense values
@@ -105,11 +106,10 @@
 	
 def get_invoices(filters):
 	conditions = get_conditions(filters)
-	return webnotes.conn.sql("""select pi.name, pi.posting_date, pi.credit_to, 
-		pii.project_name, pi.supplier, pi.bill_no, pi.bill_date, pi.remarks, pi.net_total, 
-		pi.total_tax, pi.grand_total, pi.outstanding_amount 
-		from `tabPurchase Invoice` pi, `tabPurchase Invoice Item` pii 
-		where pii.parent = pi.name and pi.docstatus = 1 %s 
+	return webnotes.conn.sql("""select name, posting_date, credit_to, 
+		supplier, bill_no, bill_date, remarks, net_total, 
+		total_tax, grand_total, outstanding_amount 
+		from `tabPurchase Invoice` where docstatus = 1 %s 
 		order by posting_date desc, name desc""" % conditions, filters, as_dict=1)
 	
 	
@@ -138,8 +138,8 @@
 	return invoice_tax_map
 	
 def get_invoice_po_pr_map(invoice_list):
-	pi_items = webnotes.conn.sql("""select parent, purchase_order, purchase_receipt
-		from `tabPurchase Invoice Item` where parent in (%s) 
+	pi_items = webnotes.conn.sql("""select parent, purchase_order, purchase_receipt, 
+		project_name from `tabPurchase Invoice Item` where parent in (%s) 
 		and (ifnull(purchase_order, '') != '' or ifnull(purchase_receipt, '') != '')""" % 
 		', '.join(['%s']*len(invoice_list)), tuple([inv.name for inv in invoice_list]), as_dict=1)
 	
@@ -151,6 +151,9 @@
 		if d.purchase_receipt:
 			invoice_po_pr_map.setdefault(d.parent, webnotes._dict()).setdefault(
 				"purchase_receipt", []).append(d.purchase_receipt)
+		if d.project_name:
+			invoice_po_pr_map.setdefault(d.parent, webnotes._dict()).setdefault(
+				"project_name", []).append(d.project_name)
 				
 	return invoice_po_pr_map
 	
diff --git a/accounts/report/sales_invoice_trends/sales_invoice_trends.py b/accounts/report/sales_invoice_trends/sales_invoice_trends.py
index a106834..9a5eaf2 100644
--- a/accounts/report/sales_invoice_trends/sales_invoice_trends.py
+++ b/accounts/report/sales_invoice_trends/sales_invoice_trends.py
@@ -21,8 +21,7 @@
 def execute(filters=None):
 	if not filters: filters ={}
 	data = []
-	trans = "Sales Invoice"
-	conditions = get_columns(filters, trans)
+	conditions = get_columns(filters, "Sales Invoice")
 	data = get_data(filters, conditions)
 
 	return conditions["columns"], data 
\ No newline at end of file
diff --git a/buying/report/purchase_order_trends/purchase_order_trends.py b/buying/report/purchase_order_trends/purchase_order_trends.py
index 9b29465..9dc986e 100644
--- a/buying/report/purchase_order_trends/purchase_order_trends.py
+++ b/buying/report/purchase_order_trends/purchase_order_trends.py
@@ -21,8 +21,7 @@
 def execute(filters=None):
 	if not filters: filters ={}
 	data = []
-	trans = "Purchase Order"
-	conditions = get_columns(filters, trans)
+	conditions = get_columns(filters, "Purchase Order")
 	data = get_data(filters, conditions)
 
 	return conditions["columns"], data 
\ No newline at end of file
diff --git a/config.json b/config.json
index 46cd8c9..5f9ac5e 100644
--- a/config.json
+++ b/config.json
@@ -120,6 +120,14 @@
 			"tickets": {
 				"template": "app/website/templates/pages/tickets"
 			},
+			"address": {
+				"no_cache": true,
+				"template": "app/website/templates/pages/address",
+				"args_method": "utilities.doctype.address.address.get_website_args"
+			},
+			"addresses": {
+				"template": "app/website/templates/pages/addresses"
+			},
 			"writers": {
 				"template": "app/website/templates/pages/writers",
 				"args_method": "website.helpers.blog.get_writers_args"
diff --git a/controllers/accounts_controller.py b/controllers/accounts_controller.py
index ec7e3e5..69522c4 100644
--- a/controllers/accounts_controller.py
+++ b/controllers/accounts_controller.py
@@ -71,7 +71,7 @@
 				ret = get_item_details(args)
 				for fieldname, value in ret.items():
 					if self.meta.get_field(fieldname, parentfield=self.fname) and \
-						not item.fields.get(fieldname):
+						item.fields.get(fieldname) is None:
 							item.fields[fieldname] = value
 							
 	def set_taxes(self, tax_doctype, tax_parentfield, tax_master_field):
diff --git a/patches/patch_list.py b/patches/patch_list.py
index aaf5102..daf5847 100644
--- a/patches/patch_list.py
+++ b/patches/patch_list.py
@@ -243,10 +243,9 @@
 	"execute:webnotes.delete_doc('DocType', 'System Console')",
 	"patches.june_2013.p03_buying_selling_for_price_list",
 	"patches.june_2013.p04_fix_event_for_lead_oppty_project",
+	"patches.june_2013.p05_remove_search_criteria_reports",
 	"patches.june_2013.p05_remove_unused_doctypes",
 	"patches.june_2013.p06_drop_unused_tables",
-	"patches.june_2013.p08_shopping_cart_settings",
-	"patches.june_2013.p05_remove_search_criteria_reports",
 	"patches.june_2013.p07_taxes_price_list_for_territory",
 	"patches.june_2013.p08_shopping_cart_settings",
 	"patches.june_2013.p09_update_global_defaults",
diff --git a/public/js/website_utils.js b/public/js/website_utils.js
index 098f8da..59614c5 100644
--- a/public/js/website_utils.js
+++ b/public/js/website_utils.js
@@ -10,7 +10,7 @@
 		method: "website.helpers.contact.send_message",
 		args: opts,
 		callback: opts.callback
-	})
+	});
 }
 
 wn.call = function(opts) {
diff --git a/selling/doctype/sms_center/sms_center.py b/selling/doctype/sms_center/sms_center.py
index 7d50e71..8b404e6 100644
--- a/selling/doctype/sms_center/sms_center.py
+++ b/selling/doctype/sms_center/sms_center.py
@@ -35,11 +35,12 @@
   def create_receiver_list(self):
     rec, where_clause = '', ''
     if self.doc.send_to == 'All Customer Contact':
-      where_clause = self.doc.customer and " and customer = '%s'" % self.doc.customer or " and ifnull(is_customer, 0) = 1"
+      where_clause = self.doc.customer and " and customer = '%s'" % self.doc.customer or " and ifnull(customer, '') != ''"
     if self.doc.send_to == 'All Supplier Contact':
-      where_clause = self.doc.supplier and " and ifnull(is_supplier, 0) = 1 and supplier = '%s'" % self.doc.supplier or " and ifnull(is_supplier, 0) = 1"
+      where_clause = self.doc.supplier and " and ifnull(is_supplier, 0) = 1 and supplier = '%s'" % self.doc.supplier or " and ifnull(supplier, '') != ''"
     if self.doc.send_to == 'All Sales Partner Contact':
-      where_clause = self.doc.sales_partner and " and ifnull(is_sales_partner, 0) = 1 and sales_aprtner = '%s'" % self.doc.sales_partner or " and ifnull(is_sales_partner, 0) = 1"
+      where_clause = self.doc.sales_partner and " and ifnull(is_sales_partner, 0) = 1 and sales_partner = '%s'" % self.doc.sales_partner or " and ifnull(sales_partner, '') != ''"
+
     if self.doc.send_to in ['All Contact', 'All Customer Contact', 'All Supplier Contact', 'All Sales Partner Contact']:
       rec = sql("select CONCAT(ifnull(first_name,''),'',ifnull(last_name,'')), mobile_no from `tabContact` where ifnull(mobile_no,'')!='' and docstatus != 2 %s" % where_clause)
     elif self.doc.send_to == 'All Lead (Open)':
diff --git a/selling/report/quotation_trends/quotation_trends.py b/selling/report/quotation_trends/quotation_trends.py
index d08e0f8..29f9ef8 100644
--- a/selling/report/quotation_trends/quotation_trends.py
+++ b/selling/report/quotation_trends/quotation_trends.py
@@ -21,8 +21,7 @@
 def execute(filters=None):
 	if not filters: filters ={}
 	data = []
-	trans = "Quotation"
-	conditions = get_columns(filters, trans)
+	conditions = get_columns(filters, "Quotation")
 	data = get_data(filters, conditions)
 
 	return conditions["columns"], data 
\ No newline at end of file
diff --git a/selling/report/sales_order_trends/sales_order_trends.py b/selling/report/sales_order_trends/sales_order_trends.py
index 455fbd4..ac7c3ab 100644
--- a/selling/report/sales_order_trends/sales_order_trends.py
+++ b/selling/report/sales_order_trends/sales_order_trends.py
@@ -21,8 +21,7 @@
 def execute(filters=None):
 	if not filters: filters ={}
 	data = []
-	trans = "Sales Order"
-	conditions = get_columns(filters, trans)
+	conditions = get_columns(filters, "Sales Order")
 	data = get_data(filters, conditions)
 	
 	return conditions["columns"], data 
\ No newline at end of file
diff --git a/stock/doctype/serial_no/serial_no.txt b/stock/doctype/serial_no/serial_no.txt
index 33160c7..20f074b 100644
--- a/stock/doctype/serial_no/serial_no.txt
+++ b/stock/doctype/serial_no/serial_no.txt
@@ -2,13 +2,13 @@
  {
   "creation": "2013-05-16 10:59:15", 
   "docstatus": 0, 
-  "modified": "2013-06-20 11:23:01", 
+  "modified": "2013-07-02 12:07:21", 
   "modified_by": "Administrator", 
   "owner": "Administrator"
  }, 
  {
   "allow_attach": 1, 
-  "allow_rename": 0, 
+  "allow_rename": 1, 
   "autoname": "field:serial_no", 
   "description": "Distinct unit of an Item", 
   "doctype": "DocType", 
diff --git a/stock/report/delivery_note_trends/delivery_note_trends.py b/stock/report/delivery_note_trends/delivery_note_trends.py
index 9878ecc..e5b2cd0 100644
--- a/stock/report/delivery_note_trends/delivery_note_trends.py
+++ b/stock/report/delivery_note_trends/delivery_note_trends.py
@@ -21,8 +21,7 @@
 def execute(filters=None):
 	if not filters: filters ={}
 	data = []
-	trans = "Delivery Note"
-	conditions = get_columns(filters, trans)
+	conditions = get_columns(filters, "Delivery Note")
 	data = get_data(filters, conditions)
 	
 	return conditions["columns"], data 
\ No newline at end of file
diff --git a/stock/report/purchase_receipt_trends/purchase_receipt_trends.py b/stock/report/purchase_receipt_trends/purchase_receipt_trends.py
index 56c0023..b41ce28 100644
--- a/stock/report/purchase_receipt_trends/purchase_receipt_trends.py
+++ b/stock/report/purchase_receipt_trends/purchase_receipt_trends.py
@@ -21,11 +21,7 @@
 def execute(filters=None):
 	if not filters: filters ={}
 	data = []
-	trans = "Purchase Receipt"
-	conditions = get_columns(filters, trans)
-	data = get_data(filters, tab, conditions)
-	
-	if not data :
-		webnotes.msgprint("Data not found for selected criterias")
+	conditions = get_columns(filters, "Purchase Receipt")
+	data = get_data(filters, conditions)
 
 	return conditions["columns"], data  
\ No newline at end of file
diff --git a/utilities/cleanup_data.py b/utilities/cleanup_data.py
index ed04a94..df7f4be 100644
--- a/utilities/cleanup_data.py
+++ b/utilities/cleanup_data.py
@@ -20,14 +20,16 @@
 def delete_transactions():
 	print "Deleting transactions..."
 
-	trans = ['Timesheet', 'Task', 'Support Ticket', 'Stock Reconciliation', 'Stock Ledger Entry', 
+	trans = ['Task', 'Support Ticket', 'Stock Reconciliation', 'Stock Ledger Entry', 
 		'Stock Entry', 'Sales Order', 'Salary Slip','Sales Invoice', 'Quotation', 
 		'Quality Inspection', 'Purchase Receipt', 'Purchase Order', 'Production Order', 
 		'POS Setting', 'Period Closing Voucher', 'Purchase Invoice', 'Maintenance Visit', 
 		'Maintenance Schedule', 'Leave Application', 'Leave Allocation', 'Lead', 'Journal Voucher', 
 		'Installation Note', 'Material Request', 'GL Entry', 'Expense Claim', 'Opportunity', 
 		'Delivery Note', 'Customer Issue', 'Bin', 'Authorization Rule', 'Attendance', 'C-Form', 
-		'Appraisal', 'Installation Note', 'Communication']
+		'Appraisal', 'Installation Note', 'Communication', "Supplier Quotation", "Newsletter", 
+		"Job Applicant", "Web Page", "Website Slideshow", "Blog Post", "Blog Category", "Blogger", 
+		"Time Log", "Time Log Batch", "Workflow"]
 	for d in trans:
 		for t in webnotes.conn.sql("select options from tabDocField where parent='%s' and fieldtype='Table'" % d):
 			webnotes.conn.sql("delete from `tab%s`" % (t))
@@ -66,6 +68,7 @@
 		'Item Group': ['All Item Groups', 'Default'], 
 		'Item': '',
 		'Holiday List': '',
+		'Activity Type': '',
 		'Grade': '',
 		'Feed': '',
 		'Expense Claim Type': ['Travel', 'Medical', 'Calls', 'Food', 'Others'],
diff --git a/utilities/doctype/address/address.py b/utilities/doctype/address/address.py
index 4020766..bc35c27 100644
--- a/utilities/doctype/address/address.py
+++ b/utilities/doctype/address/address.py
@@ -18,7 +18,7 @@
 import webnotes
 
 from webnotes import msgprint
-from webnotes.utils import cstr
+from webnotes.utils import cstr, cint
 
 class DocType:
 	def __init__(self, doc, doclist=[]):
@@ -63,4 +63,26 @@
 			if self.doc.fields.get(fieldname):
 				webnotes.conn.sql("""update `tabAddress` set `%s`=0 where `%s`=%s and name!=%s""" %
 					(is_address_type, fieldname, "%s", "%s"), (self.doc.fields[fieldname], self.doc.name))
-				break
\ No newline at end of file
+				break
+				
+def get_website_args():
+	def _get_fields(fieldnames):
+		return [webnotes._dict(zip(["label", "fieldname", "fieldtype", "options"], 
+				[df.label, df.fieldname, df.fieldtype, df.options]))
+			for df in webnotes.get_doctype("Address", processed=True).get({"fieldname": ["in", fieldnames]})]
+	
+	bean = None
+	if webnotes.form_dict.name:
+		bean = webnotes.bean("Address", webnotes.form_dict.name)
+	
+	return {
+		"doc": bean.doc if bean else None,
+		"meta": webnotes._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"])
+		}),
+		"cint": cint
+	}
+	
diff --git a/utilities/doctype/address/address.txt b/utilities/doctype/address/address.txt
index 827331d..5e09daa 100644
--- a/utilities/doctype/address/address.txt
+++ b/utilities/doctype/address/address.txt
@@ -2,7 +2,7 @@
  {
   "creation": "2013-01-10 16:34:32", 
   "docstatus": 0, 
-  "modified": "2013-07-01 15:56:39", 
+  "modified": "2013-07-01 17:25:00", 
   "modified_by": "Administrator", 
   "owner": "Administrator"
  }, 
@@ -40,10 +40,12 @@
   "name": "Address"
  }, 
  {
+  "description": "Name of person or organization that this address belongs to.", 
   "doctype": "DocField", 
-  "fieldname": "address_details", 
-  "fieldtype": "Section Break", 
-  "label": "Address Details"
+  "fieldname": "address_title", 
+  "fieldtype": "Data", 
+  "label": "Address Title", 
+  "reqd": 1
  }, 
  {
   "doctype": "DocField", 
@@ -54,25 +56,17 @@
   "reqd": 1
  }, 
  {
-  "description": "Name of person or organization that this address belongs to.", 
-  "doctype": "DocField", 
-  "fieldname": "address_title", 
-  "fieldtype": "Data", 
-  "label": "Address Title", 
-  "reqd": 0
- }, 
- {
   "doctype": "DocField", 
   "fieldname": "address_line1", 
   "fieldtype": "Data", 
-  "label": "Address Line1", 
+  "label": "Address Line 1", 
   "reqd": 1
  }, 
  {
   "doctype": "DocField", 
   "fieldname": "address_line2", 
   "fieldtype": "Data", 
-  "label": "Address Line2"
+  "label": "Address Line 2"
  }, 
  {
   "doctype": "DocField", 
@@ -86,6 +80,15 @@
  }, 
  {
   "doctype": "DocField", 
+  "fieldname": "state", 
+  "fieldtype": "Data", 
+  "in_filter": 1, 
+  "label": "State", 
+  "options": "Suggest", 
+  "search_index": 0
+ }, 
+ {
+  "doctype": "DocField", 
   "fieldname": "pincode", 
   "fieldtype": "Data", 
   "in_filter": 1, 
@@ -105,15 +108,6 @@
  }, 
  {
   "doctype": "DocField", 
-  "fieldname": "state", 
-  "fieldtype": "Data", 
-  "in_filter": 1, 
-  "label": "State", 
-  "options": "Suggest", 
-  "search_index": 0
- }, 
- {
-  "doctype": "DocField", 
   "fieldname": "column_break0", 
   "fieldtype": "Column Break", 
   "print_hide": 0, 
@@ -121,6 +115,12 @@
  }, 
  {
   "doctype": "DocField", 
+  "fieldname": "email_id", 
+  "fieldtype": "Data", 
+  "label": "Email Id"
+ }, 
+ {
+  "doctype": "DocField", 
   "fieldname": "phone", 
   "fieldtype": "Data", 
   "label": "Phone", 
@@ -128,12 +128,6 @@
  }, 
  {
   "doctype": "DocField", 
-  "fieldname": "email_id", 
-  "fieldtype": "Data", 
-  "label": "Email Id"
- }, 
- {
-  "doctype": "DocField", 
   "fieldname": "fax", 
   "fieldtype": "Data", 
   "in_filter": 1, 
@@ -181,7 +175,7 @@
   "read_only": 1
  }, 
  {
-  "depends_on": "eval:!doc.customer && !doc.sales_partner", 
+  "depends_on": "eval:!doc.customer && !doc.sales_partner && !doc.lead", 
   "doctype": "DocField", 
   "fieldname": "supplier", 
   "fieldtype": "Link", 
@@ -189,7 +183,7 @@
   "options": "Supplier"
  }, 
  {
-  "depends_on": "eval:!doc.customer && !doc.sales_partner", 
+  "depends_on": "eval:!doc.customer && !doc.sales_partner && !doc.lead", 
   "doctype": "DocField", 
   "fieldname": "supplier_name", 
   "fieldtype": "Data", 
@@ -200,7 +194,7 @@
   "search_index": 0
  }, 
  {
-  "depends_on": "eval:!doc.customer && !doc.supplier", 
+  "depends_on": "eval:!doc.customer && !doc.supplier && !doc.lead", 
   "doctype": "DocField", 
   "fieldname": "sales_partner", 
   "fieldtype": "Link", 
diff --git a/utilities/transaction_base.py b/utilities/transaction_base.py
index 2def0ea..ab53575 100644
--- a/utilities/transaction_base.py
+++ b/utilities/transaction_base.py
@@ -312,6 +312,20 @@
 				})
 			
 			webnotes.bean(event_doclist).insert()
+			
+			
+def get_address_display(address_dict):
+	meta = webnotes.get_doctype("Address")
+	address_sequence = (("", "address_line1"), ("\n", "address_line2"), ("\n", "city"),
+		("\n", "state"), ("\n" + meta.get_label("pincode") + ": ", "pincode"), ("\n", "country"),
+		("\n" + meta.get_label("phone") + ": ", "phone"), ("\n" + meta.get_label("fax") + ": ", "fax"))
+	
+	address_display = ""
+	for separator, fieldname in address_sequence:
+		if address_dict.get(fieldname):
+			address_display += separator + address_dict.get(fieldname)
+			
+	return address_display
 	
 def validate_conversion_rate(currency, conversion_rate, conversion_rate_label, company):
 	"""common validation for currency and price list currency"""
diff --git a/website/css/website.css b/website/css/website.css
index 737d3d0..34ff983 100644
--- a/website/css/website.css
+++ b/website/css/website.css
@@ -126,4 +126,8 @@
 	.hidden-sm-inline {
 		display: inline;
 	}
+}
+
+.accordion-heading, .accordion-inner {
+	padding-left: 10px;
 }
\ No newline at end of file
diff --git a/website/helpers/cart.py b/website/helpers/cart.py
index a24afb5..bc99e7b 100644
--- a/website/helpers/cart.py
+++ b/website/helpers/cart.py
@@ -9,6 +9,19 @@
 class WebsitePriceListMissingError(webnotes.ValidationError): pass
 
 @webnotes.whitelist()
+def get_cart_quotation(doclist=None):
+	party = get_lead_or_customer()
+	
+	if not doclist:
+		doclist = _get_cart_quotation(party).doclist
+	
+	return {
+		"doclist": decorate_quotation_doclist(doclist),
+		"addresses": [{"name": address.name, "display": address.display} 
+			for address in get_address_docs(party)]
+	}
+
+@webnotes.whitelist()
 def update_cart(item_code, qty, with_doclist=0):
 	quotation = _get_cart_quotation()
 	
@@ -31,9 +44,79 @@
 	quotation.save()
 	
 	if with_doclist:
-		return decorate_quotation_doclist(quotation.doclist)
+		return get_cart_quotation(quotation.doclist)
 	else:
 		return quotation.doc.name
+		
+@webnotes.whitelist()
+def update_cart_address(address_fieldname, address_name):
+	from utilities.transaction_base import get_address_display
+	
+	quotation = _get_cart_quotation()
+	address_display = get_address_display(webnotes.doc("Address", address_name).fields)
+	
+	if address_fieldname == "shipping_address_name":
+		quotation.doc.shipping_address_name = address_name
+		quotation.doc.shipping_address = address_display
+		
+		if not quotation.doc.customer_address:
+			address_fieldname == "customer_address"
+	
+	if address_fieldname == "customer_address":
+		quotation.doc.customer_address = address_name
+		quotation.doc.address_display = address_display
+		
+	
+	quotation.ignore_permissions = True
+	quotation.save()
+		
+	return get_cart_quotation(quotation.doclist)
+
+@webnotes.whitelist()
+def get_addresses():
+	return [d.fields for d in get_address_docs()]
+	
+@webnotes.whitelist()
+def save_address(fields, address_fieldname=None):
+	party = get_lead_or_customer()
+	fields = webnotes.load_json(fields)
+	
+	if fields.get("name"):
+		bean = webnotes.bean("Address", fields.get("name"))
+	else:
+		bean = webnotes.bean({"doctype": "Address", "__islocal": 1})
+	
+	bean.doc.fields.update(fields)
+	
+	party_fieldname = party.doctype.lower()
+	bean.doc.fields.update({
+		party_fieldname: party.name,
+		(party_fieldname + "_name"): party.fields[party_fieldname + "_name"]
+	})
+	bean.ignore_permissions = True
+	bean.save()
+	
+	if address_fieldname:
+		update_cart_address(address_fieldname, bean.doc.name)
+	
+	return bean.doc.name
+	
+def get_address_docs(party=None):
+	from webnotes.model.doclist import objectify
+	from utilities.transaction_base import get_address_display
+	
+	if not party:
+		party = get_lead_or_customer()
+		
+	address_docs = objectify(webnotes.conn.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.fields)
+		address.display = (address.display).replace("\n", "<br>\n")
+		
+	return address_docs
 	
 def get_lead_or_customer():
 	customer = webnotes.conn.get_value("Contact", {"email_id": webnotes.session.user}, "customer")
@@ -56,12 +139,6 @@
 		lead_bean.insert()
 		
 		return lead_bean.doc
-		
-
-@webnotes.whitelist()
-def get_cart_quotation():
-	doclist = _get_cart_quotation(get_lead_or_customer()).doclist
-	return decorate_quotation_doclist(doclist)
 
 def decorate_quotation_doclist(doclist):
 	for d in doclist:
diff --git a/website/templates/js/cart.js b/website/templates/js/cart.js
index 3e6a344..db6c571 100644
--- a/website/templates/js/cart.js
+++ b/website/templates/js/cart.js
@@ -30,6 +30,8 @@
 			if(r.exc) {
 				if(r.exc.indexOf("WebsitePriceListMissingError")!==-1) {
 					wn.cart.show_error("Oops!", "Price List not configured.");
+				} else if(r["403"]) {
+					wn.cart.show_error("Hey!", "You need to be logged in to view your cart.");
 				} else {
 					wn.cart.show_error("Oops!", "Something went wrong.");
 				}
@@ -66,114 +68,145 @@
 				},
 			});
 		});
+		
+		$("#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";
+		});
 	},
 	
-	render: function(doclist) {
-		var $cart_wrapper = $("#cart-items").empty();
+	render: function(out) {
+		var doclist = out.doclist;
+		var addresses = out.addresses;
+
+		var $cart_items = $("#cart-items").empty();
+		var $cart_taxes = $("#cart-taxes").empty();
+		var $cart_billing_address = $("#cart-billing-address").empty();
+		var $cart_shipping_address = $("#cart-shipping-address").empty();
 		
-		if($.map(doclist, function(d) { return d.item_code || null;}).length===0) {
+		var no_items = $.map(doclist, function(d) { return d.item_code || null;}).length===0;
+		if(no_items) {
 			wn.cart.show_error("Empty :-(", "Go ahead and add something to your cart.");
+			$("#cart-addresses").toggle(false);
 			return;
 		}
 		
 		$.each(doclist, function(i, doc) {
 			if(doc.doctype === "Quotation Item") {
-				doc.image_html = doc.image ?
-					'<div style="height: 120px; overflow: hidden;"><img src="' + doc.image + '" /></div>' :
-					'{% include "app/website/templates/html/product_missing_image.html" %}';
-					
-				if(!doc.web_short_description) doc.web_short_description = doc.description;
-				
-				$(repl('<div class="row">\
-					<div class="col col-lg-9 col-sm-9">\
-						<div class="row">\
-							<div class="col col-lg-3">%(image_html)s</div>\
-							<div class="col col-lg-9">\
-								<h4><a href="%(page_name)s">%(item_name)s</a></h4>\
-								<p>%(web_short_description)s</p>\
-							</div>\
-						</div>\
-					</div>\
-					<div class="col col-lg-3 col-sm-3">\
-						<div class="input-group item-update-cart">\
-							<input type="text" placeholder="Qty" value="%(qty)s" \
-								data-item-code="%(item_code)s">\
-							<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_wrapper);
-				
+				wn.cart.render_item_row($cart_items, doc);
 			}
 		});
 		
-		
-		
-		return;
-		
-		if(Object.keys(wn.cart.get_cart()).length) {
-			
-			$.each(wn.cart.get_cart(), function(item_code, item) {
-				item.image_html = item.image ?
-					'<div style="height: 120px; overflow: hidden;"><img src="' + item.image + '" /></div>' :
-					'{% include "app/website/templates/html/product_missing_image.html" %}';
-				item.price_html = item.price ? ('<p>at ' + item.price + '</p>') : "";
-
-				$(repl('<div class="row">\
-					<div class="col col-lg-9 col-sm-9">\
-						<div class="row">\
-							<div class="col col-lg-3">%(image_html)s</div>\
-							<div class="col col-lg-9">\
-								<h4><a href="%(url)s">%(item_name)s</a></h4>\
-								<p>%(description)s</p>\
-							</div>\
-						</div>\
-					</div>\
-					<div class="col col-lg-3 col-sm-3">\
-						<p><input type="text" placeholder="Qty" value="%(qty)s" \
-							item_code="%(item_code)s" class="cart-input-qty"></p>\
-						%(price_html)s\
-					</div>\
-				</div><hr>', item)).appendTo($cart_wrapper);
-			});
-			
-			$('<p class="text-right"><button type="button" class="btn btn-success checkout-btn">\
-				<span class="icon-ok"></span> Checkout</button></p>')
-				.appendTo($cart_wrapper);
-			
+		if(!(addresses && addresses.length)) {
+			$cart_shipping_address.html('<div class="well">Hey! Go ahead and add an address</div>');
 		} else {
-			$('<p class="alert">No Items added to cart.</p>').appendTo($cart_wrapper);
+			wn.cart.render_address($cart_shipping_address, addresses, doclist[0].shipping_address_name);
+			wn.cart.render_address($cart_billing_address, addresses, doclist[0].customer_address);
 		}
 	},
 	
-	// bind_events: function() {
-	// 	// on change of qty
-	// 	$(".cart-input-qty").on("change", function on_change_of_qty() {
-	// 		wn.cart.set_value_in_cart($(this).attr("item_code"), "qty", $(this).val());
-	// 	});
-	// 	
-	// 	// shopping cart button
-	// 	$(".checkout-btn").on("click", function() {
-	// 		console.log("checkout!");
-	// 		console.log(wn.cart.get_cart());
-	// 		
-	// 		var user_is_logged_in = getCookie("full_name");
-	// 		if(user_is_logged_in) {
-	// 			wn.call({
-	// 				method: "website.helpers.cart.checkout",
-	// 				args: {cart: wn.cart.get_cart()},
-	// 				btn: this,
-	// 				callback: function(r) {
-	// 					console.log(r);
-	// 				}
-	// 			});
-	// 		} else {
-	// 			window.location.href = "login?from=cart";
-	// 		}
-	// 	});
-	// }
+	render_item_row: function($cart_items, doc) {
+		doc.image_html = doc.image ?
+			'<div style="height: 120px; overflow: hidden;"><img src="' + doc.image + '" /></div>' :
+			'{% include "app/website/templates/html/product_missing_image.html" %}';
+			
+		if(!doc.web_short_description) doc.web_short_description = doc.description;
+		
+		$(repl('<div class="row">\
+			<div class="col col-lg-9 col-sm-9">\
+				<div class="row">\
+					<div class="col col-lg-3">%(image_html)s</div>\
+					<div class="col col-lg-9">\
+						<h4><a href="%(page_name)s">%(item_name)s</a></h4>\
+						<p>%(web_short_description)s</p>\
+					</div>\
+				</div>\
+			</div>\
+			<div class="col col-lg-3 col-sm-3">\
+				<div class="input-group item-update-cart">\
+					<input type="text" placeholder="Qty" value="%(qty)s" \
+						data-item-code="%(item_code)s">\
+					<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_address: function($address_wrapper, addresses, address_name) {
+		$.each(addresses, function(i, address) {
+			$(repl('<div class="accordion-group"> \
+				<div class="accordion-heading"> \
+					<div class="row"> \
+						<div class="col col-lg-10 address-title" \
+							data-address-name="%(name)s"><strong>%(name)s</strong></div> \
+						<div class="col col-lg-2"><input type="checkbox" \
+							data-address-name="%(name)s"></div> \
+					</div> \
+				</div> \
+				<div class="accordion-body collapse" data-address-name="%(name)s"> \
+					<div class="accordion-inner">%(display)s</div> \
+				</div> \
+			</div>', address))
+				.css({"margin": "10px auto"})
+				.appendTo($address_wrapper);
+		});
+		
+		$address_wrapper.find(".accordion-heading")
+			.css({
+				"background-color": "#eee",
+				"padding": "10px",
+			})
+			.find(".address-title")
+				.css({"cursor": "pointer"})
+				.on("click", function() {
+					$address_wrapper.find('.accordion-body[data-address-name="'
+						+$(this).attr("data-address-name")+'"]').collapse("toggle");
+				});
+			
+		$address_wrapper.find('input[type="checkbox"]').on("click", function() {
+			if($(this).is(":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).removeAttr("checked");
+					}
+				});
+				
+				wn.call({
+					type: "POST",
+					method: "website.helpers.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) {
+							wn.cart.render(r.message);
+						}
+					}
+				});
+			} else {
+				return false;
+			}
+		});
+		
+		$address_wrapper.find('input[type="checkbox"][data-address-name="'+ address_name +'"]')
+			.attr("checked", "checked");
+			
+		$address_wrapper.find(".accordion-body").collapse({
+			parent: $address_wrapper,
+			toggle: false
+		});
+		
+		$address_wrapper.find('.accordion-body[data-address-name="'+ address_name +'"]')
+			.collapse("show");
+	}
 });
\ No newline at end of file
diff --git a/website/templates/pages/account.html b/website/templates/pages/account.html
index f6992e1..b3fe5df 100644
--- a/website/templates/pages/account.html
+++ b/website/templates/pages/account.html
@@ -5,14 +5,15 @@
 {% block content %}
 <div class="col col-lg-12">
     <ul class="breadcrumb">
-    	<li><a href="index">Home</a> <span class="divider">/</span></li>
+    	<li><a href="index">Home</a></li>
     	<li class="active">My Account</li>
     </ul>
 	<h3>My Account</h3>
-	<p><a href="profile"><i class="icon-user"></i> Change my name, password</a></p>
-	<p><a href="orders"><i class="icon-list"></i> My Orders</a></p>
-	<p><a href="tickets"><i class="icon-tags"></i> My Tickets</a></p>
-	<p><a href="server.py?cmd=web_logout"><i class="icon-signout"></i> Logout</a></p>
+	<p><a href="profile"><i class="icon-user icon-fixed-width"></i> Change my name, password</a></p>
+	<p><a href="addresses"><i class="icon-map-marker icon-fixed-width"></i> My Addresses</a></p>
+	<p><a href="orders"><i class="icon-list icon-fixed-width"></i> My Orders</a></p>
+	<p><a href="tickets"><i class="icon-tags icon-fixed-width"></i> My Tickets</a></p>
+	<p><a href="server.py?cmd=web_logout"><i class="icon-signout icon-fixed-width"></i> Logout</a></p>
 	</ul>
 </div>
 {% endblock %}
\ No newline at end of file
diff --git a/website/templates/pages/address.html b/website/templates/pages/address.html
new file mode 100644
index 0000000..5b90928
--- /dev/null
+++ b/website/templates/pages/address.html
@@ -0,0 +1,123 @@
+{% extends "app/website/templates/html/page.html" %}
+
+{% set title=doc and doc.name or "New Address" %}
+{% set docname=(doc and doc.name or "") %}
+
+{% macro render_fields(docfields) -%}
+{% for df in docfields -%}
+	{% if df.fieldtype in ["Data", "Link"] -%}
+	<fieldset>
+		<label>{{ df.label }}</label>
+		<input type="text" placeholder="Type {{ df.label }}" 
+			data-fieldname="{{ df.fieldname }}" data-fieldtype="{{ df.fieldtype }}"
+			{% if doc and doc.fields.get(df.fieldname) -%} value="{{ doc.fields[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 cint(doc.fields.get(df.fieldname)) -%} checked="checked" {%- endif %}> 
+			{{ df.label }}</label>
+	</fieldset>
+	{% elif df.fieldtype == "Select" -%}
+	<fieldset>
+		<label>{{ df.label }}</label>
+		<select data-fieldname="{{ df.fieldname }}" data-fieldtype="{{ df.fieldtype }}">
+			{% for value in df.options.split("\n") -%}
+			{% if doc and doc.fields.get(df.fieldname) == value -%}
+			<option selected="selected">{{ value }}</option>
+			{% else -%}
+			<option>{{ value }}</option>
+			{%- endif %}
+			{%- endfor %}
+		</select>
+	</fieldset>
+	{%- endif %}
+{%- endfor %}
+{%- endmacro %}
+
+{% block content %}
+<div class="col col-lg-12">
+    <ul class="breadcrumb">
+    	<li><a href="index">Home</a></li>
+    	<li><a href="account">My Account</a></li>
+    	<li><a href="addresses">My Addresses</a></li>
+    	<li class="active">{{ title }}</li>
+    </ul>
+	<h3><i class="icon-map-marker"></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 col-lg-6">
+				{{ render_fields(meta.left_fields) }}
+			</section>
+			<section class="col col-lg-6">
+				{{ render_fields(meta.right_fields) }}
+			</section>
+		</section>
+	</form>
+</div>
+
+<script>
+;(function() {
+	$(document).ready(function() {
+		bind_save();
+	});
+	
+	var bind_save = function() {
+		$("#address-save").on("click", function() {
+			var fields = {
+				name: "{{ docname }}"
+			};
+
+			$("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();
+				}
+			});
+			
+			wn.call({
+				btn: $(this),
+				type: "POST",
+				method: "website.helpers.cart.save_address",
+				args: { fields: fields, address_fieldname: get_url_arg("address_fieldname") },
+				callback: function(r) {
+					if(r.exc) {
+						var msg = "";
+						if(r._server_messages) {
+							msg = JSON.parse(r._server_messages || []).join("<br>");
+						}
+						
+						$("#address-error")
+							.html(msg || "Something went wrong!")
+							.toggle(true);
+					} else if(get_url_arg("address_fieldname")) {
+						window.location.href = "cart";
+					} else {
+						window.location.href = "address?name=" + encodeURIComponent(r.message);
+					}
+				}
+			});
+		});
+	};
+})();
+</script>
+{% endblock %}
+
+{% block css %}
+<style>
+fieldset {
+	margin-bottom: 20px;
+}
+</style>
+{% endblock %}
\ No newline at end of file
diff --git a/website/templates/pages/addresses.html b/website/templates/pages/addresses.html
new file mode 100644
index 0000000..8526666
--- /dev/null
+++ b/website/templates/pages/addresses.html
@@ -0,0 +1,54 @@
+{% extends "app/website/templates/html/page.html" %}
+
+{% set title="My Addresses" %}
+
+{% block content %}
+<div class="col col-lg-12">
+    <ul class="breadcrumb">
+    	<li><a href="index">Home</a></li>
+    	<li><a href="account">My Account</a></li>
+    	<li class="active">My Addresses</li>
+    </ul>
+	<h3><i class="icon-map-marker icon-fixed-width"></i> My Addresses</h3>
+	<hr>
+	<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() {
+	$(document).ready(function() {
+		fetch_addresses();
+	});
+	
+	var fetch_addresses = function() {
+		wn.call({
+			method: "website.helpers.cart.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);
+				});
+			}
+		});
+	};
+})();
+</script>
+{% endblock %}
\ No newline at end of file
diff --git a/website/templates/pages/cart.html b/website/templates/pages/cart.html
index 2619dec..9d5f100 100644
--- a/website/templates/pages/cart.html
+++ b/website/templates/pages/cart.html
@@ -8,7 +8,7 @@
 
 {% block content %}
 <div class="col col-lg-12">
-	<h2><i class="icon-shopping-cart"></i> Shopping Cart</h2>
+	<h2><i class="icon-shopping-cart"></i> {{ title }}</h2>
 	<div class="progress progress-striped active">
 		<div class="progress-bar progress-bar-info" style="width: 100%;"></div>
 	</div>
@@ -20,17 +20,35 @@
 			<div class="col col-lg-9 col-sm-9">
 				<div class="row">
 					<div class="col col-lg-3"></div>
-					<div class="col col-lg-9"><strong>Item Details</strong></div>
+					<div class="col col-lg-9"><h4>Item Details</h4></div>
 				</div>
 			</div>
-			<div class="col col-lg-3 col-sm-3"><strong>Qty</strong></div>
+			<div class="col col-lg-3 col-sm-3"><h4>Qty</h4></div>
 		</div><hr>
 		<div id="cart-items">
 		</div>
-		<hr>
 		<div id="cart-taxes">
 		</div>
+		<hr>
 		<div id="cart-addresses">
+			<div class="row">
+				<div class="col col-lg-6">
+					<h4>Shipping Address</h4>
+					<div id="cart-shipping-address" class="accordion" 
+						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 Address</button>
+				</div>
+				<div class="col col-lg-6">
+					<h4>Billing Address</h4>
+					<div id="cart-billing-address" class="accordion"
+						data-fieldname="customer_address"></div>
+					<button class="btn btn-default" type="button" id="cart-add-billing-address">
+						<span class="icon icon-plus"></span> New Address</button>
+				</div>
+				
+			</div>
+			<hr>
 		</div>
 		<button class="btn btn-success pull-right" type="button">Place Order</button>
 	</div>
diff --git a/website/templates/pages/order.html b/website/templates/pages/order.html
index 2588d39..61afe32 100644
--- a/website/templates/pages/order.html
+++ b/website/templates/pages/order.html
@@ -5,9 +5,9 @@
 {% block content %}
 <div class="col col-lg-12">
     <ul class="breadcrumb">
-    	<li><a href="index">Home</a> <span class="divider">/</span></li>
-    	<li><a href="account">My Account</a> <span class="divider">/</span></li>
-    	<li><a href="orders">My Orders</a> <span class="divider">/</span></li>
+    	<li><a href="index">Home</a></li>
+    	<li><a href="account">My Account</a></li>
+    	<li><a href="orders">My Orders</a></li>
     	<li class="active">{{ doc.name }}</li>
     </ul>
 	<h3><i class="icon-file"></i> {{ doc.name }}</h3>
diff --git a/website/templates/pages/orders.html b/website/templates/pages/orders.html
index f43a474..bb72fc3 100644
--- a/website/templates/pages/orders.html
+++ b/website/templates/pages/orders.html
@@ -14,7 +14,7 @@
     	<li><a href="account">My Account</a> <span class="divider">/</span></li>
     	<li class="active">My Orders</li>
     </ul>
-	<h3><i class="icon-list"></i> My Orders</h3>
+	<h3><i class="icon-list icon-fixed-width"></i> My Orders</h3>
 	<hr>
 	<div id="order-list" style="font-size: 13px;">
 		<div class="progress progress-striped active">
diff --git a/website/templates/pages/partners.html b/website/templates/pages/partners.html
index 93cef3c..c090227 100644
--- a/website/templates/pages/partners.html
+++ b/website/templates/pages/partners.html
@@ -1,10 +1,10 @@
 {% extends "app/website/templates/html/page.html" %}
 
-{% set title="Sales Partners" %}
+{% set title="Partners" %}
 
 {% block content %}
 	<div class="col col-lg-12">
-		<h2 id="blog-title">Partners</h2>
+		<h2 id="blog-title">{{ title }}</h2>
 		<hr>
 		{% for partner_info in partners %}
 		<div class="row">
diff --git a/website/templates/pages/profile.html b/website/templates/pages/profile.html
index 40d6a19..993839e 100644
--- a/website/templates/pages/profile.html
+++ b/website/templates/pages/profile.html
@@ -27,7 +27,7 @@
 		</div>
 		<div class="control-group">
 			<div class="controls">
-			<button id="update_profile" type="submit" class="btn">Update</button>
+				<button id="update_profile" type="submit" class="btn btn-default">Update</button>
 			</div>
 		</div>
 	</form>
diff --git a/website/templates/pages/tickets.html b/website/templates/pages/tickets.html
index f1ee58a..901453d 100644
--- a/website/templates/pages/tickets.html
+++ b/website/templates/pages/tickets.html
@@ -5,11 +5,11 @@
 {% block content %}
 <div class="col col-lg-12">
     <ul class="breadcrumb">
-    	<li><a href="index">Home</a> <span class="divider">/</span></li>
-    	<li><a href="account">My Account</a> <span class="divider">/</span></li>
+    	<li><a href="index">Home</a></li>
+    	<li><a href="account">My Account</a></li>
     	<li class="active">My Tickets</li>
     </ul>
-	<h3><i class="icon-tags"></i> My Tickets</h3>
+	<h3><i class="icon-tags icon-fixed-width"></i> My Tickets</h3>
 	<hr>
 	<div id="ticket-list" style="font-size: 13px;">
 		<div class="progress progress-striped active">