Merge branch 'master' of github.com:webnotes/erpnext
diff --git a/accounts/doctype/account/account.py b/accounts/doctype/account/account.py
index 0e3ace1..14af7cf 100644
--- a/accounts/doctype/account/account.py
+++ b/accounts/doctype/account/account.py
@@ -23,8 +23,6 @@
 sql = webnotes.conn.sql
 get_value = webnotes.conn.get_value
 
-test_records = []
-
 class DocType:
 	def __init__(self,d,dl):
 		self.doc, self.doclist = d,dl
@@ -208,3 +206,31 @@
 	return webnotes.conn.sql("""select name from tabAccount 
 		where group_or_ledger = 'Group' and docstatus != 2 and company = '%s' 
 		and name like '%%%s%%'""" % (args["company"], txt))
+
+def make_test_records(verbose):
+	from webnotes.test_runner import load_module_and_make_records, make_test_objects
+	
+	load_module_and_make_records("Company", verbose)
+	
+	accounts = [
+		# [account_name, parent_account, group_or_ledger]
+		["_Test Account Stock Expenses", "Direct Expenses - _TC", "Group"],
+		["_Test Account Shipping Charges", "_Test Account Stock Expenses - _TC", "Ledger"],
+		["_Test Account Customs Duty", "_Test Account Stock Expenses - _TC", "Ledger"],
+		["_Test Account Tax Assets", "Current Assets - _TC", "Group"],
+		["_Test Account VAT", "_Test Account Tax Assets - _TC", "Ledger"],
+		["_Test Account Cost for Goods Sold", "Expenses - _TC", "Ledger"],
+		["_Test Account Excise Duty", "_Test Account Tax Assets - _TC", "Ledger"],
+		["_Test Account Education Cess", "_Test Account Tax Assets - _TC", "Ledger"],
+		["_Test Account S&H Education Cess", "_Test Account Tax Assets - _TC", "Ledger"],
+		["_Test Account CST", "Direct Expenses - _TC", "Ledger"],
+		["_Test Account Discount", "Direct Expenses - _TC", "Ledger"]
+	]
+
+	return make_test_objects([[{
+			"doctype": "Account",
+			"account_name": account_name,
+			"parent_account": parent_account,
+			"company": "_Test Company",
+			"group_or_ledger": group_or_ledger
+		}] for account_name, parent_account, group_or_ledger in accounts])
\ No newline at end of file
diff --git a/accounts/doctype/cost_center/cost_center.py b/accounts/doctype/cost_center/cost_center.py
index d23b086..65d1f68 100644
--- a/accounts/doctype/cost_center/cost_center.py
+++ b/accounts/doctype/cost_center/cost_center.py
@@ -98,3 +98,13 @@
 			(cost_center_name, old))
 
 		return " - ".join(parts)	
+
+test_records = [
+	[{
+		"doctype": "Cost Center",
+		"cost_center_name": "_Test Cost Center",
+		"parent_cost_center": "Root - _TC",
+		"company_name": "_Test Company",
+		"group_or_ledger": "Ledger"
+	}],
+]
\ No newline at end of file
diff --git a/accounts/doctype/fiscal_year/fiscal_year.py b/accounts/doctype/fiscal_year/fiscal_year.py
index d5dff6e..3413477 100644
--- a/accounts/doctype/fiscal_year/fiscal_year.py
+++ b/accounts/doctype/fiscal_year/fiscal_year.py
@@ -31,6 +31,11 @@
 		
 		msgprint(self.doc.name + _(""" is now the default Fiscal Year. \
 			Please refresh your browser for the change to take effect."""))
-			
-test_records = [[{"doctype":"Fiscal Year", "year":"_Test Fiscal Year", 
-	"year_start_date":"2013-01-01"}]]
\ No newline at end of file
+
+test_records = [
+	[{
+		"doctype": "Fiscal Year", 
+		"year": "_Test Fiscal Year", 
+		"year_start_date": "2013-01-01"
+	}]
+]
\ No newline at end of file
diff --git a/accounts/doctype/purchase_invoice/purchase_invoice.py b/accounts/doctype/purchase_invoice/purchase_invoice.py
index 98bfda5..8b65e0d 100644
--- a/accounts/doctype/purchase_invoice/purchase_invoice.py
+++ b/accounts/doctype/purchase_invoice/purchase_invoice.py
@@ -526,4 +526,4 @@
 
 	def on_update(self):
 		pass
-		
+
diff --git a/accounts/doctype/purchase_invoice/test_purchase_invoice.py b/accounts/doctype/purchase_invoice/test_purchase_invoice.py
index f7cfc96..d13af0e 100644
--- a/accounts/doctype/purchase_invoice/test_purchase_invoice.py
+++ b/accounts/doctype/purchase_invoice/test_purchase_invoice.py
@@ -20,7 +20,6 @@
 import webnotes
 import webnotes.model
 from webnotes.utils import nowdate
-from webnotes.test_runner import make_test_records
 
 from stock.doctype.purchase_receipt import test_purchase_receipt
 
@@ -147,9 +146,9 @@
 		self.load_test_data()
 		
 	def load_test_data(self):
-		make_test_records("Company")
+		from webnotes.test_runner import make_test_records
+		make_test_records("Purchase Invoice", verbose=0)
 		
-			
 	def test_gl_entries(self):
 		wrapper = webnotes.model_wrapper(purchase_invoice_doclist).insert()
 		wrapper.submit()
@@ -172,7 +171,7 @@
 		for d in gl_entries:
 			self.assertEqual([d.debit, d.credit], expected_gl_entries.get(d.account))
 			
-	def test_purchase_invoice_calculation(self):
+	def atest_purchase_invoice_calculation(self):
 		test_doclist = [] + purchase_invoice_doclist
 		for doc in test_doclist:
 			if doc["doctype"] == "Purchase Taxes and Charges":
@@ -205,42 +204,8 @@
 		for i, item in enumerate(wrapper.doclist.get({"parentfield": "entries"})):
 			self.assertEqual(item.item_code, expected_values[i][0])
 			self.assertEqual(item.item_tax_amount, expected_values[i][1])
-		
-		
-	# def test_purchase_invoice_calculation(self):
-	# 	from webnotes.model.doclist import DocList
-	# 	wrapper = webnotes.insert(DocList(purchase_invoice_doclist))
-	# 	wrapper.load_from_db()
-	# 	dl = wrapper.doclist
-	# 
-	# 	# test net total
-	# 	self.assertEqual(dl[0].net_total, 1250)
-	# 
-	# 	# test tax amounts and totals
-		# expected_values = [
-		# 	["Shipping Charges - %s" % abbr, 100, 1350],
-		# 	["Customs Duty - %s" % abbr, 125, 1350],
-		# 	["Excise Duty - %s" % abbr, 140, 1490],
-		# 	["Education Cess - %s" % abbr, 2.8, 1492.8],
-		# 	["S&H Education Cess - %s" % abbr, 1.4, 1494.2],
-		# 	["CST - %s" % abbr, 29.88, 1524.08],
-		# 	["VAT - Test - %s" % abbr, 156.25, 1680.33],
-		# 	["Discount - %s" % abbr, -168.03, 1512.30],
-		# ]		
-	# 	for i, tax in enumerate(dl.get({"parentfield": "taxes_and_charges"})):
-	# 		# print tax.account_head, tax.tax_amount, tax.total
-			# self.assertEqual(tax.account_head, expected_values[i][0])
-			# self.assertEqual(tax.tax_amount, expected_values[i][1])
-			# self.assertEqual(tax.total, expected_values[i][2])
-	# 
-	# 	# test item tax amount
-	# 	expected_values = [
-	# 		["Home Desktop 100", 90],
-	# 		["Home Desktop 200", 135]
-	# 	]
-	# 	for i, item in enumerate(dl.get({"parentfield": "purchase_invoice_items"})):
-	# 		self.assertEqual(item.item_code, expected_values[i][0])
-	# 		self.assertEqual(item.valuation_tax_amount, expected_values[i][1])
+			
+		# self.assertEqual(dl[0].net_total, 1250)
 
 	def tearDown(self):
 		webnotes.conn.rollback()
\ No newline at end of file
diff --git a/buying/doctype/supplier/supplier.py b/buying/doctype/supplier/supplier.py
index 096a43e..0149f81 100644
--- a/buying/doctype/supplier/supplier.py
+++ b/buying/doctype/supplier/supplier.py
@@ -182,3 +182,12 @@
 		#update master_name in doctype account
 		webnotes.conn.sql("""update `tabAccount` set master_name = %s, 
 			master_type = 'Supplier' where master_name = %s""" , (new,old))
+
+test_records = [
+	[{
+		"doctype": "Supplier",
+		"supplier_name": "_Test Supplier",
+		"supplier_type": "_Test Supplier Type",
+		"company": "_Test Company"
+	}]
+]
\ No newline at end of file
diff --git a/controllers/buying_controller.py b/controllers/buying_controller.py
index f416b85..511ca17 100644
--- a/controllers/buying_controller.py
+++ b/controllers/buying_controller.py
@@ -86,4 +86,12 @@
 		 		self.doc.currency)
 		
 	def calculate_taxes_and_totals(self):
-		pass
\ No newline at end of file
+		self.doc.conversion_rate = flt(self.doc.conversion_rate)
+		
+		# self.calculate_item_values()
+		# self.initialize_taxes()
+		# self.calculate_net_total()
+		# self.calculate_taxes()
+		# self.calculate_totals()
+		# self.set_total_in_words()
+		
\ No newline at end of file
diff --git a/hr/doctype/leave_application/test_leave_application.py b/hr/doctype/leave_application/test_leave_application.py
index e7c1bcc..22164a7 100644
--- a/hr/doctype/leave_application/test_leave_application.py
+++ b/hr/doctype/leave_application/test_leave_application.py
@@ -1,6 +1,9 @@
 import sys
 import unittest
 
+if __name__=="__main__":
+	sys.path.extend([".", "app", "lib"])
+
 from hr.doctype.leave_application.leave_application import LeaveDayBlockedError
 
 class TestLeaveApplication(unittest.TestCase):
@@ -53,7 +56,6 @@
 	}]]
 
 if __name__=="__main__":
-	sys.path.extend(["app", "lib"])
 	import webnotes
 	webnotes.connect()
 
diff --git a/selling/doctype/customer/customer.py b/selling/doctype/customer/customer.py
index 01fa69c..315e793 100644
--- a/selling/doctype/customer/customer.py
+++ b/selling/doctype/customer/customer.py
@@ -249,3 +249,13 @@
 		#update master_name in doctype account
 		webnotes.conn.sql("""update `tabAccount` set master_name = %s, 
 			master_type = 'Customer' where master_name = %s""", (new,old))
+
+test_records = [
+	[{
+		"doctype": "Customer",
+		"customer_type": "Individual",
+		"customer_group": "_Test Customer Group",
+		"territory": "_Test Territory",
+		"company": "_Test Company"
+	}]
+]
\ No newline at end of file
diff --git a/setup/doctype/brand/brand.py b/setup/doctype/brand/brand.py
index 7f48feb..19546da 100644
--- a/setup/doctype/brand/brand.py
+++ b/setup/doctype/brand/brand.py
@@ -19,4 +19,11 @@
 
 class DocType:
 	def __init__(self, d, dl):
-		self.doc, self.doclist = d, dl
\ No newline at end of file
+		self.doc, self.doclist = d, dl
+		
+test_records = [
+	[{
+		"doctype": "Brand",
+		"brand": "_Test Brand"
+	}]
+]
\ No newline at end of file
diff --git a/setup/doctype/company/company.py b/setup/doctype/company/company.py
index b36253e..a951af5 100644
--- a/setup/doctype/company/company.py
+++ b/setup/doctype/company/company.py
@@ -258,9 +258,9 @@
 
 test_records = [
 	[{
+		"doctype": "Company",
 		"company_name": "_Test Company",
-		"abbr": "TC",
+		"abbr": "_TC",
 		"default_currency": "INR",
-		"doctype": "Company"
-	}]
+	}],
 ]
\ No newline at end of file
diff --git a/setup/doctype/country/country.py b/setup/doctype/country/country.py
index 7f48feb..360f679 100644
--- a/setup/doctype/country/country.py
+++ b/setup/doctype/country/country.py
@@ -19,4 +19,11 @@
 
 class DocType:
 	def __init__(self, d, dl):
-		self.doc, self.doclist = d, dl
\ No newline at end of file
+		self.doc, self.doclist = d, dl
+		
+test_records = [
+	[{
+		"doctype": "Country",
+		"country_name": "_Test Country"
+	}]
+]
\ No newline at end of file
diff --git a/setup/doctype/currency/currency.py b/setup/doctype/currency/currency.py
index 73076cb..7794430 100644
--- a/setup/doctype/currency/currency.py
+++ b/setup/doctype/currency/currency.py
@@ -20,5 +20,3 @@
 class DocType:
 	def __init__(self, d, dl):
 		self.doc, self.doclist = d, dl
-		
-test_records = []
\ No newline at end of file
diff --git a/setup/doctype/customer_group/customer_group.py b/setup/doctype/customer_group/customer_group.py
index b34d3c6..fa81dca 100644
--- a/setup/doctype/customer_group/customer_group.py
+++ b/setup/doctype/customer_group/customer_group.py
@@ -16,9 +16,6 @@
 
 from __future__ import unicode_literals
 import webnotes
-
-from webnotes.model import db_exists
-from webnotes.model.wrapper import copy_doclist
 from webnotes import msgprint
 
 sql = webnotes.conn.sql
@@ -63,4 +60,13 @@
 				You can not trash/cancel/delete this customer group.", raise_exception=1)
 
 		# rebuild tree
-		super(DocType, self).on_trash()
\ No newline at end of file
+		super(DocType, self).on_trash()
+
+test_records = [
+	[{
+		"doctype": "Customer Group",
+		"customer_group_name": "_Test Customer Group",
+		"parent_customer_group": "All Customer Groups",
+		"is_group": "No"
+	}]
+]
\ No newline at end of file
diff --git a/setup/doctype/item_group/item_group.py b/setup/doctype/item_group/item_group.py
index 32c5d52..c0fd906 100644
--- a/setup/doctype/item_group/item_group.py
+++ b/setup/doctype/item_group/item_group.py
@@ -67,4 +67,19 @@
 
 		if self.doc.slideshow:
 			from website.helpers.slideshow import get_slideshow
-			get_slideshow(self)
\ No newline at end of file
+			get_slideshow(self)
+			
+test_records = [
+	[{
+		"doctype": "Item Group",
+		"item_group_name": "_Test Item Group",
+		"parent_item_group": "All Item Groups",
+		"is_group": "No"
+	}],
+	[{
+		"doctype": "Item Group",
+		"item_group_name": "_Test Item Group Desktops",
+		"parent_item_group": "All Item Groups",
+		"is_group": "No"
+	}],
+]
\ No newline at end of file
diff --git a/setup/doctype/territory/territory.py b/setup/doctype/territory/territory.py
index 6d2da6a..11bd4cc 100644
--- a/setup/doctype/territory/territory.py
+++ b/setup/doctype/territory/territory.py
@@ -32,4 +32,13 @@
 		for d in getlist(self.doclist, 'target_details'):
 			if not flt(d.target_qty) and not flt(d.target_amount):
 				msgprint("Either target qty or target amount is mandatory.")
-				raise Exception		
\ No newline at end of file
+				raise Exception
+				
+test_records = [
+	[{
+		"doctype": "Territory",
+		"territory_name": "_Test Territory",
+		"parent_territory": "All Territories",
+		"is_group": "No",
+	}]
+]
\ No newline at end of file
diff --git a/setup/doctype/uom/uom.py b/setup/doctype/uom/uom.py
index 7f48feb..733cb57 100644
--- a/setup/doctype/uom/uom.py
+++ b/setup/doctype/uom/uom.py
@@ -19,4 +19,11 @@
 
 class DocType:
 	def __init__(self, d, dl):
-		self.doc, self.doclist = d, dl
\ No newline at end of file
+		self.doc, self.doclist = d, dl
+		
+test_records = [
+	[{
+		"doctype": "UOM",
+		"uom_name": "_Test UOM"
+	}]
+]
\ No newline at end of file
diff --git a/setup/doctype/warehouse_type/warehouse_type.py b/setup/doctype/warehouse_type/warehouse_type.py
index 7f48feb..451db41 100644
--- a/setup/doctype/warehouse_type/warehouse_type.py
+++ b/setup/doctype/warehouse_type/warehouse_type.py
@@ -19,4 +19,11 @@
 
 class DocType:
 	def __init__(self, d, dl):
-		self.doc, self.doclist = d, dl
\ No newline at end of file
+		self.doc, self.doclist = d, dl
+		
+test_records = [
+	[{
+		"doctype": "Warehouse Type",
+		"warehouse_type": "_Test Warehouse Type"
+	}]
+]
\ No newline at end of file
diff --git a/stock/doctype/item/item.py b/stock/doctype/item/item.py
index 2bbf48a..b2923b1 100644
--- a/stock/doctype/item/item.py
+++ b/stock/doctype/item/item.py
@@ -220,4 +220,48 @@
 
 		if self.doc.slideshow:
 			from website.helpers.slideshow import get_slideshow
-			get_slideshow(self)
\ No newline at end of file
+			get_slideshow(self)
+			
+test_records = [
+	[{
+		"doctype": "Item",
+		"item_code": "_Test Item Home Desktop 100",
+		"item_name": "_Test Item Home Desktop 100",
+		"description": "_Test Item Home Desktop 100",
+		"item_group": "_Test Item Group Desktops",
+		"is_stock_item": "Yes",
+		"is_asset_item": "No",
+		"has_batch_no": "No",
+		"has_serial_no": "No",
+		"is_purchase_item": "Yes",
+		"is_sales_item": "Yes",
+		"is_service_item": "No",
+		"is_sample_item": "No",
+		"inspection_required": "No",
+		"is_pro_applicable": "No",
+		"is_sub_contracted_item": "No",
+	},
+	{
+		"doctype": "Item Tax",
+		"tax_type": "_Test Account Excise Duty - _TC",
+		"tax_rate": 10
+	}],
+	[{
+		"doctype": "Item",
+		"item_code": "_Test Item Home Desktop 200",
+		"item_name": "_Test Item Home Desktop 200",
+		"description": "_Test Item Home Desktop 200",
+		"item_group": "_Test Item Group Desktops",
+		"is_stock_item": "Yes",
+		"is_asset_item": "No",
+		"has_batch_no": "No",
+		"has_serial_no": "No",
+		"is_purchase_item": "Yes",
+		"is_sales_item": "Yes",
+		"is_service_item": "No",
+		"is_sample_item": "No",
+		"inspection_required": "No",
+		"is_pro_applicable": "No",
+		"is_sub_contracted_item": "No",
+	}],
+]
\ No newline at end of file
diff --git a/stock/doctype/warehouse/warehouse.py b/stock/doctype/warehouse/warehouse.py
index 7c3cbd6..a4ee370 100644
--- a/stock/doctype/warehouse/warehouse.py
+++ b/stock/doctype/warehouse/warehouse.py
@@ -18,7 +18,6 @@
 import webnotes
 
 from webnotes.utils import cstr, flt, validate_email_add
-from webnotes.model.doc import Document
 from webnotes.model.code import get_obj
 from webnotes import msgprint
 
@@ -204,7 +203,15 @@
 		# delete cancelled sle
 		if sql("""select name from `tabStock Ledger Entry` 
 				where warehouse = %s and ifnull('is_cancelled', '') = 'No'""", self.doc.name):
-			mdgprint("""Warehosue can not be deleted as stock ledger entry 
-				exists for this warehosue.""", raise_exception=1)
+			msgprint("""Warehosue can not be deleted as stock ledger entry 
+				exists for this warehouse.""", raise_exception=1)
 		else:
-			sql("delete from `tabStock Ledger Entry` where warehouse = %s", self.doc.name)
\ No newline at end of file
+			sql("delete from `tabStock Ledger Entry` where warehouse = %s", self.doc.name)
+			
+test_records = [
+	[{
+		"doctype": "Warehouse",
+		"warehouse_name": "_Test Warehouse",
+		"warehouse_type": "_Test Warehouse Type"
+	}]
+]
\ No newline at end of file