diff --git a/accounts/doctype/pos_setting/pos_setting.js b/accounts/doctype/pos_setting/pos_setting.js
index 2f8beab..62549bb 100755
--- a/accounts/doctype/pos_setting/pos_setting.js
+++ b/accounts/doctype/pos_setting/pos_setting.js
@@ -60,17 +60,6 @@
 	}	
 }
 
-//get query select Territory
-//=================================================================
-cur_frm.fields_dict['territory'].get_query = function(doc,cdt,cdn) {
-	return{
-		filters:{
-			'is_group': "No"
-		}
-	}	
-}
-
-
 // ------------------ Get Print Heading ------------------------------------
 cur_frm.fields_dict['select_print_heading'].get_query = function(doc, cdt, cdn) {
 	return{
diff --git a/accounts/doctype/sales_invoice/sales_invoice.js b/accounts/doctype/sales_invoice/sales_invoice.js
index 773956a..1ef7334 100644
--- a/accounts/doctype/sales_invoice/sales_invoice.js
+++ b/accounts/doctype/sales_invoice/sales_invoice.js
@@ -283,14 +283,6 @@
 	}	
 }
 
-//Territory
-//-----------------------------
-cur_frm.fields_dict['territory'].get_query = function(doc,cdt,cdn) {
-	return{
-		filters: {'is_group': 'NO'}
-	}	
-}
-
 // Income Account in Details Table
 // --------------------------------
 cur_frm.set_query("income_account", "entries", function(doc) {
diff --git a/hr/doctype/expense_claim/expense_claim.js b/hr/doctype/expense_claim/expense_claim.js
index 406b57a..ce3cbea 100644
--- a/hr/doctype/expense_claim/expense_claim.js
+++ b/hr/doctype/expense_claim/expense_claim.js
@@ -14,10 +14,46 @@
 // You should have received a copy of the GNU General Public License
 // along with this program.	If not, see <http://www.gnu.org/licenses/>.
 
+wn.provide("erpnext.hr");
+
+erpnext.hr.ExpenseClaimController = wn.ui.form.Controller.extend({
+	make_bank_voucher: function() {
+		var me = this;
+		wn.call({
+			method: "accounts.doctype.journal_voucher.journal_voucher.get_default_bank_cash_account",
+			args: {
+				"company": cur_frm.doc.company,
+				"voucher_type": "Bank Voucher"
+			},
+			callback: function(r) {
+				var jv = wn.model.make_new_doc_and_get_name('Journal Voucher');
+				jv = locals['Journal Voucher'][jv];
+				jv.voucher_type = 'Bank Voucher';
+				jv.company = cur_frm.doc.company;
+				jv.remark = 'Payment against Expense Claim: ' + cur_frm.doc.name;
+				jv.fiscal_year = cur_frm.doc.fiscal_year;
+
+				var d1 = wn.model.add_child(jv, 'Journal Voucher Detail', 'entries');
+				d1.debit = cur_frm.doc.total_sanctioned_amount;
+
+				// credit to bank
+				var d1 = wn.model.add_child(jv, 'Journal Voucher Detail', 'entries');
+				d1.account = r.message[0].account;
+				d1.credit = cur_frm.doc.total_sanctioned_amount;
+				d1.balance = r.message[0].balance;
+
+				loaddoc('Journal Voucher', jv.name);
+			}
+		});
+	}
+})
+
+$.extend(cur_frm.cscript, new erpnext.hr.ExpenseClaimController({frm: cur_frm}));
+
 cur_frm.add_fetch('employee', 'company', 'company');
 cur_frm.add_fetch('employee','employee_name','employee_name');
 
-cur_frm.cscript.onload = function(doc,cdt,cdn){
+cur_frm.cscript.onload = function(doc,cdt,cdn) {
 	if(!doc.approval_status)
 		cur_frm.set_value("approval_status", "Draft")
 			
@@ -71,15 +107,15 @@
 		} else {
 			if(doc.approval_status=="Approved") {
 				cur_frm.set_intro("Expense Claim has been approved.");
+				if(doc.docstatus==0) cur_frm.savesubmit();
+				if(doc.docstatus==1) cur_frm.add_custom_button("Make Bank Voucher", 
+					cur_frm.cscript.make_bank_voucher);
 			} else if(doc.approval_status=="Rejected") {
 				cur_frm.set_intro("Expense Claim has been rejected.");
 			}
 		}
 	}
-	
-	if(doc.approval_status=="Approved" && doc.docstatus==0) {
-		cur_frm.savesubmit()
-	}}
+}
 
 cur_frm.cscript.validate = function(doc) {
 	cur_frm.cscript.calculate_total(doc);
diff --git a/selling/doctype/installation_note/installation_note.js b/selling/doctype/installation_note/installation_note.js
index 3f02c83..dce0a31 100644
--- a/selling/doctype/installation_note/installation_note.js
+++ b/selling/doctype/installation_note/installation_note.js
@@ -48,12 +48,6 @@
 			}
 		});
 		
-		this.frm.set_query("territory", function() {
-			return {
-				filters: {'is_group': "No" }
-			}
-		});
-		
 		this.frm.set_query("customer", function() {
 			return {
 				query: "controllers.queries.customer_query"
diff --git a/selling/doctype/sales_order/sales_order.js b/selling/doctype/sales_order/sales_order.js
index 7eeb22d..88442ea 100644
--- a/selling/doctype/sales_order/sales_order.js
+++ b/selling/doctype/sales_order/sales_order.js
@@ -197,12 +197,6 @@
 	}
 }
 
-cur_frm.fields_dict['territory'].get_query = function(doc,cdt,cdn) {
-	return{
-		filters:{ 'is_group': "No"}
-	}
-}
-
 cur_frm.cscript.on_submit = function(doc, cdt, cdn) {
 	if(cint(wn.boot.notification_settings.sales_order)) {
 		cur_frm.email_doc(wn.boot.notification_settings.sales_order_message);
diff --git a/stock/doctype/delivery_note/delivery_note.js b/stock/doctype/delivery_note/delivery_note.js
index e93e6d3..3dac29d 100644
--- a/stock/doctype/delivery_note/delivery_note.js
+++ b/stock/doctype/delivery_note/delivery_note.js
@@ -130,14 +130,6 @@
 	loaddoc('Packing Slip', n);
 }
 
-
-//get query select Territory
-cur_frm.fields_dict['territory'].get_query = function(doc,cdt,cdn) {
-	return{
-		filters: { 'is_group': "No" }
-	}
-}
-
 var set_print_hide= function(doc, cdt, cdn){
 	var dn_fields = wn.meta.docfield_map['Delivery Note'];
 	var dn_item_fields = wn.meta.docfield_map['Delivery Note Item'];
diff --git a/support/doctype/customer_issue/customer_issue.js b/support/doctype/customer_issue/customer_issue.js
index 2268493..96662b9 100644
--- a/support/doctype/customer_issue/customer_issue.js
+++ b/support/doctype/customer_issue/customer_issue.js
@@ -117,11 +117,6 @@
 cur_frm.add_fetch('item_code', 'item_name', 'item_name');
 cur_frm.add_fetch('item_code', 'description', 'description');
 
-cur_frm.fields_dict['territory'].get_query = function(doc,cdt,cdn) {
-	return{
-		filters:{ 'is_group': "No"}
-	}
-}
 
 cur_frm.fields_dict.customer.get_query = function(doc,cdt,cdn) {
 	return{	query:"controllers.queries.customer_query" } }
diff --git a/support/doctype/maintenance_schedule/maintenance_schedule.js b/support/doctype/maintenance_schedule/maintenance_schedule.js
index fab9b2a..d847269 100644
--- a/support/doctype/maintenance_schedule/maintenance_schedule.js
+++ b/support/doctype/maintenance_schedule/maintenance_schedule.js
@@ -123,11 +123,5 @@
   }  
 }
 
-cur_frm.fields_dict['territory'].get_query = function(doc,cdt,cdn) {
-  return{
-    filters:{ 'is_group': "No"}
-  }  
-}
-
 cur_frm.fields_dict.customer.get_query = function(doc,cdt,cdn) {
   return{ query:"controllers.queries.customer_query" } }
diff --git a/support/doctype/maintenance_visit/maintenance_visit.js b/support/doctype/maintenance_visit/maintenance_visit.js
index 0b0d010..f3faf3f 100644
--- a/support/doctype/maintenance_visit/maintenance_visit.js
+++ b/support/doctype/maintenance_visit/maintenance_visit.js
@@ -118,14 +118,6 @@
 	}
 }
 
-//get query select Territory
-cur_frm.fields_dict['territory'].get_query = function(doc,cdt,cdn) {
-  	return{
-    	filters:{
-      		'is_group': "No"
-    	}
-  	}
-}
 
 cur_frm.fields_dict.customer.get_query = function(doc,cdt,cdn) {
 	return {query: "controllers.queries.customer_query" }
