File: /home/cafsindia/uds.cafsinfotech.in/application/views/pay_structure/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));
$uniqueId = "prime_".$controller_name."_id";
$category = $this->session->userdata('logged_role');
$employee_code = $this->session->userdata('logged_emp_code');
$user_role = $this->session->userdata('logged_user_role');
$import_url = site_url($controller_name ."/import/");
$breadcrumb = "";
if($access_import === 1){
$breadcrumb = "<li>
<a class='btn btn-xs btn-primary import' data-btn-submit= 'Submit' title='Import $page_name' href='$import_url' data_form='$controller_name' > <span class='fa fa-cloud-upload'> </span> Import $page_name
</a>
</li>";
}
?>
<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="holder" class="form-inline">
<div class="col-md-12">
<!-- FOR DYNAMIC PAY STRUCTURE BUILD FORM CODE -->
<?php
$employee_type = "";
$pay_check_col = "";
$ajax_post_data = "";
$vaildation_add_chk = "";
$vaildation_filter_chk = "";
$document_load_script = "";
$datalist_validate = "";
$pay_edit_arr = array();
$pick_arr_data = array();
foreach($pay_add_filter_setting as $setting){
$prime_module_id = "employees";
$prime_form_id = (int)$setting->prime_form_id;
$label_id = $setting->label_name;
$label_name = ucwords($setting->view_name);
$field_type = (int)$setting->field_type;
$pick_list_type = (int)$setting->pick_list_type;
$pick_list = $setting->pick_list;
$pick_table = $setting->pick_table;
$pick_display = $setting->pick_display_value;
$pick_list_import = (int)$setting->pick_list_import;
$mandatory_col = (int)$setting->mandatory_column;
$auto_prime_id = $setting->auto_prime_id;
$auto_dispaly_value = $setting->auto_dispaly_value;
$depen_pick_list = (int)$setting->dependent_pick_list;
$depen_pick_input = $setting->dependent_pick_input;
$table_column1 = $setting->table_column1;
$table_column2 = $setting->table_column2;
$required = "";
$readonly = "";
$display = "";
$width = "";
//FOR MADATORY FIELD
if($label_id && $mandatory_col === 1){
$required = " required";
}
//FORM LABLE CREATE(INPUT NAME)
$form_label = form_label($label_name, $label_id, array('class' => "control-label$required"));
//PICKLIST
if((int)$field_type === 5 || (int)$field_type === 9){
$option_data = "";
if($label_id === "personal_code"){
$option_data = $per_area_list;
$style = "width:14%;";
}
if($label_id === "position"){
$style = "width:20%;";
}
if($label_id === "activity_no"){
$width = "width:17%;";
}
//PICKLIST FORM INPUT
$hid_input_name = "hid_".$label_id;
$hidden_id = $label_id."_hidden_".$prime_form_id;
if($label_id !== 'network_id'){
$datalist_validate .= '[name="'.$hid_input_name.'"],';
$form_input = "<input list='list_$label_id' name='$hid_input_name' id='$hid_input_name' value = '' class='form-control $dis_class' placeholder='Search $label_name' size='50'><datalist id='list_$label_id'>$option_data</datalist>";
$hidden_input = form_input( array("name"=>$input_name, "id"=>$label_id,"value"=>$input_value,"type"=>"hidden"));
echo "<div class='form-group' style = '$dispaly' > $form_label $hidden_input $form_input</div>";
}
}
//jquery input ajax submit value get and jquery validation check for based on pay structure add and filter columns
$pay_check_col .= "var $label_id"."_val = $('#$label_id').val(); \n";
if($label_id && $mandatory_col === 1){
$vaildation_add_chk .= $label_id."_val !== '' && ";
}
$vaildation_filter_chk .= $label_id."_val !== '' || ";
$ajax_post_data .= "$label_id:$label_id"."_val,";
}
$datalist_validate = rtrim($datalist_validate,",");
$vaildation_add_chk = rtrim($vaildation_add_chk,' && ');
$vaildation_filter_chk = rtrim($vaildation_filter_chk,' || ');
//code using only for personal code input based
$vaildation_filter_chk = rtrim($vaildation_filter_chk,' && ');
$ajax_post_data = rtrim($ajax_post_data,',');
if($vaildation_add_chk === ""){
$vaildation_add_chk = "0";
}
if($vaildation_filter_chk === ""){
$vaildation_filter_chk = "0";
}
//------------------- end -----------
$error_info = "";
if($pay_add_filter_setting[0]) {
?>
<div class='form-group' style="margin-top: 12px;width:5px !important;display:inline !important;">
<button class = "btn btn-info" id="add">Add</button>
<button class = "btn btn-edit" id="search">History</button>
</div>
<?php
}else{
$error_info = "toastr.error('To First Map a Filter Column in Pay Structure Settings Module');";
$toastr_fadeout = "toastr.options.fadeOut = 3000";
}
?>
</div>
</div>
<div class="row" style='width: 100%;'>
<div id="search_pay_struct_data" class='col-md-12' style='display: none;'>
<table id="search_pay_struct_table" class='table table-hover'></table>
</div>
</div>
<div style = 'margin:0px 10px;'>
<div style="display: none;" id="add_pay_struct_data">
<table id="add_pay_struct_table" style = "width:100%;" class='table table-hover'>
<thead class="thead-dark">
<tr>
<th scope="col">Category</th>
<th scope="col">PTax Location</th>
<th scope="col">Employee Type</th>
<th scope="col">Apply Date</th>
<th scope="col" style = 'display: none;'>To Date</th>
<th scope="col" style = 'display: none;'>Effective Date</th>
<th scope="col" style = 'display: none;'>Day Condition</th>
<th scope="col" id="day_count_head" style="display:none;">Day Count</th>
<th scope="col">PF Limit</th>
<!-- <th scope="col">ESI Limit</th> -->
<th scope="col" style="display:none;">Prime Pay Id</th>
</tr>
</thead>
<tbody>
<tr>
<td><select id="category" name="category" class='form-control select2'><?php echo $category_list ?></select></td>
<td><select id="tax_location" name="tax_location" class='form-control select2'></select></td>
<td><select id="employee_type" name="employee_type" class='form-control select2'><?php echo $emp_type_list ?></select></td>
<td><div class="controls" style="position: relative"><input type='text' id='from_date' name='from_date' value ='' class='form-control input-sm datepicker' placeholder = "Apply Date" size="5"></div></td>
<td style = 'display: none;'><div class="controls" style="position: relative"><input type='text' id='to_date' name='to_date' value = "31-12-2099" class='form-control datepicker' placeholder = "To Date" size="5"></div></td>
<td style = 'display: none;'><div class="controls" style="position: relative"><input type='text' id='effective_date' name='effective_date' value ='' class='form-control datepicker' placeholder = "Effective Date" size="5"></div></td>
<td style = 'display: none;'><select id="day_condition" name="day_condition" class='form-control select2'><?php echo $day_cond_list ?></select></td>
<td style="display:none;"><select id="day_count" name="day_count" class='form-control select2'><?php echo $day_count_list ?></select></td>
<td><select id="pf_limit" name="pf_limit" class='form-control select2'><?php echo $status_list ?></select></td>
<!-- <td><select id="esi_limit" name="esi_limit" class='form-control select2'><?php echo $status_list ?></select></td> -->
<td style="display:none;"><div class="controls" style="position: relative;"><input type='hidden' id='prime_id' name='prime_id' value ='0' class='form-control' size="5"></div></td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="row" id = "ear_ded_pay_struct_data" style = "display: none;">
<div class="col-md-7">
<div id="ear_pay_struct_data">
</div>
</div>
<div class="col-md-5">
<div id="ded_pay_struct_data">
</div>
</div>
</div>
<div id = "ear_ded_button" style = "display: none;margin-bottom:20px">
<button class='btn btn-primary btn-sm' id="pay_struct_save" name='pay_struct_save'>Save</button>
</div>
<script type="text/javascript">
$(document).ready(function (){
$('.modal-dialog').draggable({ handle: ".modal-header" });
//error through for payroll filter not mapping
<?php echo $error_info; ?>
<?php echo $toastr_fadeout ?>
var datalist_validate = '<?php echo $datalist_validate; ?>';
//Amount input digit should be 4 when category is per day.
var category = $("#category").val();
validate_amount(category);
$("#category").change(function(){
var category = $("#category").val();
validate_amount(category);
});
//Datalist selected value fetch
$(document).on('change', 'input'+datalist_validate, function(){
var selected_value = $(this).val();
var list = $(this).attr('list');
var id = $(this).attr('id');
var attr_id = list.replace('list_', '');
var data_value = $('#'+list+' option[value=\"' + selected_value + '\"]').attr('data-value');
var data_text = $('#'+list+' option[value=\"' + selected_value + '\"]').text();
if(data_value){
$('#'+attr_id).val(data_value);
if(attr_id === 'wbs_element'){ //If Wbs Changed then Activity should fetch based on wbs
get_pick_data(data_value);
// fetch_network(data_value);
$('#'+list).prop('readonly', true);
$('#position_div,#activity_no_div').remove(); //clear span empty
$('#position,#activity_no').val('');
$('input[name="hid_position"],input[name="hid_activity_no"]').val(''); //input empty
$('#list_position,#list_activity_no').empty(); //datalist empty
}else if(attr_id === 'personal_code'){
$('#wbs_element_div,#position_div,#activity_no_div').remove();
$('#wbs_element,#position,#activity_no').val('');
$('input[name="hid_wbs_element"],input[name="hid_position"],input[name="hid_activity_no"]').val('');
$('#list_position,#list_wbs_element,#list_activity_no').val('');
$('#list_position,#list_activity_no,#list_wbs_element').empty();
}
$('#'+attr_id+'_div').remove();
if(attr_id && data_value){
$("#"+id).prop("readonly", true);
$("#"+attr_id).parent().append('<span id ="'+attr_id+'_div" ><b>'+data_text+'</b> <a style="cursor:pointer;float: right;" onClick=clear_btn("'+attr_id+'")> <i class="fa fa-remove" aria-hidden="true"></i> </a></span>');
}else{
$('#'+attr_id+'_div').remove();
}
}else{
//alert(attr_id+"-"+id);
$("#"+id).prop("readonly", false);
if(attr_id === 'wbs_element'){
$('#network_id').val('');
}
$('#'+id).val('');
$('#'+attr_id).val('');
}
});
/* LOAD SCRIPT */
<?php
//echo "$document_load_script";
?>
var rslt_data = 0;
$(document).on('input paste', '#hid_wbs_element', function(e){
var name = $(this).attr('name');
var list = $(this).attr('list');
var name = name.replace("hid_","");
var attr_id = name.replace("[]","");
var personal_code = $('#personal_code').val();
if(personal_code){
var term = $(this).val();
if(term.length < 4){
rslt_data = 0;
}
if(term.length >= 4 && rslt_data === 0){
rslt_data = 1;
// Encryption
var encKey = '<?php echo $encKey; ?>';
var data = {term:term,personal_code:personal_code};
var encData = encrypt(encKey,data);
$.ajax({
url: '<?php echo site_url("$controller_name/get_wbs"); ?>',
type: 'post',
data:encData,
contentType: 'text/plain',
success: function(data){
var rslt = JSON.parse(data);
$("#"+list).html('');
if(rslt.success){
$.each(rslt.search_rslt, function(i, value){
$("#"+list).append("<option data-value='"+value.wbs_id+"' value='"+$.trim(value.wbs_id)+"' >"+$.trim(value.wbs_desc)+"</option>");
});
}else{
toastr.error(rslt.message);
var rslt_data = 0;
$("#wbs_element_div").remove('');
$('#hid_wbs_element,#wbs_element').val('');
}
},
beforeSend: function(){
$("#"+list).attr('disabled','disabled');
$("#span_"+attr_id).remove('');
$("#"+attr_id).parent().append('<span id="span_'+attr_id+'" style="color:#CC3366;"><i class="fa fa-spinner fa-spin fa-2x fa-fw"></i><br/>Loading...</span>');
},
complete: function() {
$("#"+list).attr('disabled',false);
$("#span_"+attr_id).remove('');
}
});
}
}else{
toastr.error("Please Choose Personal Area...!");
return false;
}
});
//CATEGORY ON CHANGE CONDITION
$('#category').on('change',function(e){
var category = $("#add_pay_struct_data #category").val();
//pay structure already exist check and then if not exist then show a earning and deduction wages table create
if(category){
validate_amount(category);
show_pay_structure(category);
}
});
$(function(){
$(".datepicker").datetimepicker({
format: 'DD-MM-YYYY',
//debug: true
});
});
//CALL SELECT FUNCTION
select_option();
//empty the input when the value is 0.00 -> NB[29-09-23]
$(document).on("focus",".decimals",function(e) {
var val = $(this).val();
if(val === '0' || val === '0.00'){
$(this).val('');
}
});
//----- DR CODE FOR TABLE (UPARROW) CLICK SHOULD ABOVE INPUT FOCUS and (DOWNARROW) CLICK SHOULD (BELOW INPUT) FOCUS THIS SAME AS FOLLOWD BY (RIGHT AND LEFT ARROW) START ------
document.onkeydown =
function updownintable(e) {
switch (e.key) {
case 'ArrowUp':
var el = document.activeElement;
var act_id = el.id;
if(act_id){
var active = $(el).closest('tr').prev().children('td').children('#'+act_id);
if (active != null) {
active.focus();
}
}
break;
case 'ArrowDown':
var el = document.activeElement;
var act_id = el.id;
if(act_id){
var active = $(el).closest('tr').next().children('td').children('#'+act_id);
if (active != null) {
active.focus();
}
}
break;
case 'ArrowLeft':
var el = document.activeElement;
var act_id = el.id;
if(act_id){
var foc_id = $(el).closest('td').prev('td').children().attr('id');
var active = $(el).closest('td').prev('td').children('#'+foc_id);
if (active != null) {
active.focus();
}
}
break;
case 'ArrowRight':
var el = document.activeElement;
var act_id = el.id;
if(act_id){
var foc_id = $(el).closest('td').next('td').children().attr('id');
var active = $(el).closest('td').next('td').children('#'+foc_id);
if (active != null) {
active.focus();
}
}
break;
}
};
//------- DR CODE FOR TABLE (UPARROW) CLICK SHOULD ABOVE INPUT FOCUS and (DOWNARROW) CLICK SHOULD (BELOW INPUT) FOCUS END ------
//------- DR CODE for UP AND DOWN ARROW CLICK DON'T CHANGE A VALUE FOR EXAMPLE(DROPDOWN) START ------
var keys = {};
window.addEventListener("keydown",
function(e){
keys[e.keyCode] = true;
switch(e.keyCode){
// case 37: case 39: case 38: case 40: e.preventDefault(); break; // Arrow keys
// case 32: e.preventDefault(); break; // Space
default: break; // do not block other keys
}
},
false);
window.addEventListener('keyup',
function(e){
keys[e.keyCode] = false;
},
false);
//------- DR CODE for UP AND DOWN ARROW CLICK DON'T CHANGE A VALUE EXAMPLE(DROPDOWN) END------
//from date and effective date on change condition
$("#from_date,#effective_date").on("dp.hide",function (e) {
var from_date = $('#add_pay_struct_data #from_date').val();
var to_date = $('#add_pay_struct_data #to_date').val();
var effective_date = $('#add_pay_struct_data #effective_date').val();
var category = parseInt($('#add_pay_struct_data #category').val());
var personal_code = $('#personal_code').val();
var wbs_element = $('#wbs_element').val();
var position = $('#position').val();
var activity_no = $('#activity_no').val();
var network_id = $('#network_id').val();
var prime_id = $('#add_pay_struct_data #prime_id').val();
var day = from_date.split("-")[0];
if(day !== "01") {
$('#add_pay_struct_data #from_date').val('');
toastr.error("Please select apply date 1st day of the Month...!");
return false;
}
if(category === "" || category === 0){
toastr.error("Please Choose Category..!");
$('#add_pay_struct_data #from_date').val('');
return false;
}else
if(personal_code === "" || wbs_element === "" || position === ""){
toastr.error("Please Choose All Above Mandatory Fields..!");
$('#add_pay_struct_data #from_date').val('');
return false;
}else{
date_check_validation(category,personal_code,wbs_element,position,activity_no,network_id,from_date,to_date,prime_id);
}
});
//day count restrictions updated
$("#day_count > option").slice(1,20).remove();
//day condition on change
$('#add_pay_struct_table #day_condition').on('change',function(e){
var day_condition = $("#add_pay_struct_table #day_condition").val();
var change_tab_id = "#add_pay_struct_table";
//for variable
day_cond_hide_show(day_condition,change_tab_id);
});
$('#search_pay_struct_table #day_condition').on('change',function(e){
var day_condition = $("#search_pay_struct_table #day_condition").val();
var change_tab_id = "#search_pay_struct_table";
day_cond_hide_show(day_condition,change_tab_id); //for variable
});
//ADD BTN
$("#add").on('click', function(e){
<?php echo $pay_check_col;?>;
if(<?php echo $vaildation_add_chk;?>){
var personal_code = $("#personal_code").val();
var wbs_element = $("#wbs_element").val();
var activity_no = $("#activity_no").val();
var act_value = $('#list_activity_no option[data-value=\"' + activity_no + '\"]').attr('value');
var act = duplicate_act_no(wbs_element,act_value); //ASYNC FUNC
act.then(function(result){
if(result){
tax_location_append(personal_code);
$("#add_pay_struct_data #category,#tax_location,#from_date,#effective_date,#day_condition,#day_count,#pf_limit,#esi_limit,#prime_id").val('');
$("#add_pay_struct_data #to_date").val('31-12-2099');
select_option();
$("#add_pay_struct_data").show();
$("#search_pay_struct_data,#ear_ded_pay_struct_data,#ear_ded_button").hide();
$("#add_pay_struct_data #category,#tax_location,#from_date,#effective_date,#day_condition,#day_count,#pf_limit,#esi_limit").attr("readonly",false);
}else{
toastr.error("Duplicate activity no for same wbs found.please contact admin!");
}
});
}else{
toastr.error("Please Choose All Show Fields..!");
}
});
//search by pay structure on click function
$("#search").on('click', function(e){
search_pay_structure();
});
$("#pay_struct_save").on("click",function() {
var click_details = $("#add_pay_struct_data tbody").find('tr');
let action = "save";
var prime_id = $(click_details).find("td").find("#prime_id").val();
//function for save a pay structure and pay structure line data
save_pay_structure(click_details,action,prime_id);
});
//onclick function for add pf and esi gross based on onclick by a amount and pf and esi yes no option
$(document).on('focusin', '#amount', function(e){
$(this).data('val', $(this).val());
}).on('change','#amount', function(e){
var click_id = $(this).attr("id");
var click_row = $(this);
var old_val = Number($(this).data("val"));
});
//onclick function for add pf and esi gross based on onclick by a amount and pf and esi yes no option
$(document).on('change','#pf_applicable,#esi_applicable', function (e) {
var click_id = $(this).attr("id");
var click_row = $(this);
var new_val = $(this).val();
var old_val = $(this).attr('data-val');
$(this).attr('data-val', new_val);
var exempt_id = '';
if(parseInt(new_val) === 1){
if(click_id === 'pf_applicable'){
exempt_id = 'pf_exempt';
}else
if(click_id === 'esi_applicable'){
exempt_id = 'esi_exempt';
}
$('#'+exempt_id).val(2);
$('#'+exempt_id).attr('checked',false);
}
});
$(document).on('change','#pf_exempt,#esi_exempt,#lwf_exempt', function(e) {
var change_id = $(this).attr("id");
var change_val = "";
var prime_id = $("#add_pay_struct_table tbody").find('tr').find("td").find("#prime_id").val();
if(change_id === "lwf_exempt"){
if(this.checked) {
$('#'+change_id).val(1);
}else{
$('#'+change_id).val(2);
}
}else{
if(change_id === "pf_exempt"){
var change_val = 'pf_applicable';
}else
if(change_id === "esi_exempt"){
var change_val = 'esi_applicable';
}
if(this.checked) {
if(change_val){
$('#'+change_id).val(1);
$("#ear_pay_struct_data tbody").find("tr").find("td").find('#'+change_val).val(2);
}
}else{
//FUNCTION 25AUG22 CALL FOR IF UNCHECK BY USER THEN PREVIOUS VALUE APPEND
prev_exempt_val_append(prime_id,change_val);
$('#'+change_id).val(2);
}
}
select_option();
});
//----- DR CODE FOR TABLE (UPARROW) CLICK SHOULD ABOVE INPUT FOCUS and (DOWNARROW) CLICK SHOULD (BELOW INPUT) FOCUS THIAS SAME AS FOLLOWD BY (RIGHT AND LEFT ARROW) START ------
document.onkeydown =
function updownintable(e) {
switch (e.key) {
case 'ArrowUp':
var el = document.activeElement;
var act_id = el.id;
var active = $(el).closest('tr').prev().children('td').children('#'+act_id);
if (active != null) {
active.focus();
}
break;
case 'ArrowDown':
var el = document.activeElement;
var act_id = el.id;
var active = $(el).closest('tr').next().children('td').children('#'+act_id);
if (active != null) {
active.focus();
}
break;
case 'ArrowLeft':
var el = document.activeElement;
var act_id = el.id;
var foc_id = $(el).closest('td').prev('td').children().attr('id');
var active = $(el).closest('td').prev('td').children('#'+foc_id);
if (active != null) {
active.focus();
}
break;
case 'ArrowRight':
var el = document.activeElement;
var act_id = el.id;
var foc_id = $(el).closest('td').next('td').children().attr('id');
var active = $(el).closest('td').next('td').children('#'+foc_id);
if (active != null) {
active.focus();
}
break;
}
};
//------- DR CODE FOR TABLE (UPARROW) CLICK SHOULD ABOVE INPUT FOCUS and (DOWNARROW) CLICK SHOULD (BELOW INPUT) FOCUS END ------
//------- DR CODE for UP AND DOWN ARROW CLICK DON'T CHANGE A VALUE FOR EXAMPLE(DROPDOWN) START ------
var keys = {};
window.addEventListener("keydown",
function(e){
keys[e.keyCode] = true;
switch(e.keyCode){
case 37: case 39: case 38: case 40: e.preventDefault(); break; // Arrow keys
// case 32: e.preventDefault(); break; // Space
default: break; // do not block other keys
}
},
false);
window.addEventListener('keyup',
function(e){
keys[e.keyCode] = false;
},
false);
//------- DR CODE for UP AND DOWN ARROW CLICK DON'T CHANGE A VALUE EXAMPLE(DROPDOWN) END------
//SATHISH FOR SELECT2 INPUT AUTO FOCUS START
$('.select2').on('select2:select', function(e){
$(this).focus();
e.preventDefault();
});
//SATHISH FOR SELECT2 INPUT AUTO FOCUS END
$("a.import").click(function(event){
event.preventDefault();
var action = $(this).attr('data-btn-submit');
var title = $(this).attr('title');
var control = $(this).attr('href');
var form_id = "save_import";
view_form_data(action,title,control,form_id);
});
$(document).on('paste','input[name="hid_personal_code"],[name="hid_wbs_element"],[name="hid_position"],[name="hid_activity_no"]', function (e) {
var pastedData = e.originalEvent.clipboardData.getData('text').trim();
var list = $(this).attr('list');
var attr_id = list.replace("list_","");
if(pastedData){
$('#'+attr_id).val(pastedData);
}
});
});
//-------------------------------- FUNCTION MODE START ------------------------------------------------
//function select call for using select2 based dropdown list
function select_option(){
//setTimeout(function(){
$('.select2').select2({
placeholder: '---- Select ----',
allowClear: true,
// dropdownParent: $('.modal-dialog')
});
$('.select2-tags').select2({
tags: true,
tokenSeparators: [',']
});
//}, 100);
}
function validate_amount(category){
$(document).off("input paste", "#amount");
$(document).on("input paste", "#amount", function (evt){
//condition for allow only in deciamls not all others
var self = $(this);
self.val(self.val().replace(/[^0-9\.]/g, ''));
if((evt.which != 46 || self.val().indexOf('.') != -1) && (evt.which < 48 || evt.which > 57)){
evt.preventDefault();
}
if(category === "2" && self.val().length > 6){
let value = parseFloat(self.val());
if(!isNaN(value) && value >= 1000000){
self.val(self.val().substr(0,5));
}
}
if(category === "3" && self.val().length > 3){
let value = parseFloat(self.val());
if(!isNaN(value) && value >= 1000){
self.val(self.val().substr(0, 3));
}
}
});
}
//Get Pickdata on change wbs
function get_pick_data(wbs_element){
var send_url = '<?php echo site_url("$controller_name/get_pick_data");?>';
// Encryption
var encKey = '<?php echo $encKey; ?>';
var data = {wbs_element:wbs_element};
var encData = encrypt(encKey,data);
$.ajax({
type: 'POST',
url: send_url,
data:encData,
contentType: 'text/plain', //get activity and position details
beforeSend: function(){
$("#list_position,#list_activity_no").attr('disabled','disabled');
$("#list_position,#activity_no").parent().append('<span class="span_loader" style="color:#CC3366;"><i class="fa fa-spinner fa-spin fa-2x fa-fw"></i><br/>Loading...</span>');
},
complete: function() {
$("#list_position,#list_activity_no").attr('disabled',false);
$(".span_loader").remove('');
},
success: function(data) {
var rslt = JSON.parse(data);
if(rslt.success){
if(rslt.position_rslt){ //Position option fetch
$("#list_position").html('');
$.each(rslt.position_rslt, function(key, value){
if(value.position_code !== ""){
$("#list_position").append("<option data-value='"+value.position_code+"' value='"+$.trim(value.position_code)+"' >"+$.trim(value.position_name)+"</option>");
}
});
}
if(rslt.activity_rslt){ //Activity option fetch
$("#list_activity_no").html('');
$.each(rslt.activity_rslt, function(key, value){
if(value.prime_sap_activity_id !== ""){
$("#list_activity_no").append("<option data-value='"+value.prime_sap_activity_id+"' value='"+$.trim(value.act_no)+"' >"+$.trim(value.act_desc)+"</option>");
}
});
}else{
toastr.error('Activity not Available for this WBS.. <button type="button" class="btn-xs btn clear btn-toastr" onclick="toastr.clear()">OK</button>' , 'Error Message:');
}
if(rslt.network_rslt){ // Hidden Network value fetch
$('#network_id').val(rslt.network_rslt[0].wbs_network_id);
}
}else{
toastr.error(rslt.message);
}
}
});
}
//date greater and lesser validation
function date_check_validation(category,personal_code,wbs_element,position,activity_no,network_id,from_date,to_date,prime_id){
var check_from_date = moment(from_date, 'DD-MM-YYYY').format('YYYY-MM-DD');
var check_to_date = moment(to_date, 'DD-MM-YYYY').format('YYYY-MM-DD');
if(from_date && to_date){
if(check_from_date > check_to_date){
toastr.error("To Date Should be Greater than From Date");
$('#add_pay_struct_data #from_date').val('');
return false;
}else{
//payroll exist check function
payroll_process_check(category,personal_code,wbs_element,position,activity_no,network_id,check_from_date,prime_id);
}
}
}
//FUNCTION FOR CHECK A PAYROLL PROCESS EXIST BESED ON FORM DATE AND CATEGORY
function payroll_process_check(category,personal_code,wbs_element,position,activity_no,network_id,from_date,prime_id){
var send_url = '<?php echo site_url("$controller_name/payroll_process_check");?>';
// Encryption
var encKey = '<?php echo $encKey; ?>';
var data = {category:category,personal_code:personal_code,wbs_element:wbs_element,position:position,activity_no:activity_no,network_id:network_id,from_date:from_date,prime_id:prime_id};
var encData = encrypt(encKey,data);
$.ajax({
type: 'POST',
url: send_url,
data:encData,
contentType: 'text/plain',
success: function(data) {
var rslt = JSON.parse(data);
if(rslt.success){
toastr.success(rslt.message);
}else{
toastr.error(rslt.message);
$('#add_pay_struct_data #from_date').val('');
return false;
}
}
});
}
//EXIST PAY STRUCTURE CHECK AND IF NOT EXIST THEN SHOW A EAR AND DED WAGE DETAILS IN TABLE
function show_pay_structure(category){
var send_url = '<?php echo site_url("$controller_name/show_pay_structure");?>'
/* var status_list = <?php echo json_encode($status_list); ?>;
var category_arr = <?php echo json_encode($category_arr); ?>;
var status_arr = <?php echo json_encode($status_arr); ?>;
var day_cond_arr = <?php echo json_encode($day_cond_arr); ?>;
var day_count_arr = <?php echo json_encode($day_count_arr); ?>;*/
//for dynamic add column from pay structure table (pay structure check validation add variable data)
<?php echo $pay_check_col; ?>;
// Encryption
var encKey = '<?php echo $encKey; ?>';
var data = {<?php echo $ajax_post_data ?>,category:category};
var encData = encrypt(encKey,data);
$.ajax({
type: 'POST',
url: send_url,
data:encData,
contentType: 'text/plain',//for dynamic filter column based to post a data from(pay structure table) based on pay structure filter settings
success: function(data) {
var rslt = JSON.parse(data);
if(rslt.success){
toastr.success(rslt.message);
//FUNCTION FOR CREATE TO APPEND A DATA TO EARNINGS AND DEDUCTION TABLE
$("#ear_ded_button").show();
ear_ded_table_create(rslt);
}else{
toastr.error(rslt.message);
//FUNCTION FOR HIDE A EARNINGS AND DEDUCTION TABLE
pay_struct_line_table_toggle();
}
}
});
}
//FUNCTION FOR SEARCH A EXIST PAY STRUCTURE
//function search_pay_structure(struct_set_pick){
function search_pay_structure(){
var personal_code = $("#personal_code").val();
tax_location_append(personal_code);
//var payroll_exist_arr = <?php //echo json_encode($payroll_exist_arr); ?>;
var emp_type_arr = {"": "---- Employee Type ----", 1: "Internal", 2: "External"};
var send_url = '<?php echo site_url("$controller_name/search_pay_structure");?>';
//for dynamic filter column based data get from(pay structure table) based on pay structure filter settings
<?php echo $pay_check_col; ?>;
if(personal_code_val && wbs_element_val){
$("#add_pay_struct_data,#ear_ded_pay_struct_data,#ear_ded_button").hide();
$("#search_pay_struct_data").show();
//for table search input
var search = $("input[type='search']").val();
// Encryption
var encKey = '<?php echo $encKey; ?>';
var data = {search:search,<?php echo $ajax_post_data ?>};
var encData = encrypt(encKey,data);
$.ajax({
type: 'POST',
url: send_url,
data:encData,
contentType: 'text/plain',//for dynamic filter column based to post a data from(pay structure table) based on pay structure filter settings
beforeSend: function () {
$('#search_pay_struct_table').html('<h4 style="color:#CC3366;text-align:center;"><i class="fa fa-spinner fa-spin fa-2x fa-fw"></i><br/>Loading...</h4>');
},
success: function(data) {
$('#search_pay_struct_table').empty();
var rslt = JSON.parse(data);
var exist_arr = rslt.exist_arr;
var arr_trans = rslt.arr_trans;
var arr_info = rslt.arr_info;
if(rslt.success){
// toastr.success(rslt.message);
$table = $('#search_pay_struct_table').DataTable({
destroy: true,
processing: true,
lengthMenu: [[10,25,50,100,500,-1],[10,25,50,100,500,"All"]],
language:{
searchPlaceholder: "Search records",
search: "",
},
scrollX: true,
data: rslt.table_rslt,
columns: [
{ title: "WBS Element",data: "wbs_element",
render:function(value) {
return "<span id='activity_no'>"+value+"</span>"}},
{ title: "Position",data: "position",
render:function(value) {
return "<span id='position'>"+value+"</span>"}},
{ title: "Category",data: "category",
render:function(value) {
return "<span id='category'>"+value+"</span>"}},
{ title: "PTax Location",data: "tax_location",
render:function(value) {
return "<span id='tax_location1'>"+value+"</span>"}},
{ title: "Employee Type",data: "employee_type",id: "employee_type_head", visible: false,
render:function(value) {
return "<span id='employee_type'>"+emp_type_arr[value]+"</span>"}},
{ title: "Apply Date",data: "from_date",
render:function(value) {
return "<span id='from_date'>"+moment(value ,"YYYY-MM-DD").format('DD-MM-YYYY')+"</span>"}},
{ title: "To Date",data: "to_date",
// , visible: false
render:function(value) {
return "<span id='to_date'>"+moment(value ,"YYYY-MM-DD").format('DD-MM-YYYY')+"</span>"}},
{ title: "Effective Date",data: "effective_date", visible: false,
render:function(value) {
return "<span id='effective_date'>"+moment(value ,"YYYY-MM-DD").format('DD-MM-YYYY')+"</span>"}},
{ title: "Day Condition",data: "day_condition", visible: false,
render:function(value) {
return "<span id='day_condition'>"+value+"</span>"}},
{ title: "Day Count",data: "day_count",id: "day_count_head", visible: false,
render:function(value) {
return "<span id='day_count'>"+value+"</span>"}},
{ title: "PF Limit",data: "pf_limit",id: "pf_limit_head",
render:function(value) {
return "<span id='pf_limit'>"+value+"</span>"}},
/*{ title: "ESI Limit",data: "esi_limit",id: "esi_limit_head",
render:function(value) {
return "<span id='esi_limit'>"+value+"</span>"}},*/
{ title: "Gross Amt",data: "gross",id: "gross_head",
render:function(value) {
return "<span id='gross'>"+value+"</span>"}},
{ title: "PF Gross",data: "pf_gross",id: "pf_gross_head",
render:function(value) {
return "<span id='pf_gross'>"+value+"</span>"}},
{ title: "ESI Ceiling Gross",data: "esi_gross",id: "esi_gross_head",
render:function(value) {
return "<span id='esi_gross'>"+value+"</span>"}},
{ title: "Edit",data: "prime_id",
render:function(value,type,row){
//condition for exist check
if(exist_arr && exist_arr[value]){
var check_status_arr = exist_arr[value]['check_status'].split(',');
// if(parseInt(exist_arr[value]['check_status']) === 1){
if(check_status_arr.includes("1")){
return "<input type='button' id='edit' name='edit' value = 'View' class='btn btn-xs btn-success' onclick = save_pay_structure($(this),'view',"+value+")>";
}else{
if(arr_trans && arr_trans[value]){
return "<input type='button' id='edit' name='edit' value = 'View' class='btn btn-xs btn-success' onclick = save_pay_structure($(this),'view',"+value+")>";
}else{
return "<input type='button' id='edit' name='edit' value = 'Edit' class='btn btn-xs btn-success' onclick = save_pay_structure($(this),'edit',"+value+")>";
}
}
}else
if(arr_trans && arr_trans[value]){
return "<input type='button' id='edit' name='edit' value = 'View' class='btn btn-xs btn-success' onclick = save_pay_structure($(this),'view',"+value+")>";
}else{
return "<input type='button' id='edit' name='edit' value = 'Edit' class='btn btn-xs btn-success' onclick = save_pay_structure($(this),'edit',"+value+")>";
}
}
},
{ title: "Copy",data: "prime_id",
render:function(value) {
//condition for exist check
return "<input type='button' id='copy' name='copy' value = 'Copy' class='btn btn-xs btn-info' onclick = save_pay_structure($(this),'copy',"+value+")>"
}
},
{ title: "Delete",data: "prime_id",
render:function(value,type,row){
var status = parseInt(row.status);
//condition for exist check
if((exist_arr && exist_arr[value]) || (arr_info && arr_info[value])){
return "";
}else{ //If Cats entry and arrear entry not created
if(status === 1){
//ACTIVE PAY STRUCTURE SHOULD ONLY ALLOW TO DELETE
return "<input type='button' id='delete' name='delete' value = 'delete' class='btn btn-xs btn-edit' onclick = delete_pay_structure($(this),"+value+")>";
}else{
return "";
}
}
}
},
]
});
//DR CODE START FOR DATATABLE EXPORT OPTION ADD 23AUG22
var table_option = "<table><tr><td id='export' style='padding:10px 6px;'></td><td id='import' style='padding:10px 6px;'></td></tr></table>";
$("#search_pay_struct_table_filter").append(table_option);
var buttons = new $.fn.dataTable.Buttons($table,{
buttons: [{
extend: 'collection',
text: 'Export',
buttons: [
{extend:'csv',exportOptions:{modifier:{order:'index',page:'all',search:'none'},columns:':visible'}},
{extend:'excel',exportOptions:{modifier:{order :'index',page: 'all',search:'none'},columns:':visible'}},
]
}]
}).container().appendTo($('#export'));
$("input[type='search']").addClass('form-control');
// $("select[name='search_pay_struct_table_length']" ).addClass('form-control input-sm');
if(rslt.ear_table_rslt){
serach_table_col_hi_show();
//FUNCTION FOR CREATE TO APPEND A DATA TO EARNINGS AND DEDUCTION TABLE
$("#ear_ded_button").hide();
ear_ded_table_create(rslt);
}
select_option();
}else{
toastr.error(rslt.message);
$("#search_pay_struct_data").hide();
//FUNCTION FOR HIDE A EARNINGS AND DEDUCTION TABLE
pay_struct_line_table_toggle();
}
}
});
}else{
toastr.error("Please Choose Personal Area and WBS..!");
}
}
//view and save and copy pay structure function
function save_pay_structure(click_details,action,prime_id){
var status_list = <?php echo json_encode($status_list); ?>;
var category_arr = <?php echo json_encode($category_arr); ?>;
//var pro_tax_arr = <?php echo json_encode($pro_tax_arr); ?>;
var status_arr = <?php echo json_encode($status_arr); ?>;
var day_cond_arr = <?php echo json_encode($day_cond_arr); ?>;
var day_count_arr = <?php echo json_encode($day_count_arr); ?>;
var emp_type_arr = <?php echo json_encode($emp_type_arr); ?>;
//DR CODE START FOR COPY PAY STRUCTURE CONFIRM BOX ADD 23AUG22
if(action === "copy"){
if (!confirm('Are You Sure You Want to Copy this Pay Structure?')) {
return false;
}
}
//DR CODE END FOR COPY PAY STRUCTURE CONFIRM BOX ADD 23AUG22
if(action === "view"){
$("#ear_ded_button").hide();
}else{
$("#ear_ded_button").show();
}
if(action === "edit" || action === "view" || action === "copy"){
//TO CLICK BY EDIT BUTTON THEN PAY STRUCTURE SETTINGS BASED PICKLIST INPUT DATA FETCH FOR USER VIEW PURPOSE
//if(prime_id){
//pay_struct_search_drop_fetch(prime_id,struct_set_pick);
//}
var table_data = $('#search_pay_struct_table').DataTable().row($(click_details).closest("tr")).data();
var category = table_data['category'];
var tax_location = table_data['tax_location'];
var from_date = table_data['from_date'];
from_date = moment(from_date ,"YYYY-MM-DD").format('DD-MM-YYYY');
var to_date = table_data['to_date'];
to_date = moment(to_date ,"YYYY-MM-DD").format('DD-MM-YYYY');
var effective_date = table_data['effective_date'];
effective_date = moment(effective_date ,"YYYY-MM-DD").format('DD-MM-YYYY');
var day_condition = table_data['day_condition'];
var day_count = table_data['day_count'];
var pf_limit = table_data['pf_limit'];
var esi_limit = table_data['esi_limit'];
var employee_type = table_data['employee_type'];
var activity_no = table_data['activity'];
}else{
var category = $(click_details).find("td").find("#category").val();
var tax_location = $(click_details).find("td").find("#tax_location").val();
var from_date = $(click_details).find("td").find("#from_date").val();
var to_date = $(click_details).find("td").find("#to_date").val();
var effective_date = $(click_details).find("td").find("#effective_date").val();
var day_condition = $(click_details).find("td").find("#day_condition").val();
var day_count = $(click_details).find("td").find("#day_count").val();
var pf_limit = $(click_details).find("td").find("#pf_limit").val();
var esi_limit = $(click_details).find("td").find("#esi_limit").val();
var employee_type = $(click_details).find("td").find("#employee_type").val();
var activity_no = $(click_details).find("td").find("#activity").val();
}
//for dynamic filter column from(pay structure table) based on pay structure filter setting
<?php echo $pay_check_col; ?>;
//for only work for edit operation (because we click a edit button then same add table list but data are fetched and table inputs are editable)
if(action === "edit" || action === "view" || action === "copy"){
$("#add_pay_struct_data").show();
$("#search_pay_struct_data").hide();
if(category_arr){
$("#add_pay_struct_data #category").val(category_arr[category]);
category = category_arr[category];
}
validate_amount(category);
/*if(pro_tax_arr){
$("#add_pay_struct_data #tax_location").val(pro_tax_arr[tax_location]);
tax_location = pro_tax_arr[tax_location];
}*/
$("#add_pay_struct_data #employee_type").val(employee_type);
$("#add_pay_struct_data #from_date").val(from_date);
$("#add_pay_struct_data #to_date").val(to_date);
$("#add_pay_struct_data #effective_date").val(effective_date);
if(day_cond_arr){
$("#add_pay_struct_data #day_condition").val(day_cond_arr[day_condition]);
day_condition = day_cond_arr[day_condition];
}
if(day_count_arr){
$("#add_pay_struct_data #day_count").val(day_count_arr[day_count]);
day_count = day_count_arr[day_count];
}
if(status_arr){
$("#add_pay_struct_data #pf_limit").val(status_arr[pf_limit]);
$("#add_pay_struct_data #esi_limit").val(status_arr[esi_limit]);
pf_limit = status_arr[pf_limit];
esi_limit = status_arr[esi_limit];
}
$("#add_pay_struct_data #prime_id").val(prime_id);
if(action === "view"){
$("#add_pay_struct_data #category,#add_pay_struct_data #tax_location,#add_pay_struct_data #employee_type,#add_pay_struct_data #from_date,#add_pay_struct_data #to_date,#add_pay_struct_data #effective_date,#add_pay_struct_data #day_condition,#add_pay_struct_data #day_count,#add_pay_struct_data #pf_limit,#add_pay_struct_data #esi_limit").attr("readonly","readonly");
}
if(action === "edit" || action === "copy"){
$("#add_pay_struct_data #category,#add_pay_struct_data #tax_location,#add_pay_struct_data #employee_type,#add_pay_struct_data #from_date,#add_pay_struct_data #to_date,#add_pay_struct_data #effective_date,#add_pay_struct_data #day_condition,#add_pay_struct_data #day_count,#add_pay_struct_data #pf_limit,#add_pay_struct_data #esi_limit").attr("readonly",false);
}
if(action === "edit"){
$("#add_pay_struct_data #from_date").attr("readonly","readonly");
}
}
if(!effective_date){
effective_date = from_date;
}
if(!day_condition){
day_condition = 2;
}
//for day condition based hide and show
var change_tab_id = "#add_pay_struct_table";
day_cond_hide_show(day_condition,change_tab_id);
select_option();
// && esi_limit
if(category && tax_location && employee_type && from_date && day_condition && pf_limit){
// && effective_date
/*if(parseInt(day_condition) === 1){
if(!parseInt(day_count)){
toastr.error("Please Choose all Fields From Table..!");
return false;
}
}*/
//for pay structure line table related data
let ear_table = $("#ear_pay_struct_data tbody");
let ded_table = $("#ded_pay_struct_data tbody");
var ear_obj = {};
var ded_obj = {};
ear_table.find("tr").each(function(index, element) {
if($(element).find("td").find("#wage_code").val()){
ear_obj[index] = {
wage_code: $(element).find("td").find("#wage_code").val(),
wage_name: $(element).find("td").find("#wage_name").val(),
hrms_field_name: $(element).find("td").find("#hrms_field_name").val(),
amount: $(element).find("td").find("#amount").val(),
pf_applicable: $(element).find("td").find("#pf_applicable").val(),
esi_applicable: $(element).find("td").find("#esi_applicable").val(),
pt_applicable: $(element).find("td").find("#pt_applicable").val(),
prime_pay_line_id: $(element).find("td").find("#prime_pay_line_id").val(),
prime_pay_struct_id: $(element).find("td").find("#prime_pay_struct_id").val()
};
}
});
ded_table.find("tr").each(function(index, element) {
if($(element).find("td").find("#wage_code").val()){
ded_obj[index] = {
wage_code: $(element).find("td").find("#wage_code").val(),
wage_name: $(element).find("td").find("#wage_name").val(),
hrms_field_name: $(element).find("td").find("#hrms_field_name").val(),
amount: $(element).find("td").find("#amount").val(),
pf_applicable: "",
esi_applicable: "",
pt_applicable: "",
prime_pay_line_id: $(element).find("td").find("#prime_pay_line_id").val(),
prime_pay_struct_id: $(element).find("td").find("#prime_pay_struct_id").val()
};
}
});
//JSON to string conversion for convert a ajax send json data format
var json_ear_obj = JSON.stringify(ear_obj);
var json_ded_obj = JSON.stringify(ded_obj);
var pf_exempt = $("#ear_pay_struct_table").find("tr").find("th").find("#pf_exempt").val();
var esi_exempt = $("#ear_pay_struct_table").find("tr").find("th").find("#esi_exempt").val();
var lwf_exempt = $("#ear_pay_struct_table").find("tr").find("th").find("#lwf_exempt").val();
var status = "true";
if(action === "save"){
<?php echo $pay_check_col; ?>;
if(<?php echo $vaildation_add_chk; ?>){
status = "true";
}else{
status = "false";
}
}
var send_url = '<?php echo site_url("$controller_name/save_pay_structure");?>';
if(status === "true"){
$('#pay_struct_save').attr('disabled','disabled');
$("#pay_struct_save").html("<i class='fa fa-spinner fa-spin'></i> Processing...");
var personal_code = $('#personal_code').val();
var wbs_element = $('#wbs_element').val();
var position = $('#position').val();
// Encryption
var encKey = '<?php echo $encKey; ?>';
var data = {action:action,prime_id:prime_id,category:category,tax_location:tax_location,from_date:from_date,to_date:to_date,effective_date:effective_date,day_condition:day_condition,day_count:day_count,pf_limit:pf_limit,esi_limit:esi_limit,employee_type,pf_exempt,esi_exempt,lwf_exempt,<?php echo $ajax_post_data ?>,json_ear_obj,json_ded_obj,personal_code:personal_code,wbs_element:wbs_element,position:position};
var encData = encrypt(encKey,data);
$.ajax({
type: 'POST',
url: send_url,
data:encData,
contentType: 'text/plain',
success: function(data) {
$('#pay_struct_save').attr('disabled',false);
$("#pay_struct_save").html("Save");
var rslt = JSON.parse(data);
if(rslt.success){
toastr.success(rslt.message);
//make Selected data
$('#personal_code').val(rslt.personal_code);
$('#wbs_element').val(rslt.wbs_element);
$('#position').val(rslt.position);
$('#network_id').val(rslt.network_id);
$('#activity_no').val(rslt.activity_no);
$('input[name="hid_wbs_element"]').val(rslt.wbs_element);
$('input[name="hid_position"]').val(rslt.position);
$('input[name="hid_personal_code"]').val(rslt.personal_code);
var act_value = $('#list_activity_no option[data-value=\"' + rslt.activity_no + '\"]').attr('value');
$('input[name="hid_activity_no"]').val(act_value);
$("#add_pay_struct_data #tax_location").val(rslt.tax_location).trigger('change');
var wbs_text = $('#list_wbs_element option[value=\"' + rslt.wbs_element + '\"]').text();
var pos_text = $('#list_position option[value=\"' + rslt.position + '\"]').text();
var act_text = $('#list_activity_no option[data-value=\"' + rslt.activity_no + '\"]').text();
$("#wbs_element_div").remove();
$("#wbs_element").parent().append('<span id ="wbs_element_div" ><b>'+wbs_text+'</b> <a style="cursor:pointer;float: right;" onClick=clear_btn("wbs_element")> <i class="fa fa-remove" aria-hidden="true"></i> </a></span>');
$("#position_div").remove();
$("#position").parent().append('<span id ="position_div" ><b>'+pos_text+'</b> <a style="cursor:pointer;float: right;" onClick=clear_btn("position")> <i class="fa fa-remove" aria-hidden="true"></i> </a></span>');
$("#activity_no_div").remove();
if(act_text){
$("#activity_no").parent().append('<span id ="activity_no_div" ><b>'+act_text+'</b> <a style="cursor:pointer;float: right;" onClick=clear_btn("activity_no")> <i class="fa fa-remove" aria-hidden="true"></i> </a></span>');
}
//FUNCTION FOR CREATE TO APPEND A DATA TO EARNINGS AND DEDUCTION TABLE
if(action === "view"){
$("#ear_ded_button").hide();
}else{
$("#ear_ded_button").show();
}
ear_ded_table_create(rslt);
}else{
toastr.error(rslt.message);
// search_pay_structure(struct_set_pick);
//FUNCTION FOR HIDE A EARNINGS AND DEDUCTION TABLE
// pay_struct_line_table_toggle();
return false;
}
//if pay structure was saved then not view that save data
if(action === "save"){
$("#add_pay_struct_data,#search_pay_struct_data,#ear_ded_pay_struct_data,#ear_ded_button").hide();
}
}
});
}else{
toastr.error("Please Choose all Mandatory Fields..!");
return false;
}
}else{
toastr.error("Please Choose all Fields From Table..!");
return false;
}
}
//delete pay structure function
function delete_pay_structure(click_details,prime_id){
$("#delete").html("<i class='fa fa-spinner fa-spin'></i> Processing...");
$("#delete").attr('disabled','disabled');
var status_list = <?php echo json_encode($status_list); ?>;
var category_arr = <?php echo json_encode($category_arr); ?>;
// var pro_tax_arr = <?php echo json_encode($pro_tax_arr); ?>;
//TABLE DATA GET
var table_data = $('#search_pay_struct_table').DataTable().row($(click_details).closest("tr")).data();
var category = table_data['category'];
category = category_arr[category];
/* var tax_location = table_data['tax_location'];
tax_location = pro_tax_arr[tax_location];*/
var from_date = table_data['from_date'];
from_date = moment(from_date ,"YYYY-MM-DD").format('DD-MM-YYYY');
var to_date = table_data['to_date'];
to_date = moment(to_date ,"YYYY-MM-DD").format('DD-MM-YYYY');
//CONFIRMATION AJAX CALL
$.confirm({
title: 'Confirm!',
content: "Are you sure to Delete?",
type: 'red',
typeAnimated: true,
buttons: {
tryAgain: {
text: 'Ok',
btnClass: 'btn-red',
action: function(){
// Encryption
var encKey = '<?php echo $encKey; ?>';
var data = {prime_id:prime_id,category:category,from_date:from_date,to_date:to_date};
var encData = encrypt(encKey,data);
$.ajax({
type: 'POST',
url: '<?php echo site_url("$this->control_name/delete_pay_structure");?>',
data:encData,
contentType: 'text/plain',
success: function(data){
var rslt = JSON.parse(data);
if(rslt.success){
toastr.success(rslt.message);
search_pay_structure();
}else{
toastr.error(rslt.message);
}
$("#delete").attr('disabled',false);
$("#delete").html("Delete");
}
});
}
},
close: function(){
$("#delete").attr('disabled',false);
$("#delete").html("Delete");
}
}
});
}
//FUNCTION FOR CREATE TO APPEND A DATA TO EARNINGS AND DEDUCTION TABLE
function ear_ded_table_create(rslt){
var status_list = <?php echo json_encode($status_list); ?>;
var action = rslt.action;
$("#ear_ded_pay_struct_data").show();
$("#ear_pay_struct_data").html(rslt.ear_table_rslt);
$("#ded_pay_struct_data").html(rslt.ded_table_rslt);
$("#ear_pay_struct_data .select").append(status_list);
//DR CODE END FOR COPY THE SAME PAY STRUCTURE 22 AUG22
if(rslt.pf_exempt === 1){
$("#ear_pay_struct_data #pf_exempt").attr("checked",true);
}
if(rslt.esi_exempt === 1){
$("#ear_pay_struct_data #esi_exempt").attr("checked",true);
}
if(rslt.lwf_exempt === 1){
$("#ear_pay_struct_data #lwf_exempt").attr("checked",true);
}
var drop_select_arr = rslt.drop_select_arr;
//for select a pt and esi and pf dropdown data
$("#ear_pay_struct_data tbody").find("tr").each(function(index, element) {
var prime_line_id = $(element).find("td").find("#prime_pay_line_id").val();
var wage_code = $(element).find("td").find("#wage_code").val();
//only for earnings(formula type 1)
$(element).find("td").find("#pf_applicable").val(drop_select_arr[prime_line_id][wage_code]['pf_applicable']);
$(element).find("td").find("#esi_applicable").val(drop_select_arr[prime_line_id][wage_code]['esi_applicable']);
$(element).find("td").find("#pt_applicable").val(drop_select_arr[prime_line_id][wage_code]['pt_applicable']);
});
//DR CODE START FOR COPY THE SAME PAY STRUCTURE 22 AUG22
if(action === "copy"){
$("#add_pay_struct_data #prime_id").val(0);
$("#ear_pay_struct_data #prime_pay_line_id").val(0);
$("#ear_pay_struct_data #prime_pay_struct_id").val(0);
$("#ded_pay_struct_data #prime_pay_line_id").val(0);
$("#ded_pay_struct_data #prime_pay_struct_id").val(0);
$("#add_pay_struct_data #to_date").val('31-12-2099');
}else{
$("#add_pay_struct_data #prime_id").val(rslt.prime_id);
}
select_option();
}
//function for hide a pay structure line table
function pay_struct_line_table_toggle(){
$("#ear_ded_pay_struct_data,#ear_ded_button").hide();
$("#ear_pay_struct_data").html();
$("#ded_pay_struct_data").html();
}
//if we search a personal code then wbs and position and activity and etc(inputs are based on pay structure settings)
function pay_struct_search_drop_fetch(prime_id,struct_edit_pick){
//var struct_edit_pick = <?php echo json_encode($pay_add_filter_pick_column); ?>;
var send_url = '<?php echo site_url("$controller_name/pay_struct_search_drop_fetch");?>'
if(prime_id){
// Encryption
var encKey = '<?php echo $encKey; ?>';
var data = {prime_id:prime_id};
var encData = encrypt(encKey,data);
$.ajax({
type: 'POST',
url: send_url,
data:encData,
contentType: 'text/plain',
success: function(data) {
var rslt = JSON.parse(data);
if(rslt.success){
var input_rslt = rslt.input_rslt;
var act_no_list = rslt.sap_act_no_list;
<?php foreach($pay_add_filter_setting as $setting){
$prime_form_id = (int)$setting->prime_form_id;
$field_type = (int)$setting->field_type;
$label_id = $setting->label_name;
$hidden_id = $label_id."_hidden_".$prime_form_id;
if($label_id !== "category"){
echo "if(input_rslt){
var input_data = input_rslt['$label_id'];
//DR CODE START FOR WBS BASED ACTIVITY FETCH(BUT WBS NOT CHOOSE SO ACTIVITY PICKLIST LABEL EMPTY) 25AUG22
if('$label_id' === 'activity_no'){
$('#holder #activity_no').html(act_no_list);
}
//DR CODE START FOR WBS BASED ACTIVITY FETCH(BUT WBS NOT CHOOSE SO ACTIVITY PICKLIST LABEL EMPTY) 25AUG22
if('$label_id' === 'network_id'){
var option = '<option value = '+input_data+'>' + input_data + '</option>';
$('#holder #network_id').html(option);
}
$('#holder #$label_id').val(input_data);
if($field_type === 5){
$('#$label_id'+'_div').remove();
$('<div id =\"$label_id'+'_div\"><b>'+struct_edit_pick[\"$label_id\"][input_data]+' </b></div>').insertAfter('#holder #$label_id');
// style = \"color:blue;\"
}
if($field_type === 9){
$('#holder #$hidden_id').val(struct_edit_pick['$label_id'][input_data]);
$('#$label_id'+'_div').remove();
$('<div id =\"$label_id'+'_div\"><b>'+struct_edit_pick[\"$label_id\"][input_data]+'</b> <a style=cursor:pointer;float: right; id=clear_btn onClick=clear_btn()><i class=\"fa fa-remove\" aria-hidden=\"true\"></i></a></div>').insertAfter('#holder #$hidden_id');
// style = \"color:blue;\"
$('#$label_id'+'_div').attr('disabled','disabled');
}
}";
}
} ?>
}
}
});
}
}
//date condition hide and show
function day_cond_hide_show(day_condition,change_tab_id){
if(parseInt(day_condition) === 1){
$('#day_count_head').show();
$(''+change_tab_id+' #day_count').parent().show();
}else{
$('#day_count_head').hide();
$(''+change_tab_id+' #day_count').parent().hide();
$(''+change_tab_id+' #day_count').val('');
select_option();
}
}
//add pf and esi gross based on onclick by a amount and pf esi yes no option
function add_pf_esi_gross(click_id,click_row,old_val){
var amount = Number(($(click_row).closest("tr").find("#amount").val()));
var pf_applicable = $(click_row).closest("tr").find("#pf_applicable").val();
var esi_applicable = $(click_row).closest("tr").find("#esi_applicable").val();
var table_name = $(click_row).closest("table").attr("id");
var len = $('#'+table_name+' tr').length;
//code for get a last and before last row
var pf_gross_amt = Number(($('#'+table_name+' tr').eq(len - 2).find("td").find("#amount").val()));
var esi_gross_amt = Number(($('#'+table_name+' tr').eq(len - 1).find("td").find("#amount").val()));
if(click_id){
var tot_pf_gross_amt = 0;
var tot_esi_gross_amt = 0;
if(click_id === "amount"){
var sum_amt = amount - old_val;
if(pf_applicable === "1"){
tot_pf_gross_amt = pf_gross_amt + sum_amt;
$('#'+table_name+' tr').eq(len - 2).find("td").find("#amount").val(tot_pf_gross_amt);
$('#'+table_name+' tr').eq(len - 1).find("td").find("#amount").val(tot_esi_gross_amt);
}
if(esi_applicable === "1"){
tot_esi_gross_amt = esi_gross_amt + sum_amt;
$('#'+table_name+' tr').eq(len - 2).find("td").find("#amount").val(tot_pf_gross_amt);
$('#'+table_name+' tr').eq(len - 1).find("td").find("#amount").val(tot_esi_gross_amt);
}
}else
if(click_id === "pf_applicable"){
if(pf_applicable === "1"){
tot_pf_gross_amt = pf_gross_amt + amount;
$('#'+table_name+' tr').eq(len - 2).find("td").find("#amount").val(tot_pf_gross_amt);
}else
if(pf_applicable === "2" && old_val === "1"){
tot_pf_gross_amt = pf_gross_amt - amount;
$('#'+table_name+' tr').eq(len - 2).find("td").find("#amount").val(tot_pf_gross_amt);
}
}else
if(click_id === "esi_applicable"){
if(esi_applicable === "1"){
tot_esi_gross_amt = esi_gross_amt + amount;
$('#'+table_name+' tr').eq(len - 1).find("td").find("#amount").val(tot_esi_gross_amt);
}else
if(esi_applicable === "2" && old_val === "1"){
tot_esi_gross_amt = esi_gross_amt - amount;
$('#'+table_name+' tr').eq(len - 1).find("td").find("#amount").val(tot_esi_gross_amt);
}
}
}
}
//Add readonly option for last two row
function table_rows_readonly(){
var len = $('#ear_pay_struct_table tr').length;
$('#ear_pay_struct_table tr').eq(len - 2).each(function(index, element) {
$(element).find("td").find("#wage_code").attr("readonly","readonly");
$(element).find("td").find("#wage_name").attr("readonly","readonly");
$(element).find("td").find("#amount").attr("readonly","readonly");
$(element).find("td").find("#pf_applicable").attr("readonly","readonly");
$(element).find("td").find("#esi_applicable").attr("readonly","readonly");
$(element).find("td").find("#pt_applicable").attr("readonly","readonly");
});
$('#ear_pay_struct_table tr').eq(len - 1).each(function(index, element) {
$(element).find("td").find("#wage_code").attr("readonly","readonly");
$(element).find("td").find("#wage_name").attr("readonly","readonly");
$(element).find("td").find("#amount").attr("readonly","readonly");
$(element).find("td").find("#pf_applicable").attr("readonly","readonly");
$(element).find("td").find("#esi_applicable").attr("readonly","readonly");
$(element).find("td").find("#pt_applicable").attr("readonly","readonly");
});
}
//for import
function view_form_data(action,title,control,form_id){
$('.modal').modal({backdrop: 'static', keyboard: false});
$('.modal-body').html('<div style="text-align: center;padding:50px;color:#4b6fa2;"><i class="fa fa-spinner fa-spin fa-2x fa-fw"></i><br/>Please wait processing....</div>');
$.ajax({
type: 'POST',
url: control,
dataType: "html",
success: function (response){
$('.modal-title').html('<h4 class="modal-title">'+title+'</h4>');
$('.modal-body').html(response);
}
});
}
async function call_items(){
var jsonObj = [];
var items = {};
await $.getJSON("./json/cw_sap_wbs.json", function(tags) {
/* data now available, initialize autocomplete*/
$.each(tags, function(index, value) {
jsonObj.push(items[value.wbs_id] = value.wbs_id+' ~ '+value.wbs_desc);
});
});
return items;
}
//FUNCTION FOR WBS ELEMENT CLEAR AND WBS ELEMENT BASED INPUTS ALSO CEAR
function clear_btn(attr_id){
if(attr_id === 'wbs_element'){
$('#position_div,#activity_no_div').remove(); //clear span remove
$('#position,#activity_no').val(''); //hidden input empty
$('input[name="hid_position"],input[name="hid_activity_no"]').val('');//input empty
$('#list_position,#list_activity_no').empty();
$('#hid_wbs_element,#hid_position,#hid_activity_no').removeAttr('readonly'); //datalist empty
}else if(attr_id === 'personal_code'){
$('#wbs_element_div,#position_div,#activity_no_div').remove();
$('#wbs_element,#position,#activity_no').val('');
$('input[name="hid_wbs_element"],input[name="hid_position"],input[name="hid_activity_no"]').val('');
$('#list_position,#list_activity_no,#list_wbs_element').empty();
$('#hid_personal_code,#hid_wbs_element,#hid_position,#hid_activity_no').removeAttr('readonly');
}
if(attr_id === "position"){
$('#hid_position').removeAttr('readonly');
$('#hid_activity_no').removeAttr('readonly');
$('#activity_no').val('');
$('input[name="hid_activity_no"]').val('');
$('#activity_no_div').remove();
}
if(attr_id === "activity_no"){
$('#hid_activity_no').removeAttr('readonly');
}
$('#'+attr_id).removeAttr('readonly');
$('#'+attr_id+'_div').remove();
$('#'+attr_id).val('');
$('input[name="hid_'+attr_id+'"]').val('');
}
function tax_location_append(personal_code){
var send_url = '<?php echo site_url("$controller_name/tax_location_append");?>'
// Encryption
var encKey = '<?php echo $encKey; ?>';
var data = {personal_code:personal_code};
var encData = encrypt(encKey,data);
$.ajax({
type: 'POST',
url: send_url,
data:encData,
contentType: 'text/plain',
success: function(data) {
var rslt = JSON.parse(data);
if(rslt.success){
$("#tax_location").html(rslt.pro_tax_list);
}else{
$('#add_pay_struct_data #tax_location').val('');
return false;
}
}
});
}
//ASYNC FUNC TO FIND SAME ACT NO FOR MORE THAN ONE WBS -> NB[10-04-2024]
function duplicate_act_no(wbs, act){
var send_url = '<?php echo site_url("$controller_name/duplicate_act_no");?>';
return new Promise(function(resolve, reject){
// Encryption
var encKey = '<?php echo $encKey; ?>';
var data = {wbs: wbs, act: act};
var encData = encrypt(encKey,data);
$.ajax({
type : 'POST',
url : send_url,
data:encData,
contentType: 'text/plain',
success: function(data){
if(data === '1'){
resolve(true);
}else{
resolve(false);
}
}
});
});
}
//DR CODE START 25AUG22 FOR PF AND ESI APPICABLE PREVIOUS VALUE FETCH BASED ON PF AND ESI EXEMPT (AND EAR TALE PRIME ID BASED)
function prev_exempt_val_append(prime_id,change_val){
var send_url = '<?php echo site_url("$controller_name/prev_exempt_val_append");?>'
// Encryption
var encKey = '<?php echo $encKey; ?>';
var data = {prime_id:prime_id};
var encData = encrypt(encKey,data);
$.ajax({
type: 'POST',
url: send_url,
data:encData,
contentType: 'text/plain',
success: function(data) {
var rslt = JSON.parse(data);
if(rslt.success){
var exempt_arr = rslt.exempt_arr;
$("#ear_pay_struct_data tbody").find("tr").each(function(index, element) {
var hrms_field_name = $(element).find("td").find("#hrms_field_name").val();
$(element).find("td").find('#'+change_val).val(exempt_arr[hrms_field_name][change_val]);
});
}else{
toastr.error(rslt.message);
return false;
}
}
});
}
//DR CODE END 25AUG22 FOR PF AND ESI APPICABLE PREVIOUS VALUE FETCH BASED ON PF AND ESI EXEMPT (AND EAR TALE PRIME ID BASED)
function dataSave(prime_id,wbs_id,details){
var wbs_desc = details.text();
$("#holder #wbs_element").val(prime_id);
$("#holder #wbs_element_hidden_1944").val(wbs_id+' - '+wbs_desc);
}
</script>
<style>
.pull-right.search {
display: none !important;
}
.columns.columns-right.btn-group.pull-right {
display: none !important;
}
.floatright {
float:right;
display: inline;
padding: 0 1.5em;
}
.btn-sm {
width: 50px !important;
}
#ear_ded_save {
position: absolute;
right: 32px;
}
#pay_struct_save {
position: absolute;
right: 40px;
}
#ear_pay_struct_data {
height: 420px;
overflow: auto;
}
.thead-dark {
position: sticky;
top: 0;
/* z-index: 1; */
}
select {
/* for Firefox */
-moz-appearance: none;
/* for Safari, Chrome, Opera */
-webkit-appearance: none;
}
select::-ms-expand {
display: none;
}
#search_pay_struct_table_filter{
display: flex !important;
}
/* ,.dataTables_length > label */
.wbs_modal_body{
width: 80%;
margin: auto;
}
<?php
if($access_search === 1){
echo ".pull-right.search { display: block !important; }";
}
if($access_export === 1){
echo ".columns.columns-right.btn-group.pull-right{display: block !important;}";
}
?>
</style>
<?php $this->load->view("partial/footer"); ?>