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/pay_structure/pay_js.php
<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; ?>';
    //Datalist selected value fetch 
    $(document).on('change', 'input'+datalist_validate, function() {
        var selected_value = $(this).val();
        var list           = $(this).attr('list');
        var attr_id        = list.replace('list_', '');
        var data_value     = $('#'+list+' option[value=\"' + selected_value + '\"]').attr('data-value');
        $('#'+attr_id).val(data_value);
    });
    /* LOAD SCRIPT */
    <?php   
        echo "$document_load_script";
    ?>
    //DR CODE FOR DOCUMENT ON LOAD TIME ACTIVITY NO HIDE AND PICKLIST FETCH DATA EMPTY
    //array for check payroll exist (used to access a edit and view button)
     var struct_set_pick    = <?php echo json_encode($pay_add_filter_pick_column); ?>;
    var payroll_exist_arr  = <?php echo json_encode($payroll_exist_arr); ?>;
    var mi_exist_arr       = <?php echo json_encode($mi_exist_arr); ?>;
    //var struct_edit_pick   = <?php //echo json_encode($pay_edit_arr); ?>;
    
    var category_list      = <?php echo json_encode($category_list); ?>;
    var pro_tax_list       = <?php echo json_encode($pro_tax_list); ?>;
    var status_list        = <?php echo json_encode($status_list); ?>;
    var day_cond_list      = <?php echo json_encode($day_cond_list); ?>;
    var day_count_list     = <?php echo json_encode($day_count_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); ?>;
   

    $("#add").on('click', function(e){
        //for dynamic add column from pay structure table (pay structure check validation add variable data)
        <?php echo $pay_check_col; ?>;
        //dynamic validation check from(pay structure table)
        if(<?php echo $vaildation_add_chk; ?>){
            $("#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);
            //pay structure already exist check and then if not exist then show a earning and deduction wages table create            
        }else{
            toastr.error("Please Choose All Show Fields..!");
        }
    });

    //search by pay structure on click function 
    $("#search").on('click', function(e){
        search_pay_structure(struct_set_pick);
        //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);
    });
});

//-------------------------------- 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 get_activity(wbs_element,personal_code){
    var send_url        = '<?php echo site_url("$controller_name/get_activity");?>';
    $.ajax({
        type: 'POST',
        url: send_url,
        data:{wbs_element:wbs_element,personal_code:personal_code},//for dynamic filter column based to post a data from(pay structure table) based on pay structure filter settings
        beforeSend: function () {
            $('#activity_no').next('span').attr('id', 'activity_no_span');
            $('#activity_no_span').html('<span style="color:#CC3366;"><i class="fa fa-spinner fa-spin fa-2x fa-fw"></i><br/>Loading...</span>');  
        },
        success: function(data) {
            // var rslt = JSON.parse(data);
            $('#activity_no_span,#activity_no_div').empty(); 
            $("#list_activity_no").html(data);
        }
    });
}

//function for fetch a wbs and position onchange based dropdown list
function fetch_drop_list(input_name,input_data){
    var send_url        = '<?php echo site_url("$controller_name/fetch_drop_list");?>'
    // Encryption
    var encKey  = '<?php echo $encKey; ?>';
    var data    = {input_name:input_name,input_data:input_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 () {
            $('#'+input_name).next('span').attr('id', input_name+'_span');
            $('#'+input_name+'_span').html('<span style="color:#CC3366;"><i class="fa fa-spinner fa-spin fa-2x fa-fw"></i><br/>Loading...</span>');  
        },
        success: function(data) {
            var rslt = JSON.parse(data);
            $('#'+input_name+'_span').empty(); 
            if(rslt.success){ 
                $("#"+input_name).html(rslt.depen_drop_list);
                if(input_name === "activity_no"){
                    $("#network_id").val(rslt.network_number);
                }
            }
        }
    });
}

//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(struct_set_pick){ 
    var payroll_exist_arr  = <?php echo json_encode($payroll_exist_arr); ?>;
    var mi_exist_arr       = <?php echo json_encode($mi_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){
        $("#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();
        $.ajax({
            type: 'POST',
            url: send_url,
            data:{search:search,<?php echo $ajax_post_data ?>},//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);
                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: [
                            <?php 
                                foreach($pay_add_filter_setting as $setting){
                                    $label_id        = $setting->label_name;
                                    $label_name      = ucwords(str_replace("_"," ",$label_id));
                                    if($label_id !== "category" && $label_id !== "personal_code" && $label_id !== "network_id"){
                                        echo "{ title: '$label_name',data: '$label_id',visible: $label_id"."_val === '' ? true : false,
                                            render:function(value) {
                                                if(value in struct_set_pick['$label_id']){
                                                    if(value === '0' || value === ''){
                                                        return '';
                                                    }else{
                                                        var drop_val   = struct_set_pick['$label_id'][value];  
                                                        //dr code for span wise td generate not input type like (text or others)
                                                        return \"<span id='$label_id' name='$label_id'' data-val = '\"+value+\"'>\"+drop_val+\"</span>\";
                                                    }
                                                } else {
                                                    return value;
                                                }
                                            }
                                        },";
                                    }
                                }
                            ?>
                            { 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_location'>"+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 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(parseInt(mi_exist_arr[value]) || parseInt(payroll_exist_arr[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(parseInt(mi_exist_arr[value]) || parseInt(payroll_exist_arr[value])){
                                        return "";
                                    }
                                    else{
                                        //ACTIVE PAY STRUCTURE SHOULD ONLY ALLOW TO DELETE
                                        if(status === 1){
                                            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 Any One Fields..!");
    }
}

//view and save and copy pay structure function
function save_pay_structure(click_details,action,prime_id,struct_set_pick){
    var struct_set_pick = <?php echo json_encode($pay_add_filter_pick_column); ?>;
    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'];
    }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();
    }
    
    //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];
        }
        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(!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();
    
    if(category && tax_location && employee_type && from_date && day_condition && pf_limit && esi_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"){
            // 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};
            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);
                        //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 struct_set_pick  = <?php echo json_encode($pay_add_filter_pick_column); ?>;   
    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,tax_location:tax_location,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(struct_set_pick);
                            }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> &nbsp; <a style=cursor:pointer id=clear_btn onClick=clear_btn()>Clear</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);
        }
    });
}

// function close_formfun(){
//  $('.modal').modal('toggle');
// }

//FUNCTION FOR WBS ELEMENT CLEAR AND WBS ELEMENT BASED INPUTS ALSO CEAR
function clear_btn(){
    $('div.form-group > #wbs_element_div,#activity_no_div').html('');
    $('#position,#activity_no').val('');

    $('div.form-group > #activity_no').html('<option value = "">--- Activity No ----</option>');
    $('div.form-group > #network_id').html('<option value = "">--- Network Id ----</option>');
    $('div.form-group > #wbs_element,div.form-group > #wbs_element_hidden_1944').val('');
    $('#wbs_element_hidden_1944').prop('readonly', false);  
}

function tax_location_append(personal_code){
    var send_url    = '<?php echo site_url("$controller_name/tax_location_append");?>'
    var tax_array   = [];
    // 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_array[0]    = rslt.pro_tax_list;
                tax_array[1]    = rslt.pro_tax_arr;
                return tax_array;
            }else{
                toastr.error(rslt.message);
                $('#add_pay_struct_data #tax_location').val('');
                return 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>