Employee leave balance report fixes #1647
This commit is contained in:
parent
3c4dba3e51
commit
bc7659ab90
@ -3,38 +3,43 @@
|
|||||||
|
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
import frappe
|
import frappe
|
||||||
|
from frappe import _
|
||||||
from frappe.widgets.reportview import execute as runreport
|
from frappe.widgets.reportview import execute as runreport
|
||||||
|
|
||||||
def execute(filters=None):
|
def execute(filters=None):
|
||||||
if not filters: filters = {}
|
if not filters: filters = {}
|
||||||
|
|
||||||
employee_filters = filters.get("company") and \
|
employee_filters = filters.get("company") and \
|
||||||
[["Employee", "company", "=", filters.get("company")]] or None
|
[["Employee", "company", "=", filters.get("company")]] or None
|
||||||
employees = runreport(doctype="Employee", fields=["name", "employee_name", "department"],
|
employees = runreport(doctype="Employee", fields=["name", "employee_name", "department"],
|
||||||
filters=employee_filters)
|
filters=employee_filters)
|
||||||
|
|
||||||
|
if not employees:
|
||||||
|
frappe.throw(_("No employee found!"))
|
||||||
|
|
||||||
leave_types = frappe.db.sql_list("select name from `tabLeave Type`")
|
leave_types = frappe.db.sql_list("select name from `tabLeave Type`")
|
||||||
|
|
||||||
if filters.get("fiscal_year"):
|
if filters.get("fiscal_year"):
|
||||||
fiscal_years = [filters["fiscal_year"]]
|
fiscal_years = [filters["fiscal_year"]]
|
||||||
else:
|
else:
|
||||||
fiscal_years = frappe.db.sql_list("select name from `tabFiscal Year` order by name desc")
|
fiscal_years = frappe.db.sql_list("select name from `tabFiscal Year` order by name desc")
|
||||||
|
|
||||||
allocations = frappe.db.sql("""select employee, fiscal_year, leave_type, total_leaves_allocated
|
allocations = frappe.db.sql("""select employee, fiscal_year, leave_type, total_leaves_allocated
|
||||||
from `tabLeave Allocation`
|
from `tabLeave Allocation`
|
||||||
where docstatus=1 and employee in (%s)""" %
|
where docstatus=1 and employee in (%s)""" %
|
||||||
','.join(['%s']*len(employees)), employees, as_dict=True)
|
','.join(['%s']*len(employees)), employees, as_dict=True)
|
||||||
|
|
||||||
applications = frappe.db.sql("""select employee, fiscal_year, leave_type,
|
applications = frappe.db.sql("""select employee, fiscal_year, leave_type,
|
||||||
SUM(total_leave_days) as leaves
|
SUM(total_leave_days) as leaves
|
||||||
from `tabLeave Application`
|
from `tabLeave Application`
|
||||||
where status="Approved" and docstatus = 1 and employee in (%s)
|
where status="Approved" and docstatus = 1 and employee in (%s)
|
||||||
group by employee, fiscal_year, leave_type""" %
|
group by employee, fiscal_year, leave_type""" %
|
||||||
','.join(['%s']*len(employees)), employees, as_dict=True)
|
','.join(['%s']*len(employees)), employees, as_dict=True)
|
||||||
|
|
||||||
columns = [
|
columns = [
|
||||||
"Fiscal Year", "Employee:Link/Employee:150", "Employee Name::200", "Department::150"
|
"Fiscal Year", "Employee:Link/Employee:150", "Employee Name::200", "Department::150"
|
||||||
]
|
]
|
||||||
|
|
||||||
for leave_type in leave_types:
|
for leave_type in leave_types:
|
||||||
columns.append(leave_type + " Allocated:Float")
|
columns.append(leave_type + " Allocated:Float")
|
||||||
columns.append(leave_type + " Taken:Float")
|
columns.append(leave_type + " Taken:Float")
|
||||||
@ -42,13 +47,13 @@ def execute(filters=None):
|
|||||||
|
|
||||||
data = {}
|
data = {}
|
||||||
for d in allocations:
|
for d in allocations:
|
||||||
data.setdefault((d.fiscal_year, d.employee,
|
data.setdefault((d.fiscal_year, d.employee,
|
||||||
d.leave_type), frappe._dict()).allocation = d.total_leaves_allocated
|
d.leave_type), frappe._dict()).allocation = d.total_leaves_allocated
|
||||||
|
|
||||||
for d in applications:
|
for d in applications:
|
||||||
data.setdefault((d.fiscal_year, d.employee,
|
data.setdefault((d.fiscal_year, d.employee,
|
||||||
d.leave_type), frappe._dict()).leaves = d.leaves
|
d.leave_type), frappe._dict()).leaves = d.leaves
|
||||||
|
|
||||||
result = []
|
result = []
|
||||||
for fiscal_year in fiscal_years:
|
for fiscal_year in fiscal_years:
|
||||||
for employee in employees:
|
for employee in employees:
|
||||||
@ -60,4 +65,4 @@ def execute(filters=None):
|
|||||||
row.append(tmp.leaves or 0)
|
row.append(tmp.leaves or 0)
|
||||||
row.append((tmp.allocation or 0) - (tmp.leaves or 0))
|
row.append((tmp.allocation or 0) - (tmp.leaves or 0))
|
||||||
|
|
||||||
return columns, result
|
return columns, result
|
||||||
|
Loading…
x
Reference in New Issue
Block a user