diff --git a/accounts/doctype/account/test_account.py b/accounts/doctype/account/test_account.py
index db2ca19..ad6319c 100644
--- a/accounts/doctype/account/test_account.py
+++ b/accounts/doctype/account/test_account.py
@@ -1,27 +1,41 @@
+from __future__ import unicode_literals
+import webnotes
+
 def make_test_records(verbose):
 	from webnotes.test_runner import make_test_objects
 		
 	accounts = [
 		# [account_name, parent_account, group_or_ledger]
 		["_Test Account Bank Account", "Bank Accounts - _TC", "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 Service Tax", "_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"],
+		
+		# related to Account Inventory Integration
+		["_Test Account Stock In Hand", "Current Assets - _TC", "Ledger"],
 	]
 
-	return make_test_objects("Account", [[{
+	test_objects = make_test_objects("Account", [[{
 			"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
+		}] for account_name, parent_account, group_or_ledger in accounts])
+	
+	webnotes.conn.set_value("Company", "_Test Company", "stock_in_hand_account", 
+		"_Test Account Stock In Hand - _TC")
+	
+	return test_objects
\ 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 3318e4e..96cfc00 100644
--- a/accounts/doctype/purchase_invoice/purchase_invoice.py
+++ b/accounts/doctype/purchase_invoice/purchase_invoice.py
@@ -385,7 +385,7 @@
 		gl_entries = []
 		valuation_tax = 0
 		auto_inventory_accounting = webnotes.conn.get_value("Global Defaults", None, 
-		 	"automatic_inventory_accounting")
+		 	"auto_inventory_accounting")
 		abbr = self.get_company_abbr()
 		
 		# parent's gl entry
diff --git a/controllers/accounts_controller.py b/controllers/accounts_controller.py
index 60535cc..47a0138 100644
--- a/controllers/accounts_controller.py
+++ b/controllers/accounts_controller.py
@@ -16,6 +16,7 @@
 
 from __future__ import unicode_literals
 import webnotes
+from webnotes import msgprint, _
 from webnotes.utils import flt
 from utilities.transaction_base import TransactionBase
 
@@ -37,15 +38,7 @@
 		}
 		gl_dict.update(args)
 		return gl_dict
-		
-	def get_stock_in_hand_account(self):
-		stock_in_hand = webnotes.conn.get_value("Company", self.doc.company, "stock_in_hand")	
-		if not stock_in_hand:
-			webnotes.msgprint("""Please specify "Stock In Hand" account 
-				for company: %s""" % (self.doc.company,), raise_exception=1)
-		
-		return stock_in_hand
-		
+				
 	def clear_unallocated_advances(self, childtype, parentfield):
 		self.doclist.remove_items({"parentfield": parentfield, "allocated_amount": ["in", [0, None, ""]]})
 			
@@ -73,4 +66,24 @@
 				"remarks": d.remark,
 				"advance_amount": flt(d.amount),
 				"allocate_amount": 0
-			})
\ No newline at end of file
+			})
+			
+	def get_stock_in_hand_account(self):
+		stock_in_hand_account = webnotes.conn.get_value("Company", self.doc.company, "stock_in_hand_account")
+		
+		if not stock_in_hand_account:
+			msgprint(_("Missing") + ": " 
+				+ _(webnotes.get_doctype("company").get_label("stock_in_hand_account")
+				+ " " + _("for Company") + " " + self.doc.company), raise_exception=True)
+		
+		return stock_in_hand_account
+		
+	@property
+	def stock_items(self):
+		if not hasattr(self, "_stock_items"):
+			item_codes = list(set(item.item_code for item in self.doclist.get({"parentfield": self.fname})))
+			self._stock_items = [r[0] for r in webnotes.conn.sql("""select name
+				from `tabItem` where name in (%s) and is_stock_item='Yes'""" % \
+				(", ".join((["%s"]*len(item_codes))),), item_codes)]
+
+		return self._stock_items
\ No newline at end of file
diff --git a/controllers/buying_controller.py b/controllers/buying_controller.py
index df2f429..bbcd492 100644
--- a/controllers/buying_controller.py
+++ b/controllers/buying_controller.py
@@ -113,6 +113,14 @@
 
 		for item in self.item_doclist:
 			round_floats_in_doc(item, self.precision.item)
+			
+			# hack! - cleaned up in _cleanup()
+			if self.doc.doctype != "Purchase Invoice":
+				item.rate = item.purchase_rate
+				self.precision.item.rate = self.precision.item.purchase_rate
+				
+				item.discount = item.discount_rate
+				self.precision.item.discount = self.precision.item.discount_rate
 
 			if item.discount == 100:
 				if not item.import_ref_rate:
@@ -128,10 +136,10 @@
 					item.import_ref_rate = flt(item.import_rate / 
 						(1.0 - (item.discount_rate / 100.0)),
 						self.precision.item.import_ref_rate)
-
+						
 			item.import_amount = flt(item.import_rate * item.qty,
 				self.precision.item.import_amount)
-
+				
 			_set_base(item, "import_ref_rate", "purchase_ref_rate")
 			_set_base(item, "import_rate", "rate")
 			_set_base(item, "import_amount", "amount")
@@ -256,6 +264,9 @@
 			for item in self.item_doclist:
 				item.purchase_rate = item.rate
 				del item.fields["rate"]
+				
+				item.discount_rate = item.discount
+				del item.fields["discount"]
 		
 	def validate_on_previous_row(self, tax):
 		"""
@@ -316,16 +327,6 @@
 				self.precision.item.item_tax_amount)
 	
 	@property
-	def stock_items(self):
-		if not hasattr(self, "_stock_items"):
-			item_codes = list(set(item.item_code for item in self.item_doclist))
-			self._stock_items = [r[0] for r in webnotes.conn.sql("""select name
-				from `tabItem` where name in (%s) and is_stock_item='Yes'""" % \
-				(", ".join((["%s"]*len(item_codes))),), item_codes)]
-
-		return self._stock_items
-		
-	@property
 	def precision(self):
 		if not hasattr(self, "_precision"):
 			self._precision = webnotes._dict()
diff --git a/setup/doctype/company/company.py b/setup/doctype/company/company.py
index 94c8f1c..552dae2 100644
--- a/setup/doctype/company/company.py
+++ b/setup/doctype/company/company.py
@@ -37,111 +37,116 @@
 	# ---------------------------------------------------
 	def create_default_accounts(self):
 		self.fld_dict = {'account_name':0,'parent_account':1,'group_or_ledger':2,'is_pl_account':3,'account_type':4,'debit_or_credit':5,'company':6,'tax_rate':7}
-		acc_list_common = [['Application of Funds (Assets)','','Group','No','','Debit',self.doc.name,''],
-								['Current Assets','Application of Funds (Assets)','Group','No','','Debit',self.doc.name,''],
-									['Accounts Receivable','Current Assets','Group','No','','Debit',self.doc.name,''],
-									['Bank Accounts','Current Assets','Group','No','Bank or Cash','Debit',self.doc.name,''],
-									['Cash In Hand','Current Assets','Group','No','Bank or Cash','Debit',self.doc.name,''],
-										['Cash','Cash In Hand','Ledger','No','Bank or Cash','Debit',self.doc.name,''],
-									['Loans and Advances (Assets)','Current Assets','Group','No','','Debit',self.doc.name,''],
-									['Securities and Deposits','Current Assets','Group','No','','Debit',self.doc.name,''],
-										['Earnest Money','Securities and Deposits','Ledger','No','','Debit',self.doc.name,''],
-									['Stock In Hand','Current Assets','Group','No','','Debit',self.doc.name,''],
-										['Stock','Stock In Hand','Ledger','No','','Debit',self.doc.name,''],
-									['Tax Assets','Current Assets','Group','No','','Debit',self.doc.name,''],
-								['Fixed Assets','Application of Funds (Assets)','Group','No','','Debit',self.doc.name,''],
-									['Capital Equipments','Fixed Assets','Ledger','No','Fixed Asset Account','Debit',self.doc.name,''],
-									['Computers','Fixed Assets','Ledger','No','Fixed Asset Account','Debit',self.doc.name,''],
-									['Furniture and Fixture','Fixed Assets','Ledger','No','Fixed Asset Account','Debit',self.doc.name,''],
-									['Office Equipments','Fixed Assets','Ledger','No','Fixed Asset Account','Debit',self.doc.name,''],
-									['Plant and Machinery','Fixed Assets','Ledger','No','Fixed Asset Account','Debit',self.doc.name,''],
-								['Investments','Application of Funds (Assets)','Group','No','','Debit',self.doc.name,''],
-								['Temporary Accounts (Assets)','Application of Funds (Assets)','Group','No','','Debit',self.doc.name,''],
-									['Temporary Account (Assets)','Temporary Accounts (Assets)','Ledger','No','','Debit',self.doc.name,''],
-						['Expenses','','Group','Yes','Expense Account','Debit',self.doc.name,''],
-							['Direct Expenses','Expenses','Group','Yes','Expense Account','Debit',self.doc.name,''],
-								['Cost of Goods Sold','Direct Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''],
-							['Indirect Expenses','Expenses','Group','Yes','Expense Account','Debit',self.doc.name,''],
-								['Advertising and Publicity','Indirect Expenses','Ledger','Yes','Chargeable','Debit',self.doc.name,''],
-								['Bad Debts Written Off','Indirect Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''],
-								['Bank Charges','Indirect Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''],
-								['Books and Periodicals','Indirect Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''],
-								['Charity and Donations','Indirect Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''],
-								['Commission on Sales','Indirect Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''],
-								['Conveyance Expenses','Indirect Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''],
-								['Customer Entertainment Expenses','Indirect Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''],
-								['Depreciation Account','Indirect Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''],
-								['Freight and Forwarding Charges','Indirect Expenses','Ledger','Yes','Chargeable','Debit',self.doc.name,''],
-								['Legal Expenses','Indirect Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''],
-								['Miscellaneous Expenses','Indirect Expenses','Ledger','Yes','Chargeable','Debit',self.doc.name,''],
-								['Office Maintenance Expenses','Indirect Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''],
-								['Office Rent','Indirect Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''],
-								['Postal Expenses','Indirect Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''],
-								['Print and Stationary','Indirect Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''],
-								['Rounded Off','Indirect Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''],
-								['Salary','Indirect Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''],
-								['Sales Promotion Expenses','Indirect Expenses','Ledger','Yes','Chargeable','Debit',self.doc.name,''],
-								['Service Charges Paid','Indirect Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''],
-								['Staff Welfare Expenses','Indirect Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''],
-								['Telephone Expenses','Indirect Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''],
-								['Travelling Expenses','Indirect Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''],
-								['Water and Electricity Expenses','Indirect Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''],
-						['Income','','Group','Yes','','Credit',self.doc.name,''],
-							['Direct Income','Income','Group','Yes','Income Account','Credit',self.doc.name,''],
-								['Sales','Direct Income','Ledger','Yes','Income Account','Credit',self.doc.name,''],
-								['Service','Direct Income','Ledger','Yes','Income Account','Credit',self.doc.name,''],
-							['Indirect Income','Income','Group','Yes','Income Account','Credit',self.doc.name,''],
-						['Source of Funds (Liabilities)','','Group','No','','Credit',self.doc.name,''],
-							['Capital Account','Source of Funds (Liabilities)','Group','No','','Credit',self.doc.name,''],
-								['Reserves and Surplus','Capital Account','Group','No','','Credit',self.doc.name,''],
-								['Shareholders Funds','Capital Account','Group','No','','Credit',self.doc.name,''],
-							['Current Liabilities','Source of Funds (Liabilities)','Group','No','','Credit',self.doc.name,''],
-								['Accounts Payable','Current Liabilities','Group','No','','Credit',self.doc.name,''],
-								['Duties and Taxes','Current Liabilities','Group','No','','Credit',self.doc.name,''],
-								['Loans (Liabilities)','Current Liabilities','Group','No','','Credit',self.doc.name,''],
-									['Secured Loans','Loans (Liabilities)','Group','No','','Credit',self.doc.name,''],
-									['Unsecured Loans','Loans (Liabilities)','Group','No','','Credit',self.doc.name,''],
-									['Bank Overdraft Account','Loans (Liabilities)','Group','No','','Credit',self.doc.name,''],
-							['Temporary Accounts (Liabilities)','Source of Funds (Liabilities)','Group','No','','Credit',self.doc.name,''],
-								['Temporary Account (Liabilities)','Temporary Accounts (Liabilities)','Ledger','No','','Credit',self.doc.name,'']						
-						]
+		acc_list_common = [
+			['Application of Funds (Assets)','','Group','No','','Debit',self.doc.name,''],
+				['Current Assets','Application of Funds (Assets)','Group','No','','Debit',self.doc.name,''],
+					['Accounts Receivable','Current Assets','Group','No','','Debit',self.doc.name,''],
+					['Bank Accounts','Current Assets','Group','No','Bank or Cash','Debit',self.doc.name,''],
+					['Cash In Hand','Current Assets','Group','No','Bank or Cash','Debit',self.doc.name,''],
+						['Cash','Cash In Hand','Ledger','No','Bank or Cash','Debit',self.doc.name,''],
+					['Loans and Advances (Assets)','Current Assets','Group','No','','Debit',self.doc.name,''],
+					['Securities and Deposits','Current Assets','Group','No','','Debit',self.doc.name,''],
+						['Earnest Money','Securities and Deposits','Ledger','No','','Debit',self.doc.name,''],
+					['Stock In Hand','Current Assets','Group','No','','Debit',self.doc.name,''],
+						['Stock','Stock In Hand','Ledger','No','','Debit',self.doc.name,''],
+					['Tax Assets','Current Assets','Group','No','','Debit',self.doc.name,''],
+					['Stock Delivered But Not Billed','Current Assets','Ledger','No','','Debit',self.doc.name,''],
+				['Fixed Assets','Application of Funds (Assets)','Group','No','','Debit',self.doc.name,''],
+					['Capital Equipments','Fixed Assets','Ledger','No','Fixed Asset Account','Debit',self.doc.name,''],
+					['Computers','Fixed Assets','Ledger','No','Fixed Asset Account','Debit',self.doc.name,''],
+					['Furniture and Fixture','Fixed Assets','Ledger','No','Fixed Asset Account','Debit',self.doc.name,''],
+					['Office Equipments','Fixed Assets','Ledger','No','Fixed Asset Account','Debit',self.doc.name,''],
+					['Plant and Machinery','Fixed Assets','Ledger','No','Fixed Asset Account','Debit',self.doc.name,''],
+				['Investments','Application of Funds (Assets)','Group','No','','Debit',self.doc.name,''],
+				['Temporary Accounts (Assets)','Application of Funds (Assets)','Group','No','','Debit',self.doc.name,''],
+					['Temporary Account (Assets)','Temporary Accounts (Assets)','Ledger','No','','Debit',self.doc.name,''],
+			['Expenses','','Group','Yes','Expense Account','Debit',self.doc.name,''],
+				['Direct Expenses','Expenses','Group','Yes','Expense Account','Debit',self.doc.name,''],
+					['Cost of Goods Sold','Direct Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''],
+					['Expenses Included In Valuation','Direct Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''],
+					['Stock Adjustment','Direct Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''],
+				['Indirect Expenses','Expenses','Group','Yes','Expense Account','Debit',self.doc.name,''],
+					['Advertising and Publicity','Indirect Expenses','Ledger','Yes','Chargeable','Debit',self.doc.name,''],
+					['Bad Debts Written Off','Indirect Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''],
+					['Bank Charges','Indirect Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''],
+					['Books and Periodicals','Indirect Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''],
+					['Charity and Donations','Indirect Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''],
+					['Commission on Sales','Indirect Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''],
+					['Conveyance Expenses','Indirect Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''],
+					['Customer Entertainment Expenses','Indirect Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''],
+					['Depreciation Account','Indirect Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''],
+					['Freight and Forwarding Charges','Indirect Expenses','Ledger','Yes','Chargeable','Debit',self.doc.name,''],
+					['Legal Expenses','Indirect Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''],
+					['Miscellaneous Expenses','Indirect Expenses','Ledger','Yes','Chargeable','Debit',self.doc.name,''],
+					['Office Maintenance Expenses','Indirect Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''],
+					['Office Rent','Indirect Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''],
+					['Postal Expenses','Indirect Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''],
+					['Print and Stationary','Indirect Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''],
+					['Rounded Off','Indirect Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''],
+					['Salary','Indirect Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''],
+					['Sales Promotion Expenses','Indirect Expenses','Ledger','Yes','Chargeable','Debit',self.doc.name,''],
+					['Service Charges Paid','Indirect Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''],
+					['Staff Welfare Expenses','Indirect Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''],
+					['Telephone Expenses','Indirect Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''],
+					['Travelling Expenses','Indirect Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''],
+					['Water and Electricity Expenses','Indirect Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''],
+			['Income','','Group','Yes','','Credit',self.doc.name,''],
+				['Direct Income','Income','Group','Yes','Income Account','Credit',self.doc.name,''],
+					['Sales','Direct Income','Ledger','Yes','Income Account','Credit',self.doc.name,''],
+					['Service','Direct Income','Ledger','Yes','Income Account','Credit',self.doc.name,''],
+				['Indirect Income','Income','Group','Yes','Income Account','Credit',self.doc.name,''],
+			['Source of Funds (Liabilities)','','Group','No','','Credit',self.doc.name,''],
+				['Capital Account','Source of Funds (Liabilities)','Group','No','','Credit',self.doc.name,''],
+					['Reserves and Surplus','Capital Account','Group','No','','Credit',self.doc.name,''],
+					['Shareholders Funds','Capital Account','Group','No','','Credit',self.doc.name,''],
+				['Current Liabilities','Source of Funds (Liabilities)','Group','No','','Credit',self.doc.name,''],
+					['Accounts Payable','Current Liabilities','Group','No','','Credit',self.doc.name,''],
+					['Duties and Taxes','Current Liabilities','Group','No','','Credit',self.doc.name,''],
+					['Loans (Liabilities)','Current Liabilities','Group','No','','Credit',self.doc.name,''],
+						['Secured Loans','Loans (Liabilities)','Group','No','','Credit',self.doc.name,''],
+						['Unsecured Loans','Loans (Liabilities)','Group','No','','Credit',self.doc.name,''],
+						['Bank Overdraft Account','Loans (Liabilities)','Group','No','','Credit',self.doc.name,''],
+					['Stock Received But Not Billed','Current Liabilities','Ledger','No','','Credit',self.doc.name,''],
+				['Temporary Accounts (Liabilities)','Source of Funds (Liabilities)','Group','No','','Credit',self.doc.name,''],
+					['Temporary Account (Liabilities)','Temporary Accounts (Liabilities)','Ledger','No','','Credit',self.doc.name,'']
+		]
 		
 		acc_list_india = [
-							['CENVAT Capital Goods','Tax Assets','Ledger','No','Chargeable','Debit',self.doc.name,''],
-							['CENVAT','Tax Assets','Ledger','No','Chargeable','Debit',self.doc.name,''],
-							['CENVAT Service Tax','Tax Assets','Ledger','No','Chargeable','Debit',self.doc.name,''],
-							['CENVAT Service Tax Cess 1','Tax Assets','Ledger','No','Chargeable','Debit',self.doc.name,''],
-							['CENVAT Service Tax Cess 2','Tax Assets','Ledger','No','Chargeable','Debit',self.doc.name,''],
-							['CENVAT Edu Cess','Tax Assets','Ledger','No','Chargeable','Debit',self.doc.name,''],
-							['CENVAT SHE Cess','Tax Assets','Ledger','No','Chargeable','Debit',self.doc.name,''],
-							['Excise Duty 4','Tax Assets','Ledger','No','Tax','Debit',self.doc.name,'4.00'],
-							['Excise Duty 8','Tax Assets','Ledger','No','Tax','Debit',self.doc.name,'8.00'],
-							['Excise Duty 10','Tax Assets','Ledger','No','Tax','Debit',self.doc.name,'10.00'],
-							['Excise Duty 14','Tax Assets','Ledger','No','Tax','Debit',self.doc.name,'14.00'],
-							['Excise Duty Edu Cess 2','Tax Assets','Ledger','No','Tax','Debit',self.doc.name,'2.00'],
-							['Excise Duty SHE Cess 1','Tax Assets','Ledger','No','Tax','Debit',self.doc.name,'1.00'],
-							['P L A','Tax Assets','Ledger','No','Chargeable','Debit',self.doc.name,''],
-							['P L A - Cess Portion','Tax Assets','Ledger','No','Chargeable','Debit',self.doc.name,''],
-							['Edu. Cess on Excise','Duties and Taxes','Ledger','No','Tax','Credit',self.doc.name,'2.00'],
-							['Edu. Cess on Service Tax','Duties and Taxes','Ledger','No','Tax','Credit',self.doc.name,'2.00'],
-							['Edu. Cess on TDS','Duties and Taxes','Ledger','No','Tax','Credit',self.doc.name,'2.00'],
-							['Excise Duty @ 4','Duties and Taxes','Ledger','No','Tax','Credit',self.doc.name,'4.00'],
-							['Excise Duty @ 8','Duties and Taxes','Ledger','No','Tax','Credit',self.doc.name,'8.00'],
-							['Excise Duty @ 10','Duties and Taxes','Ledger','No','Tax','Credit',self.doc.name,'10.00'],
-							['Excise Duty @ 14','Duties and Taxes','Ledger','No','Tax','Credit',self.doc.name,'14.00'],
-							['Service Tax','Duties and Taxes','Ledger','No','Tax','Credit',self.doc.name,'10.3'],
-							['SHE Cess on Excise','Duties and Taxes','Ledger','No','Tax','Credit',self.doc.name,'1.00'],
-							['SHE Cess on Service Tax','Duties and Taxes','Ledger','No','Tax','Credit',self.doc.name,'1.00'],
-							['SHE Cess on TDS','Duties and Taxes','Ledger','No','Tax','Credit',self.doc.name,'1.00'],
-							['Professional Tax','Duties and Taxes','Ledger','No','Chargeable','Credit',self.doc.name,''],
-							['VAT','Duties and Taxes','Ledger','No','Chargeable','Credit',self.doc.name,''],
-							['TDS (Advertisement)','Duties and Taxes','Ledger','No','Chargeable','Credit',self.doc.name,''],
-							['TDS (Commission)','Duties and Taxes','Ledger','No','Chargeable','Credit',self.doc.name,''],
-							['TDS (Contractor)','Duties and Taxes','Ledger','No','Chargeable','Credit',self.doc.name,''],
-							['TDS (Interest)','Duties and Taxes','Ledger','No','Chargeable','Credit',self.doc.name,''],
-							['TDS (Rent)','Duties and Taxes','Ledger','No','Chargeable','Credit',self.doc.name,''],
-							['TDS (Salary)','Duties and Taxes','Ledger','No','Chargeable','Credit',self.doc.name,'']
-						 ]
+			['CENVAT Capital Goods','Tax Assets','Ledger','No','Chargeable','Debit',self.doc.name,''],
+			['CENVAT','Tax Assets','Ledger','No','Chargeable','Debit',self.doc.name,''],
+			['CENVAT Service Tax','Tax Assets','Ledger','No','Chargeable','Debit',self.doc.name,''],
+			['CENVAT Service Tax Cess 1','Tax Assets','Ledger','No','Chargeable','Debit',self.doc.name,''],
+			['CENVAT Service Tax Cess 2','Tax Assets','Ledger','No','Chargeable','Debit',self.doc.name,''],
+			['CENVAT Edu Cess','Tax Assets','Ledger','No','Chargeable','Debit',self.doc.name,''],
+			['CENVAT SHE Cess','Tax Assets','Ledger','No','Chargeable','Debit',self.doc.name,''],
+			['Excise Duty 4','Tax Assets','Ledger','No','Tax','Debit',self.doc.name,'4.00'],
+			['Excise Duty 8','Tax Assets','Ledger','No','Tax','Debit',self.doc.name,'8.00'],
+			['Excise Duty 10','Tax Assets','Ledger','No','Tax','Debit',self.doc.name,'10.00'],
+			['Excise Duty 14','Tax Assets','Ledger','No','Tax','Debit',self.doc.name,'14.00'],
+			['Excise Duty Edu Cess 2','Tax Assets','Ledger','No','Tax','Debit',self.doc.name,'2.00'],
+			['Excise Duty SHE Cess 1','Tax Assets','Ledger','No','Tax','Debit',self.doc.name,'1.00'],
+			['P L A','Tax Assets','Ledger','No','Chargeable','Debit',self.doc.name,''],
+			['P L A - Cess Portion','Tax Assets','Ledger','No','Chargeable','Debit',self.doc.name,''],
+			['Edu. Cess on Excise','Duties and Taxes','Ledger','No','Tax','Credit',self.doc.name,'2.00'],
+			['Edu. Cess on Service Tax','Duties and Taxes','Ledger','No','Tax','Credit',self.doc.name,'2.00'],
+			['Edu. Cess on TDS','Duties and Taxes','Ledger','No','Tax','Credit',self.doc.name,'2.00'],
+			['Excise Duty @ 4','Duties and Taxes','Ledger','No','Tax','Credit',self.doc.name,'4.00'],
+			['Excise Duty @ 8','Duties and Taxes','Ledger','No','Tax','Credit',self.doc.name,'8.00'],
+			['Excise Duty @ 10','Duties and Taxes','Ledger','No','Tax','Credit',self.doc.name,'10.00'],
+			['Excise Duty @ 14','Duties and Taxes','Ledger','No','Tax','Credit',self.doc.name,'14.00'],
+			['Service Tax','Duties and Taxes','Ledger','No','Tax','Credit',self.doc.name,'10.3'],
+			['SHE Cess on Excise','Duties and Taxes','Ledger','No','Tax','Credit',self.doc.name,'1.00'],
+			['SHE Cess on Service Tax','Duties and Taxes','Ledger','No','Tax','Credit',self.doc.name,'1.00'],
+			['SHE Cess on TDS','Duties and Taxes','Ledger','No','Tax','Credit',self.doc.name,'1.00'],
+			['Professional Tax','Duties and Taxes','Ledger','No','Chargeable','Credit',self.doc.name,''],
+			['VAT','Duties and Taxes','Ledger','No','Chargeable','Credit',self.doc.name,''],
+			['TDS (Advertisement)','Duties and Taxes','Ledger','No','Chargeable','Credit',self.doc.name,''],
+			['TDS (Commission)','Duties and Taxes','Ledger','No','Chargeable','Credit',self.doc.name,''],
+			['TDS (Contractor)','Duties and Taxes','Ledger','No','Chargeable','Credit',self.doc.name,''],
+			['TDS (Interest)','Duties and Taxes','Ledger','No','Chargeable','Credit',self.doc.name,''],
+			['TDS (Rent)','Duties and Taxes','Ledger','No','Chargeable','Credit',self.doc.name,''],
+			['TDS (Salary)','Duties and Taxes','Ledger','No','Chargeable','Credit',self.doc.name,'']
+		 ]
 		# load common account heads
 		for d in acc_list_common:
 			self.add_acc(d)
diff --git a/setup/doctype/company/company.txt b/setup/doctype/company/company.txt
index a43ec93..d97cfc3 100644
--- a/setup/doctype/company/company.txt
+++ b/setup/doctype/company/company.txt
@@ -1,8 +1,8 @@
 [
  {
-  "creation": "2013-01-22 16:50:36", 
+  "creation": "2013-02-22 01:27:54", 
   "docstatus": 0, 
-  "modified": "2013-01-23 16:51:54", 
+  "modified": "2013-02-26 10:57:39", 
   "modified_by": "Administrator", 
   "owner": "Administrator"
  }, 
@@ -51,12 +51,13 @@
   "oldfieldtype": "Section Break"
  }, 
  {
+  "description": "Please Enter Abbreviation or Short Name properly as it will be added as Suffix to all Account Heads.", 
   "doctype": "DocField", 
-  "fieldname": "company_name", 
+  "fieldname": "abbr", 
   "fieldtype": "Data", 
-  "label": "Company", 
+  "label": "Abbr", 
   "no_copy": 0, 
-  "oldfieldname": "company_name", 
+  "oldfieldname": "abbr", 
   "oldfieldtype": "Data", 
   "reqd": 1
  }, 
@@ -66,13 +67,12 @@
   "fieldtype": "Column Break"
  }, 
  {
-  "description": "Please Enter Abbreviation or Short Name properly as it will be added as Suffix to all Account Heads.", 
   "doctype": "DocField", 
-  "fieldname": "abbr", 
+  "fieldname": "company_name", 
   "fieldtype": "Data", 
-  "label": "Abbr", 
+  "label": "Company", 
   "no_copy": 0, 
-  "oldfieldname": "abbr", 
+  "oldfieldname": "company_name", 
   "oldfieldtype": "Data", 
   "reqd": 1
  }, 
@@ -125,6 +125,17 @@
   "options": "Account"
  }, 
  {
+  "depends_on": "eval:!doc.__islocal", 
+  "description": "This account will be used to maintain value of available stock", 
+  "doctype": "DocField", 
+  "fieldname": "stock_in_hand_account", 
+  "fieldtype": "Link", 
+  "label": "Stock In Hand Account", 
+  "no_copy": 1, 
+  "options": "Account", 
+  "read_only": 0
+ }, 
+ {
   "doctype": "DocField", 
   "fieldname": "column_break0", 
   "fieldtype": "Column Break", 
diff --git a/stock/doctype/delivery_note/delivery_note.py b/stock/doctype/delivery_note/delivery_note.py
index f54edf2..35d008b 100644
--- a/stock/doctype/delivery_note/delivery_note.py
+++ b/stock/doctype/delivery_note/delivery_note.py
@@ -174,7 +174,12 @@
 
 	def validate_reference_value(self):
 		"""Validate values with reference document with previous document"""
-		get_obj('DocType Mapper', 'Sales Order-Delivery Note', with_children = 1).validate_reference_value(self, self.doc.name)
+		validate_ref = any([d.prevdoc_docname for d in self.doclist.get({"parentfield": self.fname})
+			if d.prevdoc_doctype == "Sales Order"])
+		
+		if validate_ref:
+			get_obj('DocType Mapper', 'Sales Order-Delivery Note', 
+				with_children = 1).validate_reference_value(self, self.doc.name)
 
 
 	def validate_for_items(self):
diff --git a/stock/doctype/purchase_receipt/purchase_receipt.py b/stock/doctype/purchase_receipt/purchase_receipt.py
index 8858fd5..a957468 100644
--- a/stock/doctype/purchase_receipt/purchase_receipt.py
+++ b/stock/doctype/purchase_receipt/purchase_receipt.py
@@ -17,7 +17,7 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import cstr, flt
+from webnotes.utils import cstr, flt, cint
 from webnotes.model.doc import addchild
 from webnotes.model.bean import getlist
 from webnotes.model.code import get_obj
@@ -92,11 +92,12 @@
 
 	# update valuation rate
 	def update_valuation_rate(self):
-		total_b_cost = flt(self.doc.buying_cost_transport) + flt(self.doc.buying_cost_taxes) + flt(self.doc.buying_cost_other)
-		for d in getlist(self.doclist, 'purchase_receipt_details'):
-			if flt(self.doc.net_total) and flt(d.qty):
-				#d.valuation_rate = (flt(d.purchase_rate) + ((flt(d.amount) * (total_b_cost)) / (self.doc.net_total * flt(d.qty))) + (flt(d.rm_supp_cost) / flt(d.qty))) / flt(d.conversion_factor)
-				d.valuation_rate = (flt(d.purchase_rate) + ((flt(d.amount) * (total_b_cost)) / (self.doc.net_total * flt(d.qty))) + (flt(d.rm_supp_cost) / flt(d.qty)) + (flt(d.item_tax_amount)/flt(d.qty))) / flt(d.conversion_factor)
+		for d in self.doclist.get({"parentfield": "purchase_receipt_details"}):
+			if d.qty:
+				d.valuation_rate = (flt(d.purchase_rate) + flt(d.item_tax_amount)/flt(d.qty)
+					+ flt(d.rm_supp_cost) / flt(d.qty)) / flt(d.conversion_factor)
+			else:
+				d.valuation_rate = 0.0
 
 	#check in manage account if purchase order required or not.
 	# ====================================================================================
@@ -263,11 +264,9 @@
 
 		# Update last purchase rate
 		purchase_controller.update_last_purchase_rate(self, 1)
+		
+		self.make_gl_entries()
 
-
-
-	#On Cancel
-	#----------------------------------------------------------------------------------------------------
 	def check_next_docstatus(self):
 		submit_rv = sql("select t1.name from `tabPurchase Invoice` t1,`tabPurchase Invoice Item` t2 where t1.name = t2.parent and t2.purchase_receipt = '%s' and t1.docstatus = 1" % (self.doc.name))
 		if submit_rv:
@@ -301,10 +300,10 @@
 
 		# 6. Update last purchase rate
 		pc_obj.update_last_purchase_rate(self, 0)
+		
+		self.make_gl_entries()
 
 
-#----------- code for Sub-contracted Items -------------------
-	#--------check for sub-contracted items and accordingly update PR raw material detail table--------
 	def update_rw_material_detail(self):
 
 		for d in getlist(self.doclist,'purchase_receipt_details'):
@@ -431,3 +430,44 @@
 	
 	def get_purchase_tax_details(self):
 		self.doclist = get_obj('Purchase Common').get_purchase_tax_details(self)
+		
+	def make_gl_entries(self):
+		if not cint(webnotes.defaults.get_global_default("auto_inventory_accounting")):
+			return
+		
+		abbr = webnotes.conn.get_value("Company", self.doc.company, "abbr")
+		stock_received_account = "Stock Received But Not Billed - %s" % (abbr,)
+		stock_in_hand_account = self.get_stock_in_hand_account()
+		
+		total_valuation_amount = self.get_total_valuation_amount()
+		
+		if total_valuation_amount:
+			gl_entries = [
+				# debit stock in hand account
+				self.get_gl_dict({
+					"account": stock_in_hand_account,
+					"against": stock_received_account,
+					"debit": total_valuation_amount,
+					"remarks": self.doc.remarks or "Accounting Entry for Stock",
+				}, self.doc.docstatus == 2),
+			
+				# credit stock received but not billed account
+				self.get_gl_dict({
+					"account": stock_received_account,
+					"against": stock_in_hand_account,
+					"credit": total_valuation_amount,
+					"remarks": self.doc.remarks or "Accounting Entry for Stock",
+				}, self.doc.docstatus == 2),
+			]
+			from accounts.general_ledger import make_gl_entries
+			make_gl_entries(gl_entries, cancel=self.doc.docstatus == 2)
+		
+	def get_total_valuation_amount(self):
+		total_valuation_amount = 0.0
+		
+		for item in self.doclist.get({"parentfield": "purchase_receipt_details"}):
+			if item.item_code in self.stock_items:
+				total_valuation_amount += flt(item.valuation_rate) * \
+					flt(item.qty) * flt(item.conversion_factor)
+
+		return total_valuation_amount
\ No newline at end of file
diff --git a/stock/doctype/purchase_receipt/test_purchase_receipt.py b/stock/doctype/purchase_receipt/test_purchase_receipt.py
index f91455f..d833d65 100644
--- a/stock/doctype/purchase_receipt/test_purchase_receipt.py
+++ b/stock/doctype/purchase_receipt/test_purchase_receipt.py
@@ -18,178 +18,115 @@
 from __future__ import unicode_literals
 import unittest
 import webnotes
-import webnotes.model
-from webnotes.model.doclist import DocList
-from webnotes.utils import nowdate
-
-company = webnotes.conn.get_default("company")
-abbr = webnotes.conn.get_value("Company", company, "abbr")
-
-def load_data():
-	insert_accounts()
-	
-	# create default warehouse
-	if not webnotes.conn.exists("Warehouse", "Default Warehouse"):
-		webnotes.insert({"doctype": "Warehouse", 
-			"warehouse_name": "Default Warehouse",
-			"warehouse_type": "Stores"})
-	
-	# create UOM: Nos.
-	if not webnotes.conn.exists("UOM", "Nos"):
-		webnotes.insert({"doctype": "UOM", "uom_name": "Nos"})
-	
-	from webnotes.tests import insert_test_data
-	# create item groups and items
-	insert_test_data("Item Group", 
-		sort_fn=lambda ig: (ig[0].get('parent_item_group'), ig[0].get('name')))
-	insert_test_data("Item")
-
-	# create supplier type
-	webnotes.insert({"doctype": "Supplier Type", "supplier_type": "Manufacturing"})
-	
-	# create supplier
-	webnotes.insert({"doctype": "Supplier", "supplier_name": "East Wind Inc.",
-		"supplier_type": "Manufacturing", "company": company})
-		
-	# create default cost center if not exists
-	if not webnotes.conn.exists("Cost Center", "Default Cost Center - %s" % abbr):
-		webnotes.insert({"doctype": "Cost Center", "group_or_ledger": "Ledger",
-			"cost_center_name": "Default Cost Center", 
-			"parent_cost_center": "Root - %s" % abbr,
-			"company_name": company})
-		
-	# create account heads for taxes
-	
-	webnotes.insert({"doctype": "Account", "account_name": "Shipping Charges",
-		"parent_account": "Stock Expenses - %s" % abbr, "company": company,
-		"group_or_ledger": "Ledger"})
-		
-	webnotes.insert({"doctype": "Account", "account_name": "Customs Duty",
-		"parent_account": "Stock Expenses - %s" % abbr, "company": company,
-		"group_or_ledger": "Ledger"})
-	webnotes.insert({"doctype": "Account", "account_name": "_Test Tax Assets",
-		"parent_account": "Current Assets - %s" % abbr, "company": company,
-		"group_or_ledger": "Group"})
-	webnotes.insert({"doctype": "Account", "account_name": "VAT - Test",
-		"parent_account": "_Test Tax Assets - %s" % abbr, "company": company,
-		"group_or_ledger": "Ledger"})
-		
-	# create BOM
-	# webnotes.insert(DocList([
-	# 	{"doctype": "BOM", "item": "Nebula 7", "quantity": 1,
-	# 		"is_active": "Yes", "is_default": 1, "uom": "Nos"},
-	# 	{"doctype": "BOM Operation", "operation_no": 1, "parentfield": "bom_operations",
-	# 		"opn_description": "Development"}, 
-	# 	{"doctype": "BOM Item", "item_code": "Android Jack D", "operation_no": 1, "qty": 5, 
-	# 		"rate": 20, "amount": 100, "stock_uom": "Nos", "parentfield": "bom_materials"}
-	# ]))
-
-
-base_purchase_receipt = [
-	{
-		"doctype": "Purchase Receipt", "supplier": "East Wind Inc.",
-		"naming_series": "PR", "posting_date": nowdate(), "posting_time": "12:05",
-		"company": company, "fiscal_year": webnotes.conn.get_default("fiscal_year"), 
-		"currency": webnotes.conn.get_default("currency"), "conversion_rate": 1
-	},
-	{
-		"doctype": "Purchase Receipt Item", 
-		"item_code": "Home Desktop 100",
-		"qty": 10, "received_qty": 10, "rejected_qty": 0, "purchase_rate": 50, 
-		"amount": 500, "warehouse": "Default Warehouse",
-		"parentfield": "purchase_receipt_details",
-		"conversion_factor": 1, "uom": "Nos", "stock_uom": "Nos"
-	},
-	{
-		"doctype": "Purchase Taxes and Charges", "charge_type": "Actual",
-		"account_head": "Shipping Charges - %s" % abbr, "rate": 100, "tax_amount": 100,
-		"category": "Valuation and Total", "parentfield": "purchase_tax_details",
-		"cost_center": "Default Cost Center - %s" % abbr
-	}, 
-	{
-		"doctype": "Purchase Taxes and Charges", "charge_type": "Actual",
-		"account_head": "VAT - Test - %s" % abbr, "rate": 120, "tax_amount": 120,
-		"category": "Total", "parentfield": "purchase_tax_details"
-	},
-	{
-		"doctype": "Purchase Taxes and Charges", "charge_type": "Actual",
-		"account_head": "Customs Duty - %s" % abbr, "rate": 150, "tax_amount": 150,
-		"category": "Valuation", "parentfield": "purchase_tax_details",
-		"cost_center": "Default Cost Center - %s" % abbr
-	}
-]
-
-def insert_accounts():
-	for d in webnotes.conn.sql("""select name, abbr from tabCompany""", as_dict=1):
-		acc_list = [
-			make_account_dict('Stock Assets', 'Current Assets', d, 'Group'),
-				make_account_dict('Stock In Hand', 'Stock Assets', d, 'Ledger'),
-				make_account_dict('Stock Delivered But Not Billed', 'Stock Assets', 
-					d, 'Ledger'),
-			make_account_dict('Stock Liabilities', 'Current Liabilities', d, 'Group'),
-				make_account_dict('Stock Received But Not Billed', 'Stock Liabilities',
-				 	d, 'Ledger'),
-			make_account_dict('Stock Expenses', 'Direct Expenses', d, 'Group'),
-				make_account_dict('Stock Variance', 'Stock Expenses', d, 'Ledger'),
-				make_account_dict('Expenses Included In Valuation', 'Stock Expenses', 
-					d, 'Ledger'),
-		]
-		for acc in acc_list:
-			acc_name = "%s - %s" % (acc['account_name'], d['abbr'])
-			if not webnotes.conn.exists('Account', acc_name):
-				webnotes.insert(acc)
-						
-def make_account_dict(account, parent, company_detail, group_or_ledger):
-	return {
-		"doctype": "Account",
-		"account_name": account,
-		"parent_account": "%s - %s" % (parent, company_detail['abbr']),
-		"company": company_detail['name'],
-		"group_or_ledger": group_or_ledger
-	}
-
+import webnotes.defaults
+from webnotes.utils import cint
 
 class TestPurchaseReceipt(unittest.TestCase):
-	def setUp(self):
-		webnotes.conn.begin()
-		load_data()
-		webnotes.conn.set_value("Global Defaults", None, "automatic_inventory_accounting", 1)
+	def test_purchase_receipt_no_gl_entry(self):
+		pr = webnotes.bean(copy=test_records[0])
+		pr.run_method("calculate_taxes_and_totals")
+		pr.insert()
+		pr.submit()
 		
-	def test_purchase_receipt(self):
-		# warehouse does not have stock in hand specified
-		self.run_purchase_receipt_test(base_purchase_receipt,
-			"Stock In Hand - %s" % (abbr,), 
-			"Stock Received But Not Billed - %s" % (abbr,), 750.0)
-	
-	def run_purchase_receipt_test(self, purchase_receipt, debit_account, 
-			credit_account, stock_value):
-		dl = webnotes.insert(DocList(purchase_receipt))
+		gl_entries = webnotes.conn.sql("""select account, debit, credit
+			from `tabGL Entry` where voucher_type='Purchase Receipt' and voucher_no=%s
+			order by account desc""", pr.doc.name, as_dict=1)
+			
+		self.assertTrue(not gl_entries)
 		
-		from controllers.tax_controller import TaxController
-		tax_controller = TaxController(dl.doc, dl.doclist)
-		tax_controller.item_table_field = "purchase_receipt_details"
-		tax_controller.calculate_taxes_and_totals()
-		dl.doc = tax_controller.doc
-		dl.doclist = tax_controller.doclist
+	def test_purchase_receipt_gl_entry(self):
+		webnotes.defaults.set_global_default("auto_inventory_accounting", 1)
 		
-		dl.submit()
-		dl.load_from_db()
+		self.assertEqual(cint(webnotes.defaults.get_global_default("auto_inventory_accounting")), 1)
 		
-		gle = webnotes.conn.sql("""select account, ifnull(debit, 0), ifnull(credit, 0)
-			from `tabGL Entry` where voucher_no = %s""", dl.doclist[0].name)
+		pr = webnotes.bean(copy=test_records[0])
+		pr.run_method("calculate_taxes_and_totals")
+		pr.insert()
+		pr.submit()
 		
-		gle_map = dict(((entry[0], entry) for entry in gle))
+		gl_entries = webnotes.conn.sql("""select account, debit, credit
+			from `tabGL Entry` where voucher_type='Purchase Receipt' and voucher_no=%s
+			order by account desc""", pr.doc.name, as_dict=1)
+			
+		self.assertTrue(gl_entries)
 		
-		self.assertEquals(gle_map[debit_account], (debit_account, stock_value, 0.0))
-		self.assertEquals(gle_map[credit_account], (credit_account, 0.0, stock_value))
+		stock_in_hand_account = webnotes.conn.get_value("Company", pr.doc.company, 
+			"stock_in_hand_account")
 		
-	def atest_subcontracting(self):
-		pr = base_purchase_receipt.copy()
-		pr[1].update({"item_code": "Nebula 7"})
+		expected_values = [
+			[stock_in_hand_account, 750.0, 0.0],
+			["Stock Received But Not Billed - _TC", 0.0, 750.0]
+		]
 		
-		self.run_purchase_receipt_test(pr, 
-			"Stock In Hand - %s" % (abbr,), 
-			"Stock Received But Not Billed - %s" % (abbr,), 1750.0)
-		
-	def tearDown(self):
-		webnotes.conn.rollback()
\ No newline at end of file
+		for i, gle in enumerate(gl_entries):
+			self.assertEquals(expected_values[i][0], gle.account)
+			self.assertEquals(expected_values[i][1], gle.debit)
+			self.assertEquals(expected_values[i][2], gle.credit)
+			
+		webnotes.defaults.set_global_default("auto_inventory_accounting", 0)
+
+test_records = [
+	[
+		{
+			"company": "_Test Company", 
+			"conversion_rate": 1.0, 
+			"currency": "INR", 
+			"doctype": "Purchase Receipt", 
+			"fiscal_year": "_Test Fiscal Year 2013", 
+			"posting_date": "2013-02-12", 
+			"posting_time": "15:33:30", 
+			"supplier": "_Test Supplier",
+			"net_total": 500.0, 
+			"grand_total": 720.0,
+		}, 
+		{
+			"conversion_factor": 1.0, 
+			"description": "_Test Item", 
+			"doctype": "Purchase Receipt Item", 
+			"item_code": "_Test Item", 
+			"item_name": "_Test Item", 
+			"parentfield": "purchase_receipt_details", 
+			"received_qty": 10.0,
+			"qty": 10.0,
+			"rejected_qty": 0.0,
+			"import_rate": 50.0,
+			"amount": 500.0,
+			"warehouse": "_Test Warehouse", 
+			"stock_uom": "Nos", 
+			"uom": "_Test UOM",
+		},
+		{
+			"account_head": "_Test Account Shipping Charges - _TC", 
+			"add_deduct_tax": "Add", 
+			"category": "Valuation and Total", 
+			"charge_type": "Actual", 
+			"description": "Shipping Charges", 
+			"doctype": "Purchase Taxes and Charges", 
+			"parentfield": "purchase_tax_details",
+			"rate": 100.0,
+			"tax_amount": 100.0,
+		},
+		{
+			"account_head": "_Test Account VAT - _TC", 
+			"add_deduct_tax": "Add", 
+			"category": "Total", 
+			"charge_type": "Actual", 
+			"description": "VAT", 
+			"doctype": "Purchase Taxes and Charges", 
+			"parentfield": "purchase_tax_details",
+			"rate": 120.0,
+			"tax_amount": 120.0,
+		},
+		{
+			"account_head": "_Test Account Customs Duty - _TC", 
+			"add_deduct_tax": "Add", 
+			"category": "Valuation", 
+			"charge_type": "Actual", 
+			"description": "Customs Duty", 
+			"doctype": "Purchase Taxes and Charges", 
+			"parentfield": "purchase_tax_details",
+			"rate": 150.0,
+			"tax_amount": 150.0,
+		},
+	],
+]
\ No newline at end of file
