------------------ ### Features * Advanced Employee Management Module is now included in IceHrm Open Source Edition * LDAP Module which was only available in IceHrm Enterprise is now included in open source also * Initial implementation of icehrm REST Api for reading employee details * Improvements to data filtering * Multiple tabs for settings module * Overtime reports - now its possible to calculate overtime for employees.compatible with US overtime rules * Logout the user if tried accessing an unauthorized module * Setting for updating module names ### Fixes * Fix issue: classes should be loaded even the module is disabled * Deleting the only Admin user is not allowed * Fixes for handling non UTF-8 * Fix for non-mandatory select boxes are shown as mandatory
86 lines
3.1 KiB
PHP
86 lines
3.1 KiB
PHP
<?php
|
|
if(!class_exists('ReportBuilder')){
|
|
include_once APP_BASE_PATH.'admin/reports/reportClasses/ReportBuilder.php';
|
|
}
|
|
class EmployeeLeavesReport extends ReportBuilder{
|
|
|
|
public function getMainQuery(){
|
|
$query = "SELECT
|
|
(SELECT concat(`first_name`,' ',`middle_name`,' ', `last_name`) from Employees where id = employee) as 'Employee',
|
|
(SELECT name from LeaveTypes where id = leave_type) as 'Leave Type',
|
|
(SELECT name from LeavePeriods where id = leave_period) as 'Leave Period',
|
|
date_start as 'Start Date',
|
|
date_end as 'End Date',
|
|
details as 'Reason',
|
|
status as 'Leave Status',
|
|
(select count(*) from EmployeeLeaveDays d where d.employee_leave = lv.id and leave_type = 'Full Day') as 'Full Day Count',
|
|
(select count(*) from EmployeeLeaveDays d where d.employee_leave = lv.id and leave_type = 'Half Day - Morning') as 'Half Day (Morning) Count',
|
|
(select count(*) from EmployeeLeaveDays d where d.employee_leave = lv.id and leave_type = 'Half Day - Afternoon') as 'Half Day (Afternoon) Count'
|
|
from EmployeeLeaves lv";
|
|
|
|
return $query;
|
|
|
|
}
|
|
|
|
public function getWhereQuery($request){
|
|
|
|
$employeeList = array();
|
|
if(!empty($request['employee'])){
|
|
$employeeList = json_decode($request['employee'],true);
|
|
}
|
|
|
|
if(in_array("NULL", $employeeList) ){
|
|
$employeeList = array();
|
|
}
|
|
|
|
if($request['department'] != "NULL" && empty($employeeList)){
|
|
$empTmp = new Employee();
|
|
$empTemps = $empTmp->Find("department = ? and status = Active",array($request['department']));
|
|
foreach($empTemps as $empTmp){
|
|
$employeeList[] = $empTmp->id;
|
|
}
|
|
}
|
|
|
|
|
|
if(!empty($employeeList) && ($request['status'] != "NULL" && !empty($request['status']))){
|
|
$query = "where employee in (".implode(",", $employeeList).") and ((date_start >= ? and date_start <= ?) or (date_end >= ? and date_end <= ?)) and status = ?;";
|
|
$params = array(
|
|
$request['date_start'],
|
|
$request['date_end'],
|
|
$request['date_start'],
|
|
$request['date_end'],
|
|
$request['status']
|
|
);
|
|
}else if(!empty($employeeList)){
|
|
$query = "where employee in (".implode(",", $employeeList).") and ((date_start >= ? and date_start <= ?) or (date_end >= ? and date_end <= ?));";
|
|
$params = array(
|
|
$request['date_start'],
|
|
$request['date_end'],
|
|
$request['date_start'],
|
|
$request['date_end']
|
|
);
|
|
}else if(($request['status'] != "NULL" && !empty($request['status']))){
|
|
$query = "where status = ? and ((date_start >= ? and date_start <= ?) or (date_end >= ? and date_end <= ?));";
|
|
$params = array(
|
|
$request['status'],
|
|
$request['date_start'],
|
|
$request['date_end'],
|
|
$request['date_start'],
|
|
$request['date_end']
|
|
);
|
|
}else{
|
|
$query = "where ((date_start >= ? and date_start <= ?) or (date_end >= ? and date_end <= ?));";
|
|
$params = array(
|
|
$request['date_start'],
|
|
$request['date_end'],
|
|
$request['date_start'],
|
|
$request['date_end']
|
|
);
|
|
}
|
|
|
|
LogManager::getInstance()->info("Query:".$query);
|
|
LogManager::getInstance()->info("Params:".json_encode($params));
|
|
|
|
return array($query, $params);
|
|
}
|
|
} |