diff --git a/hr/doctype/expense_claim/expense_claim.js b/hr/doctype/expense_claim/expense_claim.js
index 65c5579..f7895b1 100644
--- a/hr/doctype/expense_claim/expense_claim.js
+++ b/hr/doctype/expense_claim/expense_claim.js
@@ -58,11 +58,12 @@
 			query:"controllers.queries.employee_query"
 		}	
 	}
-
+	var exp_approver = doc.exp_approver;
 	return cur_frm.call({
 		method:"hr.utils.get_expense_approver_list",
 		callback: function(r) {
 			cur_frm.set_df_property("exp_approver", "options", r.message);
+			if(exp_approver) cur_frm.set_value("exp_approver", exp_approver);
 		}
 	});
 }
@@ -79,26 +80,39 @@
 }
 
 cur_frm.cscript.refresh = function(doc,cdt,cdn){
+	cur_frm.cscript.set_help(doc);
+
+	if(!doc.__islocal) {
+		cur_frm.toggle_enable("exp_approver", (doc.owner==user && doc.approval_status=="Draft"));
+		cur_frm.toggle_enable("approval_status", (doc.exp_approver==user && doc.docstatus==0));
+	
+		if(!doc.__islocal && user!=doc.exp_approver && cur_frm.frm_head.appframe.buttons.Submit) 
+			cur_frm.frm_head.appframe.buttons.Submit.toggle(false);
+	
+		if(doc.docstatus==0 && doc.exp_approver==user && doc.approval_status=="Approved")
+			 cur_frm.savesubmit();
+		
+		if(doc.docstatus==1 && wn.model.can_create("Journal Voucher"))
+			 cur_frm.add_custom_button("Make Bank Voucher", cur_frm.cscript.make_bank_voucher);
+	}
+}
+
+cur_frm.cscript.set_help = function(doc) {
 	cur_frm.set_intro("");
 	if(doc.__islocal && !in_list(user_roles, "HR User")) {
 		cur_frm.set_intro("Fill the form and save it")
 	} else {
 		if(doc.docstatus==0 && doc.approval_status=="Draft") {
 			if(user==doc.exp_approver) {
-				cur_frm.set_intro("You are the Expense Approver for this record. Please Update the 'Status' and Save");
-				cur_frm.toggle_enable("approval_status", true);
+				cur_frm.set_intro("You are the Expense Approver for this record. \
+					Please Update the 'Status' and Save");
 			} else {
-				cur_frm.set_intro("Expense Claim is pending approval. Only the Expense Approver can update status.");
-				cur_frm.toggle_enable("approval_status", false);
-				if(!doc.__islocal && cur_frm.frm_head.appframe.buttons.Submit) 
-					cur_frm.frm_head.appframe.buttons.Submit.toggle(false);
+				cur_frm.set_intro("Expense Claim is pending approval. \
+					Only the Expense Approver can update status.");
 			}
 		} 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.");
 			}
