diff --git a/erpnext/accounts/doctype/internal_reconciliation/internal_reconciliation.js b/erpnext/accounts/doctype/internal_reconciliation/internal_reconciliation.js
index bcd5c44..a5ec2b6 100644
--- a/erpnext/accounts/doctype/internal_reconciliation/internal_reconciliation.js
+++ b/erpnext/accounts/doctype/internal_reconciliation/internal_reconciliation.js
@@ -2,7 +2,6 @@
 // --------------------
 
 cur_frm.fields_dict.voucher_no.get_query = function(doc) {
-
 	if (!doc.account) msgprint("Please select Account first");
 	else {
 		return repl("select voucher_no, posting_date \
diff --git a/erpnext/accounts/doctype/internal_reconciliation/internal_reconciliation.py b/erpnext/accounts/doctype/internal_reconciliation/internal_reconciliation.py
index 7c34546..24a7db5 100644
--- a/erpnext/accounts/doctype/internal_reconciliation/internal_reconciliation.py
+++ b/erpnext/accounts/doctype/internal_reconciliation/internal_reconciliation.py
@@ -81,7 +81,7 @@
 			and ifnull(t2.against_voucher, '')='' and ifnull(t2.against_invoice, '')='' and ifnull(t2.against_jv, '')=''
 			and t2.%s > 0
 			%s
-			group by t1.name
+			group by t1.name, t2.name
 		"""% ('%s', dc, cond), self.doc.account, as_dict=1)
 
 		return gle
@@ -112,6 +112,9 @@
 			2. split into multiple rows if partially adjusted, assign against voucher
 			3. submit payment voucher
 		"""
+		if not self.doc.voucher_no or not sql("select name from `tab%s` where name = %s" %(self.dt[self.doc.voucher_type], '%s'),  self.doc.voucher_no):
+			msgprint("Please select valid Voucher No to proceed", raise_exception=1)
+		
 		lst = []
 		for d in getlist(self.doclist, 'ir_payment_details'):
 			if d.selected and flt(d.amt_to_be_reconciled) > 0:
@@ -129,8 +132,7 @@
 			
 				lst.append(args)
 		
-		if not sql("select name from `tab%s` where name = %s" %(self.dt[self.doc.voucher_type], '%s'),  self.doc.voucher_no):
-			msgprint("Please select valid Voucher No to proceed", raise_exception=1)
+
 		if lst:
 			get_obj('GL Control').reconcile_against_document(lst)
 			msgprint("Successfully reconciled.")
diff --git a/erpnext/accounts/search_criteria/payment_receipt_report/payment_receipt_report.py b/erpnext/accounts/search_criteria/payment_receipt_report/payment_receipt_report.py
index 737e658..f92f72c 100644
--- a/erpnext/accounts/search_criteria/payment_receipt_report/payment_receipt_report.py
+++ b/erpnext/accounts/search_criteria/payment_receipt_report/payment_receipt_report.py
@@ -7,21 +7,18 @@
   raise Exception
 
 if not filter_values.get('company'):
-  msgprint("Select Comapny.")
+  msgprint("Select Company to proceed.")
   raise Exception
 
 
-#for r in res:
-#  par_acc = sql("SELECT parent.name FROM `tabAccount` AS node,`tabAccount` AS parent WHERE node.lft BETWEEN parent.lft AND parent.rgt AND node.name = '%s' and parent.cash_flow_level = 'Yes' ORDER BY parent.lft DESC"% r[0])
-#  r.append(par_acc and par_acc[0][0] or '')
 
 col_list = [['Account', 'Link', '150px', 'Account']
            ,['Total', 'Currency', '150px', '']
-#           ,['Parent Account', 'Link', '150px', 'Account']
            ]
+           
 for c in col_list:
   colnames.append(c[0])
   coltypes.append(c[1])
   colwidths.append(c[2])
   coloptions.append(c[3])
-  col_idx[c[0]] = len(colnames) - 1
\ No newline at end of file
+  col_idx[c[0]] = len(colnames) - 1
diff --git a/erpnext/stock/doctype/warehouse/warehouse.txt b/erpnext/stock/doctype/warehouse/warehouse.txt
index da29dfa..87b0eda 100644
--- a/erpnext/stock/doctype/warehouse/warehouse.txt
+++ b/erpnext/stock/doctype/warehouse/warehouse.txt
@@ -5,14 +5,14 @@
 	{
 		'creation': '2010-08-08 17:09:30',
 		'docstatus': 0,
-		'modified': '2011-09-28 16:19:59',
+		'modified': '2011-11-15 15:06:24',
 		'modified_by': 'Administrator',
 		'owner': 'Administrator'
 	},
 
 	# These values are common for all DocType
 	{
-		'_last_update': '1311621379',
+		'_last_update': '1319016431',
 		'allow_trash': 1,
 		'autoname': 'field:warehouse_name',
 		'colour': 'White:FFF',
@@ -25,7 +25,7 @@
 		'section_style': 'Tabbed',
 		'server_code_error': ' ',
 		'show_in_menu': 0,
-		'version': 56
+		'version': 58
 	},
 
 	# These values are common for all DocField
@@ -319,27 +319,6 @@
 
 	# DocField
 	{
-		'allow_on_submit': 0,
-		'doctype': 'DocField',
-		'fieldname': 'country',
-		'fieldtype': 'Link',
-		'hidden': 0,
-		'in_filter': 0,
-		'label': 'Country',
-		'no_copy': 0,
-		'oldfieldname': 'country',
-		'oldfieldtype': 'Link',
-		'options': 'Country',
-		'permlevel': 0,
-		'print_hide': 0,
-		'report_hide': 0,
-		'reqd': 0,
-		'search_index': 0,
-		'trigger': 'Client'
-	},
-
-	# DocField
-	{
 		'colour': 'White:FFF',
 		'doctype': 'DocField',
 		'fieldname': 'state',
