diff --git a/accounts/doctype/purchase_invoice/purchase_invoice.py b/accounts/doctype/purchase_invoice/purchase_invoice.py
index 404627a..0b8ad46 100644
--- a/accounts/doctype/purchase_invoice/purchase_invoice.py
+++ b/accounts/doctype/purchase_invoice/purchase_invoice.py
@@ -350,7 +350,6 @@
 		# item gl entries
 		stock_item_and_auto_accounting_for_stock = False
 		stock_items = self.get_stock_items()
-		# rounding_diff = 0.0
 		for item in self.doclist.get({"parentfield": "entries"}):
 			if auto_accounting_for_stock and item.item_code in stock_items:
 				if flt(item.valuation_rate):
@@ -361,11 +360,6 @@
 					
 					valuation_amt = item.amount + item.item_tax_amount + item.rm_supp_cost
 					
-					# rounding_diff += (flt(item.amount, self.precision("amount", item)) + 
-					# 	flt(item.item_tax_amount, self.precision("item_tax_amount", item)) + 
-					# 	flt(item.rm_supp_cost, self.precision("rm_supp_cost", item)) - 
-					# 	valuation_amt)
-					
 					gl_entries.append(
 						self.get_gl_dict({
 							"account": item.expense_head,
@@ -392,12 +386,6 @@
 			# this will balance out valuation amount included in cost of goods sold
 			expenses_included_in_valuation = \
 				self.get_company_default("expenses_included_in_valuation")
-				
-			# if rounding_diff:
-			# 	import operator
-			# 	cost_center_with_max_value = max(valuation_tax.iteritems(), 
-			# 		key=operator.itemgetter(1))[0]
-			# 	valuation_tax[cost_center_with_max_value] -= flt(rounding_diff)
 			
 			for cost_center, amount in valuation_tax.items():
 				gl_entries.append(
diff --git a/accounts/utils.py b/accounts/utils.py
index 8971c80..a5fb390 100644
--- a/accounts/utils.py
+++ b/accounts/utils.py
@@ -31,6 +31,8 @@
 	
 	if not fy:
 		error_msg = """%s %s not in any Fiscal Year""" % (label, formatdate(date))
+		error_msg = """{msg}: {date}""".format(msg=_("Fiscal Year does not exist for date"), 
+			date=formatdate(date))
 		if verbose: webnotes.msgprint(error_msg)
 		raise FiscalYearError, error_msg
 	
diff --git a/controllers/buying_controller.py b/controllers/buying_controller.py
index f014f72..3c6981d 100644
--- a/controllers/buying_controller.py
+++ b/controllers/buying_controller.py
@@ -174,9 +174,11 @@
 		"""
 		stock_items = self.get_stock_items()
 		
-		stock_items_amount = sum([flt(d.amount) for d in 
-			self.doclist.get({"parentfield": parentfield}) 
-			if d.item_code and d.item_code in stock_items])
+		stock_items_qty, stock_items_amount = 0, 0
+		for d in self.doclist.get({"parentfield": parentfield}):
+			if d.item_code and d.item_code in stock_items:
+				stock_items_qty += flt(d.qty)
+				stock_items_amount += flt(d.amount)
 			
 		total_valuation_amount = sum([flt(d.tax_amount) for d in 
 			self.doclist.get({"parentfield": "purchase_tax_details"}) 
@@ -184,9 +186,12 @@
 			
 			
 		for item in self.doclist.get({"parentfield": parentfield}):
-			if item.item_code and item.qty and stock_items_amount and item.item_code in stock_items:
-				item.item_tax_amount = flt(flt(item.amount) * total_valuation_amount \
-					/ stock_items_amount, self.precision("item_tax_amount", item))
+			if item.item_code and item.qty and item.item_code in stock_items:
+				item_proportion = flt(item.amount) / stock_items_amount if stock_items_amount \
+					else flt(item.qty) / stock_items_qty
+				
+				item.item_tax_amount = flt(item_proportion * total_valuation_amount, 
+					self.precision("item_tax_amount", item))
 
 				self.round_floats_in(item)
 				
