diff --git a/erpnext/stock/report/stock_ageing/stock_ageing.py b/erpnext/stock/report/stock_ageing/stock_ageing.py
index 4af3c54..3dc806f 100644
--- a/erpnext/stock/report/stock_ageing/stock_ageing.py
+++ b/erpnext/stock/report/stock_ageing/stock_ageing.py
@@ -16,10 +16,11 @@
 
 	data = []
 	for item, item_dict in iteritems(item_details):
+		earliest_age, latest_age = 0, 0
 
 		fifo_queue = sorted(filter(_func, item_dict["fifo_queue"]), key=_func)
 		details = item_dict["details"]
-		if not fifo_queue or (not item_dict.get("total_qty")): continue
+		if not fifo_queue and (not item_dict.get("total_qty")): continue
 
 		average_age = get_average_age(fifo_queue, to_date)
 		earliest_age = date_diff(to_date, fifo_queue[0][1])
@@ -60,7 +61,7 @@
 	range1 = range2 = range3 = above_range3 = 0.0
 	for item in fifo_queue:
 		age = date_diff(to_date, item[1])
-		
+
 		if age <= filters.range1:
 			range1 += flt(item[0])
 		elif age <= filters.range2:
@@ -69,7 +70,7 @@
 			range3 += flt(item[0])
 		else:
 			above_range3 += flt(item[0])
-		
+
 	return range1, range2, range3, above_range3
 
 def get_columns(filters):
@@ -170,7 +171,8 @@
 		item_details.setdefault(key, {"details": d, "fifo_queue": []})
 		fifo_queue = item_details[key]["fifo_queue"]
 
-		transferred_item_details.setdefault((d.voucher_no, d.name), [])
+		transferred_item_key = (d.voucher_no, d.name, d.warehouse)
+		transferred_item_details.setdefault(transferred_item_key, [])
 
 		if d.voucher_type == "Stock Reconciliation":
 			d.actual_qty = flt(d.qty_after_transaction) - flt(item_details[key].get("qty_after_transaction", 0))
@@ -178,10 +180,10 @@
 		serial_no_list = get_serial_nos(d.serial_no) if d.serial_no else []
 
 		if d.actual_qty > 0:
-			if transferred_item_details.get((d.voucher_no, d.name)):
-				batch = transferred_item_details[(d.voucher_no, d.name)][0]
+			if transferred_item_details.get(transferred_item_key):
+				batch = transferred_item_details[transferred_item_key][0]
 				fifo_queue.append(batch)
-				transferred_item_details[((d.voucher_no, d.name))].pop(0)
+				transferred_item_details[transferred_item_key].pop(0)
 			else:
 				if serial_no_list:
 					for serial_no in serial_no_list:
@@ -205,11 +207,11 @@
 						# if batch qty > 0
 						# not enough or exactly same qty in current batch, clear batch
 						qty_to_pop -= flt(batch[0])
-						transferred_item_details[(d.voucher_no, d.name)].append(fifo_queue.pop(0))
+						transferred_item_details[transferred_item_key].append(fifo_queue.pop(0))
 					else:
 						# all from current batch
 						batch[0] = flt(batch[0]) - qty_to_pop
-						transferred_item_details[(d.voucher_no, d.name)].append([qty_to_pop, batch[1]])
+						transferred_item_details[transferred_item_key].append([qty_to_pop, batch[1]])
 						qty_to_pop = 0
 
 		item_details[key]["qty_after_transaction"] = d.qty_after_transaction
