diff --git a/hr/search_criteria/employee_leave_balance_report/__init__.py b/hr/search_criteria/employee_leave_balance_report/__init__.py
new file mode 100644
index 0000000..baffc48
--- /dev/null
+++ b/hr/search_criteria/employee_leave_balance_report/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/hr/search_criteria/employee_leave_balance_report/employee_leave_balance_report.js b/hr/search_criteria/employee_leave_balance_report/employee_leave_balance_report.js
new file mode 100644
index 0000000..88d1cb4
--- /dev/null
+++ b/hr/search_criteria/employee_leave_balance_report/employee_leave_balance_report.js
@@ -0,0 +1,40 @@
+// ERPNext - web based ERP (http://erpnext.com)
+// Copyright (C) 2012 Web Notes Technologies Pvt Ltd
+// 
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+// 
+// 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
+// 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/>.
+
+this.mytabs.items['Select Columns'].hide();
+
+this.mytabs.tabs['More Filters'].hide();
+
+report.customize_filters = function() {
+	this.add_filter({
+		fieldname:'fiscal_year',
+		label:'Fiscal Year', 
+		fieldtype:'Link',
+		ignore : 1,
+		options: 'Fiscal Year',
+		parent:'Leave Allocation',
+		in_first_page:1
+	});
+	this.add_filter({
+		fieldname:'employee_name',
+		label:'Employee Name', 
+		fieldtype:'Data',
+		ignore : 1,
+		options: '',
+		parent:'Leave Allocation',
+		in_first_page:1
+	});
+}
\ No newline at end of file
diff --git a/hr/search_criteria/employee_leave_balance_report/employee_leave_balance_report.py b/hr/search_criteria/employee_leave_balance_report/employee_leave_balance_report.py
new file mode 100644
index 0000000..cb82210
--- /dev/null
+++ b/hr/search_criteria/employee_leave_balance_report/employee_leave_balance_report.py
@@ -0,0 +1,72 @@
+# ERPNext - web based ERP (http://erpnext.com)
+# Copyright (C) 2012 Web Notes Technologies Pvt Ltd
+# 
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+# 
+# 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
+# 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/>.
+
+from __future__ import unicode_literals
+leave_types = sql("""
+	SELECT name FROM `tabLeave Type`
+	WHERE
+		docstatus!=2 AND
+		name NOT IN ('Compensatory Off', 'Leave Without Pay')""")
+col=[]
+col.append(['Employee ID', 'Data', '150px', ''])
+col.append(['Employee Name', 'Data', '150px', ''])
+col.append(['Fiscal Year', 'Data', '150px', ''])
+  
+for e in leave_types:
+	l = (len(e[0])*9) 
+	if l < 150 : col_width = '150px'
+	else:  col_width = '%spx'%(l)	
+	col.append([e[0],'Currency',col_width,''])
+
+col.append(['Total Balance','Currency','150px',''])
+
+for c in col:
+	colnames.append(c[0])
+	coltypes.append(c[1])
+	colwidths.append(c[2])
+	coloptions.append(c[3])
+	col_idx[c[0]] = len(colnames)
+
+data = res
+res = []
+
+try:
+	for d in data:
+		exists = 0
+		ind = None
+		
+		# Check if the employee record exists in list 'res'
+		for r in res:
+			if r[0] == d[0] and r[1] == d[1]:
+				exists = 1
+				ind = res.index(r)
+				break
+		if d[3] in colnames:
+			# If exists, then append the leave type data
+			if exists:
+				res[ind][colnames.index(d[3])] = d[4] - d[5]
+				res[ind][len(colnames)-1] = sum(res[ind][3:-1])
+			# Else create a new row in res
+			else:
+				new_row = [0.0 for c in colnames]
+				new_row[0] = d[0]
+				new_row[1] = d[1]
+				new_row[2] = d[2]
+				new_row[colnames.index(d[3])] = d[4] - d[5]
+				new_row[len(colnames)-1] = sum(new_row[3:-1])
+				res.append(new_row)
+except Exception, e:
+	msgprint(e)
\ No newline at end of file
diff --git a/hr/search_criteria/employee_leave_balance_report/employee_leave_balance_report.sql b/hr/search_criteria/employee_leave_balance_report/employee_leave_balance_report.sql
new file mode 100644
index 0000000..50811c0
--- /dev/null
+++ b/hr/search_criteria/employee_leave_balance_report/employee_leave_balance_report.sql
@@ -0,0 +1,26 @@
+SELECT
+	leave_alloc.employee AS 'employee',
+	leave_alloc.employee_name AS 'employee_name',
+	leave_alloc.fiscal_year AS 'fiscal_year',
+	leave_alloc.leave_type AS 'leave_type',
+	leave_alloc.total_leaves_allocated AS 'total_leaves_allocated',
+	SUM(leave_app.total_leave_days) AS 'total_leaves_applied'
+FROM
+	`tabLeave Allocation` AS leave_alloc,
+	`tabLeave Application` AS leave_app
+WHERE
+	leave_alloc.employee=leave_app.employee AND
+	leave_alloc.leave_type=leave_app.leave_type AND
+	leave_alloc.fiscal_year=leave_app.fiscal_year AND
+	leave_alloc.docstatus=1 AND
+	leave_app.docstatus=1 AND
+	leave_alloc.fiscal_year LIKE '%(fiscal_year)s%%' AND
+	leave_alloc.employee_name LIKE '%(employee_name)s%%'
+GROUP BY
+	employee,
+	fiscal_year,
+	leave_type
+ORDER BY
+	employee,
+	fiscal_year,
+	leave_type
\ No newline at end of file
diff --git a/hr/search_criteria/employee_leave_balance_report/employee_leave_balance_report.txt b/hr/search_criteria/employee_leave_balance_report/employee_leave_balance_report.txt
new file mode 100644
index 0000000..7a7f049
--- /dev/null
+++ b/hr/search_criteria/employee_leave_balance_report/employee_leave_balance_report.txt
@@ -0,0 +1,34 @@
+# Search Criteria, employeewise_balance_leave_report
+[
+
+	# These values are common in all dictionaries
+	{
+		'creation': '2010-12-14 10:33:09',
+		'docstatus': 0,
+		'modified': '2011-10-31 15:42:36',
+		'modified_by': 'Administrator',
+		'owner': 'harshada@webnotestech.com'
+	},
+
+	# These values are common for all Search Criteria
+	{
+		'columns': 'Employee\x01ID',
+		'criteria_name': 'Employee Leave Balance Report',
+		'description': 'Employeewise Balance Leave Report',
+		'doc_type': 'Employee',
+		'doctype': 'Search Criteria',
+		'filters': "{'Employee\x01Saved':1,'Employee\x01Submitted':1,'Employee\x01Gender':'','Employee\x01Month of Birth':'','Employee\x01Status':'Active'}",
+		'module': 'HR',
+		'name': '__common__',
+		'page_len': 100,
+		'sort_by': '`tabEmployee`.`name`',
+		'sort_order': 'ASC',
+		'standard': 'Yes'
+	},
+
+	# Search Criteria, employeewise_balance_leave_report
+	{
+		'doctype': 'Search Criteria',
+		'name': 'employeewise_balance_leave_report'
+	}
+]
\ No newline at end of file
diff --git a/patches/november_2012/rename_employee_leave_balance_report.py b/patches/november_2012/rename_employee_leave_balance_report.py
new file mode 100644
index 0000000..21ce084
--- /dev/null
+++ b/patches/november_2012/rename_employee_leave_balance_report.py
@@ -0,0 +1,7 @@
+import webnotes
+
+def execute():
+	webnotes.conn.sql("""delete from `tabSearch Criteria` 
+		where name ='employee_leave_balance_report1'""")
+	webnotes.conn.sql("""delete from `tabSearch Criteria` 
+		where name ='employee_leave_balance_report2'""")
\ No newline at end of file
