diff --git a/accounts/doctype/trend_analyzer_control/trend_analyzer_control.py b/accounts/doctype/trend_analyzer_control/trend_analyzer_control.py
index f43542f..b8461bd 100755
--- a/accounts/doctype/trend_analyzer_control/trend_analyzer_control.py
+++ b/accounts/doctype/trend_analyzer_control/trend_analyzer_control.py
@@ -17,7 +17,7 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, cint, cstr, month_name
+from webnotes.utils import add_days, add_months, cint, cstr
 from webnotes.model import db_exists
 from webnotes.model.wrapper import copy_doclist
 
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/setup/doctype/naming_series/naming_series.js b/setup/doctype/naming_series/naming_series.js
index 967e8b0..4a741e4 100644
--- a/setup/doctype/naming_series/naming_series.js
+++ b/setup/doctype/naming_series/naming_series.js
@@ -15,10 +15,14 @@
 // along with this program.	If not, see <http://www.gnu.org/licenses/>.
 
 // Settings
-cur_frm.cscript.onload = function(doc, cdt, cdn){
-	cur_frm.call_server('get_transactions', '', cur_frm.cscript.update_selects);
-	
-	cur_frm.cscript.select_doc_for_series(doc);
+cur_frm.cscript.onload_post_render = function(doc, cdt, cdn){
+	cur_frm.call({
+		method: 'get_transactions',
+		callback: function(r) {
+			cur_frm.cscript.update_selects(r);
+			cur_frm.cscript.select_doc_for_series(doc, cdt, cdn);
+		}
+	})
 }
 
 cur_frm.cscript.update_selects = function(r) {
@@ -47,7 +51,7 @@
 	cur_frm.call_server('update_series', '', cur_frm.cscript.update_selects)
 }
 
-cur_frm.cscript.prefix = function(doc) {
+cur_frm.cscript.prefix = function(doc, dt, dn) {
 	cur_frm.call_server('get_current', '', function(r) {
 		refresh_field('current_value');
 	})
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)
 		
