File: /home/cafsindia/uds.cafsinfotech.in/application/controllers_bk/Payroll_scheduler.php
<?php if ( ! defined('BASEPATH')) exit('No direct script is allowed');
require_once("Action_controller.php");
class Payroll_scheduler extends Action_controller{
public function __construct(){
parent::__construct('payroll_scheduler');
}
// LOAD PAGE QUICK LINK,FILTERS AND TABLE HEADERS
public function index(){
$data['module_id'] = "payroll_scheduler";
$process_status[''] = '--Select Status--';
$data['process_status'] = $process_status + $this->sched_status_fun();
$sap_sts_qry = ' SELECT prime_sap_trans_status_id,sap_trans_status FROM cw_sap_trans_status WHERE trans_status = 1';
$sap_sts_info = $this->db->query("CALL sp_a_run ('SELECT','$sap_sts_qry')");
$sap_sts_rslt = $sap_sts_info->result_array();
$sap_sts_info->next_result();
$sap_sts_arr = array_reduce($sap_sts_rslt ?? [], function($result, $arr){
$result[$arr['prime_sap_trans_status_id']] = $arr['sap_trans_status'];
return $result;
}, array());
$sap_trans_status[''] = '--Select SAP Trans Status--';
$data['trans_status'] = $sap_trans_status + $sap_sts_arr ;
$data['encKey'] = $this->generateKey();
$this->load->view("payroll_scheduler/manage",$data);
}
public function sched_status_fun(){
$sched_stat_qry = ' SELECT scheduler_id,scheduler_status FROM cw_scheduler_status WHERE cw_scheduler_status.trans_status = 1';
$sched_stat_info = $this->db->query("CALL sp_a_run ('SELECT','$sched_stat_qry')");
$sched_stat_rslt = $sched_stat_info->result_array();
$sched_stat_info->next_result();
$sched_stat_arr = array_reduce($sched_stat_rslt ?? [], function($result, $arr){
$result[$arr['scheduler_id']] = $arr['scheduler_status'];
return $result;
}, array());
return $sched_stat_arr;
}
public function failed_records(){
$encString = file_get_contents('php://input');
$_POST = $this->cryptoDecrypt($encString);
if(!$_POST){
echo json_encode(array('success' => false,'message' => 'Invalid Request..','table_data' => ""));
exit(0);
}
$id = $this->input->post('id');
$failed_qry = 'SELECT employee_code,wbs_element,personal_code,process_month,reason FROM cw_trans_failure_log WHERE trans_process_id = "'.$id.'" AND trans_status = 1 ';
$failed_info = $this->db->query("CALL sp_a_run ('SELECT','$failed_qry')");
$failed_rslt = $failed_info->result_array();
$failed_info->next_result();
$table_data = '<table class="display" id="role"><thead><tr><th>employee_code</th><th>wbs_element</th><th>personal_code</th><th>process_month</th><th>reason</th></tr></thead><tbody>';
foreach($failed_rslt as $val){
$table_data .= "<tr><td>{$val['employee_code']}</td><td>{$val['wbs_element']}</td><td>{$val['personal_code']}</td><td>{$val['process_month']}</td><td>{$val['reason']}</td></tr>";
}
$table_data .= "</tbody><table>";
if(count($failed_rslt ?? []) > 0){
echo json_encode(array('success' => TRUE, 'message' => "Records Found..!",'table_data' => $table_data));
}else{
echo json_encode(array('success' => FALSE, 'message' => "No Data Found..!",'table_data' => ''));
}
}
public function search(){
$dec_data = $this->cryptoDecrypt($_POST['encrypted_data']);
$_POST = $dec_data['d'];
if(!$_POST){
echo json_encode(array('success' => false,'message' => 'Invalid Request..'));
exit(0);
}
$draw = $this->input->post('draw');
$start = $this->input->post('start');
$per_page = $this->input->post('length');
$order = $this->input->post('order');
$order_col = $this->input->post('columns');
$search = $this->input->post('search');
$sap_trans_status = $this->input->post('sap_trans_status');
$payslip_status = $this->input->post('payslip_status');
$Process_status = $this->input->post('Process_status');
$process_month = $this->input->post('process_month');
$column = $order[0]['column'];
$order_sor = $order[0]['dir'];
$order_col = $order_col[$column]['data'];
$search = trim($search['value']);
//FILTER
$filter_query = "";
if($sap_trans_status !== ''){
$filter_query .= ' AND cw_trans_process_list.sap_trans_status = "'.$sap_trans_status.'"';
}
if($payslip_status !== ''){
$filter_query .= ' AND cw_trans_process_list.payslip_status = "'.$payslip_status.'"';
}
if($Process_status !== ''){
$filter_query .= ' AND cw_trans_process_list.Process_status = "'.$Process_status.'"';
}
$common_search = "";
if($search){
$common_search .= ' or project_id like "'.$search.'%" or wbs_element like "'.$search.'%" or personal_code like "'.$search.'%" or process_month like "'.$search.'%"';
$common_search = ltrim($common_search,' or ');
$common_search = " and ($common_search)";
$common_search = str_replace("(,","(",$common_search);
$common_search = str_replace("()","(0)",$common_search);
}
$search_query = 'SELECT prime_trans_process_id,process_month,personal_code,project_id,wbs_element,total,failed, completed,process_status,payslip_status,payslip_processed,payslip_failed,sap.sap_trans_status,cw_trans_process_list.trans_created_date,cw_trans_process_list.trans_updated_date FROM cw_trans_process_list LEFT JOIN cw_sap_trans_status as sap on sap.prime_sap_trans_status_id = cw_trans_process_list.sap_trans_status';
$search_query .= ' where cw_trans_process_list.trans_status = 1 AND process_month = "'.$process_month.'" '.$filter_query.''.$common_search.' ';
$search_query .= " ORDER BY $order_col $order_sor";
if((int)$per_page !== -1){
$search_query .= " LIMIT $start,$per_page";
}
$count_all_query = 'SELECT count(*) as allcount FROM cw_trans_process_list where trans_status = 1 AND process_month = "'.$process_month.'"';
$count_query = 'SELECT count(*) as allcount FROM cw_trans_process_list where trans_status = 1 AND process_month = "'.$process_month.'"'.$filter_query.' '.$common_search.'' ;
$search_pro_qry = [];
$search_pro_qry[] = array("return"=>"total_count","qry"=>$count_all_query);
$search_pro_qry[] = array("return"=>"filtered_count","qry"=>$count_query);
$search_pro_qry[] = array("return"=>"search_result","qry"=>$search_query);
$search_info_rslt = $this->run_multi_qry($search_pro_qry);
$total_count = $search_info_rslt->rslt->total_count[0]->allcount;
$filtered_count = $search_info_rslt->rslt->filtered_count[0]->allcount;
$search_result = json_decode(json_encode($search_info_rslt->rslt->search_result),true);
//SCHEDULER
$scheduler_qry = 'SELECT scheduler_id,scheduler_status FROM cw_scheduler_status where trans_status = 1';
$scheduler_data = $this->db->query("CALL sp_a_run ('SELECT','$scheduler_qry')");
$scheduler_rslt = $scheduler_data->result_array();
$scheduler_data->next_result();
$scheduler_map = [];
foreach($scheduler_rslt as $scheduler){
$scheduler_map[$scheduler['scheduler_id']] = $scheduler['scheduler_status'];
}
$label_name_arr = array('process_status','payslip_status');
foreach($search_result as $key => &$val){
foreach($label_name_arr as $subkey => $label_name){
$val[$label_name] = $scheduler_map[$val[$label_name]];
}
}
unset($val);
if($search_result === null || $search_result === ''){
$search_result = [];
}
echo json_encode(array("draw" => intval($draw),"recordsTotal" => $total_count,"recordsFiltered" => $filtered_count,"data" => $search_result));
}
}