Fixes for model-cleanup frappe/frappe#478
diff --git a/erpnext/accounts/party.py b/erpnext/accounts/party.py
index 601fcd1..6cabf1d 100644
--- a/erpnext/accounts/party.py
+++ b/erpnext/accounts/party.py
@@ -11,15 +11,15 @@
 from erpnext.utilities.doctype.contact.contact import get_contact_details
 
 @frappe.whitelist()
-def get_party_details(party=None, account=None, party_type="Customer", company=None, 
+def get_party_details(party=None, account=None, party_type="Customer", company=None,
 	posting_date=None, price_list=None, currency=None):
 
 	return _get_party_details(party, account, party_type, company, posting_date, price_list, currency)
 
-def _get_party_details(party=None, account=None, party_type="Customer", company=None, 
+def _get_party_details(party=None, account=None, party_type="Customer", company=None,
 	posting_date=None, price_list=None, currency=None, ignore_permissions=False):
 	out = frappe._dict(set_account_and_due_date(party, account, party_type, company, posting_date))
-	
+
 	party = out[party_type.lower()]
 
 	if not ignore_permissions and not frappe.has_permission(party_type, "read", party):
@@ -31,38 +31,41 @@
 	set_contact_details(out, party, party_type)
 	set_other_values(out, party, party_type)
 	set_price_list(out, party, party_type, price_list)
-	
+
 	if not out.get("currency"):
 		out["currency"] = currency
-	
+
 	# sales team
 	if party_type=="Customer":
 		out["sales_team"] = [{
-			"sales_person": d.sales_person, 
+			"sales_person": d.sales_person,
 			"sales_designation": d.sales_designation
 		} for d in party.get("sales_team")]
-	
+
 	return out
 
 def set_address_details(out, party, party_type):
 	billing_address_field = "customer_address" if party_type == "Lead" \
 		else party_type.lower() + "_address"
-	out[billing_address_field] = frappe.db.get_value("Address", 
+	out[billing_address_field] = frappe.db.get_value("Address",
 		{party_type.lower(): party.name, "is_primary_address":1}, "name")
-	
+
 	# address display
 	out.address_display = get_address_display(out[billing_address_field])
-	
+
 	# shipping address
 	if party_type in ["Customer", "Lead"]:
-		out.shipping_address_name = frappe.db.get_value("Address", 
+		out.shipping_address_name = frappe.db.get_value("Address",
 			{party_type.lower(): party.name, "is_shipping_address":1}, "name")
 		out.shipping_address = get_address_display(out["shipping_address_name"])
-	
+
 def set_contact_details(out, party, party_type):
-	out.contact_person = frappe.db.get_value("Contact", 
+	out.contact_person = frappe.db.get_value("Contact",
 		{party_type.lower(): party.name, "is_primary_contact":1}, "name")
-	
+
+	if not out.contact_person:
+		return
+
 	out.update(get_contact_details(out.contact_person))
 
 def set_other_values(out, party, party_type):
@@ -73,7 +76,7 @@
 		to_copy = ["supplier_name", "supplier_type"]
 	for f in to_copy:
 		out[f] = party.get(f)
-	
+
 	# fields prepended with default in Customer doctype
 	for f in ['currency', 'taxes_and_charges'] \
 		+ (['sales_partner', 'commission_rate'] if party_type=="Customer" else []):
@@ -81,16 +84,16 @@
 			out[f] = party.get("default_" + f)
 
 def set_price_list(out, party, party_type, given_price_list):
-	# price list	
+	# price list
 	price_list = get_restrictions().get("Price List")
 	if isinstance(price_list, list):
 		price_list = None
 
 	if not price_list:
 		price_list = party.default_price_list
-		
+
 	if not price_list and party_type=="Customer":
-		price_list =  frappe.db.get_value("Customer Group", 
+		price_list =  frappe.db.get_value("Customer Group",
 			party.customer_group, "default_price_list")
 
 	if not price_list:
@@ -98,9 +101,9 @@
 
 	if price_list:
 		out.price_list_currency = frappe.db.get_value("Price List", price_list, "currency")
-		
+
 	out["selling_price_list" if party.doctype=="Customer" else "buying_price_list"] = price_list
-	
+
 
 def set_account_and_due_date(party, account, party_type, company, posting_date):
 	if not posting_date:
@@ -108,13 +111,13 @@
 		return {
 			party_type.lower(): party
 		}
-	
+
 	if party:
 		account = get_party_account(company, party, party_type)
 	elif account:
 		party = frappe.db.get_value('Account', account, 'master_name')
 
-	account_fieldname = "debit_to" if party_type=="Customer" else "credit_to" 
+	account_fieldname = "debit_to" if party_type=="Customer" else "credit_to"
 
 	out = {
 		party_type.lower(): party,
@@ -133,8 +136,8 @@
 
 		if not acc_head:
 			create_party_account(party, party_type, company)
-	
-		return acc_head		
+
+		return acc_head
 
 def get_due_date(posting_date, party, party_type, account, company):
 	"""Set Due Date = Posting Date + Credit Days"""
@@ -147,34 +150,34 @@
 			credit_days = frappe.db.get_value(party_type, party, "credit_days")
 		if company and not credit_days:
 			credit_days = frappe.db.get_value("Company", company, "credit_days")
-			
+
 		due_date = add_days(posting_date, credit_days) if credit_days else posting_date
 
-	return due_date	
+	return due_date
 
 def create_party_account(party, party_type, company):
 	if not company:
 		frappe.throw(_("Company is required"))
-		
-	company_details = frappe.db.get_value("Company", company, 
+
+	company_details = frappe.db.get_value("Company", company,
 		["abbr", "receivables_group", "payables_group"], as_dict=True)
 	if not frappe.db.exists("Account", (party + " - " + company_details.abbr)):
 		parent_account = company_details.receivables_group \
 			if party_type=="Customer" else company_details.payables_group
 		if not parent_account:
 			frappe.throw(_("Please enter Account Receivable/Payable group in company master"))
-		
+
 		# create
 		account = frappe.get_doc({
 			"doctype": "Account",
 			'account_name': party,
-			'parent_account': parent_account, 
+			'parent_account': parent_account,
 			'group_or_ledger':'Ledger',
-			'company': company, 
-			'master_type': party_type, 
+			'company': company,
+			'master_type': party_type,
 			'master_name': party,
 			"freeze_account": "No",
 			"report_type": "Balance Sheet"
 		}).insert(ignore_permissions=True)
-		
+
 		frappe.msgprint(_("Account Created") + ": " + account.name)
diff --git a/erpnext/buying/doctype/buying_settings/buying_settings.json b/erpnext/buying/doctype/buying_settings/buying_settings.json
index 808c39d..602b0b7 100644
--- a/erpnext/buying/doctype/buying_settings/buying_settings.json
+++ b/erpnext/buying/doctype/buying_settings/buying_settings.json
@@ -1,75 +1,75 @@
 {
- "creation": "2013-06-25 11:04:03.000000", 
- "description": "Settings for Buying Module", 
- "docstatus": 0, 
- "doctype": "DocType", 
- "document_type": "Other", 
+ "creation": "2013-06-25 11:04:03.000000",
+ "description": "Settings for Buying Module",
+ "docstatus": 0,
+ "doctype": "DocType",
+ "document_type": "Other",
  "fields": [
   {
-   "default": "Supplier Name", 
-   "fieldname": "supp_master_name", 
-   "fieldtype": "Select", 
-   "label": "Supplier Naming By", 
-   "options": "Supplier Name\nNaming Series", 
+   "default": "Supplier Name",
+   "fieldname": "supp_master_name",
+   "fieldtype": "Select",
+   "label": "Supplier Naming By",
+   "options": "Supplier Name\nNaming Series",
    "permlevel": 0
-  }, 
+  },
   {
-   "fieldname": "supplier_type", 
-   "fieldtype": "Link", 
-   "label": "Default Supplier Type", 
-   "options": "Supplier Type", 
+   "fieldname": "supplier_type",
+   "fieldtype": "Link",
+   "label": "Default Supplier Type",
+   "options": "Supplier Type",
    "permlevel": 0
-  }, 
+  },
   {
-   "fieldname": "buying_price_list", 
-   "fieldtype": "Link", 
-   "label": "Default Buying Price List", 
-   "options": "Price List", 
+   "fieldname": "buying_price_list",
+   "fieldtype": "Link",
+   "label": "Default Buying Price List",
+   "options": "Price List",
    "permlevel": 0
-  }, 
+  },
   {
-   "fieldname": "column_break_3", 
-   "fieldtype": "Column Break", 
+   "fieldname": "column_break_3",
+   "fieldtype": "Column Break",
    "permlevel": 0
-  }, 
+  },
   {
-   "fieldname": "maintain_same_rate", 
-   "fieldtype": "Check", 
-   "label": "Maintain same rate throughout purchase cycle", 
+   "fieldname": "maintain_same_rate",
+   "fieldtype": "Check",
+   "label": "Maintain same rate throughout purchase cycle",
    "permlevel": 0
-  }, 
+  },
   {
-   "fieldname": "po_required", 
-   "fieldtype": "Select", 
-   "label": "Purchase Order Required", 
-   "options": "No\nYes", 
+   "fieldname": "po_required",
+   "fieldtype": "Select",
+   "label": "Purchase Order Required",
+   "options": "No\nYes",
    "permlevel": 0
-  }, 
+  },
   {
-   "fieldname": "pr_required", 
-   "fieldtype": "Select", 
-   "label": "Purchase Receipt Required", 
-   "options": "No\nYes", 
+   "fieldname": "pr_required",
+   "fieldtype": "Select",
+   "label": "Purchase Receipt Required",
+   "options": "No\nYes",
    "permlevel": 0
   }
- ], 
- "icon": "icon-cog", 
- "idx": 1, 
- "issingle": 1, 
- "modified": "2014-02-19 19:02:00.000000", 
- "modified_by": "Administrator", 
- "module": "Buying", 
- "name": "Buying Settings", 
- "owner": "Administrator", 
+ ],
+ "icon": "icon-cog",
+ "idx": 1,
+ "issingle": 1,
+ "modified": "2014-02-19 19:02:00.000000",
+ "modified_by": "Administrator",
+ "module": "Buying",
+ "name": "Buying Settings",
+ "owner": "Administrator",
  "permissions": [
   {
-   "create": 1, 
-   "email": 1, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "role": "System Manager", 
+   "create": 1,
+   "email": 1,
+   "permlevel": 0,
+   "print": 1,
+   "read": 1,
+   "role": "System Manager",
    "write": 1
   }
  ]
-}
\ No newline at end of file
+}
diff --git a/erpnext/buying/doctype/supplier/supplier.py b/erpnext/buying/doctype/supplier/supplier.py
index e48c0bf..7c9236f 100644
--- a/erpnext/buying/doctype/supplier/supplier.py
+++ b/erpnext/buying/doctype/supplier/supplier.py
@@ -24,15 +24,15 @@
 			self.name = make_autoname(self.naming_series + '.#####')
 
 	def update_address(self):
-		frappe.db.sql("""update `tabAddress` set supplier_name=%s, modified=NOW() 
+		frappe.db.sql("""update `tabAddress` set supplier_name=%s, modified=NOW()
 			where supplier=%s""", (self.supplier_name, self.name))
 
 	def update_contact(self):
-		frappe.db.sql("""update `tabContact` set supplier_name=%s, modified=NOW() 
+		frappe.db.sql("""update `tabContact` set supplier_name=%s, modified=NOW()
 			where supplier=%s""", (self.supplier_name, self.name))
 
 	def update_credit_days_limit(self):
-		frappe.db.sql("""update tabAccount set credit_days = %s where name = %s""", 
+		frappe.db.sql("""update tabAccount set credit_days = %s where name = %s""",
 			(cint(self.credit_days), self.name + " - " + self.get_company_abbr()))
 
 	def on_update(self):
@@ -47,45 +47,45 @@
 
 		# update credit days and limit in account
 		self.update_credit_days_limit()
-		
+
 	def get_company_abbr(self):
 		return frappe.db.sql("select abbr from tabCompany where name=%s", self.company)[0][0]
-	
+
 	def validate(self):
 		#validation for Naming Series mandatory field...
 		if frappe.defaults.get_global_default('supp_master_name') == 'Naming Series':
 			if not self.naming_series:
 				msgprint("Series is Mandatory.", raise_exception=1)
-			
+
 	def get_contacts(self,nm):
 		if nm:
 			contact_details =frappe.db.convert_to_lists(frappe.db.sql("select name, CONCAT(IFNULL(first_name,''),' ',IFNULL(last_name,'')),contact_no,email_id from `tabContact` where supplier = %s", nm))
-	 
+
 			return contact_details
 		else:
 			return ''
-			
+
 	def delete_supplier_address(self):
 		for rec in frappe.db.sql("select * from `tabAddress` where supplier=%s", (self.name,), as_dict=1):
 			frappe.db.sql("delete from `tabAddress` where name=%s",(rec['name']))
-	
+
 	def delete_supplier_contact(self):
-		for contact in frappe.db.sql_list("""select name from `tabContact` 
+		for contact in frappe.db.sql_list("""select name from `tabContact`
 			where supplier=%s""", self.name):
 				frappe.delete_doc("Contact", contact)
-	
+
 	def delete_supplier_account(self):
 		"""delete supplier's ledger if exist and check balance before deletion"""
 		acc = frappe.db.sql("select name from `tabAccount` where master_type = 'Supplier' \
 			and master_name = %s and docstatus < 2", self.name)
 		if acc:
 			frappe.delete_doc('Account', acc[0][0])
-			
+
 	def on_trash(self):
 		self.delete_supplier_address()
 		self.delete_supplier_contact()
 		self.delete_supplier_account()
-		
+
 	def before_rename(self, olddn, newdn, merge=False):
 		from erpnext.accounts.utils import rename_account_for
 		rename_account_for("Supplier", olddn, newdn, merge, self.company)
@@ -99,7 +99,7 @@
 		self.update_supplier_address(newdn, set_field)
 
 	def update_supplier_address(self, newdn, set_field):
-		frappe.db.sql("""update `tabAddress` set address_title=%(newdn)s 
+		frappe.db.sql("""update `tabAddress` set address_title=%(newdn)s
 			{set_field} where supplier=%(newdn)s"""\
 			.format(set_field=set_field), ({"newdn": newdn}))
 
@@ -107,19 +107,19 @@
 def get_dashboard_info(supplier):
 	if not frappe.has_permission("Supplier", "read", supplier):
 		frappe.msgprint("No Permission", raise_exception=True)
-	
+
 	out = {}
 	for doctype in ["Supplier Quotation", "Purchase Order", "Purchase Receipt", "Purchase Invoice"]:
-		out[doctype] = frappe.db.get_value(doctype, 
+		out[doctype] = frappe.db.get_value(doctype,
 			{"supplier": supplier, "docstatus": ["!=", 2] }, "count(*)")
-	
-	billing = frappe.db.sql("""select sum(grand_total), sum(outstanding_amount) 
-		from `tabPurchase Invoice` 
-		where supplier=%s 
+
+	billing = frappe.db.sql("""select sum(grand_total), sum(outstanding_amount)
+		from `tabPurchase Invoice`
+		where supplier=%s
 			and docstatus = 1
 			and fiscal_year = %s""", (supplier, frappe.db.get_default("fiscal_year")))
-	
+
 	out["total_billing"] = billing[0][0]
 	out["total_unpaid"] = billing[0][1]
-	
-	return out
\ No newline at end of file
+
+	return out
diff --git a/erpnext/selling/doctype/selling_settings/selling_settings.json b/erpnext/selling/doctype/selling_settings/selling_settings.json
index ade8449..cc61278 100644
--- a/erpnext/selling/doctype/selling_settings/selling_settings.json
+++ b/erpnext/selling/doctype/selling_settings/selling_settings.json
@@ -1,90 +1,90 @@
 {
- "creation": "2013-06-25 10:25:16.000000", 
- "description": "Settings for Selling Module", 
- "docstatus": 0, 
- "doctype": "DocType", 
- "document_type": "Other", 
+ "creation": "2013-06-25 10:25:16.000000",
+ "description": "Settings for Selling Module",
+ "docstatus": 0,
+ "doctype": "DocType",
+ "document_type": "Other",
  "fields": [
   {
-   "default": "Customer Name", 
-   "fieldname": "cust_master_name", 
-   "fieldtype": "Select", 
-   "label": "Customer Naming By", 
-   "options": "Customer Name\nNaming Series", 
+   "default": "Customer Name",
+   "fieldname": "cust_master_name",
+   "fieldtype": "Select",
+   "label": "Customer Naming By",
+   "options": "Customer Name\nNaming Series",
    "permlevel": 0
-  }, 
+  },
   {
-   "description": "<a href=\"#Sales Browser/Customer Group\">Add / Edit</a>", 
-   "fieldname": "customer_group", 
-   "fieldtype": "Link", 
-   "label": "Default Customer Group", 
-   "options": "Customer Group", 
+   "description": "<a href=\"#Sales Browser/Customer Group\">Add / Edit</a>",
+   "fieldname": "customer_group",
+   "fieldtype": "Link",
+   "label": "Default Customer Group",
+   "options": "Customer Group",
    "permlevel": 0
-  }, 
+  },
   {
-   "description": "<a href=\"#Sales Browser/Territory\">Add / Edit</a>", 
-   "fieldname": "territory", 
-   "fieldtype": "Link", 
-   "label": "Default Territory", 
-   "options": "Territory", 
+   "description": "<a href=\"#Sales Browser/Territory\">Add / Edit</a>",
+   "fieldname": "territory",
+   "fieldtype": "Link",
+   "label": "Default Territory",
+   "options": "Territory",
    "permlevel": 0
-  }, 
+  },
   {
-   "fieldname": "selling_price_list", 
-   "fieldtype": "Link", 
-   "label": "Default Price List", 
-   "options": "Price List", 
+   "fieldname": "selling_price_list",
+   "fieldtype": "Link",
+   "label": "Default Price List",
+   "options": "Price List",
    "permlevel": 0
-  }, 
+  },
   {
-   "fieldname": "column_break_5", 
-   "fieldtype": "Column Break", 
+   "fieldname": "column_break_5",
+   "fieldtype": "Column Break",
    "permlevel": 0
-  }, 
+  },
   {
-   "fieldname": "so_required", 
-   "fieldtype": "Select", 
-   "label": "Sales Order Required", 
-   "options": "No\nYes", 
+   "fieldname": "so_required",
+   "fieldtype": "Select",
+   "label": "Sales Order Required",
+   "options": "No\nYes",
    "permlevel": 0
-  }, 
+  },
   {
-   "fieldname": "dn_required", 
-   "fieldtype": "Select", 
-   "label": "Delivery Note Required", 
-   "options": "No\nYes", 
+   "fieldname": "dn_required",
+   "fieldtype": "Select",
+   "label": "Delivery Note Required",
+   "options": "No\nYes",
    "permlevel": 0
-  }, 
+  },
   {
-   "fieldname": "maintain_same_sales_rate", 
-   "fieldtype": "Check", 
-   "label": "Maintain Same Rate Throughout Sales Cycle", 
+   "fieldname": "maintain_same_sales_rate",
+   "fieldtype": "Check",
+   "label": "Maintain Same Rate Throughout Sales Cycle",
    "permlevel": 0
-  }, 
+  },
   {
-   "fieldname": "editable_price_list_rate", 
-   "fieldtype": "Check", 
-   "label": "Allow user to edit Price List Rate in transactions", 
+   "fieldname": "editable_price_list_rate",
+   "fieldtype": "Check",
+   "label": "Allow user to edit Price List Rate in transactions",
    "permlevel": 0
   }
- ], 
- "icon": "icon-cog", 
- "idx": 1, 
- "issingle": 1, 
- "modified": "2014-02-19 18:35:36.000000", 
- "modified_by": "Administrator", 
- "module": "Selling", 
- "name": "Selling Settings", 
- "owner": "Administrator", 
+ ],
+ "icon": "icon-cog",
+ "idx": 1,
+ "issingle": 1,
+ "modified": "2014-02-19 18:35:36.000000",
+ "modified_by": "Administrator",
+ "module": "Selling",
+ "name": "Selling Settings",
+ "owner": "Administrator",
  "permissions": [
   {
-   "create": 1, 
-   "email": 1, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "role": "System Manager", 
+   "create": 1,
+   "email": 1,
+   "permlevel": 0,
+   "print": 1,
+   "read": 1,
+   "role": "System Manager",
    "write": 1
   }
  ]
-}
\ No newline at end of file
+}
diff --git a/erpnext/setup/install.py b/erpnext/setup/install.py
index 5128e36..71b6203 100644
--- a/erpnext/setup/install.py
+++ b/erpnext/setup/install.py
@@ -20,7 +20,7 @@
 def import_country_and_currency():
 	from frappe.country_info import get_all
 	data = get_all()
-	
+
 	for name in data:
 		country = frappe._dict(data[name])
 		if not frappe.db.exists("Country", name):
@@ -31,7 +31,7 @@
 				"date_format": country.date_format or "dd-mm-yyyy",
 				"time_zones": "\n".join(country.timezones or [])
 			}).insert()
-		
+
 		if country.currency and not frappe.db.exists("Currency", country.currency):
 			frappe.get_doc({
 				"doctype": "Currency",
@@ -44,6 +44,9 @@
 
 def import_defaults():
 	records = [
+		# role
+		{'doctype': "Role", "role_name": "Analytics"},
+
 		# item group
 		{'doctype': 'Item Group', 'item_group_name': 'All Item Groups', 'is_group': 'Yes', 'parent_item_group': ''},
 		{'doctype': 'Item Group', 'item_group_name': 'Products', 'is_group': 'No', 'parent_item_group': 'All Item Groups'},
@@ -51,40 +54,40 @@
 		{'doctype': 'Item Group', 'item_group_name': 'Services', 'is_group': 'No', 'parent_item_group': 'All Item Groups'},
 		{'doctype': 'Item Group', 'item_group_name': 'Sub Assemblies', 'is_group': 'No', 'parent_item_group': 'All Item Groups'},
 		{'doctype': 'Item Group', 'item_group_name': 'Consumable', 'is_group': 'No', 'parent_item_group': 'All Item Groups'},
-		
+
 		# deduction type
 		{'doctype': 'Deduction Type', 'name': 'Income Tax', 'description': 'Income Tax', 'deduction_name': 'Income Tax'},
 		{'doctype': 'Deduction Type', 'name': 'Professional Tax', 'description': 'Professional Tax', 'deduction_name': 'Professional Tax'},
 		{'doctype': 'Deduction Type', 'name': 'Provident Fund', 'description': 'Provident fund', 'deduction_name': 'Provident Fund'},
-		
+
 		# earning type
 		{'doctype': 'Earning Type', 'name': 'Basic', 'description': 'Basic', 'earning_name': 'Basic', 'taxable': 'Yes'},
 		{'doctype': 'Earning Type', 'name': 'House Rent Allowance', 'description': 'House Rent Allowance', 'earning_name': 'House Rent Allowance', 'taxable': 'No'},
-		
+
 		# expense claim type
 		{'doctype': 'Expense Claim Type', 'name': 'Calls', 'expense_type': 'Calls'},
 		{'doctype': 'Expense Claim Type', 'name': 'Food', 'expense_type': 'Food'},
 		{'doctype': 'Expense Claim Type', 'name': 'Medical', 'expense_type': 'Medical'},
 		{'doctype': 'Expense Claim Type', 'name': 'Others', 'expense_type': 'Others'},
 		{'doctype': 'Expense Claim Type', 'name': 'Travel', 'expense_type': 'Travel'},
-		
+
 		# leave type
 		{'doctype': 'Leave Type', 'leave_type_name': 'Casual Leave', 'name': 'Casual Leave', 'is_encash': 1, 'is_carry_forward': 1, 'max_days_allowed': '3', },
 		{'doctype': 'Leave Type', 'leave_type_name': 'Compensatory Off', 'name': 'Compensatory Off', 'is_encash': 0, 'is_carry_forward': 0, },
 		{'doctype': 'Leave Type', 'leave_type_name': 'Sick Leave', 'name': 'Sick Leave', 'is_encash': 0, 'is_carry_forward': 0, },
 		{'doctype': 'Leave Type', 'leave_type_name': 'Privilege Leave', 'name': 'Privilege Leave', 'is_encash': 0, 'is_carry_forward': 0, },
 		{'doctype': 'Leave Type', 'leave_type_name': 'Leave Without Pay', 'name': 'Leave Without Pay', 'is_encash': 0, 'is_carry_forward': 0, 'is_lwp':1},
-		
+
 		# territory
 		{'doctype': 'Territory', 'territory_name': 'All Territories', 'is_group': 'Yes', 'name': 'All Territories', 'parent_territory': ''},
-			
+
 		# customer group
 		{'doctype': 'Customer Group', 'customer_group_name': 'All Customer Groups', 'is_group': 'Yes', 	'name': 'All Customer Groups', 'parent_customer_group': ''},
 		{'doctype': 'Customer Group', 'customer_group_name': 'Individual', 'is_group': 'No', 'parent_customer_group': 'All Customer Groups'},
 		{'doctype': 'Customer Group', 'customer_group_name': 'Commercial', 'is_group': 'No', 'parent_customer_group': 'All Customer Groups'},
 		{'doctype': 'Customer Group', 'customer_group_name': 'Non Profit', 'is_group': 'No', 'parent_customer_group': 'All Customer Groups'},
 		{'doctype': 'Customer Group', 'customer_group_name': 'Government', 'is_group': 'No', 'parent_customer_group': 'All Customer Groups'},
-			
+
 		# supplier type
 		{'doctype': 'Supplier Type', 'supplier_type': 'Services'},
 		{'doctype': 'Supplier Type', 'supplier_type': 'Local'},
@@ -93,33 +96,33 @@
 		{'doctype': 'Supplier Type', 'supplier_type': 'Hardware'},
 		{'doctype': 'Supplier Type', 'supplier_type': 'Pharmaceutical'},
 		{'doctype': 'Supplier Type', 'supplier_type': 'Distributor'},
-		
+
 		# Sales Person
 		{'doctype': 'Sales Person', 'sales_person_name': 'Sales Team', 'is_group': "Yes", "parent_sales_person": ""},
-		
+
 		# UOM
-		{'uom_name': 'Unit', 'doctype': 'UOM', 'name': 'Unit', "must_be_whole_number": 1}, 
-		{'uom_name': 'Box', 'doctype': 'UOM', 'name': 'Box', "must_be_whole_number": 1}, 
-		{'uom_name': 'Kg', 'doctype': 'UOM', 'name': 'Kg'}, 
-		{'uom_name': 'Nos', 'doctype': 'UOM', 'name': 'Nos', "must_be_whole_number": 1}, 
-		{'uom_name': 'Pair', 'doctype': 'UOM', 'name': 'Pair', "must_be_whole_number": 1}, 
-		{'uom_name': 'Set', 'doctype': 'UOM', 'name': 'Set', "must_be_whole_number": 1}, 
+		{'uom_name': 'Unit', 'doctype': 'UOM', 'name': 'Unit', "must_be_whole_number": 1},
+		{'uom_name': 'Box', 'doctype': 'UOM', 'name': 'Box', "must_be_whole_number": 1},
+		{'uom_name': 'Kg', 'doctype': 'UOM', 'name': 'Kg'},
+		{'uom_name': 'Nos', 'doctype': 'UOM', 'name': 'Nos', "must_be_whole_number": 1},
+		{'uom_name': 'Pair', 'doctype': 'UOM', 'name': 'Pair', "must_be_whole_number": 1},
+		{'uom_name': 'Set', 'doctype': 'UOM', 'name': 'Set', "must_be_whole_number": 1},
 		{'uom_name': 'Hour', 'doctype': 'UOM', 'name': 'Hour'},
-		{'uom_name': 'Minute', 'doctype': 'UOM', 'name': 'Minute'}, 
+		{'uom_name': 'Minute', 'doctype': 'UOM', 'name': 'Minute'},
 
 	]
-	
+
 	from frappe.modules import scrub
 	for r in records:
 		doc = frappe.get_doc(r)
-		
+
 		# ignore mandatory for root
 		parent_link_field = ("parent_" + scrub(doc.doctype))
 		if doc.meta.get_field(parent_link_field) and not doc.get(parent_link_field):
 			doc.ignore_mandatory = True
-		
+
 		doc.insert()
-		
+
 def feature_setup():
 	"""save global defaults and features setup"""
 	doc = frappe.get_doc("Features Setup", "Features Setup")
diff --git a/erpnext/setup/page/setup_wizard/setup_wizard.py b/erpnext/setup/page/setup_wizard/setup_wizard.py
index 2bd906f..a2fb7d7 100644
--- a/erpnext/setup/page/setup_wizard/setup_wizard.py
+++ b/erpnext/setup/page/setup_wizard/setup_wizard.py
@@ -80,7 +80,6 @@
 		'year_end_date': args.get('fy_end_date'),
 	}).insert()
 
-	print args
 	# Company
 	frappe.get_doc({
 		"doctype":"Company",
@@ -97,16 +96,16 @@
 def create_price_lists(args):
 	for pl_type in ["Selling", "Buying"]:
 		frappe.get_doc({
-				"doctype": "Price List",
-				"price_list_name": "Standard " + pl_type,
-				"enabled": 1,
-				"buying": 1 if pl_type == "Buying" else 0,
-				"selling": 1 if pl_type == "Selling" else 0,
-				"currency": args["currency"],
-				"valid_for_territories": {
-					"territory": "All Territories"
-				}
-			}).insert()
+			"doctype": "Price List",
+			"price_list_name": "Standard " + pl_type,
+			"enabled": 1,
+			"buying": 1 if pl_type == "Buying" else 0,
+			"selling": 1 if pl_type == "Selling" else 0,
+			"currency": args["currency"],
+			"valid_for_territories": [{
+				"territory": "All Territories"
+			}]
+		}).insert()
 
 def set_defaults(args):
 	# enable default currency
diff --git a/erpnext/stock/doctype/price_list/price_list.py b/erpnext/stock/doctype/price_list/price_list.py
index fa53aba..424d6a2 100644
--- a/erpnext/stock/doctype/price_list/price_list.py
+++ b/erpnext/stock/doctype/price_list/price_list.py
@@ -12,8 +12,11 @@
 	def validate(self):
 		if not cint(self.buying) and not cint(self.selling):
 			throw(_("Price List must be applicable for Buying or Selling"))
-				
-		if not self.get("valid_for_territories"):
+
+		try:
+			# at least one territory
+			self.validate_table_has_rows("valid_for_territories")
+		except frappe.EmptyTableError:
 			# if no territory, set default territory
 			if frappe.defaults.get_user_default("territory"):
 				self.append("valid_for_territories", {
@@ -21,8 +24,7 @@
 					"territory": frappe.defaults.get_user_default("territory")
 				})
 			else:
-				# at least one territory
-				self.validate_table_has_rows("valid_for_territories")
+				raise
 
 	def on_update(self):
 		self.set_default_if_missing()
@@ -38,8 +40,8 @@
 				frappe.set_value("Buying Settings", "Buying Settings", "buying_price_list", self.name)
 
 	def update_item_price(self):
-		frappe.db.sql("""update `tabItem Price` set currency=%s, 
-			buying=%s, selling=%s, modified=NOW() where price_list=%s""", 
+		frappe.db.sql("""update `tabItem Price` set currency=%s,
+			buying=%s, selling=%s, modified=NOW() where price_list=%s""",
 			(self.currency, cint(self.buying), cint(self.selling), self.name))
 
 	def on_trash(self):
@@ -50,6 +52,6 @@
 			if self.name == b.get(price_list_fieldname):
 				b.set(price_list_fieldname, None)
 				b.save()
-		
+
 		for module in ["Selling", "Buying"]:
-			_update_default_price_list(module)
\ No newline at end of file
+			_update_default_price_list(module)