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/views_bk/bonus_and_leave_wage/manage.php
<?php 
	$this->load->view("partial/header"); 
	$access_data    = $this->session->userdata('access_data');
	$access_add     = (int)$access_data[$controller_name]['access_add'];
	$access_update  = (int)$access_data[$controller_name]['access_update'];
	$access_delete  = (int)$access_data[$controller_name]['access_delete'];
	$access_search  = (int)$access_data[$controller_name]['access_search']; 
	$access_export  = (int)$access_data[$controller_name]['access_export'];
	$access_import  = (int)$access_data[$controller_name]['access_import'];
	$page_name      = ucwords(str_replace("_"," ",$controller_name));
	$prime_id       = "prime_".$controller_name."_id";
	$search_url     = site_url($controller_name ."/search");
	
	/* PAGE TITLE AND BUTTONS- START */
	$breadcrumb  .="<li><a href='$site_url#Home'>Home</a></li>
					<li><a href='".site_url($controller_name)."#$controller_name'>$page_name</a></li>
					<li class='active'>List</li>";
?>
<style>
	html, body{
		margin: 0; height: 100%; 
		overflow-x: hidden;
	}
	.display th, .display td {
		white-space: nowrap !important;
	    max-width: 500px !important;
	}
</style>

<div class='row title_content'>
	<div class='col-md-2 col-xs-4'>
		<h1 class='page_txt'><?php echo $page_name;?></h1>
	</div>
	<div class='col-md-10 col-xs-8'>
		<ol class="breadcrumb">
			<?php  echo $breadcrumb; ?>	
		</ol>
	</div>
</div>
<div id="toolbar" class="form-inline">
	<div class="col-md-12">
		<?php echo form_open("$controller_name/bonus_leave_wage_data",array('id'=>'bonus_leave_wage_form')); ?>
		<div class="form-group">
			<?php
				$pay_type_list   = array('Bonus' => 'Bonus','Leave' => 'Leave');
				echo form_label('Payment Type', 'pay_type', array('class' => 'required'));
				echo form_dropdown(array( 'name' => 'pay_type', 'id' => 'pay_type', 'class' => 'form-control input-sm select2'), $pay_type_list);
			?>
		</div>
		<div class="form-group">
			<?php	
				echo form_label('From Period', 'from_period', array('class' => "control-label required"));
				echo form_input(array("name"=>'from_period', "id"=>'from_period',"value"=>'',"placeholder"=>"From Period", "class"=>"form-control input-sm datepicker"));
			?>
		</div>
		<div class="form-group">
			<?php	
				echo form_label('To Period', 'to_period', array('class' => "control-label required"));
				echo form_input(array("name"=>'to_period', "id"=>'to_period',"value"=>'',"placeholder"=>"To Period", "class"=>"form-control input-sm datepicker"));
			?>
		</div>
		<div class="form-group">
			<?php
				echo form_label('Personal Area', 'personal_code', array('class' => 'required'));
				echo form_dropdown(array( 'name' => 'personal_code', 'id' => 'personal_code', 'class' => 'form-control input-sm select2'), $per_area_list);
			?>
		</div>
		<div class="form-group">
			<?php
				echo form_label('Project', 'project');
				echo form_dropdown(array( 'name' => 'project', 'id' => 'project', 'class' => 'form-control input-sm select2'));
			?>
		</div>
		<div class="form-group">
			<?php
				echo form_label('Wbs Element', 'wbs_element');
				echo form_dropdown(array( 'name' => 'wbs_element', 'id' => 'wbs_element', 'class' => 'form-control input-sm select2'));
			?>
		</div>
		<div class="form-group">
			<button class='btn btn-primary btn-sm' id="process"><i class='fa fa-send-o' aria-hidden='true'></i> Process </button>
		</div>
		<?php 
			echo form_close(); 
		?>
	</div>
</div>
<div class="row" style='margin:0px;overflow:auto;width: 100%;'>	
	<div class='col-md-12' id='table_div' style='padding:8px;min-height: 400px;display: none;' >
		<ul class="nav nav-tabs">
		  <li class="active"><a data-toggle="tab" href="#bonus_leave"> Leave Entry</a></li>
		  <li><a data-toggle="tab" href="#reimbursement"> Reimbursement Entry</a></li>
		</ul>
		<div class="tab-content">
		  	<div id="bonus_leave" class="tab-pane fade in active">
				<table class='table-hover display' id='bonus_leave_table' style='width:100% !important;'></table>
		  	</div>
		  	<div id="reimbursement" class="tab-pane fade">
			  	<table class='table-hover display' id='reimbursement_table' style='width:100% !important;'></table>
		  	</div>
	  	</div>
	</div>	
</div>
<script type="text/javascript">
$(document).ready(function (){	
	$('.modal-dialog').draggable({ handle: ".modal-header" });
	$(".datepicker").datetimepicker({format: 'MM-YYYY',});
	$(".datepicker_time").datetimepicker({format: 'DD-MM-YYYY HH:mm:ss',});
	//SELECT2 FUNCTION
	$('.select2').select2({
		placeholder: '---- Select ----',
		allowClear: true,
	});

	//FROM AND TO PERIOD ONCHANGE CONDITION
	$('#from_period,#to_period').on('dp.hide',function(e) {
		let change_id        = $(this).attr('id');
		let from_period      = $('#from_period').val();
		let to_period        = $('#to_period').val();
		$('#personal_code').val('');
		select_option();
		/*if(change_id === "from_period"){
			let from_check    = moment(from_period, 'MM-YYYY').format('YYYY-MM');
			if(to_period){
				let to_check   = moment(to_period, 'MM-YYYY').format('YYYY-MM');
				if(from_check > to_check){
					toastr.error("From Period should not Greater than To Period.!");
					return false;
				}
			}
		}else
		if(change_id === "to_period"){
			let to_check   = moment(to_period, 'MM-YYYY').format('YYYY-MM');
			if(!from_period){
				toastr.error("From Period should not Empty.!");
				return false;
			}else{
				let from_check    = moment(from_period, 'MM-YYYY').format('YYYY-MM');
				if(from_check > to_check){
					toastr.error("From Period should not Greater than To Period.!");
					return false;
				}
			}
		}*/
	});

	//DR CODE FOR PROJECT ID FETCH BASED ON PERSONAL CODE START
	$('#personal_code').on('change',function(e) {
		let personal_code    = $('#personal_code').val();
		let from_period      = $('#from_period').val();
		let to_period        = $('#to_period').val();
		if(!from_period || !to_period){
			toastr.error("From To Period should not Empty.!");
			return false;
		}else{
			let from_check   = moment(from_period, 'MM-YYYY').format('YYYY-MM');
			let to_check     = moment(to_period, 'MM-YYYY').format('YYYY-MM');
			if(from_check > to_check){
				toastr.error("From Period should not Greater than To Period.!");
				return false;
			}else{
				project_id_fetch(personal_code,from_period,to_period);
			}
		}
	});
	//DR CODE FOR PROJECT ID FETCH BASED ON PERSONAL CODE END

	//DR CODE FOR PROJECT BASED WBS FETCH 13OCT22 START
	$('#project').on('change',function(e) {
		let personal_code    = $('#personal_code').val();
		let project          = $('#project').val();
		wbs_fetch(personal_code,project);
	});
	//DR CODE FOR PROJECT BASED WBS FETCH 13OCT22 END

	//CODE FOR SELECT A BONUS LEAVE WAGE DETAILS FORM REVENUE TABLE 130CT22 START
	//FROM PERIOD AND TO PERIOD VALIDATION 130CT22 START
	jQuery.validator.addMethod("lesserThan", function(value, element, params) {
		value            = moment(value, 'MM-YYYY').format('YYYY-MM');
		var check_value  = moment($(params).val(), 'MM-YYYY').format('YYYY-MM');
		if (!/Invalid|NaN/.test(value)) {
			return value <= check_value;
		}
	},'Must be lesser than or Equal to To Period.');
	//TO DATE VALIDATION
	jQuery.validator.addMethod("greaterThan", function(value, element, params) {
		value            = moment(value, 'MM-YYYY').format('YYYY-MM');
		var check_value  = moment($(params).val(), 'MM-YYYY').format('YYYY-MM');
		if (!/Invalid|NaN/.test(value)) {
			return value >= check_value;
		}
	},'Must be Greater than or Equal to From Period.');
	//FROM PERIOD AND TO PERIOD VALIDATION 130CT22 END
	
	$('#bonus_leave_wage_form').submit(function(event){ event.preventDefault(); }).validate({
		ignore: ".ignore",
		rules:{
			pay_type:{required: true },
			personal_code:{required: true },
			// project:{required: true },
			// wbs_element:{required: true },
			from_period:{
				required: true,
				lesserThan: "#to_period", 	
			},
			to_period:{
				required: true,
				greaterThan: "#from_period", 
			},
		},
		submitHandler: function (form){
			$('#process').html("<i class='fa fa-spinner fa-spin'></i> Processing...");
			$('#process').attr('disabled','disabled');
			//Encrypted
			let formData           = new FormData(form);
			// Convert FormData to JSON object
			let jsonData           = Object.fromEntries(formData.entries());
			var encKey             = '<?php echo $encKey; ?>';
			var encData            = encrypt(encKey,jsonData);
			$.ajax({
				type: "POST",
				url: '<?php echo site_url($controller_name . "/bonus_leave_wage_data"); ?>',
				data:encData,				
				contentType: 'text/plain',
				success: function (response){
					var pay_type      = $('#pay_type').val();
					if(response.success){
						$("#table_div li:first > a").text(pay_type+" Entry");
						$("#table_div").show();
						toastr.success(response.message);
						//BONUS LEAVE TAB TABLE BASED DATATABLE CALL
						data_table_call_fun("bonus_leave_table",response.bonus_leave_rslt);
						//REIMBURSEMENT TAB TABLE BASED DATATABLE CALL
						data_table_call_fun("reimbursement_table",response.reimburse_rslt);
					}else{
						$("#table_div").hide();
						toastr.error(response.message);
					}
					$('#process').attr('disabled',false);
					$('#process').html("Process");
				},
				dataType: 'json',
			});
		}
	});
	//CODE FOR SELECT A BONUS LEAVE WAGE DETAILS FORM REVENUE TABLE 130CT22 END
});
// ------------------------------------- FUNCTION CODE START ----------------------------------------------------
//FUNCTION FOR SELECT A BONUS LEAVE WAGE DETAILS FORM REVENUE TABLE 130CT22 START

//DATATABLE CALL FUNCTION START
function data_table_call_fun(table_name,table_rslt){
	//FOR CONVERT OBJECT OF OBJECT TO ARRAY OF OBJECT
	var table_arr = Object.entries(table_rslt).map((e) =>  { 
		return e[1] } );
	//DATATABLE
	$("#"+table_name).DataTable({
		processing: true,
		destroy: true,
		lengthMenu: [[10,25,50,100,500,1000,-1],[10,25,50,100,500,1000,"All"]],
		scrollY: 510,
		scrollX: true, 
		scrollCollapse: true,
		fixedHeader: true,
		
		language:{
			lengthMenu:"<span style='margin-top:8px;margin-left:10px;'>Display</span> _MENU_ <span style='margin-top:8px;'>Records</span>",
			searchPlaceholder: "Search Records",
			search: "",
			processing: '<div style="text-align: center; padding: 50px;color:#4b6fa2;z-index:999999999;"><i class="fa fa-spinner fa-spin fa-2x fa-fw"></i><br/>Loading...</div>',
		},
		data:table_arr,
		columns:[
			{title: 'Pay Type', data:'pay_type'},
			{title: 'Cycle From', data:'cycle_from'},
			{title: 'Cycle To', data:'cycle_to'},
			{title: 'Period From', data: 'period_from'},
			{title: 'Period To', data: 'period_to'},
			{title: 'Personal Code', data: 'personal_code'},
			{title: 'Project Id', data: 'project_id'},
			{title: 'Project Desc', data: 'project_desc'},
			{title: 'Wbs Element', data: 'wbs_id'},
			{title: 'Wbs Desc', data: 'wbs_desc'},
			{title: 'Network', data: 'network_id'},
			{title: 'Act Id', data: 'activity_id'},
			{title: 'Act Desc', data: 'activity_desc'},
			{title: 'Sal Comp', data: 'sal_comp'},
			{title: 'Cond Type', data: 'cond_type'},
			{title: 'Cond Val', data: 'cond_val'},
			{title: 'Fixed Amt', data: 'fixed_amt'},
			{title: 'Cond Based', data: 'cond_based'},
			{title: 'Status', data: 'wage_status'},
			// {title: 'Remarks', data: 'remarks'},
		],
	});
	$("input[type=search],select[name="+table_name+"_length]").addClass('form-control input-sm');
	$("#"+table_name+"_length > label").css("display", "flex");
}
//DATATABLE CALL FUNCTION END

//PROJECT ID FETCH DEPENDES ON PERSONAL CODE
function project_id_fetch(personal_code,from_period,to_period){
	// Encryption
	var encKey  = '<?php echo $encKey; ?>';
	var data    = {personal_code:personal_code,from_period:from_period,to_period:to_period};
	var encData = encrypt(encKey,data);
	$.ajax({
		type: 'POST',
		url: '<?php echo site_url("$this->control_name/project_id_fetch");?>',
		data:encData,				
		contentType: 'text/plain',
		beforeSend: function () {
			$('#project').next('span').attr('id', 'project_span');
			$('#project_span').html('<span style=\"color:#CC3366\";><i class=\"fa fa-spinner fa-spin fa-2x fa-fw\"></i><br/>Loading...</span>');  
		},
		success: function(data){
			let rslt   = JSON.parse(data);
			$('#project_span').empty();
			let option = '<option value>--- Select Project---</option>';

			$.each(rslt, function(key, value) {
				option += '<option value='+value.pro_id+'>'+value.pro_id+' - '+value.pro_desc+'</option>';
			});
			$('#project').html(option);
			$('.select2').select2({
				placeholder: '---- Select ----',
				allowClear: true,
			});
		}
	});
}
//PROJECT ID FETCH DEPENDES ON PERSONAL CODE END

//DR CODE FOR WBS ELEMENT FILTER START 13OCT22
function wbs_fetch(personal_code,project){
	// Encryption
	var encKey  = '<?php echo $encKey; ?>';
	var data    = {personal_code:personal_code,project:project};
	var encData = encrypt(encKey,data);
	$.ajax({
		url : '<?php echo site_url("$this->control_name/wbs_fetch");?>',
		type: 'POST',
		dataType: "html",
		data:encData,				
		contentType: 'text/plain',	
		beforeSend: function () {
			$('#wbs_element').next('span').attr('id', 'wbs_element_span');
			$('#wbs_element_span').html('<span style=\"color:#CC3366\";><i class=\"fa fa-spinner fa-spin fa-2x fa-fw\"></i><br/>Loading...</span>');  
		},
		success: function(data){
			let rslt   = JSON.parse(data);
			let option = '<option value>--- Select Wbs Element---</option>';

			//LOOP FOR OPTION VALUE FETCH IN SELECT DROPDOWN FILED
			$.each(rslt, function(key, value) {
				option += '<option value='+value.wbs_id+'>'+value.wbs_id+'~'+value.wbs_desc+'</option>';
			});

			$('#wbs_element').html(option);
			$('#wbs_element_span').empty();
			$('.select2').select2({
				placeholder: '---- Select ----',
				allowClear: true,
			});
		}
	});
}
//DR CODE WBS FETCH FUNCTION END 13OCT22

function select_option(){
	$(function(){
		$('.select2').select2({
			placeholder: '---- Select ----',
			allowClear: true,
			// dropdownParent: $('.modal-dialog')
		});
		$('.select2-tags').select2({
			tags: true,
			tokenSeparators: [',']
		});
	});	
}
</script>
<?php $this->load->view("partial/footer"); ?>