<?php
try {
session_start();

//RESTRICCIÓN DE ACCESO A TRABAJADOR (ACCESO INDIVIDUAL)
if (isset($_SESSION['tipousuario'])) {
    if ($_SESSION['tipousuario'] == '1') {
        header('location:menu_personal.php');
    }
}
if (trim($_SESSION['nombre_validar']) == '') {
    header('location:index.php');
}
//RESTRICCIÓN DE ACCESO A TRABAJADOR (ACCESO INDIVIDUAL)

include "fphp.php";
include "calendario/calendario.php";
require_once 'PHPExcel/PHPExcel.php';
$enlace=cargar_conexion();

/////Función para calcular diferencias entre dos fechas
function days_360($fec1, $fec2, $europeo = true)
{
    //try switch dates: min to max
    if ($fec1 > $fec2) {
        $temf = $fec1;
        $fec1 = $fec2;
        $fec2 = $temf;
    }

    // get day month year...
    list($yy1, $mm1, $dd1) = explode('-', $fec1);
    list($yy2, $mm2, $dd2) = explode('-', $fec2);

    if ($dd1 == 31) {$dd1 = 30;}

    //checks according standars: 30E/360 or 30/360.
    if (!$europeo) {
        if (($dd1 == 30) and ($dd2 == 31)) {
            $dd2 = 30;
        } else {
            if ($dd2 == 31) {
                $dd2 = 30;
            }
        }
    }

    //check for invalid date
    if (($dd1 < 1) or ($dd2 < 1) or ($dd1 > 30) or ($dd2 > 31) or
        ($mm1 < 1) or ($mm2 < 1) or ($mm1 > 12) or ($mm2 > 12) or
        ($yy1 > $yy2)) {
        return (-1);
    }
    if (($yy1 == $yy2) and ($mm1 > $mm2)) {return (-1);}
    if (($yy1 == $yy2) and ($mm1 == $mm2) and ($dd1 > $dd2)) {return (-1);}

    //Calc
    $yy = $yy2 - $yy1;
    $mm = $mm2 - $mm1;
    $dd = $dd2 - $dd1;

    return (($yy * 360) + ($mm * 30) + $dd);
}
///////////////fin función

$idValidar = $_SESSION['id_validar'];
$enlace = cargar_conexion();
$consulta = mysqli_query($enlace, "SELECT * FROM periodo WHERE id='$idValidar' ORDER BY nomina, periodo DESC LIMIT 1");
if (mysqli_num_rows($consulta) != 0) {
    $row = mysqli_fetch_array($consulta);
    $per = mostrar_fecha($row['desde']) . ' al ' . mostrar_fecha($row['hasta']) . " (Nom:" . $row['nomina'] . ")";
} else {
    $per = '';
}

// procedimiento para cargar las prestaciones Rodolfo
if (!isset($_POST['ver'])) {
    //$consulta = "select * from personal where id='" . $_SESSION['id_validar'] . "' and status !='I' and codigo='20368318' order by fechai desc;";
    $consulta = "select * from personal where id='" . $_SESSION['id_validar'] . "' and status !='I'  order by fechai desc;";
    $resultado = mysqli_query($enlace, $consulta) or die('verificaci&oacute; del c&oacute;digo fall&oacute;: ' . mysqli_error($enlace));
    $num_rows = mysqli_num_rows($resultado);
	$smes = $row['smes'];
    echo "<hr><center><h2> Registros: " . $num_rows . " </h2></center>";
    //echo "Registros: ".$num_rows;
    echo "<center> Por favor, espere mientras se Actualiza la Informacion </center>";

    if ($num_rows != 0) {

        $total_tdias = 0;
        $total_acumulado = 0;
        $total_acumanticp = 0;
        $total_interesganados = 0;
        $total_acumintpag = 0;
		$color = '';
        for ($cont = 0; $cont < $num_rows; $cont++) {
            echo ' .';
            flush();
            $row = mysqli_fetch_array($resultado);
            $cedula = $row['codigo'];
            $tiponomina = $row['nomina'];
			
            if ($color) {
                $tcolor = "#dfdfd0";
                if (file_exists('fotos/' . $cedula . '.jpg')) {
                    $imagen = 'fotos/' . $cedula . '.jpg';
                } else {
                    $imagen = 'img2/nohay2.jpg';
                }

            } else {
                $tcolor = "white";
                if (file_exists('fotos/' . $cedula . '.jpg')) {
                    $imagen = 'fotos/' . $cedula . '.jpg';
                } else {
                    $imagen = 'img2/nohay.jpg';
                }

            }

            $consulta = mysqli_query($enlace, "select * from empresa where id='" . $_SESSION['id_validar'] . "' ");
            $rowr = mysqli_fetch_array($consulta);
            $ince = $rowr['ince'];
            $dvac = $rowr['dvac'];
            $duti = $rowr['duti'];
            $icon = $rowr['icon'];
            $con01 = $rowr['constante01'];
            $con02 = $rowr['constante02'];
            $con03 = $rowr['constante03'];
            $con04 = $rowr['constante04'];
            $sueldominimo = $rowr['sueldominimo'];
            //===========egresado o no
            $egresado = false;
            //=========== datos de prestaciones
            $consultax = "select * from liquidaciones where cedula='" . $cedula . "' and id='" . $_SESSION['id_validar'] . "' ";
            $resultadox = mysqli_query($enlace, $consultax) or die('verificaci&oacute; del c&oacute;digo fall&oacute;: ' . mysqli_error($enlace));
            $numRows = mysqli_num_rows($resultadox);
            //echo "select liquidaciones: ".$numRows;
            if ($numRows > 0) {
                // echo " sip ";
                $rowx = mysqli_fetch_array($resultadox);
                $smes = $rowx['smes'];
                $dias = $rowx['dias'];
                $fec1 = $rowx['fechai'];
                $fec2 = $rowx['egreso'];
                $vac = $rowx['vacacion'];
                $egresado = true;
            } else {
                // echo " nop ";
                $smes = $row['smes'];
                $dias = 0;
                $fec1 = $row['fechai'];
                $fec2 = date('Y-m-d');
                $vac = 0;
            }
            $semana = 0;
            if ($dias > 1 && $dias <= 7) {
                $semana = 1;
            }

            if ($dias > 7) {
                $semana = 2;
            }
			
			$accion = isset($_GET['accion']) ? $_GET['accion'] : null;
            if ($accion == 2) {
                $fec1 = $row['fechai'];
                $fec2 = date('Y-m-d');
                $egresado = false;
            }
            $afn = substr($fec1, 0, 4);
            $mfn = substr($fec1, 5, 2);
            $a = substr($fec2, 0, 4);
            $m = substr($fec2, 5, 2);
            if ($m - $mfn < 0) {
                $meses = ($a - $afn - 1) * 12 + ($m - $mfn + 12);
            } else {
                $meses = ($a - $afn) * 12 + ($m - $mfn);
            }

            if ($mfn >= 1 && $mfn < $m) {
                $mesutilidad = $m - $mfn;
            } else {
                $mesutilidad = $m;
            }

            $utilidad = $duti / 12 * $mesutilidad * ($smes / 30);

            $fec11x = $fec1;
            $fec22x = $fec2;
            $fec11 = substr($fec1, 0, 7);
            $fec22 = substr($fec2, 0, 7);
            $inicio = 0;
            $tri = 0;
            $salto = 0;
            $anosx = 0;
            $anos = 0;
            $entrosueldo = 0;
            $acumulado = 0;
            $intereses = 0;
            $tdias = 0;
            $prestaciones = 0;
            $interesganados = 0;
            $cuantosmeses = 0;
            $sueldo = 0;
            //=============totalizar otras columnas
            $acumintpag = 0;
            $acumanticp = 0;

            //============ datos de sueldo
            $consulta = mysqli_query($enlace, "select sueldo from personal_sueldo where id='" . $_SESSION['id_validar'] . "' and substring(fec,1,7)='" . $fec11 . "' and codigo='" . $cedula . "'") or die(mysqli_error($enlace));
            //echo "select sueldo: ".mysqli_num_rows($consulta);
            $row = mysqli_fetch_array($consulta);

            if (mysqli_num_rows($consulta) != 0) {
                $sueldo = $row['sueldo'];
            }

            //===========Agregado para calcular el trimestre
            $fec11 = $fec1;
            $fec22 = $fec2;

            $datetime1 = new DateTime($fec11);
            $datetime2 = new DateTime($fec22);
            $interval = $datetime2->diff($datetime1);
            $months = $interval->format("%m") + ($interval->format("%y") * 12);
            $days = $interval->format("%d");
            $months = $months < 4 && $days > 0 ? ($months + 1) : $months;

            //********** CONSULTA PRESTACION ********************/
            $selectPrestacion = "SELECT IFNULL(monto_prestacion,0) AS mtoPrestacion, IFNULL(monto_dias,0) as mtoDias,  IFNULL(anticipo,0) as mtoAnticipo, fecha_desde, ano, mes, dias_base, dias_adicionales FROM prestaciones WHERE cedula = '" . $cedula . "' AND id ='" . $_SESSION['id_validar'] . "' AND fecha_desde = '2021-12-31' ";
            //$selectPrestacion = "SELECT IFNULL(monto_prestacion,0) AS mtoPrestacion, IFNULL(monto_dias,0) as mtoDias,  IFNULL(anticipo,0) as mtoAnticipo, fecha_desde, ano, mes, dias_base, dias_adicionales FROM prestaciones WHERE cedula = '" . $cedula . "' AND id ='" . $_SESSION['id_validar'] . "'  ";
            $consultaPrestacion = mysqli_query($enlace, $selectPrestacion) or die($selectPrestacion . mysqli_error($enlace));
            //echo " CONSULTA PRESTACION: ".mysqli_num_rows($consultaPrestacion);
            $inicioPrestacion = mysqli_fetch_array($consultaPrestacion);
            $mtoPrestacion = 0;
            $mtoDias = 0;
            $mtoAnticipo = 0;
            $acumulado = 0;

            if (mysqli_num_rows($consultaPrestacion) != 0) {
                $mtoPrestacion = $inicioPrestacion['mtoPrestacion'];
                $mtoDias = $inicioPrestacion['mtoDias'];
                $mtoAnticipo = $inicioPrestacion['mtoAnticipo'];
                $acumulado = $mtoPrestacion + $mtoDias - $mtoAnticipo;
                $fec11 = '2021-12-28'; //*.substr($fec11,8,2);*/
                $anos = $inicioPrestacion['ano'];
                $anosx = $inicioPrestacion['mes'];
                $cuantosmeses = number_format($anosx, 0);
                $tdias = $inicioPrestacion['dias_base'] + $inicioPrestacion['dias_adicionales'];
            }
            $selectPrestacion = "delete from prestaciones where id='" . $_SESSION['id_validar'] . "' and cedula = '" . $cedula . "' and fecha_desde > '2021-12-31' ";
            //$selectPrestacion = "delete from prestaciones where id='" . $_SESSION['id_validar'] . "' and cedula = '" . $cedula . "' "; /// En Merino s emigró el saldo del prestaciones al 31/12/2021, por eso no se debe borrar esos registros, sino después de esa fecha para actualziar la tabla
            $eliminaPrestacion = mysqli_query($enlace, $selectPrestacion) or die($selectPrestacion . ':>' . mysqli_error($enlace));
            //echo " fechas: " . $fec11 . " " . $fec22;

            // while ($fec11 < $fec22) {
            //     $cuantosmeses++;
            //     //====================== calcular años
            //     $anosx++;
            //     if ($anosx > 12) {
            //         $anos++;
            //         $anosx = 1;
            //     }

            //     //====================== ver cual periodo es
            //     $nuevafecha = strtotime('+1 month', strtotime($fec11));
            //     $fec11 = date('Y-m-d', $nuevafecha);
            //     //===================== buscar dias de utilidades en historico

            //     $consulta = mysqli_query($enlace, "SELECT duti, dbon FROM empresa WHERE id='" . $_SESSION['id_validar'] . "'") or die(mysqli_error($enlace));
            //     // echo " SELECT duti: ".mysqli_num_rows($consulta);
            //     if (mysqli_num_rows($consulta) != 0) {
            //         $row = mysqli_fetch_array($consulta);
            //         $dvacx = $row['dbon'];
            //         $dutix = $row['duti'];

            //     } else {
            //         $dvacx = $dvac;
            //         $dutix = $duti;

            //     }
            //     //********************* GEISY 10/05/2022  ******************************** */
            //     if ($cuantosmeses % 3 != 0) {
            //         $dias = 0;
            //     } else {
            //         $dias = 15;
            //     }
            //     //====================== agregado para revalidar dias

            //     //Agregado por cambios en dia de ingreso
            //     $fecAux = $fec11;
            //     $mostrar = true;
            //     if ($fec11 >= $fec22) {
            //         $fec11 = $fec22;
            //         if ($egresado) {
            //             if ($cuantosmeses > 3) {
            //                 $ultdias = true;
            //                 if ($dias == 0) {
            //                     $dias = 15;
            //                 }
            //             }
            //         } else {
            //             if ($cuantosmeses % 3 != 0) {
            //                 $dias = 0;
            //             }
            //         }
            //     }

            //     if ($fecAux > $fec22 && !$egresado) {
            //         $mostrar = false;
            //     }
            //     if ($egresado) {
            //         if ($months < 4) {
            //             if ($months == $cuantosmeses) {
            //                 $dias = 5 * $months;
            //             } else {
            //                 $dias = 0;
            //             }
            //             $ultdias = false;
            //         }
            //     }
            //     if ($mostrar) {
            //         //====================== calcular inicio
            //         $inicio++;
            //         if ($inicio <= 3 && $fec11 < '2012-04-01') {
            //             $dias = 0;
            //         }

            //         //============ datos de adelantos

            //         $consulta = mysqli_query($enlace, "select IFNULL(sum(monto),0) as total from prestacion_adelanto where id='" . $_SESSION['id_validar'] . "' and substring(fecha,1,7)='" . substr($fecAux, 0, 7) . "' and cedula='" . $cedula . "'") or die(mysqli_error($enlace));
            //         $row = mysqli_fetch_array($consulta);
            //         $adelanto = $row['total'];

            //         $consulta = mysqli_query($enlace, "select IFNULL(sum(monto),0) as total from prestacion_interes where id='" . $_SESSION['id_validar'] . "' and substring(fecha,1,7)='" . substr($fecAux, 0, 7) . "' and cedula='" . $cedula . "'") or die(mysqli_error($enlace));
            //         $row = mysqli_fetch_array($consulta);
            //         $adeinteres = $row['total'];

            //         //============ datos de sueldo
            //         $fec11ant = strtotime('-1 month', strtotime($fec11));
            //         $fec11ant = date('Y-m', $fec11ant);

            //         $consulta = mysqli_query($enlace, "select SUM(sueldo) AS sueldo from personal_sueldo where id='" . $_SESSION['id_validar'] . "' and substring(fec,1,7)='" . substr($fec11ant, 0, 7) . "' and codigo='" . $cedula . "' ") or die(mysqli_error($enlace));
            //         $row = mysqli_fetch_array($consulta);
            //         if (mysqli_num_rows($consulta) != 0) {

            //             $sueldo = $row['sueldo'];
            //             if ($con01 != '') {
            //                 $consultax = "select monto from constante_individual where id='" . $_SESSION['id_validar'] . "' and codigo='" . $con01 . "' and cedula='" . $cedula . "' and nomina='" . $tiponomina . "'";
            //                 $resultadox = mysqli_query($enlace, $consultax) or die('verificaci&oacute; del c&oacute;digo fall&oacute;: ' . mysqli_error($enlace));
            //                 if (mysqli_num_rows($resultadox) != 0) {
            //                     $rowx = mysqli_fetch_array($resultadox);
            //                     if ($tipoclase == 1) {
            //                         $sueldo = $sueldo + $rowx['monto'] / 7 * 30;
            //                     } else if ($tipoclase == 2) {
            //                         $sueldo = $sueldo * 2;
            //                     }
            //                     //porque debe funcionar con nom,inas cerradas unciamente -- Miguelangel 26/04/22
            //                     else {
            //                         $sueldo = $sueldo + $rowx['monto'];
            //                     }

            //                 }
            //             }
            //             if ($con02 != '') {
            //                 $consultax = "select monto from constante_individual where id='" . $_SESSION['id_validar'] . "' and codigo='" . $con02 . "' and cedula='" . $cedula . "' and nomina='" . $tiponomina . "'";
            //                 $resultadox = mysqli_query($enlace, $consultax) or die('verificaci&oacute; del c&oacute;digo fall&oacute;: ' . mysqli_error($enlace));
            //                 if (mysqli_num_rows($resultadox) != 0) {
            //                     $rowx = mysqli_fetch_array($resultadox);
            //                     if ($tipoclase == 1) {
            //                         $sueldo = $sueldo + $rowx['monto'] / 7 * 30;
            //                     } else if ($tipoclase == 2) {
            //                         $sueldo = $sueldo + $rowx['monto'] * 2;
            //                     } else {
            //                         $sueldo = $sueldo + $rowx['monto'];
            //                     }

            //                 }
            //             }

            //         } else {
            //             //====================== buscar monto conceptos acmulado
            //             if ($con04 != '') {

            //                 $consultax = "select sum(monto) as total from historico where id='" . $_SESSION['id_validar'] . "' and substring(desperiodo,1,7)='" . substr($fec11, 0, 7) . "' and substring(concepto,1," . strlen($con04) . ")='" . $con04 . "' and cedula='" . $cedula . "' and nomina='" . $tiponomina . "'";
            //                 $resultadox = mysqli_query($enlace, $consultax) or die('verificaci&oacute; del c&oacute;digo fall&oacute;: ' . mysqli_error($enlace));
            //                 $rowx = mysqli_fetch_array($resultadox);
            //                 if ($rowx['total'] > 0) {
            //                     $sueldo = ($rowx['total'] < $sueldominimo ? $sueldominimo : $rowx['total']);
            //                 } else {
            //                     $sueldo = $sueldominimo;
            //                 }

            //                 $consulta5 = mysqli_query($enlace, "select codigo from personal_sueldo where id='" . $_SESSION['id_validar'] . "' and substring(fec,1,7)='" . substr($fec11, 0, 7) . "' and codigo='" . $cedula . "'") or die(mysqli_error($enlace));
            //                 if (mysqli_num_rows($consulta5) == 0) {
            //                     $consulta5 = mysqli_query($enlace, "insert into personal_sueldo (id,fec,codigo,sueldo) values ('" . $_SESSION['id_validar'] . "','" . (substr($fec11, 0, 7) . '-01') . "','" . $cedula . "','" . $sueldo . "')") or die(mysqli_error($enlace));
            //                 }

            //             }
            //         }
            //         $alivac = ($dvacx / 360 * $sueldo / 30);
            //         $aliuti = ($dutix / 360 * $sueldo / 30);
            //         $integral = ($sueldo / 30) + $alivac + $aliuti;

            //         //============ datos de interes
            //         if ($icon != 2) {
            //             $consulta = mysqli_query($enlace, "select mon as total from tab_interes where substring(fec,1,7)='" . substr($fec11, 0, 7) . "'");
            //             $row = mysqli_fetch_array($consulta);
			// 			$total = $row['total'] ;
            //         }
					
            //         if ($total == 0) {
            //             $tcolor = 'red';
            //         } else {
            //             $tcolor = 'black';
            //         }
					
			// 		$interes ='';
            //         $interes = ($total == 0 ? $interes : $total);

            //         //============ calculo
            //         $acumulado += $integral * $dias - $adelanto;
            //         $fechaPrestacion = substr($fec11, 0, 7) . '-28';

            //         $interesganados += ($acumulado * $interes / 100 / 12) - $adeinteres;

            //         //============ dia adicional
            //         if ($anosx == 12 && $anos >= 1) {
            //             $diaa = $anos * 2;
            //             if ($diaa > 30) {
            //                 $diaa = 30;
            //             }
            //             //$acumulado += $integral * $diaa;   GERARDO JUNIO 2024

            //         } else {
            //             $diaa = 0;
            //         }
            //         //echo $fechaPrestacion;
            //         //if ($fechaPrestacion > '2021-12-31') {

            //         $interes = $interes ? $interes : 0;
            //         $valorSueldo = $sueldo ? $sueldo : 0;
            //         $crearRegistro = "INSERT INTO `prestaciones` (`ano`, `mes`, `cedula`, `nomina`, `id`, `sueldo`, `sueldo_integral`, `dias_base`, `monto_prestacion`, `dias_adicionales`, `monto_dias`, `monto_interes`, `anticipo`, `anticipo_interes`, `fecha_desde`)
            //                               VALUES ('" . $anos . "','" . $anosx . "','" . $cedula . "','" . $tiponomina . "','" . $_SESSION['id_validar'] . "',$valorSueldo,$integral,$dias,$integral*$dias,$diaa, $integral*$diaa, $acumulado*$interes/100/12,$adelanto, $adeinteres,'" . $fechaPrestacion . "')";
            //         $qpersonal = mysqli_query($enlace, $crearRegistro) or die($crearRegistro . mysqli_error($enlace));
            //         $acumulado += $integral * $diaa; //gerardo JUNIO 2024
            //         $acumintpag += $adeinteres;
            //         $acumanticp += $adelanto;
            //         $tdias += $dias + $diaa;
            //         $prestaciones += ($integral * $dias) + ($integral * $diaa) - $adelanto;
            //         //echo round($prestaciones, 2) . "   " . round($integral, 2) . "   " . $dias . "   " . $diaa . "   " . round(($integral * $dias), 2) . "  " . round(($integral * $diaa), 2) . "<br>";
            //         //}
            //     }

            // }

            // mysqli_query($enlace, "COMMIT");

            //***GERARDO para restar el ultimo mes JULIO 2024

            $fechaAux = new DateTime($fec2);

            // Ajustar la fecha al primer día del mes actual y luego restar un mes
            $fechaAux->modify('first day of this month');
            $fechaAux->modify('-1 month');
            $fechaAux->modify('last day of this month');

            // Obtener la fecha en formato Y-m-d
            $fec22 = $fechaAux->format('Y-m-d');

    
            include("proceso_prestaciones.php");	
        }

    } else {
        echo "<hr>";
    }

}
// fin de procedimiento para cargar las prestaciones Rodolfo
//echo round($prestaciones, 2);
$mensaje = "";
$exito = true;
function cellColor($objPHPExcel, $cells, $color)
{
    $objPHPExcel->getActiveSheet()->getStyle($cells)->getFill()->applyFromArray(array(
        'type' => PHPExcel_Style_Fill::FILL_SOLID,
        'startcolor' => array(
            'rgb' => $color,
        ),
    ));
}
function generarReporteGeneralPrestaciones()
{

    $fecha_procesado = date("d-m-Y");

    $fechaDesde = strtotime($_POST['fechaDesde']);
    $queryNomina = $_POST['nomina'];
    $queryDpto = $_POST['departamento'];
    $fDesde = date('Y-m-d', $fechaDesde);
    $fechad = substr($fDesde, 0, 7);
    $idValidar = $_SESSION['id_validar'];
	$enlace=cargar_conexion();

    
    // $queryData = "SELECT p.codigo AS cedula,
    // CONCAT_WS(' ',p.nombres,p.nombres1,p.apellidos, p.apellidos1) AS nombre,
    // p.nomina AS nomina, p.cargo, p.departamento as depto, p.unidad as localidad, p.fechai as ingreso,
    // SUM(IFNULL(pres.dias_base,0)) AS DIAS_BASE,
    // SUM(IFNULL(pres.monto_prestacion,0)) AS MTO_PRES,
    // SUM(IFNULL(pres.dias_adicionales,0)) AS  DIAS_ADI,
    // SUM(IFNULL(pres.monto_dias,0)) AS MTO_DIAS,
    // SUM(IFNULL(pres.monto_interes,0)) AS MTO_INT,
    // SUM(IFNULL(pres.anticipo,0)) AS ANTICIPO,
    // SUM(IFNULL(pres.anticipo_interes,0)) AS ANT_INT,t.detalle as cargo
    // FROM personal p, prestaciones pres, tablas t
    // WHERE p.id='$idValidar' AND
    // t.id=p.id AND /*se le anexa entre la tabla tablas y personal rodolfo*/
    // p.codigo = pres.cedula AND
    // p.id= pres.id AND t.codigo=p.cargo AND t.tabla='CARGO'
	// /*AND substr(pres.fecha_desde,1,7) <= 'substr($fDesde,0,7)' AND*/
    // AND substr(pres.fecha_desde,1,7) <= '$fechad' AND
    // (p.nomina = '$queryNomina' OR '$queryNomina'='000') AND
    // (p.departamento = '$queryDpto' OR '$queryDpto'='000') AND
    // p.status !='I'
    
    // GROUP BY p.codigo,p.nombres,p.nombres1,p.apellidos, p.apellidos1,p.nomina, p.cargo, p.departamento, p.unidad,p.fechai;";

    $queryData = "SELECT p.codigo AS cedula,
    CONCAT_WS(' ', p.nombres, p.nombres1, p.apellidos, p.apellidos1) AS nombre,
    p.nomina AS nomina, p.cargo, p.departamento AS depto, p.unidad AS localidad, p.fechai AS ingreso,
    SUM(IFNULL(pres.dias_base, 0)) AS DIAS_BASE,
    SUM(IFNULL(pres.monto_prestacion, 0)) AS MTO_PRES,
    SUM(IFNULL(pres.dias_adicionales, 0)) AS DIAS_ADI,
    SUM(IFNULL(pres.monto_dias, 0)) AS MTO_DIAS,
    SUM(IFNULL(pres.monto_interes, 0)) AS MTO_INT,
    SUM(IFNULL(pres.anticipo, 0)) AS ANTICIPO,
    SUM(IFNULL(pres.anticipo_interes, 0)) AS ANT_INT,
    t.detalle AS cargo
    FROM personal p
    LEFT JOIN tablas t ON t.id = p.id AND t.codigo = p.cargo AND t.tabla = 'CARGO'
    LEFT JOIN prestaciones pres ON p.codigo = pres.cedula AND p.id = pres.id AND substr(pres.fecha_desde, 1, 7) <= '$fechad'
    WHERE p.id = '$idValidar' AND p.status != 'I' AND
    (p.nomina = '$queryNomina' OR '$queryNomina'='000') AND
    (p.departamento = '$queryDpto' OR '$queryDpto'='000')
    GROUP BY p.codigo, p.nombres, p.nombres1, p.apellidos, p.apellidos1, p.nomina, p.cargo, p.departamento, p.unidad, p.fechai, t.detalle;";

    $resultados = mysqli_query($enlace, $queryData) or die("No se pudo realizar la consultaXXXX: " . $queryData . '=' . mysqli_error($enlace));

    $nFilas = mysqli_num_rows($resultados);

    if ($nFilas == 0) {
        die("No se encontraron registros");
    }

    /////////Consulta para traer el ultimo salario integral ---Miguelangel 31/03/2023
    $queryData2 = "SELECT p.codigo AS cedula, pres.sueldo_integral AS sueldo_integral
	 FROM personal p, prestaciones pres
	 WHERE p.id='$idValidar'
	 AND p.codigo = pres.cedula
	 AND p.id= pres.id
	 AND p.status !='I'
     /*and codigo='20368318'*/
	 AND pres.fecha_desde=(SELECT MAX(fecha_desde) FROM prestaciones p_ WHERE p_.id=p.id AND p_.cedula=pres.cedula AND p_.fecha_desde<='$fDesde')

	 ORDER BY cedula;";

    $resultados2 = mysqli_query($enlace, $queryData2) or die("No se pudo realizar la consulta: " . $consulta . '=' . mysqli_error($enlace));

    $objPHPExcel = new PHPExcel();

    PHPExcel_Shared_Font::setAutoSizeMethod(PHPExcel_Shared_Font::AUTOSIZE_METHOD_EXACT);

    // --------------------------Cabecera---------------------------------
    $objPHPExcel->getActiveSheet()->setCellValue("B2", "Empresa: ");
    $objPHPExcel->getActiveSheet()->setCellValue("C2", $_SESSION['empresa_validar']);
    $objPHPExcel->getActiveSheet()->setCellValue("B3", "Fecha Corte: ");
    $objPHPExcel->getActiveSheet()->setCellValue("C3", date('d-m-Y', $fechaDesde));
    $objPHPExcel->getActiveSheet()->setCellValue("A5", "Nro. ");
    $objPHPExcel->getActiveSheet()->setCellValue("B5", "  CEDULA  ");
    $objPHPExcel->getActiveSheet()->setCellValue("C5", "  NOMBRES  ");
    $objPHPExcel->getActiveSheet()->setCellValue("D5", "  NOMINA  ");
    $objPHPExcel->getActiveSheet()->setCellValue("E5", "  CARGO  ");
    $objPHPExcel->getActiveSheet()->setCellValue("F5", "  DEPARTAMENTO  ");
    $objPHPExcel->getActiveSheet()->setCellValue("G5", "  LOCALIDAD  ");
    $objPHPExcel->getActiveSheet()->setCellValue("H5", "  FECHA INGRESO  ");
    $objPHPExcel->getActiveSheet()->setCellValue("I5", "  ULTIMO SALAR INTEGR  ");
    $objPHPExcel->getActiveSheet()->setCellValue("J5", "  DIAS ACUMULADOS  ");
    $objPHPExcel->getActiveSheet()->setCellValue("K5", "  ACUMULADO PRESTACION  ");
    $objPHPExcel->getActiveSheet()->setCellValue("L5", "  ANTICIPOS PAGADOS");
    $objPHPExcel->getActiveSheet()->setCellValue("M5", "  SALDO PRESTACIONES  ");
    $objPHPExcel->getActiveSheet()->setCellValue("N5", "  DIAS LITERAL C  ");
    $objPHPExcel->getActiveSheet()->setCellValue("O5", "  SALDO LITERAL C  ");
    $objPHPExcel->getActiveSheet()->setCellValue("P5", "  INTERESES GANADOS  ");
    $objPHPExcel->getActiveSheet()->setCellValue("Q5", "  INTERESES PAGADOS  ");
    $objPHPExcel->getActiveSheet()->setCellValue("R5", "  INTERESES NETO  ");
    $objPHPExcel->getActiveSheet()->getStyle("A1:R5")->getFont()->setBold(true);

    $styleCenter = array(
        'alignment' => array(
            'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
        ),
    );

    $objPHPExcel->getActiveSheet()->getStyle("A1:R5")->applyFromArray($styleCenter);
    cellColor($objPHPExcel, 'A5:R5', 'E2E0E0');

    // --------------------------Cabecera---------------------------------

    // ----------------------------Data-----------------------------------
    $row = [];
    $row2 = [];
    $totalDias = 0;
    $totalMTO_PRES = 0;
    $totalANTICIPO = 0;
    $totalPRES = 0;
    $diasLitC = 0;
    $totalMtoLitC = 0;
    $totalInt = 0;
    $totalAntInte = 0;
    $totalInteres = 0;
    for ($cont = 1; $cont <= $nFilas; $cont++) {

        //echo "soy la consulta: ".$queryData2;

        $row = mysqli_fetch_array($resultados);
        $row2 = mysqli_fetch_array($resultados2);

        $fechaIngreso = $row['ingreso'];
        $fec1 = $fechaIngreso;
        $fec2 = $fDesde;
        $DiasAntig = days_360($fec1, $fec2) + 1;
        $AntigAno = $DiasAntig / 360;
        $AntigAno = round($AntigAno);

        $diasLitC = $AntigAno * 30;
        $AcumLiteralC = $diasLitC * $row2["sueldo_integral"];
        //$DiasAntig = $fechaDesde ;

        $position = $cont + 5;
        $objPHPExcel->getActiveSheet()->setCellValue("A" . $position, $cont);
        $objPHPExcel->getActiveSheet()->setCellValue("B" . $position, $row["cedula"]);
        $objPHPExcel->getActiveSheet()->setCellValue("C" . $position, $row["nombre"]);
        $objPHPExcel->getActiveSheet()->setCellValue("D" . $position, $row["nomina"]);
        $objPHPExcel->getActiveSheet()->setCellValue("E" . $position, $row["cargo"]);
        $objPHPExcel->getActiveSheet()->setCellValue("F" . $position, $row["depto"]);
        $objPHPExcel->getActiveSheet()->setCellValue("G" . $position, $row["localidad"]);
        $objPHPExcel->getActiveSheet()->setCellValue("H" . $position, $row["ingreso"]);
        $objPHPExcel->getActiveSheet()->setCellValue("I" . $position, $row2["sueldo_integral"]);

        $objPHPExcel->getActiveSheet()->setCellValue("J" . $position, $row["DIAS_BASE"] + $row["DIAS_ADI"]);
        $objPHPExcel->getActiveSheet()->setCellValue("K" . $position, $row["MTO_PRES"] + $row["MTO_DIAS"]); ///Se agregó a la suma MTO_DIAS --Miguelangel 24/09/22
        $objPHPExcel->getActiveSheet()->setCellValue("L" . $position, $row["ANTICIPO"]);
        $objPHPExcel->getActiveSheet()->setCellValue("M" . $position, $row["MTO_PRES"] + $row["MTO_DIAS"] - $row["ANTICIPO"]); ///Se agregó a la suma MTO_DIAS --Miguelangel 24/09/22
        $objPHPExcel->getActiveSheet()->setCellValue("N" . $position, $diasLitC); ///Se agregó el ultimo salario integral para calcular el Lit "C" --Miguelangel 31/03/2023
        $objPHPExcel->getActiveSheet()->setCellValue("O" . $position, $AcumLiteralC); ///Se agregó el ultimo salario integral para calcular el Lit "C" --Miguelangel 31/03/2023
        $objPHPExcel->getActiveSheet()->setCellValue("P" . $position, $row["MTO_INT"]);
        $objPHPExcel->getActiveSheet()->setCellValue("Q" . $position, $row["ANT_INT"]);
        $objPHPExcel->getActiveSheet()->setCellValue("R" . $position, $row["MTO_INT"] - $row["ANT_INT"]);
        $totalDias += $row["DIAS_BASE"] + $row["DIAS_ADI"];
        $totalMTO_PRES += $row["MTO_PRES"] + $row["MTO_DIAS"]; ///Se agregó a la suma MTO_DIAS --Miguelangel 24/09/22
        $totalANTICIPO += $row["ANTICIPO"];
        $totalPRES += $row["MTO_PRES"] + $row["MTO_DIAS"] - $row["ANTICIPO"]; ///Se agregó a la suma MTO_DIAS --Miguelangel 24/09/22
        $totalInt += $row["MTO_INT"];
        $totalAntInte += $row["ANT_INT"];
        $totalInteres += $row["MTO_INT"] - $row["ANT_INT"];
        $totalDiasLiteralC += $diasLitC;
        $totalLiteralC += $AcumLiteralC;

    }
    $position++;

    $objPHPExcel->getActiveSheet()->setCellValue("J" . $position, $totalDias);
    $objPHPExcel->getActiveSheet()->setCellValue("K" . $position, $totalMTO_PRES);
    $objPHPExcel->getActiveSheet()->setCellValue("L" . $position, $totalANTICIPO);
    $objPHPExcel->getActiveSheet()->setCellValue("M" . $position, $totalPRES);
    $objPHPExcel->getActiveSheet()->setCellValue("N" . $position, $totalDiasLiteralC);
    $objPHPExcel->getActiveSheet()->setCellValue("O" . $position, $totalLiteralC);
    $objPHPExcel->getActiveSheet()->setCellValue("P" . $position, $totalInt);
    $objPHPExcel->getActiveSheet()->setCellValue("Q" . $position, $totalAntInte);
    $objPHPExcel->getActiveSheet()->setCellValue("R" . $position, $totalInteres);
    $rango = "I" . $position . ":R" . $position;
    $objPHPExcel->getActiveSheet()->getStyle($rango)->getFont()->setBold(true);
    cellColor($objPHPExcel, $rango, 'E2E0E0');

    // ----------------------------Data-----------------------------------

    // ---------------------------Auto Size-------------------------------------

    $objPHPExcel->getActiveSheet()->getColumnDimension("A")->setAutoSize(true);
    $objPHPExcel->getActiveSheet()->getColumnDimension("B")->setAutoSize(true);
    $objPHPExcel->getActiveSheet()->getColumnDimension("C")->setAutoSize(true);
    $objPHPExcel->getActiveSheet()->getColumnDimension("D")->setAutoSize(true);
    $objPHPExcel->getActiveSheet()->getColumnDimension("E")->setAutoSize(true);
    $objPHPExcel->getActiveSheet()->getColumnDimension("F")->setAutoSize(true);
    $objPHPExcel->getActiveSheet()->getColumnDimension("G")->setAutoSize(true);
    $objPHPExcel->getActiveSheet()->getColumnDimension("H")->setAutoSize(true);
    $objPHPExcel->getActiveSheet()->getColumnDimension("I")->setAutoSize(true);
    $objPHPExcel->getActiveSheet()->getColumnDimension("J")->setAutoSize(true);
    $objPHPExcel->getActiveSheet()->getColumnDimension("K")->setAutoSize(true);
    $objPHPExcel->getActiveSheet()->getColumnDimension("L")->setAutoSize(true);
    $objPHPExcel->getActiveSheet()->getColumnDimension("M")->setAutoSize(true);
    $objPHPExcel->getActiveSheet()->getColumnDimension("N")->setAutoSize(true);
    $objPHPExcel->getActiveSheet()->getColumnDimension("O")->setAutoSize(true);
    $objPHPExcel->getActiveSheet()->getColumnDimension("P")->setAutoSize(true);
    $objPHPExcel->getActiveSheet()->getColumnDimension("Q")->setAutoSize(true);
    $objPHPExcel->getActiveSheet()->getColumnDimension("R")->setAutoSize(true);
    // ---------------------------Auto Size----------------------------------
    $rango = "A5:R" . $position;
    $styleBorder = array(
        'borders' => array(
            'allborders' => array(
                'style' => PHPExcel_Style_Border::BORDER_THIN,
            ),
        ),
    );

    $objPHPExcel->getActiveSheet()->getStyle($rango)->applyFromArray($styleBorder);

    // $objPHPExcel->getActiveSheet()->getStyle($rango)->getBorders()->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
    // $objPHPExcel->getActiveSheet()->getStyle($rango)->getBorders()->getBottom()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
    // $objPHPExcel->getActiveSheet()->getStyle($rango)->getBorders()->getLeft()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
    // $objPHPExcel->getActiveSheet()->getStyle($rango)->getBorders()->getRight()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);

    $objPHPExcel->getActiveSheet()->setTitle('PRESTACIONES');
    $objPHPExcel->setActiveSheetIndex(0);

    $fileName = "PRESTACIONES" . $queryNomina . "-" . $queryDpto . "_" . $fecha_procesado . ".xlsx";

    header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
    header('Content-Disposition: attachment;filename="' . $fileName . '"');
    header('Cache-Control: max-age=0');
    header('Cache-Control: max-age=1');
    header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
    header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
    header('Cache-Control: cache, must-revalidate');
    header('Pragma: public');
    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
    $objWriter->save('php://output');
    exit();

}
$mensaje = "";
$exito = true;

if ($_POST['treporte'] == 1) {
    $mensaje = "";
    $exito = true;
    $fecha_procesado = date("d-m-Y");

    $fDesde = strtotime($_POST['fechaDesde']);
    if ($fDesde) {
        generarReporteGeneralPrestaciones();
        $exito = true;
        $mensaje = "Reporte generado correctamente";
    } else {
        $exito = false;
        $mensaje = "Fecha inválida";
    }

}

// IMPORTANTE, debe ir luego de todas las generaciones de archivos posibles
menu();
// IMPORTANTE, debe ir luego de todas las generaciones de archivos posibles
}
catch (PDOException $e){
    echo 'Error : ' . $e->getMessage();

}
?>
<br>
<table border=0 cellpadding=0 cellspacing=0 width='100%'>
    <tr>
        <td width='100%' align='left'>
            <font size=2 color='black' face='verdana'>Empresa: <b>
                    <?echo $_SESSION['empresa_validar'];?>
                </b> - Per&iacute;odo: <b>
                    <font color=red>
                        <?echo $per;?>
                    </font>
                </b> - Usuario: <b>
                    <?echo $_SESSION['nombre_validar'];?>
                </b></font>
        </td>
    </tr>
</table>
<hr>
<center>
    <font face='Verdana, Arial, Helvetica, sans-serif' size=10> Reportes Prestaciones</font>
</center>
<font face='verdana' size=2>
    <br><br>
    <form name='entrada' action='<?php echo $_SERVER['PHP_SELF']; ?>' method='POST' enctype='multipart/form-data'>

        <table align='center'>

            <!-- Fecha Desde -->
            <tr id="filaFechaInicio" class="">
                <td align=''>
                    <font color=red>Fecha Corte: </font>
                </td>
                <td align='left'>
                    <input type="date" style='width:300px;' name="fechaDesde">
                </td>
            </tr>

            <!-- Tipo de Reporte a Generar -->
            <tr id="filaTipoArchivo" class="">
                <td align='righta'>Tipo de Reporte:</td>
                <td align='left'>
                    <select style='width:300px;' id="tipoReporte" onchange="onSelectChange()" name='treporte'>
                        <option value='1'>Reporte de Prestaciones Sociales e Intereses (EXCEL)</option>
                    </select>
                </td>
            </tr>
            <!-- Nomina -->
            <?php
$id = $_SESSION["id_validar"];
$consulta = mysqli_query($enlace, "SELECT codigo, detalle
            FROM nomina WHERE id='$id'
            UNION select '000' AS codigo, ' TODAS ' as detalle from dual
            ORDER BY codigo,detalle;") or die('No se pudo consultar los periodos (1): ' . mysqli_error($enlace));
$numr = mysqli_num_rows($consulta);
?>
            <tr id="filaNomina" class="">
                <td align=''>
                    <font color=red>Nomina: </font>
                </td>
                <td align='left'>
                    <select style='width:300px;' name='nomina'>
                        <?php
for ($x = 1; $x <= $numr; $x++) {
    $row1 = mysqli_fetch_array($consulta);
    echo "<option value='" . $row1['codigo'] . "'>" . $row1['codigo'] . " - " . $row1['detalle'];

}
?>
                    </select>
                </td>
            </tr>
            <!-- Departamento -->
            <?php
$id = $_SESSION["id_validar"];
$consulta = mysqli_query($enlace, "SELECT codigo, detalle FROM tablas WHERE tabla=ucase('DEPARTAMENTO') AND id='$id'
            UNION SELECT '000' AS codigo, ' TODOS ' as detalle from dual
            ORDER BY codigo,detalle;") or die('No se pudo consultar los departamentos: ' . mysqli_error($enlace));
$resultado = mysqli_num_rows($consulta);
?>
            <tr id="filaDepartamento" class="">
                <td align='righta'> Departamento: </td>
                <td align='left'>
                    <select style='width:300px;' name='departamento'>
                        <?php
if ($resultado != 0) {
    for ($i = 1; $i <= $resultado; $i++) {
        $row1 = mysqli_fetch_array($consulta);
        echo "<option value='" . $row1['codigo'] . "' width = '30%'>" . $row1['codigo'] . " - " . $row1['detalle'] . "</option>";
    }
}
?>
                    </select>
                </td>
            </tr>



            <?php
if ($mensaje != "") {
    $claseAlerta = $exito ? "alert-success" : "alert-danger";
    ?>
            <tr>
                <td colspan="4">
                    <div class="alert text-center <?php echo $claseAlerta; ?>">
                        <?php echo $mensaje; ?>
                    </div>
            </tr>
            <?php
}
?>
            <tr>
                <td align='left'>
            </tr>
            <td colspan='4' align='center'>
                <input name='ver' type='submit' style='margin-left:5px; height:35px; width:200px'
                    value='GENERAR REPORTE'>
            </td>
            </tr>
        </table>
    </form>
</font>

<script>
const selectElement = document.querySelector('#tipoReporte');
const filaFechaInicio = document.querySelector('#filaFechaInicio');
const filaTipoArchivo = document.querySelector('#filaTipoArchivo');
const filaNomina = document.querySelector('#filaNomina');
const filaDepartamento = document.querySelector('#filaDepartamento');
</script>


</body>

</html>