diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.txt b/erpnext/accounts/doctype/sales_invoice/sales_invoice.txt
index f66f877..5ec5552 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.txt
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.txt
@@ -5,7 +5,7 @@
 	{
 		'creation': '2012-04-13 11:56:18',
 		'docstatus': 0,
-		'modified': '2012-05-02 09:57:50',
+		'modified': '2012-05-04 11:56:59',
 		'modified_by': u'Administrator',
 		'owner': u'Administrator'
 	},
@@ -298,19 +298,6 @@
 
 	# DocField
 	{
-		'doctype': u'DocField',
-		'fieldname': u'posting_time',
-		'fieldtype': u'Time',
-		'label': u'Posting Time',
-		'no_copy': 1,
-		'oldfieldname': u'posting_time',
-		'oldfieldtype': u'Time',
-		'permlevel': 0,
-		'print_hide': 1
-	},
-
-	# DocField
-	{
 		'colour': u'White:FFF',
 		'default': u'Today',
 		'description': u'Enter the date by which payments from customer is expected against this invoice.',
@@ -329,6 +316,18 @@
 
 	# DocField
 	{
+		'doctype': u'DocField',
+		'fieldname': u'mode_of_payment',
+		'fieldtype': u'Select',
+		'label': u'Mode of Payment',
+		'oldfieldname': u'mode_of_payment',
+		'oldfieldtype': u'Select',
+		'options': u'link:Mode of Payment',
+		'permlevel': 0
+	},
+
+	# DocField
+	{
 		'colour': u'White:FFF',
 		'doctype': u'DocField',
 		'fieldname': u'items',
@@ -1093,6 +1092,19 @@
 
 	# DocField
 	{
+		'doctype': u'DocField',
+		'fieldname': u'posting_time',
+		'fieldtype': u'Time',
+		'label': u'Posting Time',
+		'no_copy': 1,
+		'oldfieldname': u'posting_time',
+		'oldfieldtype': u'Time',
+		'permlevel': 0,
+		'print_hide': 1
+	},
+
+	# DocField
+	{
 		'allow_on_submit': 1,
 		'colour': u'White:FFF',
 		'doctype': u'DocField',
@@ -1109,18 +1121,6 @@
 	# DocField
 	{
 		'doctype': u'DocField',
-		'fieldname': u'mode_of_payment',
-		'fieldtype': u'Select',
-		'label': u'Mode of Payment',
-		'oldfieldname': u'mode_of_payment',
-		'oldfieldtype': u'Select',
-		'options': u'link:Mode of Payment',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
 		'fieldname': u'c_form_applicable',
 		'fieldtype': u'Select',
 		'label': u'C-Form Applicable',
diff --git a/erpnext/accounts/search_criteria/trend_analyzer/trend_analyzer.js b/erpnext/accounts/search_criteria/trend_analyzer/trend_analyzer.js
index dd3e750..53de71c 100644
--- a/erpnext/accounts/search_criteria/trend_analyzer/trend_analyzer.js
+++ b/erpnext/accounts/search_criteria/trend_analyzer/trend_analyzer.js
@@ -80,14 +80,8 @@
     add_col = '';
     add_tables = '';
     sp_cond = '';
-    if(trans == 'Sales Invoice') trans = 'Sales Invoice';
-    else if(trans == 'Purchase Invoice') trans = 'Purchase Invoice';
 
-    trans_det = trans+' Detail'
-
-    if(trans == 'Sales Invoice') trans_det = 'Sales Invoice Item';
-    else if(trans == 'Purchase Invoice') trans_det = 'Purchase Invoice Item';
-    else if(trans == 'Purchase Order') trans_det = 'Purchase Order Item';
+    trans_det = trans+' Item'
 
     if(order_type != '') add_code += ' AND t1.order_type = '+order_type;
 
diff --git a/erpnext/accounts/search_criteria/trend_analyzer/trend_analyzer.py b/erpnext/accounts/search_criteria/trend_analyzer/trend_analyzer.py
index 278cfd6..4a7d093 100644
--- a/erpnext/accounts/search_criteria/trend_analyzer/trend_analyzer.py
+++ b/erpnext/accounts/search_criteria/trend_analyzer/trend_analyzer.py
@@ -39,14 +39,8 @@
 # ********************************************* SET DEFAULTS **************************************************
 # Details Table
 # --------------
-if trans == 'Sales Invoice': trans = 'Sales Invoice'
-elif trans == 'Purchase Invoice': trans = 'Purchase Invoice'
 
-trans_det = trans+' Detail'
-
-if trans == 'Sales Invoice': trans_det = 'Sales Invoice Item'
-elif trans == 'Purchase Invoice': trans_det = 'Purchase Invoice Item'
-elif trans == 'Purchase Order': trans_det = 'Purchase Order Item'
+trans_det = trans+' Item'
 
 col_names, query_val = get_obj('Trend Analyzer Control').get_single_year_query_value(fiscal_year, period, trans, trans_det)
 query_val += 'SUM(t2.qty), SUM(t2.amount)'
diff --git a/erpnext/accounts/search_criteria/trend_analyzer/trend_analyzer.txt b/erpnext/accounts/search_criteria/trend_analyzer/trend_analyzer.txt
index 93a60e0..a1cf3e4 100644
--- a/erpnext/accounts/search_criteria/trend_analyzer/trend_analyzer.txt
+++ b/erpnext/accounts/search_criteria/trend_analyzer/trend_analyzer.txt
@@ -3,9 +3,9 @@
 
 	# These values are common in all dictionaries
 	{
-		'creation': '2012-04-03 12:49:53',
+		'creation': '2012-04-23 12:46:00',
 		'docstatus': 0,
-		'modified': '2012-04-03 12:49:53',
+		'modified': '2012-05-04 12:49:43',
 		'modified_by': u'Administrator',
 		'owner': u'saumil@webnotestech.com'
 	},
@@ -30,4 +30,4 @@
 		'doctype': 'Search Criteria',
 		'name': u'trend_analyzer'
 	}
-]
+]
\ No newline at end of file
diff --git a/erpnext/patches/may_2012/renamedt_in_custom_search_criteria.py b/erpnext/patches/may_2012/renamedt_in_custom_search_criteria.py
new file mode 100644
index 0000000..3ac1f8e
--- /dev/null
+++ b/erpnext/patches/may_2012/renamedt_in_custom_search_criteria.py
@@ -0,0 +1,99 @@
+def execute():
+	import webnotes
+	rendt = {
+		'Receivable Voucher'		:	'Sales Invoice',
+		'RV Detail'					:	'Sales Invoice Item',
+		'RV Tax Detail'				:	'Sales Taxes and Charges',
+		'Payable Voucher'			:	'Purchase Invoice',
+		'PV Detail'					:	'Purchase Invoice Item',
+		'Purchase Tax Detail'		:	'Purchase Taxes and Charges',
+		'Indent'					:	'Purchase Request',
+		'Indent Detail'				:	'Purchase Request Item',
+		'QA Inspection Report'		:	'Quality Inspection',
+		'Ticket'					:	'Task',
+		'Manage Account'			:	'Global Defaults',
+		'ToDo Item'					:	'ToDo',
+		'Term'						:	'Terms and Conditions',
+		'Static Parameter Detail'	:	'SMS Parameter',
+		'SS Earning Detail'			:	'Salary Slip Earning',
+		'SS Deduction Detail'		:	'Salary Slip Deduction',
+		'Sales Order Detail'		:	'Sales Order Item',
+		'Sales BOM Detail'			:	'Sales BOM Item',
+		'Return Detail'				:	'Sales and Purchase Return Item',
+		'Ref Rate Detail'			:	'Item Price',
+		'Receiver Detail'			:	'SMS Receiver',
+		'Quotation Detail'			:	'Quotation Item',
+		'QA Specification Detail'	:	'Quality Inspection Reading',
+		'Purchase Receipt Detail'	:	'Purchase Receipt Item',
+		'Purchase Other Charges'	:	'Purchase Taxes and Charges Master',
+		'PR Raw Material Detail'	:	'Purchase Receipt Item Supplied',
+		'PP SO Detail'				:	'Production Plan Sales Order',
+		'PP Detail'					:	'Production Plan Item',
+		'PO Raw Material Detail'	:	'Purchase Order Item Supplied',
+		'PO Detail'					:	'Purchase Order Item', 
+		'Packing Slip Detail'		:	'Packing Slip Item',
+		'Other Charges'				:	'Sales Taxes and Charges Master',
+		'Order Lost Reason'			:	'Quotation Lost Reason',
+		'Manage Account'			:	'Global Defaults',
+		'Maintenance Visit Detail'	:	'Maintenance Visit Purpose',
+		'Ledger Balance Export'		:	'Multi Ledger Report',
+		'LC PR Detail'				:	'Landed Cost Purchase Receipt',
+		'Landed Cost Detail'		:	'Landed Cost Item',
+		'KRA Template'				:	'Appraisal Template',
+		'KRA Sheet'					:	'Appraisal Template Goal',
+		'Item Specification Detail' :	'Item Quality Inspection Parameter',
+		'Item Maintenance Detail'	:	'Maintenance Schedule Item',
+		'IR Payment Detail'			:	'Payment to Invoice Matching Tool Detail',
+		'Internal Reconciliation'	:	'Payment to Invoice Matching Tool',
+		'Installed Item Details'	:	'Installation Note Item',
+		'Holiday List Detail'		:	'Holiday',
+		'Follow up'					:	'Communication Log',
+		'Flat BOM Detail'			:	'BOM Explosion Item',
+		'Expense Voucher Detail'	:	'Expense Claim Detail',
+		'Expense Voucher'			:	'Expense Claim',
+		'Expense Type'				:	'Expense Claim Type',
+		'Enquiry Detail'			:	'Opportunity Item',
+		'Enquiry'					:	'Opportunity',
+		'Earning Detail'			:	'Salary Structure Earning',
+		'DocLayerField'				:	'Customize Form Field',
+		'DocLayer'					:	'Customize Form',
+		'Delivery Note Detail'		:	'Delivery Note Item',
+		'Deduction Detail'			:	'Salary Structure Deduction',
+		'Comment Widget Record'		:	'Comment',
+		'BOM Material'				:	'BOM Item',
+		'Bill Of Materials'			:	'BOM',
+		'Appraisal Detail'			:	'Appraisal Goal',
+		'Advance Allocation Detail' :	'Purchase Invoice Advance',
+		'Advance Adjustment Detail' :	'Sales Invoice Advance',
+		'Ledger Detail'				:	'Multi Ledger Report Detail',
+		'TA Control'				:	'Trend Analyzer Control',
+		'Sales and Purchase Return Wizard'	: 'Sales and Purchase Return Tool',
+		'Educational Qualifications Detail' : 'Employee Education',
+		'Delivery Note Packing Detail'		: 'Delivery Note Packing Item',
+		'Experience In Company Detail'		: 'Employee Internal Work History',
+		'Professional Training Details'		: 'Employee Training',
+		'Previous Experience Detail'		: 'Employee External Work History',
+	}
+
+	for d in rendt:
+		webnotes.conn.sql("""
+			update
+				`tabSearch Criteria` 
+			set 
+				doc_type		= replace(doc_type, %s, %s), 
+				filters			= replace(filters, %s, %s), 
+				columns			= replace(columns, %s, %s), 
+				parent_doc_type = replace(parent_doc_type, %s, %s), 
+				add_cond		= replace(add_cond, %s, %s), 
+				add_col			= replace(add_col, %s, %s), 
+				add_tab			= replace(add_tab, %s, %s), 
+				dis_filters		= replace(dis_filters, %s, %s), 
+				group_by		= replace(group_by, %s, %s), 
+				sort_by			= replace(sort_by, %s, %s), 
+				report_script	= replace(report_script, %s, %s), 
+				server_script	= replace(server_script, %s, %s), 
+				custom_query	= replace(custom_query, %s, %s)
+		""", (d, rendt[d], d, rendt[d], d, rendt[d], d, rendt[d], d, rendt[d], d, rendt[d], d, rendt[d], 
+				d, rendt[d], d, rendt[d], d, rendt[d], d, rendt[d], d, rendt[d], d, rendt[d]))
+
+
diff --git a/erpnext/patches/patch_list.py b/erpnext/patches/patch_list.py
index d6d689f..01f4a0e 100644
--- a/erpnext/patches/patch_list.py
+++ b/erpnext/patches/patch_list.py
@@ -327,5 +327,10 @@
 		'patch_file': 'cleanup_notification_control',
 		'description': 'cleanup notification control'
 	},
+	{
+		'patch_module': 'patches.may_2012',
+		'patch_file': 'renamedt_in_custom_search_criteria',
+		'description': 'raname dt in custom search criteria'
+	},
 
 ]
diff --git a/erpnext/setup/doctype/setup_control/setup_control.py b/erpnext/setup/doctype/setup_control/setup_control.py
index d5832c4..bcdd093 100644
--- a/erpnext/setup/doctype/setup_control/setup_control.py
+++ b/erpnext/setup/doctype/setup_control/setup_control.py
@@ -81,7 +81,12 @@
 
 		# Set 
 		self.set_defaults(def_args)
-		self.set_cp_defaults(**args)
+		
+		cp_args = {}
+		for k in ['industry', 'country', 'timezone', 'company_name']:
+			cp_args[k] = args[k]
+		
+		self.set_cp_defaults(**cp_args)
 
 		self.create_feed_and_todo()
 
diff --git a/erpnext/stock/doctype/landed_cost_item/landed_cost_item.txt b/erpnext/stock/doctype/landed_cost_item/landed_cost_item.txt
index 4157039..06f765d 100644
--- a/erpnext/stock/doctype/landed_cost_item/landed_cost_item.txt
+++ b/erpnext/stock/doctype/landed_cost_item/landed_cost_item.txt
@@ -3,9 +3,9 @@
 
 	# These values are common in all dictionaries
 	{
-		'creation': '2012-03-27 14:36:33',
+		'creation': '2012-05-03 11:00:55',
 		'docstatus': 0,
-		'modified': '2012-03-27 14:36:33',
+		'modified': '2012-05-04 13:02:26',
 		'modified_by': u'Administrator',
 		'owner': u'wasim@webnotestech.com'
 	},
@@ -21,7 +21,7 @@
 		'section_style': u'Simple',
 		'server_code_error': u' ',
 		'show_in_menu': 0,
-		'version': 2
+		'version': 1
 	},
 
 	# These values are common for all DocField
diff --git a/erpnext/stock/doctype/landed_cost_master/landed_cost_master.js b/erpnext/stock/doctype/landed_cost_master/landed_cost_master.js
index 3cad944..03e8a39 100644
--- a/erpnext/stock/doctype/landed_cost_master/landed_cost_master.js
+++ b/erpnext/stock/doctype/landed_cost_master/landed_cost_master.js
@@ -23,4 +23,8 @@
 
 cur_frm.cscript.refresh = function(doc, cdt, cdn) {
    
+}
+
+cur_frm.fields_dict.landed_cost.grid.get_field('account_head').get_query = function(doc, cdt, cdn) {
+	return 'SELECT tabAccount.name FROM tabAccount WHERE tabAccount.group_or_ledger="Ledger" AND tabAccount.docstatus != 2 AND (tabAccount.account_type = "Tax" OR tabAccount.account_type = "Chargeable" or (tabAccount.is_pl_account = "Yes" and tabAccount.debit_or_credit = "Debit")) AND  tabAccount.name LIKE "%s"';
 }
\ No newline at end of file
diff --git a/erpnext/stock/doctype/landed_cost_master_detail/landed_cost_master_detail.txt b/erpnext/stock/doctype/landed_cost_master_detail/landed_cost_master_detail.txt
index 1beccea..74e47e1 100644
--- a/erpnext/stock/doctype/landed_cost_master_detail/landed_cost_master_detail.txt
+++ b/erpnext/stock/doctype/landed_cost_master_detail/landed_cost_master_detail.txt
@@ -3,9 +3,9 @@
 
 	# These values are common in all dictionaries
 	{
-		'creation': '2012-03-27 14:36:34',
+		'creation': '2012-05-03 11:00:55',
 		'docstatus': 0,
-		'modified': '2012-03-27 14:36:34',
+		'modified': '2012-05-04 13:02:35',
 		'modified_by': u'Administrator',
 		'owner': u'Administrator'
 	},
@@ -19,13 +19,12 @@
 		'name': '__common__',
 		'section_style': u'Simple',
 		'server_code_error': u' ',
-		'version': 2
+		'version': 1
 	},
 
 	# These values are common for all DocField
 	{
 		'doctype': u'DocField',
-		'fieldtype': u'Data',
 		'name': '__common__',
 		'oldfieldtype': u'Data',
 		'parent': u'Landed Cost Master Detail',
@@ -44,14 +43,17 @@
 	{
 		'doctype': u'DocField',
 		'fieldname': u'account_head',
+		'fieldtype': u'Link',
 		'label': u'Account Head',
-		'oldfieldname': u'account_head'
+		'oldfieldname': u'account_head',
+		'options': u'Account'
 	},
 
 	# DocField
 	{
 		'doctype': u'DocField',
 		'fieldname': u'description',
+		'fieldtype': u'Data',
 		'label': u'Description',
 		'oldfieldname': u'description',
 		'width': u'300px'
diff --git a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
index 86cb099..ee81518 100644
--- a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
+++ b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
@@ -47,36 +47,35 @@
 
 		return content
 
-	def convert_into_list(self, data):
+	def convert_into_list(self, data, submit = 1):
 		"""Convert csv data into list"""
-		count = 1
+		count = 2
 		for s in data:
-			if s[0].strip() != 'Item Code': # remove the labels
-				# validate
-				if len(s) != 4:
-					msgprint("Data entered at Row No " + cstr(count) + " in Attachment File is not in correct format.", raise_exception=1)
-					self.validated = 0
-				self.validate_item(s[0], count)
-				self.validate_warehouse(s[1], count)
+			if count == 2: continue
+			# validate
+			if (submit and len(s) != 4) or (not submit and len(s) != 6):
+				msgprint("Data entered at Row No " + cstr(count) + " in Attachment File is not in correct format.", raise_exception=1)
+				self.validated = 0
+			self.validate_item(s[0], count)
+			self.validate_warehouse(s[1], count)
 			
-				self.data.append(s)
-				count += 1
+			self.data.append(s)
+			count += 1
 			
 		if not self.validated:
 			raise Exception
 
 
-	def get_reconciliation_data(self,submit = 0):
+	def get_reconciliation_data(self,submit = 1):
 		"""Read and validate csv data"""
 		import csv 
 		data = csv.reader(self.get_csv_file_data().splitlines())
-		self.convert_into_list(data)
+		self.convert_into_list(data, submit)
 		
 
 	def validate_item(self, item, count):
 		""" Validate item exists and non-serialized"""
-		det = sql("select item_code, has_serial_no from `tabItem` \
-				where name = %s", cstr(item), as_dict = 1)
+		det = sql("select item_code, has_serial_no from `tabItem` where name = %s", cstr(item), as_dict = 1)
 		if not det:
 			msgprint("Item: " + cstr(item) + " mentioned at Row No. " + cstr(count) + "does not exist in the system")
 			self.validated = 0
@@ -176,7 +175,7 @@
 		"""Add diffs column in attached file"""
 		
 		# add header
-		out = "'Item Code', 'Warehouse', 'Qty', 'Valuation Rate', 'Qty Diff', 'Val Rate Diff'"
+		out = "Item Code, Warehouse, Qty, Valuation Rate, Qty Diff, Val Rate Diff"
 		
 		# add data
 		for d in self.data:
@@ -199,5 +198,5 @@
 
 
 	def on_cancel(self):
-		self.validate()
+		self.get_reconciliation_data(submit = 0)
 		self.do_stock_reco(is_submit = -1)
diff --git a/erpnext/utilities/doctype/contact/contact.js b/erpnext/utilities/doctype/contact/contact.js
index 9244b79..ae06ed4 100644
--- a/erpnext/utilities/doctype/contact/contact.js
+++ b/erpnext/utilities/doctype/contact/contact.js
@@ -15,7 +15,7 @@
 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 //--------- ONLOAD -------------
-cur_frm.cscript.onload = function(doc, cdt, cdn) {
+cur_frm.cscript.onload = function(doc, cdt, cdn) {	
 	if(doc.customer) cur_frm.add_fetch('customer', 'customer_name', 'customer_name');
 	if(doc.supplier) cur_frm.add_fetch('supplier', 'supplier_name', 'supplier_name');
 
diff --git a/js/all-app.js b/js/all-app.js
index 09a3020..65ca124 100644
--- a/js/all-app.js
+++ b/js/all-app.js
@@ -1314,7 +1314,7 @@
 delete locals[dt][dn];}
 function get_local(dt,dn){return locals[dt]?locals[dt][dn]:null;}
 LocalDB.sync=function(list){if(list._kl)list=expand_doclist(list);for(var i=0;i<list.length;i++){var d=list[i];if(!d.name)
-d.name=LocalDB.get_localname(d.doctype);LocalDB.add(d.doctype,d.name);locals[d.doctype][d.name]=d;if(d.doctype=='DocField')wn.meta.add_field(d);if(d.localname){wn.model.new_names[d.localname]=d.name;console.log(d.localname);$(document).trigger('rename',[d.doctype,d.localname,d.name]);delete locals[d.doctype][d.localname];}}}
+d.name=LocalDB.get_localname(d.doctype);LocalDB.add(d.doctype,d.name);locals[d.doctype][d.name]=d;if(d.doctype=='DocField')wn.meta.add_field(d);if(d.localname){wn.model.new_names[d.localname]=d.name;$(document).trigger('rename',[d.doctype,d.localname,d.name]);delete locals[d.doctype][d.localname];}}}
 local_name_idx={};LocalDB.get_localname=function(doctype){if(!local_name_idx[doctype])local_name_idx[doctype]=1;var n='New '+get_doctype_label(doctype)+' '+local_name_idx[doctype];local_name_idx[doctype]++;return n;}
 LocalDB.set_default_values=function(doc){var doctype=doc.doctype;var docfields=wn.meta.docfield_list[doctype];if(!docfields){return;}
 var fields_to_refresh=[];for(var fid=0;fid<docfields.length;fid++){var f=docfields[fid];if(!in_list(no_value_fields,f.fieldtype)&&doc[f.fieldname]==null){var v=LocalDB.get_default_value(f.fieldname,f.fieldtype,f['default']);if(v){doc[f.fieldname]=v;fields_to_refresh.push(f.fieldname);}}}
@@ -1686,7 +1686,7 @@
 d.onhide=function(){if(_f.cur_grid){_f.cur_grid.refresh_row(_f.cur_grid_ridx,me.dn);}
 if(wn.container.page.frm){cur_frm=wn.container.page.frm;}
 if(me.cur_frm.cscript.hide_dialog){me.cur_frm.cscript.hide_dialog();}
-console.log(me.cur_frm.wrapper);$(me.cur_frm.page_layout.wrapper).toggle(false);}
+$(me.cur_frm.page_layout.wrapper).toggle(false);}
 this.dialog=d;}
 _f.edit_record=function(dt,dn){if(!_f.frm_dialog){_f.frm_dialog=new _f.FrmDialog();}
 var d=_f.frm_dialog;wn.model.with_doctype(dt,function(){wn.model.with_doc(dt,dn,function(dn){if(!_f.frms[dt]){_f.frms[dt]=new _f.Frm(dt,d.body);}
@@ -1712,8 +1712,7 @@
 /*
  *	lib/js/legacy/widgets/form/form.js
  */
-wn.provide('_f');_f.frms={};_f.Frm=function(doctype,parent){this.docname='';this.doctype=doctype;this.display=0;var me=this;this.is_editable={};this.opendocs={};this.sections=[];this.grids=[];this.cscript={};this.pformat={};this.fetch_dict={};this.parent=parent;this.tinymce_id_list=[];this.setup_meta(doctype);var me=this;$(document).bind('rename',function(event,dt,old_name,new_name){console.log(arguments)
-if(dt==me.doctype)
+wn.provide('_f');_f.frms={};_f.Frm=function(doctype,parent){this.docname='';this.doctype=doctype;this.display=0;var me=this;this.is_editable={};this.opendocs={};this.sections=[];this.grids=[];this.cscript={};this.pformat={};this.fetch_dict={};this.parent=parent;this.tinymce_id_list=[];this.setup_meta(doctype);var me=this;$(document).bind('rename',function(event,dt,old_name,new_name){if(dt==me.doctype)
 me.rename_notify(dt,old_name,new_name)});}
 _f.Frm.prototype.check_doctype_conflict=function(docname){var me=this;if(this.doctype=='DocType'&&docname=='DocType'){msgprint('Allowing DocType, DocType. Be careful!')}else if(this.doctype=='DocType'){if(wn.views.formview[docname]){msgprint("Cannot open DocType when its instance is open")
 throw'doctype open conflict'}}else{if(wn.views.formview.DocType&&wn.views.formview.DocType.frm.opendocs[this.doctype]){msgprint("Cannot open instance when its DocType is open")
@@ -1809,7 +1808,7 @@
 var ret_fn=function(r){me.savingflag=false;if(user=='Guest'&&!r.exc){$dh(me.page_layout.wrapper);$ds(me.saved_wrapper);me.saved_wrapper.innerHTML='<div style="padding: 150px 16px; text-align: center; font-size: 14px;">'
 +(cur_frm.message_after_save?cur_frm.message_after_save:'Your information has been sent. Thank you!')
 +'</div>';return;}
-if(!me.meta.istable){me.refresh();}
+if(!me.meta.istable){me.refresh(r.docname);}
 if(call_back){call_back(r);}}
 var me=this;var ret_fn_err=function(r){var doc=locals[me.doctype][me.docname];me.savingflag=false;ret_fn(r);}
 this.savingflag=true;if(this.docname&&validated){scroll(0,0);return this.savedoc(save_action,ret_fn,ret_fn_err);}}
@@ -2009,7 +2008,7 @@
 _p.go=function(html){var d=document.createElement('div')
 d.innerHTML=html
 $(d).printElement();}
-_p.preview=function(html){var w=window.open('');w.document.write(html)
+_p.preview=function(html){var w=window.open('');if(!w)return;w.document.write(html)
 w.document.close();}
 $.extend(_p,{show_dialog:function(){if(!_p.dialog){_p.make_dialog();}
 _p.dialog.show();},make_dialog:function(){var d=new Dialog(360,140,'Print Formats',[['HTML','Select'],['Check','No Letterhead'],['HTML','Buttons']]);$btn(d.widgets.Buttons,'Print',function(){_p.build(sel_val(cur_frm.print_sel),_p.go,d.widgets['No Letterhead'].checked);},{cssFloat:'right',marginBottom:'16px',marginLeft:'7px'},'green');$btn(d.widgets.Buttons,'Preview',function(){_p.build(sel_val(cur_frm.print_sel),_p.preview,d.widgets['No Letterhead'].checked);},{cssFloat:'right',marginBottom:'16px'},'');d.onshow=function(){var c=_p.dialog.widgets['Select'];if(c.cur_sel&&c.cur_sel.parentNode==c){c.removeChild(c.cur_sel);}
diff --git a/js/all-web.js b/js/all-web.js
index 24ee8f4..00d396a 100644
--- a/js/all-web.js
+++ b/js/all-web.js
@@ -758,7 +758,7 @@
 delete locals[dt][dn];}
 function get_local(dt,dn){return locals[dt]?locals[dt][dn]:null;}
 LocalDB.sync=function(list){if(list._kl)list=expand_doclist(list);for(var i=0;i<list.length;i++){var d=list[i];if(!d.name)
-d.name=LocalDB.get_localname(d.doctype);LocalDB.add(d.doctype,d.name);locals[d.doctype][d.name]=d;if(d.doctype=='DocField')wn.meta.add_field(d);if(d.localname){wn.model.new_names[d.localname]=d.name;console.log(d.localname);$(document).trigger('rename',[d.doctype,d.localname,d.name]);delete locals[d.doctype][d.localname];}}}
+d.name=LocalDB.get_localname(d.doctype);LocalDB.add(d.doctype,d.name);locals[d.doctype][d.name]=d;if(d.doctype=='DocField')wn.meta.add_field(d);if(d.localname){wn.model.new_names[d.localname]=d.name;$(document).trigger('rename',[d.doctype,d.localname,d.name]);delete locals[d.doctype][d.localname];}}}
 local_name_idx={};LocalDB.get_localname=function(doctype){if(!local_name_idx[doctype])local_name_idx[doctype]=1;var n='New '+get_doctype_label(doctype)+' '+local_name_idx[doctype];local_name_idx[doctype]++;return n;}
 LocalDB.set_default_values=function(doc){var doctype=doc.doctype;var docfields=wn.meta.docfield_list[doctype];if(!docfields){return;}
 var fields_to_refresh=[];for(var fid=0;fid<docfields.length;fid++){var f=docfields[fid];if(!in_list(no_value_fields,f.fieldtype)&&doc[f.fieldname]==null){var v=LocalDB.get_default_value(f.fieldname,f.fieldtype,f['default']);if(v){doc[f.fieldname]=v;fields_to_refresh.push(f.fieldname);}}}
