diff --git a/patches/january_2013/file_list_rename_returns.py b/patches/january_2013/file_list_rename_returns.py
new file mode 100644
index 0000000..cca7a15
--- /dev/null
+++ b/patches/january_2013/file_list_rename_returns.py
@@ -0,0 +1,66 @@
+import webnotes
+from webnotes.utils import get_base_path
+import os
+
+def execute():
+	# find out when was the file list patch run
+	res = webnotes.conn.sql("""select applied_on from `__PatchLog`
+		where patch='patches.december_2012.file_list_rename' order by applied_on desc limit 1""")
+	if res:
+		patch_date = res[0][0].date()
+		files_path = os.path.join(get_base_path(), "public", "files")
+		
+		change_map = {}
+		
+		file_data_list = webnotes.conn.sql("""select name, file_name from `tabFile Data`
+			where date(modified) <= %s and ifnull(file_url, '')='' and name like "%%-%%" """,
+			patch_date)
+			
+		# print patch_date
+		# print file_data_list
+		# print files_path
+		
+		for fid, file_name in file_data_list:			
+			if os.path.exists(os.path.join(files_path, fid)):
+				new_fid, new_file_name = fid.replace("-", ""), file_name.replace("-", "")
+				
+				try:
+					webnotes.conn.sql("""update `tabFile Data`
+						set name=%s, file_name=%s where name=%s""", (new_fid, new_file_name, fid))
+			
+					os.rename(os.path.join(files_path, fid), os.path.join(files_path, new_fid))
+			
+					change_map[",".join((file_name, fid))] = ",".join((new_file_name, new_fid))
+				except Exception, e:
+					# if duplicate entry, then dont update
+					if e[0]!=1062:
+						print webnotes.getTraceback()
+						raise e
+		
+		print change_map
+		
+		changed_keys = change_map.keys()
+			
+		for dt in webnotes.conn.sql("""select distinct parent from tabDocField 
+			where fieldname='file_list'"""):
+			try:
+				data = webnotes.conn.sql("""select name, file_list from `tab%s`
+					where ifnull(file_list, '')!=''""" % dt[0])
+				for name, file_list in data:
+					new_file_list = []
+					file_list = file_list.split("\n")
+					for f in file_list:
+						if f in changed_keys:
+							new_file_list.append(change_map[f])
+						else:
+							new_file_list.append(f)
+					if new_file_list != file_list:
+						webnotes.conn.sql("""update `tab%s` set file_list=%s
+							where name=%s""" % (dt[0], "%s", "%s"), 
+							("\n".join(new_file_list), name))
+				
+			except Exception, e:
+				if e[0]!=1146:
+					print webnotes.getTraceback()
+					raise e
+	
\ No newline at end of file
diff --git a/patches/january_2013/stock_reconciliation_patch.py b/patches/january_2013/stock_reconciliation_patch.py
index 0bfcc98..1203595 100644
--- a/patches/january_2013/stock_reconciliation_patch.py
+++ b/patches/january_2013/stock_reconciliation_patch.py
@@ -31,19 +31,29 @@
 			
 def store_stock_reco_json():
 	import os
-	import conf
 	import json
 	from webnotes.utils.datautils import read_csv_content
-	base_path = os.path.dirname(os.path.abspath(conf.__file__))
+	from webnotes.utils import get_base_path
+	files_path = os.path.join(get_base_path(), "public", "files")
+	
+	list_of_files = os.listdir(files_path)
+	replaced_list_of_files = [f.replace("-", "") for f in list_of_files]
 	
 	for reco, file_list in webnotes.conn.sql("""select name, file_list 
 			from `tabStock Reconciliation`"""):
 		if file_list:
 			file_list = file_list.split("\n")
 			stock_reco_file = file_list[0].split(",")[1]
-			stock_reco_file = os.path.join(base_path, "public", "files", stock_reco_file)
-			if os.path.exists(stock_reco_file):
-				with open(stock_reco_file, "r") as open_reco_file:
+			stock_reco_file_path = os.path.join(files_path, stock_reco_file)
+			if not os.path.exists(stock_reco_file_path):
+				if stock_reco_file in replaced_list_of_files:
+					stock_reco_file_path = os.path.join(files_path,
+						list_of_files[replaced_list_of_files.index(stock_reco_file)])
+				else:
+					stock_reco_file_path = ""
+			
+			if stock_reco_file_path:
+				with open(stock_reco_file_path, "r") as open_reco_file:
 					content = open_reco_file.read()
 					content = read_csv_content(content)
 					reconciliation_json = json.dumps(content, separators=(',', ': '))
diff --git a/patches/patch_list.py b/patches/patch_list.py
index f9bb97c..e842e16 100644
--- a/patches/patch_list.py
+++ b/patches/patch_list.py
@@ -582,4 +582,8 @@
 		'patch_module': 'patches.january_2013',
 		'patch_file': 'holiday_list_patch',
 	},
+	{
+		'patch_module': 'patches.january_2013',
+		'patch_file': 'stock_reconciliation_patch',
+	},
 ]
\ No newline at end of file
