Merge branch 'master' of github.com:webnotes/erpnext
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