diff --git a/controllers/__init__.py b/controllers/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/controllers/__init__.py
diff --git a/controllers/tax_controller.py b/controllers/tax_controller.py
index 6df17f5..d19a729 100644
--- a/controllers/tax_controller.py
+++ b/controllers/tax_controller.py
@@ -72,6 +72,7 @@
 		self.calculate_taxes()
 		self.calculate_totals()
 		self.set_amount_in_words()
+		self.cleanup()
 		
 	def calculate_item_values(self):
 		def _set_base(item, print_field, base_field):
@@ -104,12 +105,12 @@
 						
 			item.fields[self.fmap.print_amount] = \
 				flt(item.fields.get(self.fmap.print_rate) * \
-				item.fields.get(self.fmap.qty),
+				item.fields.get("qty"),
 				self.precision.item[self.fmap.print_amount])
 				
 			_set_base(item, self.fmap.print_ref_rate, self.fmap.ref_rate)
 			_set_base(item, self.fmap.print_rate, self.fmap.rate)
-			_set_base(item, self.fmap.print_amount, self.fmap.amount)
+			_set_base(item, self.fmap.print_amount, "amount")
 			
 	def initialize_taxes(self):
 		for tax in self.tax_doclist:
@@ -431,3 +432,14 @@
 			return flt(item_tax_map.get(tax.account_head), self.precision.tax.rate)
 		else:
 			return tax.rate
+			
+	def cleanup(self):
+		for f in ["taxes_and_charges_total_print", "rounded_total_in_words_print",
+				"rounded_total_print", "rounded_total_in_words"]:
+			del self.doc.fields[self.fmap.get(f) or f]
+		
+		for f in ["grand_total_print_for_current_item", "tax_amount_print",
+				"grand_total_for_current_item", "tax_amount_for_current_item",
+				"total_print"]:
+			for doc in self.doclist.get({"parentfield": self.fmap.taxes_and_charges}):
+				del doc.fields[self.fmap.get(f) or f]
diff --git a/controllers/transaction_controller.py b/controllers/transaction_controller.py
index 5d77472..a7dbde1 100644
--- a/controllers/transaction_controller.py
+++ b/controllers/transaction_controller.py
@@ -21,8 +21,6 @@
 from webnotes.utils import cint
 import json
 
-import stock.utils
-
 from webnotes.model.controller import DocListController
 
 class TransactionController(DocListController):
diff --git a/stock/doctype/purchase_receipt/test_purchase_receipt.py b/stock/doctype/purchase_receipt/test_purchase_receipt.py
index 98418d0..dfd2188 100644
--- a/stock/doctype/purchase_receipt/test_purchase_receipt.py
+++ b/stock/doctype/purchase_receipt/test_purchase_receipt.py
@@ -97,24 +97,24 @@
 		"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", "valuation_tax_amount": 250,
+		"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, "purchase_rate": 100, "tax_amount": 100,
+		"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, "purchase_rate": 120, "tax_amount": 120,
+		"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, "purchase_rate": 150, "tax_amount": 150,
+		"account_head": "Customs Duty - %s" % abbr, "rate": 150, "tax_amount": 150,
 		"category": "Valuation", "parentfield": "purchase_tax_details",
 		"cost_center": "Default Cost Center - %s" % abbr
 	}
@@ -158,7 +158,6 @@
 		load_data()
 		webnotes.conn.set_value("Global Defaults", None, "automatic_inventory_accounting", 1)
 		
-		
 	def test_purchase_receipt(self):
 		# warehouse does not have stock in hand specified
 		self.run_purchase_receipt_test(base_purchase_receipt,
@@ -169,9 +168,17 @@
 			credit_account, stock_value):
 		from webnotes.model.doclist import DocList	
 		dl = webnotes.insert(DocList(purchase_receipt))
+		
+		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
+		
 		dl.submit()
 		dl.load_from_db()
-						
+		
 		gle = webnotes.conn.sql("""select account, ifnull(debit, 0), ifnull(credit, 0)
 			from `tabGL Entry` where voucher_no = %s""", dl.doclist[0].name)
 		
