diff --git a/accounts/page/accounts_browser/accounts_browser.py b/accounts/page/accounts_browser/accounts_browser.py
index 76c64b7..8b24394 100644
--- a/accounts/page/accounts_browser/accounts_browser.py
+++ b/accounts/page/accounts_browser/accounts_browser.py
@@ -20,7 +20,7 @@
 	else:
 		return [r[0] for r in webnotes.conn.sql("""select name from tabCompany
 			where docstatus!=2""")]
-	
+
 @webnotes.whitelist()
 def get_children():
 	args = webnotes.form_dict
diff --git a/hr/__init__.py b/hr/__init__.py
index 96bd47b..429c719 100644
--- a/hr/__init__.py
+++ b/hr/__init__.py
@@ -3,4 +3,6 @@
 	{"doctype":"Role", "role_name":"Employee", "name":"Employee"},
 	{"doctype":"Role", "role_name":"HR Manager", "name":"HR Manager"},
 	{"doctype":"Role", "role_name":"HR User", "name":"HR User"},
+	{"doctype":"Role", "role_name":"Leave Approver", "name":"Leave Approver"},
+	{"doctype":"Role", "role_name":"Expense Approver", "name":"Expense Approver"},
 ]
diff --git a/hr/doctype/expense_claim/expense_claim.js b/hr/doctype/expense_claim/expense_claim.js
index 466a8cf..761da88 100644
--- a/hr/doctype/expense_claim/expense_claim.js
+++ b/hr/doctype/expense_claim/expense_claim.js
@@ -15,79 +15,87 @@
 // along with this program.	If not, see <http://www.gnu.org/licenses/>.
 
 cur_frm.add_fetch('employee', 'company', 'company');
+cur_frm.add_fetch('employee','employee_name','employee_name');
 
 cur_frm.cscript.onload = function(doc,cdt,cdn){
-	// 
-	if(!doc.approval_status) set_multiple(cdt,cdn,{approval_status:'Draft'});
-	if(doc.employee) cur_frm.cscript.employee(doc,cdt,cdn);
-	
+	if(!doc.approval_status)
+		cur_frm.set_value("approval_status", "Draft")
+			
 	if (doc.__islocal) {
-		if(doc.amended_from) set_multiple(cdt,cdn,{approval_status:'Draft'});
-		var val = getchildren('Expense Claim Detail', doc.name, 'expense_voucher_details', doc.doctype);
-		for(var i = 0; i<val.length; i++){
-			val[i].sanctioned_amount ='';
-		}
-		doc.total_sanctioned_amount = '';
-		refresh_many(['sanctioned_amount', 'total_sanctioned_amount']);
+		cur_frm.set_value("posting_date", dateutil.get_today());
+		if(doc.amended_from) 
+			cur_frm.set_value("approval_status", "Draft");
+		cur_frm.cscript.clear_sanctioned(doc);
 	}
+
+	cur_frm.call({
+		method:"get_approver_list",
+		callback: function(r) {
+			cur_frm.set_df_property("exp_approver", "options", r.message);
+		}
+	});	
+}
+
+cur_frm.cscript.clear_sanctioned = function(doc) {
+	var val = getchildren('Expense Claim Detail', doc.name, 
+		'expense_voucher_details', doc.doctype);
+	for(var i = 0; i<val.length; i++){
+		val[i].sanctioned_amount ='';
+	}
+
+	doc.total_sanctioned_amount = '';
+	refresh_many(['sanctioned_amount', 'total_sanctioned_amount']);	
 }
 
 cur_frm.cscript.refresh = function(doc,cdt,cdn){
-	hide_field('calculate_total_amount');
-	if(user == doc.exp_approver && doc.approval_status == 'Submitted'){
-		unhide_field(['update_voucher', 'approve', 'reject', 'calculate_total_amount']);
-		cur_frm.fields_dict['expense_voucher_details'].grid.set_column_disp('sanctioned_amount', true);
-		set_field_permlevel('remark', 0);
+	cur_frm.set_intro("");
+	if(doc.__islocal && !in_list(user_roles, "HR User")) {
+		cur_frm.set_intro("Fill the form and save it")
 	} else {
-		hide_field(['update_voucher', 'approve', 'reject']);
-		cur_frm.fields_dict['expense_voucher_details'].grid.set_column_disp('sanctioned_amount', false);
-		set_field_permlevel('remark', 1);
+		if(doc.approval_status=="Draft") {		
+			if(in_list(user_roles, "HR User")) {
+				if(doc.approval_status=="Draft") {
+					cur_frm.set_intro("Please Approve (and Submit) or Reject, or re-assign to applicant for further review.");				
+				}
+			} else if(user==doc.exp_approver) {
+				if(doc.approval_status=="Draft") {
+					cur_frm.set_intro("You are the Expense Approver for this record. Please Update the 'Status' and Save");
+					cur_frm.set_df_property("approval_status", "permlevel", 0);
+				}
+			} else {
+				cur_frm.set_intro("Expense Claim is pending approval.");
+			}
+		} else {
+			if(doc.approval_status=="Approved") {
+				cur_frm.set_intro("Expense Claim has been approved.");
+			} else if(doc.approval_status=="Rejected") {
+				cur_frm.set_intro("Expense Claim has been rejected.");
+			}
+		}
 	}
-	if (doc.docstatus == 0) unhide_field('calculate_total_amount');
-}
+	
+	if(doc.approval_status=="Approved" && doc.docstatus==0) {
+		cur_frm.savesubmit()
+	}}
 
 cur_frm.cscript.validate = function(doc) {
-	if(cint(doc.docstatus) == 0) {
-		doc.approval_status = "Draft";
-	}
 	cur_frm.cscript.calculate_total(doc);
 }
 
-cur_frm.cscript.employee = function(doc,cdt,cdn){
-	if(doc.employee){
-		$c_obj(make_doclist(doc.doctype, doc.name),'set_approver','', function(r,rt){
-			if(r.message){
-				doc.employee_name = r.message['emp_nm'];
-				wn.meta.get_docfield(doc.doctype, 'exp_approver' , doc.name).options = r.message['app_lst'];				
-				refresh_many(['exp_approver','employee_name']);
-			}		
-		});
-	}
-}
-
 cur_frm.cscript.calculate_total = function(doc,cdt,cdn){
-	if(doc.approval_status == 'Draft'){
-		var val = getchildren('Expense Claim Detail', doc.name, 'expense_voucher_details', doc.doctype);
-		var total_claim =0;
-		for(var i = 0; i<val.length; i++){
-			val[i].sanctioned_amount = val[i].claim_amount;
-			total_claim = flt(total_claim)+flt(val[i].claim_amount);
-			refresh_field('sactioned_amount', val[i].name, 'expense_voucher_details'); 
+	doc.total_claimed_amount = 0;
+	doc.total_sanctioned_amount = 0;
+	$.each(wn.model.get("Expense Claim Detail", {parent:doc.name}), function(i, d) {
+		doc.total_claimed_amount += d.claim_amount;
+		if(d.sanctioned_amount==null) {
+			d.sanctioned_amount = d.claim_amount;
 		}
-		doc.total_claimed_amount = flt(total_claim);
-		refresh_field('total_claimed_amount');
-	}
-	else if(doc.approval_status == 'Submitted'){
-		var val = getchildren('Expense Claim Detail', doc.name, 'expense_voucher_details', doc.doctype);
-		var total_sanctioned = 0;
-		for(var i = 0; i<val.length; i++){
-			total_sanctioned = flt(total_sanctioned)+flt(val[i].sanctioned_amount);
-			refresh_field('sactioned_amount', val[i].name, 'expense_voucher_details'); 
-			
-		}
-		doc.total_sanctioned_amount = flt(total_sanctioned);
-		refresh_field('total_sanctioned_amount');
-	}
+		doc.total_sanctioned_amount += d.sanctioned_amount;
+	});
+	
+	refresh_field("total_claimed_amount");
+	refresh_field('total_sanctioned_amount');
+
 }
 
 cur_frm.cscript.calculate_total_amount = function(doc,cdt,cdn){
@@ -100,155 +108,8 @@
 	cur_frm.cscript.calculate_total(doc,cdt,cdn);
 }
 
-cur_frm.cscript.approve = function(doc,cdt,cdn){
-	cur_frm.cscript.calculate_total(doc,cdt,cdn);
-
-	if(user == doc.exp_approver){
-		var approve_voucher_dialog;
-		
-		set_approve_voucher_dialog = function() {
-			approve_voucher_dialog = new Dialog(400, 200, 'Approve Voucher');
-			approve_voucher_dialog.make_body([
-				['HTML', 'Message', '<div class = "comment">You wont be able to do any changes after approving this expense voucher. Are you sure, you want to approve it ?</div>'],
-				['HTML', 'Response', '<div class = "comment" id="approve_voucher_dialog_response"></div>'],
-				['HTML', 'Approve Voucher', '<div></div>']
-			]);
-			
-			var approve_voucher_btn1 = $a($i(approve_voucher_dialog.widgets['Approve Voucher']), 'button', 'button');
-			approve_voucher_btn1.innerHTML = 'Yes';
-			approve_voucher_btn1.onclick = function(){ approve_voucher_dialog.add(); }
-			
-			var approve_voucher_btn2 = $a($i(approve_voucher_dialog.widgets['Approve Voucher']), 'button', 'button');
-			approve_voucher_btn2.innerHTML = 'No';
-			$y(approve_voucher_btn2,{marginLeft:'4px'});
-			approve_voucher_btn2.onclick = function(){ approve_voucher_dialog.hide();}
-			
-			approve_voucher_dialog.onshow = function() {
-				$i('approve_voucher_dialog_response').innerHTML = '';
-			}
-			
-			approve_voucher_dialog.add = function() {
-				// sending...
-				$i('approve_voucher_dialog_response').innerHTML = 'Processing...';
-				
-				$c_obj(make_doclist(this.doc.doctype, this.doc.name),'approve_voucher','', function(r,rt){
-					if(r.message == 'Approved'){
-						$i('approve_voucher_dialog_response').innerHTML = 'Approved';
-						refresh_field('approval_status');
-						hide_field(['update_voucher', 'approve', 'reject', 'calculate_total_amount']);
-						approve_voucher_dialog.hide();
-			var args = {
-				type: 'Expense Claim Approved',
-				doctype: 'Expense Claim',
-				contact_name: doc.employee_name,
-				send_to: doc.email_id
-			}
-			cur_frm.cscript.notify(doc, args);
-					}
-					else if(r.message == 'Incomplete'){
-						$i('approve_voucher_dialog_response').innerHTML = 'Incomplete Voucher';
-					}
-					else if(r.message == 'No Amount'){
-						$i('approve_voucher_dialog_response').innerHTML = 'Calculate total amount';
-					}
-				});
-			}
-		}	
-		
-		if(!approve_voucher_dialog){
-			set_approve_voucher_dialog();
-		}	
-		approve_voucher_dialog.doc = doc;
-		approve_voucher_dialog.cdt = cdt;
-		approve_voucher_dialog.cdn = cdn;
-		approve_voucher_dialog.show();
-		refresh_field('expense_voucher_details');
-		doc.__unsaved = 0;
-		cur_frm.refresh_header();
-	}else{
-		msgprint("Expense Claim can be approved by Approver only");
-	}
-}
-
-cur_frm.cscript.reject = function(doc,cdt,cdn){
-	cur_frm.cscript.calculate_total(doc,cdt,cdn);
-	
-	if(user == doc.exp_approver){
-		var reject_voucher_dialog;
-		
-		set_reject_voucher_dialog = function() {
-			reject_voucher_dialog = new Dialog(400, 200, 'Reject Voucher');
-			reject_voucher_dialog.make_body([
-				['HTML', 'Message', '<div class = "comment">You wont be able to do any changes after rejecting this expense voucher. Are you sure, you want to reject it ?</div>'],
-				['HTML', 'Response', '<div class = "comment" id="reject_voucher_dialog_response"></div>'],
-				['HTML', 'Reject Voucher', '<div></div>']
-			]);
-			
-			var reject_voucher_btn1 = $a($i(reject_voucher_dialog.widgets['Reject Voucher']), 'button', 'button');
-			reject_voucher_btn1.innerHTML = 'Yes';
-			reject_voucher_btn1.onclick = function(){ reject_voucher_dialog.add(); }
-			
-			var reject_voucher_btn2 = $a($i(reject_voucher_dialog.widgets['Reject Voucher']), 'button', 'button');
-			reject_voucher_btn2.innerHTML = 'No';
-			$y(reject_voucher_btn2,{marginLeft:'4px'});
-			reject_voucher_btn2.onclick = function(){ reject_voucher_dialog.hide();}
-			
-			reject_voucher_dialog.onshow = function() {
-				$i('reject_voucher_dialog_response').innerHTML = '';
-			}
-			
-			reject_voucher_dialog.add = function() {
-				// sending...
-				$i('reject_voucher_dialog_response').innerHTML = 'Processing...';
-				
-				$c_obj(make_doclist(this.doc.doctype, this.doc.name),'reject_voucher','', function(r,rt){
-					if(r.message == 'Rejected'){
-						$i('reject_voucher_dialog_response').innerHTML = 'Rejected';
-						refresh_field('approval_status');
-						hide_field(['update_voucher', 'approve', 'reject', 'calculate_total_amount']);
-						reject_voucher_dialog.hide();
-			var args = {
-				type: 'Expense Claim Rejected',
-				doctype: 'Expense Claim',
-				contact_name: doc.employee_name,
-				send_to: doc.email_id
-			}
-			cur_frm.cscript.notify(doc, args);
-					}
-				});
-			}
-		}	
-		
-		if(!reject_voucher_dialog){
-			set_reject_voucher_dialog();
-		}	
-		reject_voucher_dialog.doc = doc;
-		reject_voucher_dialog.cdt = cdt;
-		reject_voucher_dialog.cdn = cdn;
-		reject_voucher_dialog.show();
-		refresh_field('expense_voucher_details');
-		doc.__unsaved = 0;
-		cur_frm.refresh_header();
-	}else{
-		msgprint("Expense Claim can be rejected by Approver only");
-	}
-}
-
-//update follow up
-//=================================================================================
-cur_frm.cscript.update_voucher = function(doc){
-
-	$c_obj(make_doclist(doc.doctype, doc.name),'update_voucher','',function(r, rt){
-		refresh_field('expense_voucher_details');
-		doc.__unsaved = 0;
-		cur_frm.refresh_header();
-	});
-}
-
 cur_frm.cscript.on_submit = function(doc, cdt, cdn) {
 	if(cint(wn.boot.notification_settings.expense_claim)) {
 		cur_frm.email_doc(wn.boot.notification_settings.expense_claim_message);
 	}
-}
-
-cur_frm.fields_dict.employee.get_query = erpnext.utils.employee_query;
\ No newline at end of file
+}
\ No newline at end of file
diff --git a/hr/doctype/expense_claim/expense_claim.py b/hr/doctype/expense_claim/expense_claim.py
index 0bfc318..4cf4939 100644
--- a/hr/doctype/expense_claim/expense_claim.py
+++ b/hr/doctype/expense_claim/expense_claim.py
@@ -17,86 +17,16 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, cstr
-from webnotes.model import db_exists
-from webnotes.model.wrapper import getlist, copy_doclist
-from webnotes.model.code import get_obj
+from webnotes.utils import add_days
+from webnotes.model.wrapper import getlist
 from webnotes import form, msgprint
 
 sql = webnotes.conn.sql
-	
-
 
 class DocType:
 	def __init__(self, doc, doclist=[]):
 		self.doc = doc
 		self.doclist = doclist
-
-	def get_employee_name(self):
-		emp_dtl = sql("select employee_name,company_email from `tabEmployee` where name=%s", self.doc.employee)
-		emp_nm = emp_dtl and emp_dtl[0][0] or ''
-		self.doc.employee_name = emp_nm
-		self.doc.email_id = emp_dtl and emp_dtl[0][1] or ''
-
-		return cstr(emp_nm)	
-	
-	def get_approver_lst(self):
-		approver_lst =[]
-		approver_lst1 = get_obj('Authorization Control').get_approver_name(self.doc.doctype,0,self)
-		if approver_lst1:
-			approver_lst=approver_lst1
-		else:
-			approver_lst = [x[0] for x in sql("select distinct name from `tabProfile` where enabled=1 and name!='Administrator' and name!='Guest' and docstatus!=2")]
-		return approver_lst
-
-	def set_approver(self):
-		ret={}
-		approver_lst =[]
-		emp_nm = self.get_employee_name()
-		approver_lst = self.get_approver_lst()		
-		ret = {'app_lst':"\n" + "\n".join(approver_lst), 'emp_nm':cstr(emp_nm)}
-		return ret
-
-	def update_voucher(self):
-		sql("delete from `tabExpense Claim Detail` where parent = '%s'"%self.doc.name)
-		for d in getlist(self.doclist, 'expense_voucher_details'):
-			if not d.expense_type or not d.claim_amount:
-				msgprint("Please remove the extra blank row added")
-				raise Exception
-			d.save(1)
-		if self.doc.total_sanctioned_amount:
-			webnotes.conn.set(self.doc,'total_sanctioned_amount',self.doc.total_sanctioned_amount)
-		if self.doc.remark:
-			webnotes.conn.set(self.doc, 'remark', self.doc.remark)
-	
-	def approve_voucher(self):
-		missing_count = 0
-		for d in getlist(self.doclist, 'expense_voucher_details'):
-			if not d.sanctioned_amount:
-				missing_count += 1
-		if missing_count == len(getlist(self.doclist, 'expense_voucher_details')):
-			msgprint("Please add 'Sanctioned Amount' for atleast one expense")
-			return cstr('Incomplete')
-		
-		if not self.doc.total_sanctioned_amount:
-			msgprint("Please calculate total sanctioned amount using button 'Calculate Total Amount'")
-			return cstr('No Amount')
-		self.update_voucher()
-		
-		webnotes.conn.set(self.doc, 'approval_status', 'Approved')		
-		# on approval notification
-		#get_obj('Notification Control').notify_contact('Expense Claim Approved', self.doc.doctype, self.doc.name, self.doc.email_id, self.doc.employee_name)
-
-		return cstr('Approved')
-	
-	def reject_voucher(self):
-		
-		if self.doc.remark:
-			webnotes.conn.set(self.doc, 'remark', self.doc.remark)	 
-		webnotes.conn.set(self.doc, 'approval_status', 'Rejected')		
-
-		return cstr('Rejected')
-	
 	
 	def validate_fiscal_year(self):
 		fy=sql("select year_start_date from `tabFiscal Year` where name='%s'"%self.doc.fiscal_year)
@@ -108,30 +38,13 @@
 		
 	def validate(self):
 		self.validate_fiscal_year()
-		
-	def on_update(self):
-		webnotes.conn.set(self.doc, 'approval_status', 'Draft')
-	
+			
 	def validate_exp_details(self):
 		if not getlist(self.doclist, 'expense_voucher_details'):
 			msgprint("Please add expense voucher details")
 			raise Exception
 		
-		if not self.doc.total_claimed_amount:
-			msgprint("Please calculate Total Claimed Amount")
-			raise Exception
-		
-		if not self.doc.exp_approver:
-			msgprint("Please select Expense Claim approver")
-			raise Exception
-		
-	def on_submit(self):
-		self.validate_exp_details()
-		webnotes.conn.set(self.doc, 'approval_status', 'Submitted')
-	
-	def on_cancel(self):
-		webnotes.conn.set(self.doc, 'approval_status', 'Cancelled')
-
-	def get_formatted_message(self, args):
-		""" get formatted message for auto notification"""
-		return get_obj('Notification Control').get_formatted_message(args)
+@webnotes.whitelist()
+def get_approver_list():
+	return [r[0] for r in webnotes.conn.sql("""select distinct parent from `tabUserRole`
+		where role='Expense Approver'""")]
diff --git a/hr/doctype/expense_claim/expense_claim.txt b/hr/doctype/expense_claim/expense_claim.txt
index 34ed31c..f42e2dd 100644
--- a/hr/doctype/expense_claim/expense_claim.txt
+++ b/hr/doctype/expense_claim/expense_claim.txt
@@ -1,390 +1,271 @@
-# DocType, Expense Claim
 [
-
-	# These values are common in all dictionaries
-	{
-		'creation': '2012-03-27 14:35:56',
-		'docstatus': 0,
-		'modified': '2012-03-27 14:45:48',
-		'modified_by': u'Administrator',
-		'owner': u'harshada@webnotestech.com'
-	},
-
-	# These values are common for all DocType
-	{
-		'_last_update': u'1308808105',
-		'autoname': u'EXP.######',
-		'colour': u'White:FFF',
-		'default_print_format': u'Standard',
-		'doctype': 'DocType',
-		'is_submittable': 1,
-		'module': u'HR',
-		'name': '__common__',
-		'search_fields': u'approval_status,employee,employee_name',
-		'section_style': u'Simple',
-		'server_code_error': u' ',
-		'show_in_menu': 0,
-		'subject': u'From %(employee_name)s for %(total_claimed_amount)s (claimed)',
-		'tag_fields': u'approval_status',
-		'version': 135
-	},
-
-	# These values are common for all DocField
-	{
-		'doctype': u'DocField',
-		'name': '__common__',
-		'parent': u'Expense Claim',
-		'parentfield': u'fields',
-		'parenttype': u'DocType'
-	},
-
-	# These values are common for all DocPerm
-	{
-		'doctype': u'DocPerm',
-		'name': '__common__',
-		'parent': u'Expense Claim',
-		'parentfield': u'permissions',
-		'parenttype': u'DocType',
-		'read': 1
-	},
-
-	# DocType, Expense Claim
-	{
-		'doctype': 'DocType',
-		'name': u'Expense Claim'
-	},
-
-	# DocPerm
-	{
-		'doctype': u'DocPerm',
-		'permlevel': 1,
-		'role': u'All'
-	},
-
-	# DocPerm
-	{
-		'amend': 1,
-		'cancel': 1,
-		'create': 1,
-		'doctype': u'DocPerm',
-		'match': u'owner',
-		'permlevel': 0,
-		'submit': 1,
-		'write': 1
-	},
-
-	# DocPerm
-	{
-		'amend': 1,
-		'cancel': 1,
-		'create': 1,
-		'doctype': u'DocPerm',
-		'permlevel': 0,
-		'role': u'HR Manager',
-		'submit': 1,
-		'write': 1
-	},
-
-	# DocPerm
-	{
-		'amend': 1,
-		'cancel': 1,
-		'create': 1,
-		'doctype': u'DocPerm',
-		'permlevel': 0,
-		'role': u'HR User',
-		'submit': 1,
-		'write': 1
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'details',
-		'fieldtype': u'Section Break',
-		'label': u'Details',
-		'oldfieldtype': u'Section Break',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'colour': u'White:FFF',
-		'default': u'Draft',
-		'doctype': u'DocField',
-		'fieldname': u'approval_status',
-		'fieldtype': u'Select',
-		'in_filter': 1,
-		'label': u'Approval Status',
-		'no_copy': 1,
-		'oldfieldname': u'approval_status',
-		'oldfieldtype': u'Select',
-		'options': u'\nDraft\nSubmitted\nApproved \nRejected\nCancelled',
-		'permlevel': 1,
-		'search_index': 1
-	},
-
-	# DocField
-	{
-		'colour': u'White:FFF',
-		'doctype': u'DocField',
-		'fieldname': u'employee',
-		'fieldtype': u'Link',
-		'in_filter': 1,
-		'label': u'From Employee',
-		'oldfieldname': u'employee',
-		'oldfieldtype': u'Link',
-		'options': u'Employee',
-		'permlevel': 0,
-		'reqd': 1,
-		'search_index': 1,
-		'trigger': u'Client'
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'employee_name',
-		'fieldtype': u'Data',
-		'in_filter': 1,
-		'label': u'Employee Name',
-		'oldfieldname': u'employee_name',
-		'oldfieldtype': u'Data',
-		'permlevel': 1,
-		'search_index': 0,
-		'width': u'150px'
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'fiscal_year',
-		'fieldtype': u'Select',
-		'in_filter': 1,
-		'label': u'Fiscal Year',
-		'oldfieldname': u'fiscal_year',
-		'oldfieldtype': u'Select',
-		'options': u'link:Fiscal Year',
-		'permlevel': 0,
-		'reqd': 1
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'company',
-		'fieldtype': u'Select',
-		'in_filter': 1,
-		'label': u'Company',
-		'oldfieldname': u'company',
-		'oldfieldtype': u'Link',
-		'options': u'link:Company',
-		'permlevel': 0,
-		'reqd': 1
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'column_break0',
-		'fieldtype': u'Column Break',
-		'oldfieldtype': u'Column Break',
-		'permlevel': 0,
-		'width': u'50%'
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'posting_date',
-		'fieldtype': u'Date',
-		'in_filter': 1,
-		'label': u'Posting Date',
-		'oldfieldname': u'posting_date',
-		'oldfieldtype': u'Date',
-		'permlevel': 0,
-		'reqd': 1
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'exp_approver',
-		'fieldtype': u'Select',
-		'label': u'Approver',
-		'oldfieldname': u'exp_approver',
-		'oldfieldtype': u'Select',
-		'permlevel': 0,
-		'width': u'160px'
-	},
-
-	# DocField
-	{
-		'allow_on_submit': 1,
-		'colour': u'White:FFF',
-		'doctype': u'DocField',
-		'fieldname': u'remark',
-		'fieldtype': u'Small Text',
-		'label': u'Remark',
-		'no_copy': 1,
-		'oldfieldname': u'remark',
-		'oldfieldtype': u'Small Text',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'colour': u'White:FFF',
-		'doctype': u'DocField',
-		'fieldname': u'amended_from',
-		'fieldtype': u'Data',
-		'label': u'Amended From',
-		'no_copy': 1,
-		'oldfieldname': u'amended_from',
-		'oldfieldtype': u'Data',
-		'permlevel': 1,
-		'print_hide': 1,
-		'report_hide': 1,
-		'width': u'160px'
-	},
-
-	# DocField
-	{
-		'colour': u'White:FFF',
-		'doctype': u'DocField',
-		'fieldname': u'amendment_date',
-		'fieldtype': u'Date',
-		'label': u'Amendment Date',
-		'no_copy': 1,
-		'oldfieldname': u'amendment_date',
-		'oldfieldtype': u'Date',
-		'permlevel': 1,
-		'print_hide': 1,
-		'report_hide': 1,
-		'width': u'160px'
-	},
-
-	# DocField
-	{
-		'allow_on_submit': 1,
-		'doctype': u'DocField',
-		'fieldname': u'approve',
-		'fieldtype': u'Button',
-		'hidden': 1,
-		'label': u'Approve',
-		'oldfieldtype': u'Button',
-		'permlevel': 0,
-		'print_hide': 1,
-		'trigger': u'Client'
-	},
-
-	# DocField
-	{
-		'allow_on_submit': 1,
-		'doctype': u'DocField',
-		'fieldname': u'reject',
-		'fieldtype': u'Button',
-		'hidden': 1,
-		'label': u'Reject',
-		'oldfieldtype': u'Button',
-		'permlevel': 0,
-		'print_hide': 1,
-		'trigger': u'Client'
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'expense_details',
-		'fieldtype': u'Section Break',
-		'label': u'Expense Details',
-		'oldfieldtype': u'Section Break',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'allow_on_submit': 1,
-		'colour': u'White:FFF',
-		'doctype': u'DocField',
-		'fieldname': u'calculate_total_amount',
-		'fieldtype': u'Button',
-		'label': u'Calculate Total Amount',
-		'oldfieldtype': u'Button',
-		'permlevel': 0,
-		'print_hide': 1,
-		'report_hide': 1,
-		'trigger': u'Client'
-	},
-
-	# DocField
-	{
-		'colour': u'White:FFF',
-		'doctype': u'DocField',
-		'fieldname': u'total_claimed_amount',
-		'fieldtype': u'Currency',
-		'in_filter': 0,
-		'label': u'Total Claimed Amount',
-		'no_copy': 1,
-		'oldfieldname': u'total_claimed_amount',
-		'oldfieldtype': u'Currency',
-		'permlevel': 1,
-		'reqd': 0,
-		'width': u'160px'
-	},
-
-	# DocField
-	{
-		'colour': u'White:FFF',
-		'doctype': u'DocField',
-		'fieldname': u'total_sanctioned_amount',
-		'fieldtype': u'Currency',
-		'in_filter': 0,
-		'label': u'Total Sanctioned Amount',
-		'no_copy': 1,
-		'oldfieldname': u'total_sanctioned_amount',
-		'oldfieldtype': u'Currency',
-		'permlevel': 1,
-		'width': u'160px'
-	},
-
-	# DocField
-	{
-		'allow_on_submit': 1,
-		'doctype': u'DocField',
-		'fieldname': u'update_voucher',
-		'fieldtype': u'Button',
-		'hidden': 1,
-		'label': u'Update Voucher',
-		'oldfieldtype': u'Button',
-		'permlevel': 0,
-		'print_hide': 1,
-		'trigger': u'Client'
-	},
-
-	# DocField
-	{
-		'allow_on_submit': 1,
-		'doctype': u'DocField',
-		'fieldname': u'expense_voucher_details',
-		'fieldtype': u'Table',
-		'label': u'Expense Claim Details',
-		'oldfieldname': u'expense_voucher_details',
-		'oldfieldtype': u'Table',
-		'options': u'Expense Claim Detail',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'email_id',
-		'fieldtype': u'Data',
-		'hidden': 1,
-		'label': u'Employees Email Id',
-		'oldfieldname': u'email_id',
-		'oldfieldtype': u'Data',
-		'permlevel': 0,
-		'print_hide': 1
-	}
+ {
+  "owner": "harshada@webnotestech.com", 
+  "docstatus": 0, 
+  "creation": "2012-12-05 14:11:53", 
+  "modified_by": "Administrator", 
+  "modified": "2012-12-05 14:22:27"
+ }, 
+ {
+  "is_submittable": 1, 
+  "autoname": "EXP.######", 
+  "name": "__common__", 
+  "default_print_format": "Standard", 
+  "search_fields": "approval_status,employee,employee_name", 
+  "module": "HR", 
+  "doctype": "DocType"
+ }, 
+ {
+  "name": "__common__", 
+  "parent": "Expense Claim", 
+  "doctype": "DocField", 
+  "parenttype": "DocType", 
+  "parentfield": "fields"
+ }, 
+ {
+  "name": "__common__", 
+  "parent": "Expense Claim", 
+  "read": 1, 
+  "doctype": "DocPerm", 
+  "parenttype": "DocType", 
+  "parentfield": "permissions"
+ }, 
+ {
+  "name": "Expense Claim", 
+  "doctype": "DocType"
+ }, 
+ {
+  "oldfieldtype": "Section Break", 
+  "doctype": "DocField", 
+  "label": "Details", 
+  "fieldname": "details", 
+  "fieldtype": "Section Break", 
+  "permlevel": 0
+ }, 
+ {
+  "permlevel": 1, 
+  "no_copy": 1, 
+  "oldfieldtype": "Select", 
+  "colour": "White:FFF", 
+  "doctype": "DocField", 
+  "label": "Approval Status", 
+  "oldfieldname": "approval_status", 
+  "default": "Draft", 
+  "fieldname": "approval_status", 
+  "fieldtype": "Select", 
+  "search_index": 1, 
+  "options": "\nDraft\nApproved\nRejected", 
+  "in_filter": 1
+ }, 
+ {
+  "oldfieldtype": "Select", 
+  "doctype": "DocField", 
+  "label": "Approver", 
+  "oldfieldname": "exp_approver", 
+  "width": "160px", 
+  "fieldname": "exp_approver", 
+  "fieldtype": "Select", 
+  "permlevel": 0
+ }, 
+ {
+  "oldfieldtype": "Date", 
+  "doctype": "DocField", 
+  "label": "Posting Date", 
+  "oldfieldname": "posting_date", 
+  "fieldname": "posting_date", 
+  "fieldtype": "Date", 
+  "reqd": 1, 
+  "permlevel": 0, 
+  "in_filter": 1
+ }, 
+ {
+  "oldfieldtype": "Column Break", 
+  "doctype": "DocField", 
+  "width": "50%", 
+  "fieldname": "column_break0", 
+  "fieldtype": "Column Break", 
+  "permlevel": 0
+ }, 
+ {
+  "oldfieldtype": "Link", 
+  "colour": "White:FFF", 
+  "doctype": "DocField", 
+  "label": "From Employee", 
+  "oldfieldname": "employee", 
+  "permlevel": 0, 
+  "trigger": "Client", 
+  "fieldname": "employee", 
+  "fieldtype": "Link", 
+  "search_index": 1, 
+  "reqd": 1, 
+  "options": "Employee", 
+  "in_filter": 1
+ }, 
+ {
+  "oldfieldtype": "Data", 
+  "doctype": "DocField", 
+  "label": "Employee Name", 
+  "oldfieldname": "employee_name", 
+  "width": "150px", 
+  "fieldname": "employee_name", 
+  "fieldtype": "Data", 
+  "search_index": 0, 
+  "permlevel": 1, 
+  "in_filter": 1
+ }, 
+ {
+  "no_copy": 1, 
+  "oldfieldtype": "Small Text", 
+  "colour": "White:FFF", 
+  "allow_on_submit": 0, 
+  "doctype": "DocField", 
+  "label": "Remark", 
+  "oldfieldname": "remark", 
+  "fieldname": "remark", 
+  "fieldtype": "Small Text", 
+  "permlevel": 0
+ }, 
+ {
+  "print_hide": 1, 
+  "no_copy": 1, 
+  "oldfieldtype": "Data", 
+  "colour": "White:FFF", 
+  "doctype": "DocField", 
+  "label": "Amended From", 
+  "oldfieldname": "amended_from", 
+  "width": "160px", 
+  "fieldname": "amended_from", 
+  "fieldtype": "Data", 
+  "permlevel": 1, 
+  "report_hide": 1
+ }, 
+ {
+  "print_hide": 1, 
+  "no_copy": 1, 
+  "oldfieldtype": "Date", 
+  "colour": "White:FFF", 
+  "doctype": "DocField", 
+  "label": "Amendment Date", 
+  "oldfieldname": "amendment_date", 
+  "width": "160px", 
+  "fieldname": "amendment_date", 
+  "fieldtype": "Date", 
+  "permlevel": 1, 
+  "report_hide": 1
+ }, 
+ {
+  "oldfieldtype": "Section Break", 
+  "doctype": "DocField", 
+  "label": "Expense Details", 
+  "fieldname": "expense_details", 
+  "fieldtype": "Section Break", 
+  "permlevel": 0
+ }, 
+ {
+  "oldfieldtype": "Table", 
+  "allow_on_submit": 0, 
+  "doctype": "DocField", 
+  "label": "Expense Claim Details", 
+  "oldfieldname": "expense_voucher_details", 
+  "options": "Expense Claim Detail", 
+  "fieldname": "expense_voucher_details", 
+  "fieldtype": "Table", 
+  "permlevel": 0
+ }, 
+ {
+  "no_copy": 1, 
+  "oldfieldtype": "Currency", 
+  "colour": "White:FFF", 
+  "doctype": "DocField", 
+  "label": "Total Claimed Amount", 
+  "oldfieldname": "total_claimed_amount", 
+  "width": "160px", 
+  "fieldname": "total_claimed_amount", 
+  "fieldtype": "Currency", 
+  "reqd": 0, 
+  "permlevel": 1, 
+  "in_filter": 0
+ }, 
+ {
+  "no_copy": 1, 
+  "oldfieldtype": "Currency", 
+  "colour": "White:FFF", 
+  "doctype": "DocField", 
+  "label": "Total Sanctioned Amount", 
+  "oldfieldname": "total_sanctioned_amount", 
+  "width": "160px", 
+  "fieldname": "total_sanctioned_amount", 
+  "fieldtype": "Currency", 
+  "permlevel": 1, 
+  "in_filter": 0
+ }, 
+ {
+  "print_hide": 1, 
+  "oldfieldtype": "Data", 
+  "doctype": "DocField", 
+  "label": "Employees Email Id", 
+  "oldfieldname": "email_id", 
+  "fieldname": "email_id", 
+  "fieldtype": "Data", 
+  "hidden": 1, 
+  "permlevel": 0
+ }, 
+ {
+  "oldfieldtype": "Select", 
+  "doctype": "DocField", 
+  "label": "Fiscal Year", 
+  "oldfieldname": "fiscal_year", 
+  "options": "link:Fiscal Year", 
+  "fieldname": "fiscal_year", 
+  "fieldtype": "Select", 
+  "reqd": 1, 
+  "permlevel": 0, 
+  "in_filter": 1
+ }, 
+ {
+  "oldfieldtype": "Link", 
+  "doctype": "DocField", 
+  "label": "Company", 
+  "oldfieldname": "company", 
+  "options": "link:Company", 
+  "fieldname": "company", 
+  "fieldtype": "Select", 
+  "reqd": 1, 
+  "permlevel": 0, 
+  "in_filter": 1
+ }, 
+ {
+  "create": 1, 
+  "doctype": "DocPerm", 
+  "write": 1, 
+  "role": "Employee", 
+  "permlevel": 0, 
+  "match": "owner"
+ }, 
+ {
+  "amend": 1, 
+  "create": 1, 
+  "doctype": "DocPerm", 
+  "submit": 1, 
+  "write": 1, 
+  "cancel": 1, 
+  "role": "Expense Approver", 
+  "permlevel": 0, 
+  "match": "exp_approver:user"
+ }, 
+ {
+  "amend": 1, 
+  "create": 1, 
+  "doctype": "DocPerm", 
+  "submit": 1, 
+  "write": 1, 
+  "cancel": 1, 
+  "role": "HR User", 
+  "permlevel": 0
+ }, 
+ {
+  "doctype": "DocPerm", 
+  "role": "All", 
+  "permlevel": 1
+ }
 ]
\ No newline at end of file
diff --git a/hr/doctype/expense_claim_detail/expense_claim_detail.txt b/hr/doctype/expense_claim_detail/expense_claim_detail.txt
index a11ce5c..f28811f 100644
--- a/hr/doctype/expense_claim_detail/expense_claim_detail.txt
+++ b/hr/doctype/expense_claim_detail/expense_claim_detail.txt
@@ -1,103 +1,80 @@
-# DocType, Expense Claim Detail
 [
-
-	# These values are common in all dictionaries
-	{
-		'creation': '2012-03-27 14:35:56',
-		'docstatus': 0,
-		'modified': '2012-03-27 14:35:56',
-		'modified_by': u'Administrator',
-		'owner': u'harshada@webnotestech.com'
-	},
-
-	# These values are common for all DocType
-	{
-		'colour': u'White:FFF',
-		'doctype': 'DocType',
-		'istable': 1,
-		'module': u'HR',
-		'name': '__common__',
-		'section_style': u'Simple',
-		'server_code_error': u' ',
-		'version': 5
-	},
-
-	# These values are common for all DocField
-	{
-		'doctype': u'DocField',
-		'name': '__common__',
-		'parent': u'Expense Claim Detail',
-		'parentfield': u'fields',
-		'parenttype': u'DocType',
-		'permlevel': 0
-	},
-
-	# DocType, Expense Claim Detail
-	{
-		'doctype': 'DocType',
-		'name': u'Expense Claim Detail'
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'expense_date',
-		'fieldtype': u'Date',
-		'label': u'Expense Date',
-		'oldfieldname': u'expense_date',
-		'oldfieldtype': u'Date',
-		'reqd': 0,
-		'width': u'150px'
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'expense_type',
-		'fieldtype': u'Link',
-		'label': u'Expense Claim Type',
-		'oldfieldname': u'expense_type',
-		'oldfieldtype': u'Link',
-		'options': u'Expense Claim Type',
-		'reqd': 1,
-		'width': u'150px'
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'description',
-		'fieldtype': u'Small Text',
-		'label': u'Description',
-		'oldfieldname': u'description',
-		'oldfieldtype': u'Small Text',
-		'width': u'300px'
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'claim_amount',
-		'fieldtype': u'Currency',
-		'label': u'Claim Amount',
-		'oldfieldname': u'claim_amount',
-		'oldfieldtype': u'Currency',
-		'reqd': 1,
-		'trigger': u'Client',
-		'width': u'150px'
-	},
-
-	# DocField
-	{
-		'allow_on_submit': 1,
-		'doctype': u'DocField',
-		'fieldname': u'sanctioned_amount',
-		'fieldtype': u'Currency',
-		'label': u'Sanctioned Amount',
-		'no_copy': 1,
-		'oldfieldname': u'sanctioned_amount',
-		'oldfieldtype': u'Currency',
-		'trigger': u'Client',
-		'width': u'150px'
-	}
+ {
+  "owner": "harshada@webnotestech.com", 
+  "docstatus": 0, 
+  "creation": "2012-07-03 13:30:39", 
+  "modified_by": "Administrator", 
+  "modified": "2012-12-05 14:22:03"
+ }, 
+ {
+  "istable": 1, 
+  "name": "__common__", 
+  "doctype": "DocType", 
+  "module": "HR"
+ }, 
+ {
+  "name": "__common__", 
+  "parent": "Expense Claim Detail", 
+  "doctype": "DocField", 
+  "parenttype": "DocType", 
+  "permlevel": 0, 
+  "parentfield": "fields"
+ }, 
+ {
+  "name": "Expense Claim Detail", 
+  "doctype": "DocType"
+ }, 
+ {
+  "oldfieldtype": "Date", 
+  "doctype": "DocField", 
+  "label": "Expense Date", 
+  "oldfieldname": "expense_date", 
+  "width": "150px", 
+  "fieldname": "expense_date", 
+  "fieldtype": "Date", 
+  "reqd": 0
+ }, 
+ {
+  "oldfieldtype": "Link", 
+  "doctype": "DocField", 
+  "label": "Expense Claim Type", 
+  "oldfieldname": "expense_type", 
+  "width": "150px", 
+  "fieldname": "expense_type", 
+  "fieldtype": "Select", 
+  "reqd": 1, 
+  "options": "link:Expense Claim Type"
+ }, 
+ {
+  "oldfieldtype": "Small Text", 
+  "doctype": "DocField", 
+  "label": "Description", 
+  "oldfieldname": "description", 
+  "width": "300px", 
+  "fieldname": "description", 
+  "fieldtype": "Small Text"
+ }, 
+ {
+  "oldfieldtype": "Currency", 
+  "doctype": "DocField", 
+  "label": "Claim Amount", 
+  "oldfieldname": "claim_amount", 
+  "width": "150px", 
+  "trigger": "Client", 
+  "fieldname": "claim_amount", 
+  "fieldtype": "Currency", 
+  "reqd": 1
+ }, 
+ {
+  "no_copy": 1, 
+  "oldfieldtype": "Currency", 
+  "allow_on_submit": 0, 
+  "doctype": "DocField", 
+  "label": "Sanctioned Amount", 
+  "oldfieldname": "sanctioned_amount", 
+  "width": "150px", 
+  "trigger": "Client", 
+  "fieldname": "sanctioned_amount", 
+  "fieldtype": "Currency"
+ }
 ]
\ No newline at end of file
diff --git a/hr/doctype/leave_application/leave_application.js b/hr/doctype/leave_application/leave_application.js
index 00df476..64c1e24 100755
--- a/hr/doctype/leave_application/leave_application.js
+++ b/hr/doctype/leave_application/leave_application.js
@@ -8,14 +8,21 @@
 // 
 // This program is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	See the
 // GNU General Public License for more details.
 // 
 // You should have received a copy of the GNU General Public License
-// along with this program.  If not, see <http://www.gnu.org/licenses/>.
+// along with this program.	If not, see <http://www.gnu.org/licenses/>.
 
 cur_frm.cscript.onload = function(doc, dt, dn) {
-  if(!doc.posting_date) set_multiple(dt,dn,{posting_date:get_today()});
+	if(!doc.posting_date) 
+		set_multiple(dt,dn,{posting_date:get_today()});
+	cur_frm.call({
+		method:"get_approver_list",
+		callback: function(r) {
+			cur_frm.set_df_property("leave_approver", "options", r.message);
+		}
+	});
 }
 
 cur_frm.cscript.refresh = function(doc, dt, dn) {
@@ -23,14 +30,17 @@
 	if(doc.__islocal && !in_list(user_roles, "HR User")) {
 		cur_frm.set_intro("Fill the form and save it")
 	} else {
-		if(in_list(user_roles, "HR User")) {
-			if(doc.status=="Open") {
+		if(doc.status=="Open") {
+			if(in_list(user_roles, "HR User")) {
 				cur_frm.set_intro("Please Approve (and Submit) or Reject, or re-assign to applicant for further review.");				
+			} else if(user==doc.leave_approver) {
+				cur_frm.set_intro("You are the Leave Approver for this record. Please Update the 'Status' and Save");
+				cur_frm.set_df_property("status", "permlevel", 2);
+			} else {
+				cur_frm.set_intro("This Leave Application is pending approval.")
 			}
 		} else {
-			if(doc.status=="Open") {
-				cur_frm.set_intro("Leave application is pending approval.");
-			} else if(doc.status=="Approved") {
+ 			if(doc.status=="Approved") {
 				cur_frm.set_intro("Leave application has been approved.");
 			} else if(doc.status=="Rejected") {
 				cur_frm.set_intro("Leave application has been rejected.");
@@ -38,7 +48,7 @@
 		}
 	}
 	
-	if(doc.status=="Approved" && doc.docstatus!=1) {
+	if(doc.status=="Approved" && doc.docstatus==0) {
 		cur_frm.savesubmit()
 	}
 }
@@ -46,53 +56,61 @@
 cur_frm.add_fetch('employee','employee_name','employee_name');
 
 cur_frm.cscript.employee = function (doc, dt, dn){
-  get_leave_balance(doc, dt, dn);
+	get_leave_balance(doc, dt, dn);
 }
 
 cur_frm.cscript.fiscal_year = function (doc, dt, dn){
-  get_leave_balance(doc, dt, dn);
+	get_leave_balance(doc, dt, dn);
 }
 
 cur_frm.cscript.leave_type = function (doc, dt, dn){
-  get_leave_balance(doc, dt, dn);
+	get_leave_balance(doc, dt, dn);
 }
 
 cur_frm.cscript.half_day = function(doc, dt, dn) {
-  if(doc.from_date) {
-    set_multiple(dt,dn,{to_date:doc.from_date});
-    calculate_total_days(doc, dt, dn);
-  }
+	if(doc.from_date) {
+		set_multiple(dt,dn,{to_date:doc.from_date});
+		calculate_total_days(doc, dt, dn);
+	}
 }
 
 cur_frm.cscript.from_date = function(doc, dt, dn) {
-  if(cint(doc.half_day) == 1){
-    set_multiple(dt,dn,{to_date:doc.from_date});
-  }
-  calculate_total_days(doc, dt, dn);
+	if(cint(doc.half_day) == 1){
+		set_multiple(dt,dn,{to_date:doc.from_date});
+	}
+	calculate_total_days(doc, dt, dn);
 }
 
 cur_frm.cscript.to_date = function(doc, dt, dn) {
-  if(cint(doc.half_day) == 1 && cstr(doc.from_date) && doc.from_date != doc.to_date){
-    msgprint("To Date should be same as From Date for Half Day leave");
-    set_multiple(dt,dn,{to_date:doc.from_date});    
-  }
-  calculate_total_days(doc, dt, dn);
+	if(cint(doc.half_day) == 1 && cstr(doc.from_date) && doc.from_date != doc.to_date){
+		msgprint("To Date should be same as From Date for Half Day leave");
+		set_multiple(dt,dn,{to_date:doc.from_date});		
+	}
+	calculate_total_days(doc, dt, dn);
 }
-
+	
 get_leave_balance = function(doc, dt, dn) {
-  if(doc.employee && doc.leave_type && doc.fiscal_year)
-    get_server_fields('get_leave_balance', '','', doc, dt, dn, 1);
+	if(doc.employee && doc.leave_type && doc.fiscal_year) {
+		cur_frm.call({
+			method: "get_leave_balance",
+			args: {
+				employee: doc.name,
+				fiscal_year: doc.fiscal_year,
+				leave_type: doc.leave_type
+			}
+		})		
+	}
 }
 
 calculate_total_days = function(doc, dt, dn) {
-  if(doc.from_date && doc.to_date){
-    if(cint(doc.half_day) == 1) set_multiple(dt,dn,{total_leave_days:0.5});
-    else{
-      //d = new DateFn();
-      //set_multiple(dt,dn,{total_leave_days:d.get_diff(d.str_to_obj(doc.to_date),d.str_to_obj(doc.from_date))+1});
-      get_server_fields('get_total_leave_days', '', '', doc, dt, dn, 1);
-    }
-  }
+	if(doc.from_date && doc.to_date){
+		if(cint(doc.half_day) == 1) set_multiple(dt,dn,{total_leave_days:0.5});
+		else{
+			//d = new DateFn();
+			//set_multiple(dt,dn,{total_leave_days:d.get_diff(d.str_to_obj(doc.to_date),d.str_to_obj(doc.from_date))+1});
+			get_server_fields('get_total_leave_days', '', '', doc, dt, dn, 1);
+		}
+	}
 }
 
 cur_frm.fields_dict.employee.get_query = erpnext.utils.employee_query;
\ No newline at end of file
diff --git a/hr/doctype/leave_application/leave_application.py b/hr/doctype/leave_application/leave_application.py
index 91c9d8c..5fec5a3 100755
--- a/hr/doctype/leave_application/leave_application.py
+++ b/hr/doctype/leave_application/leave_application.py
@@ -30,14 +30,6 @@
 		self.doc = doc
 		self.doclist = doclist 
 
-	def get_leave_balance(self):
-		leave_all = sql("select total_leaves_allocated from `tabLeave Allocation` where employee = '%s' and leave_type = '%s' and fiscal_year = '%s' and docstatus = 1" % (self.doc.employee, self.doc.leave_type, self.doc.fiscal_year))
-		leave_all = leave_all and flt(leave_all[0][0]) or 0
-		leave_app = sql("select SUM(total_leave_days) from `tabLeave Application` where employee = '%s' and leave_type = '%s' and fiscal_year = '%s' and docstatus = 1" % (self.doc.employee, self.doc.leave_type, self.doc.fiscal_year))
-		leave_app = leave_app and flt(leave_app[0][0]) or 0
-		ret = {'leave_balance':leave_all - leave_app}
-		return ret
-
 	def get_holidays(self):
 		"""
 			get total holidays
@@ -71,7 +63,7 @@
 
 	def validate_balance_leaves(self):
 		if self.doc.from_date and self.doc.to_date and not self.is_lwp():
-			bal = self.get_leave_balance()
+			bal = get_leave_balance(self.doc.leave_type, self.doc.employee, self.doc.fiscal_year)
 			tot_leaves = self.get_total_leave_days()
 			bal, tot_leaves = bal, tot_leaves
 			webnotes.conn.set(self.doc,'leave_balance',flt(bal['leave_balance']))
@@ -107,3 +99,25 @@
 		if self.doc.status != "Approved":
 			webnotes.msgprint("""Only Approved Leave Applications can be Submitted.""",
 				raise_exception=True)
+
+@webnotes.whitelist()
+def get_leave_balance(employee, leave_type, fiscal_year):
+	leave_all = webnotes.conn.sql("""select total_leaves_allocated 
+		from `tabLeave Allocation` where employee = '%s' and leave_type = '%s' 
+		and fiscal_year = '%s' and docstatus = 1""" % (employee, 
+			leave_type, fiscal_year))
+
+	leave_all = leave_all and flt(leave_all[0][0]) or 0
+	leave_app = webnotes.conn.sql("""select SUM(total_leave_days) 
+		from `tabLeave Application` 
+		where employee = '%s' 
+		and leave_type = '%s' and fiscal_year = '%s' 
+		and docstatus = 1""" % (employee, leave_type, fiscal_year))
+	leave_app = leave_app and flt(leave_app[0][0]) or 0
+	ret = {'leave_balance':leave_all - leave_app}
+	return ret
+
+@webnotes.whitelist()
+def get_approver_list():
+	return [r[0] for r in webnotes.conn.sql("""select distinct parent from `tabUserRole`
+		where role='Leave Approver'""")]
diff --git a/hr/doctype/leave_application/leave_application.txt b/hr/doctype/leave_application/leave_application.txt
index 6a33df6..35a16a9 100644
--- a/hr/doctype/leave_application/leave_application.txt
+++ b/hr/doctype/leave_application/leave_application.txt
@@ -2,9 +2,9 @@
  {
   "owner": "Administrator", 
   "docstatus": 0, 
-  "creation": "2012-11-02 17:16:54", 
+  "creation": "2012-12-03 10:13:48", 
   "modified_by": "Administrator", 
-  "modified": "2012-11-30 12:17:27"
+  "modified": "2012-12-05 11:59:15"
  }, 
  {
   "is_submittable": 1, 
@@ -45,6 +45,15 @@
   "permlevel": 3
  }, 
  {
+  "description": "Leave can be approved by users with Role, \"Leave Approver\"", 
+  "colour": "White:FFF", 
+  "doctype": "DocField", 
+  "label": "Leave Approver", 
+  "fieldname": "leave_approver", 
+  "fieldtype": "Select", 
+  "permlevel": 0
+ }, 
+ {
   "search_index": 1, 
   "doctype": "DocField", 
   "label": "Leave Type", 
@@ -216,12 +225,29 @@
   "permlevel": 0
  }, 
  {
+  "amend": 1, 
+  "create": 1, 
+  "doctype": "DocPerm", 
+  "submit": 1, 
+  "write": 1, 
+  "role": "Leave Approver", 
+  "cancel": 1, 
+  "permlevel": 0, 
+  "match": "leave_approver:user"
+ }, 
+ {
+  "doctype": "DocPerm", 
+  "write": 1, 
+  "role": "HR User", 
+  "permlevel": 2
+ }, 
+ {
   "amend": 0, 
   "create": 0, 
   "doctype": "DocPerm", 
   "submit": 0, 
   "write": 1, 
-  "role": "HR User", 
+  "role": "Leave Approver", 
   "cancel": 0, 
   "permlevel": 2
  }, 
diff --git a/patches/patch_list.py b/patches/patch_list.py
index 02f937a..d21014c 100644
--- a/patches/patch_list.py
+++ b/patches/patch_list.py
@@ -709,4 +709,8 @@
 		'patch_module': 'patches.december_2012',
 		'patch_file': 'deprecate_tds',
 	},
+	{
+		'patch_module': 'patches.december_2012',
+		'patch_file': 'expense_leave_reload',
+	},
 ]
\ No newline at end of file
