[fix] Validate Expense Approver
diff --git a/erpnext/hr/doctype/expense_claim/expense_claim.js b/erpnext/hr/doctype/expense_claim/expense_claim.js
index 7098445..a4ba2eb 100644
--- a/erpnext/hr/doctype/expense_claim/expense_claim.js
+++ b/erpnext/hr/doctype/expense_claim/expense_claim.js
@@ -80,7 +80,7 @@
 	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("exp_approver", doc.approval_status=="Draft");
 		cur_frm.toggle_enable("approval_status", (doc.exp_approver==user && doc.docstatus==0));
 
 		if(!doc.__islocal && user!=doc.exp_approver)
diff --git a/erpnext/hr/doctype/expense_claim/expense_claim.py b/erpnext/hr/doctype/expense_claim/expense_claim.py
index fda3cf6..560ee02 100644
--- a/erpnext/hr/doctype/expense_claim/expense_claim.py
+++ b/erpnext/hr/doctype/expense_claim/expense_claim.py
@@ -4,13 +4,17 @@
 from __future__ import unicode_literals
 import frappe
 from frappe import _
+from frappe.utils import get_fullname
 from frappe.model.document import Document
 from erpnext.hr.utils import set_employee_name
 
+class InvalidExpenseApproverError(frappe.ValidationError): pass
+
 class ExpenseClaim(Document):
 	def validate(self):
 		self.validate_fiscal_year()
 		self.validate_exp_details()
+		self.validate_expense_approver()
 		set_employee_name(self)
 
 	def on_submit(self):
@@ -24,3 +28,8 @@
 	def validate_exp_details(self):
 		if not self.get('expense_voucher_details'):
 			frappe.throw(_("Please add expense voucher details"))
+
+	def validate_expense_approver(self):
+		if self.exp_approver and "Expense Approver" not in frappe.get_roles(self.exp_approver):
+			frappe.throw(_("{0} ({1}) must have role 'Expense Approver'")\
+				.format(get_fullname(self.exp_approver), self.exp_approver), InvalidExpenseApproverError)
diff --git a/erpnext/hr/doctype/leave_application/leave_application.py b/erpnext/hr/doctype/leave_application/leave_application.py
index 32c4443..1751eb1 100755
--- a/erpnext/hr/doctype/leave_application/leave_application.py
+++ b/erpnext/hr/doctype/leave_application/leave_application.py
@@ -162,8 +162,8 @@
 
 		elif self.leave_approver and not frappe.db.sql("""select name from `tabUserRole`
 			where parent=%s and role='Leave Approver'""", self.leave_approver):
-			frappe.throw(_("{0} must have role 'Leave Approver'").format(get_fullname(self.leave_approver)),
-				InvalidLeaveApproverError)
+			frappe.throw(_("{0} ({1}) must have role 'Leave Approver'")\
+				.format(get_fullname(self.leave_approver), self.leave_approver), InvalidLeaveApproverError)
 
 		elif self.docstatus==1 and len(leave_approvers) and self.leave_approver != frappe.session.user:
 			msgprint(_("Only the selected Leave Approver can submit this Leave Application"),