MOON
Server: Apache
System: Linux nserver.cafsindia.com 4.18.0-553.104.1.lve.el8.x86_64 #1 SMP Tue Feb 10 20:07:30 UTC 2026 x86_64
User: cafsindia (1002)
PHP: 8.2.30
Disabled: NONE
Upload Files
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));
	}
}