<?php
require('fpdf.php');


class PDF extends FPDF
{
    // Cargar los datos
    function LoadData($file)
    {
        // Leer las líneas del fichero
        $lines = file($file);
        $data = array();
        foreach ($lines as $line)
            $data[] = explode(';', trim($line));
        return $data;
    }
    function Header()
    {
        // Logo
        //   $this->Image('logo_pb.png',10,8,33);
        // Arial bold 15
        include("../../connect.php");
        $this->SetFont('Arial', 'B', 12);
        // $this->Cell(45,10,'Horario de sucursal:');
        $this->SetFont('Arial', '', 10);

        $this->Ln();
    }
    // Tabla simple
    function BasicTable($header, $data)
    {
        // Cabecera
        foreach ($header as $col)
            $this->Cell(35, 7, $col, 1);
        $this->Ln();






        // Datos
        foreach ($data as $row) {
            foreach ($row as $col)
                $this->Cell(35, 6, 'nom', 1);
            $this->Ln();
        }
    }

    // Una tabla más completa
    /*function ImprovedTable($header, $data)
    {
        // Anchuras de las columnas
        $w = array(40, 35, 45, 40);
        // Cabeceras
        for($i=0;$i<count($header);$i++)
            $this->Cell($w[$i],7,$header[$i],1,0,'C');
        $this->Ln();
        // Datos
        foreach($data as $row)
        {
            $this->Cell($w[0],6,$row[0],'LR');
            $this->Cell($w[1],6,$row[1],'LR');
            $this->Cell($w[2],6,number_format($row[2]),'LR',0,'R');
            $this->Cell($w[3],6,number_format($row[3]),'LR',0,'R');
            $this->Ln();
        }
        // Línea de cierre
        $this->Cell(array_sum($w),0,'','T');
    }*/

    // Tabla coloreada
    function FancyTable($header, $data)
    {
        // Colores, ancho de línea y fuente en negrita

        // Cabecera
        $JSON = json_decode($_POST["json"], true);



        foreach ($JSON as $row) {
            include("../../connect.php");
            $suc = $_POST["sucursal"];
            $fecha = $_POST["fechainicio"];
            $fecha2 = $_POST["fechafin"];

            $suc = $_POST["sucursal"];
            $fecha = $_POST["fechainicio"];
            $fecha2 = $_POST["fechafin"];
            $fecha = date_create($fecha);
            $fecha = date_format($fecha, 'd/m/Y');
            $fecha2 = date_create($fecha2);
            $fecha2 = date_format($fecha2, 'd/m/Y');

            // Restauración de colores y fuentes
            $this->SetFillColor(224, 235, 255);
            $this->SetTextColor(0);
            $this->SetFont('');
            // Datos
            $fill = false;
            $w = array(60, 60, 60, 35, 35, 35, 35, 35);
            $this->SetFillColor(255, 255, 255);
            $this->SetTextColor(0);
            $this->SetDrawColor(0, 0, 0);
            $this->SetLineWidth(.3);
            $this->SetFont('', 'B');

            for ($i = 0; $i < count($header); $i++) {
                $this->Cell(60, 7, $header[$i], 1, 0, 'C', true);
            }
            $this->Ln();
            $this->SetFont('', '');

            $this->Cell(180, 4,  utf8_decode("Empleado N° ") . $row["Numemple"] . ": " . utf8_decode($row["nombre"]) . ' ' . utf8_decode($row["apellido"]), 'LR', 0, 'L', $fill);
            $this->Ln(4);

            $this->Cell(75, 4, "Puesto" . ' ' . $row["puesto"], 'L', 0, 'L', $fill);
            $this->Cell(45, 4, "Dias Trabajados" . ': ' . $row["diasTra"], '', 0, 'L', $fill);
            $this->Cell(60, 4, "Del:   " . $fecha . '   Al:   ' . $fecha2, 'R', 0, 'L', $fill);
            $this->Ln(4);
            $this->Cell(90, 4, "Percepciones", 1, 0, 'C', $fill);
            $this->Cell(90, 4, "Deducciones", 1, 0, 'C', $fill);
            $this->Ln(4);
            $this->Cell(45, 4, "Concepto", 'LB', 0, 'L', $fill);
            $this->Cell(45, 4, "Importe  ", 'RB', 0, 'R', $fill);
            $this->Cell(45, 4, "Concepto", 'LB', 0, 'L', $fill);
            $this->Cell(45, 4, "Importe  ", 'RB', 0, 'R', $fill);


            $percepciones = [];
            $Deducciones = [];

            $percepciones[] = array("Nombre" => "Sueldo", "cantidad" => $row["salarioP"]);
            if ($row["bonoP"] > 0) {
                $percepciones[] = array("Nombre" => "Bono", "cantidad" => $row["bonoP"]);
            } else {
                $percepciones[] = array("Nombre" => "", "cantidad" => "");
            }
            if ($row["horas_extras"] > 0) {
                $percepciones[] = array("Nombre" => "Horas Extras", "cantidad" => $row["horas_extras"] * $row["precioHorasExtras"]);
            } else {
                $percepciones[] = array("Nombre" => "", "cantidad" => "");
            }
            if ($row["bono_desempeno"] > 0) {
                $percepciones[] = array("Nombre" => "Bono de desempeño", "cantidad" => $row["bono_desempeno"]);
            } else {
                $percepciones[] = array("Nombre" => "", "cantidad" => "");
            }
            if ($row["bono_ventas"] > 0) {
                $percepciones[] = array("Nombre" => "Bono de Ventas", "cantidad" => $row["bono_ventas"]);
            } else {
                $percepciones[] = array("Nombre" => "", "cantidad" => "");
            }
            if ($row["bono_trasporte"] > 0) {
                $percepciones[] = array("Nombre" => "Bono de Trasporte", "cantidad" => $row["bono_trasporte"]);
            } else {
                $percepciones[] = array("Nombre" => "", "cantidad" => "");
            }
            if ($row["bono_postres"] > 0) {
                $percepciones[] = array("Nombre" => "Bono de Postres", "cantidad" => $row["bono_postres"]);
            } else {
                $percepciones[] = array("Nombre" => "", "cantidad" => "");
            }
            if ($row["prima"] > 0) {
                $percepciones[] = array("Nombre" => "Prima Vacacional", "cantidad" => $row["prima"]);
            } else {
                $percepciones[] = array("Nombre" => "", "cantidad" => "");
            }

            $percepciones[] = array("Nombre" => "", "cantidad" => "");
            $percepciones[] = array("Nombre" => "", "cantidad" => "");
            $percepciones[] = array("Nombre" => "", "cantidad" => "");
            $percepciones[] = array("Nombre" => "", "cantidad" => "");
            $sumaDeducciones = 0;

            if ($row["imss"] > 0) {
                $Deducciones[] = array("Nombre" => "IMSS", "cantidad" => $row["imss"]);
                $sumaDeducciones = $sumaDeducciones  + $row["imss"];
            } else {
                $percepciones[] = array("Nombre" => "", "cantidad" => "");
            }
            if ($row["infonavit"] > 0) {
                $Deducciones[] = array("Nombre" => "Infonavit", "cantidad" => $row["infonavit"]);
                $sumaDeducciones = $sumaDeducciones  + $row["infonavit"];
            } else {
                $percepciones[] = array("Nombre" => "", "cantidad" => "");
            }

            foreach ($row["descuentosProgramados"] as $row1) {
                $Deducciones[] = array("Nombre" => $row1["concepto"] . '  $' . $row1["cantidadTotal"] . ' ' . $row1["ncobro"] . '/' . $row1["cantidad_pagos"], "cantidad" =>  $row1["monto"]);
                $sumaDeducciones = $sumaDeducciones + $row1["monto"];
            }
            /*"horas_extras":0,
            "bono_desempeno":0,
            "bono_ventas":0,
            "bono_postres":0,
            "bono_trasporte":0,*/
            // echo json_encode($percepciones);
            // echo json_encode($Deducciones);


            foreach ($percepciones as $percepcion => $value) {
                $this->Ln(4);


                $this->Cell(45, 4, utf8_decode($value["Nombre"]), 'L', 0, 'L', $fill);
                if ($value["cantidad"] != "") {
                    $this->Cell(45, 4, number_format($value["cantidad"], 2, '.', ',') . '', 'R', 0, 'R', $fill);
                } else {
                    $this->Cell(45, 4,  '', 'R', 0, 'R', $fill);
                }
                if (isset($Deducciones[$percepcion]["Nombre"])) {
                    $this->Cell(45, 4, utf8_decode($Deducciones[$percepcion]["Nombre"]), 'L', 0, 'L', $fill);
                    if ($Deducciones[$percepcion]["cantidad"] != "") {
                        $this->Cell(45, 4, number_format($Deducciones[$percepcion]["cantidad"], 2, '.', ',')  . '', 'R', 0, 'R', $fill);
                    } else {
                        $this->Cell(45, 4,  '', 'R', 0, 'R', $fill);
                    }
                } else {
                    $this->Cell(90, 4,  '', 'R', 0, 'R', $fill);
                }
            }
            $this->Ln(4);







            /*"horas_extras":0,
            "bono_desempeno":0,
            "bono_ventas":0,
            "bono_postres":0,
            "bono_trasporte":0,*/

            $totalPercepciones = $row["prima"] + $row["bono_desempeno"] + $row["bono_ventas"] + $row["bono_postres"] + $row["bono_trasporte"] + $row["salarioP"] + $row["bonoP"] + $row["bonoExtrap"] + ($row["horas_extras"] * $row["precioHorasExtras"]);
            $this->Cell(45, 4, "Suma Percepciones", 'TLB', 0, 'L', $fill);
            $this->Cell(45, 4, number_format($totalPercepciones, 2, '.', ',') . '', 'TRB', 0, 'R', $fill);


            /*  foreach ($row["descuentosProgramados"] as $row1) {
                $this->Cell(45, 4, $row1["concepto"] . '  $' . $row1["cantidadTotal"] . ' ' . $row1["ncobro"] . '/' . $row1["cantidad_pagos"], 'L', 0, 'L', $fill);

                $this->Cell(45, 4, '' . $row1["monto"], 'R', 0, 'R', $fill);
                $this->Ln(4);
                $this->Cell(90, 4, '  ', 'R', 0, 'R', $fill);
                $sumaDeducciones += $row1["monto"];
            }*/
            $this->Cell(90, 4, '  ', 'R', 0, 'L', $fill);
            $this->Ln(4);
            $this->Cell(90, 4, '', 'R', 0, 'R', $fill);
            $this->Cell(45, 4, 'Suma Deducciones', 'TBL', 0, 'L', $fill);
            $this->Cell(45, 4, number_format($sumaDeducciones, 2, '.', ','), 'TBR', 0, 'R', $fill);
            $this->Ln(4);
            $this->Cell(90, 4, '  ', 0, 0, 'L', $fill);
            $this->Cell(45, 4, 'Neto a Pagar', 'R', 0, 'R', $fill);
            $this->Cell(45, 4, number_format($totalPercepciones - $sumaDeducciones, 2, '.', ','), 'RB', 0, 'R', $fill);
            $this->Ln(4);
            $this->Cell(90, 4, utf8_decode('Recibí de la empresa arriba mencionada la cantidad'), 0, 0, 'L', false);
            $this->Ln(4);
            $this->Cell(90, 4, 'neta que este documento se refiere, aceptando que', 0, 0, 'L', false);
            $this->Ln(4);
            $this->Cell(90, 4, 'no existe adeudo alguno de horas extras o dias', 0, 0, 'L', false);
            $this->Cell(90, 4, '____________________________________', 0, 0, 'C', false);
            $this->Ln(4);
            $this->Cell(90, 4, 'laborados. Estando conforme con las percepciones y', 0, 0, 'L', false);
            $this->Cell(90, 4, utf8_decode($row["nombre"]) . ' ' . utf8_decode($row["apellido"]), 0, 0, 'C', false);
            $this->Ln(4);
            $this->Cell(90, 4, utf8_decode('deducciones que en él aparecen especificados.'), 0, 0, 'L', false);
            // $number = 1234.56;

            // echo number_format($number, 2, ',', ' ');
            $this->AddPage();

            // $this->AddPage();
        }
    }
}




function pdfsalir($data)
{
    include("../../connect.php");
    $suc = $_POST["sucursal"];
    $fecha = $_POST["fechainicio"];
    $fecha2 = $_POST["fechafin"];

    $suc = $_POST["sucursal"];
    $fecha = $_POST["fechainicio"];
    $fecha2 = $_POST["fechafin"];
    $fecha = date_create($fecha);
    $fecha = date_format($fecha, 'd/m/Y');
    $fecha2 = date_create($fecha2);
    $fecha2 = date_format($fecha2, 'd/m/Y');
    $sql = "SELECT * FROM cat_sucursal WHERE id= $suc";
    $resultset1 = mysqli_query($conn, $sql);
    $data = array();
    $emparray = array();
    while ($row = mysqli_fetch_assoc($resultset1)) {
        $header = array('', $row["nombre_sucursal"], '');
    }
    // $this->Cell(190,10,'De '.$fecha.' A '.$fecha2,'',0,'R');




    $pdf = new PDF('P', 'mm', 'A4');
    // Títulos de las columnas

    // Carga de datos
    // $data = $pdf->LoadData('paises.txt'); 
    $pdf->AddPage();

    $pdf->SetFont('Arial', '', 10);



    $pdf->Ln();
    $pdf->FancyTable($header, $data);




    $pdf->Output('F', 'archivo.pdf', FALSE);
    echo ('archivo.pdf');
}

function Datos()
{
    include("../../connect.php");
    $suc = $_GET["sucursal"];
    $fecha = $_GET["fechainicio"];
    $fecha2 = $_GET["fechafin"];



    $sql = "SELECT `numEmp`,SUBSTRING(min(`marcaje`),11,6) entrada,if(SUBSTRING(min(`marcaje`),11,6) = SUBSTRING(max(`marcaje`),11,6),'',SUBSTRING(max(`marcaje`),11,6))  salida, (ELT(WEEKDAY(`marcaje`) + 1, 'lunes', 'martes', 'miercoles', 'jueves', 'viernes', 'sabado', 'dimingo')) as dia FROM `registro`  
        where WEEKOFYEAR(`marcaje`) = WEEKOFYEAR('$fecha') and YEAR(`marcaje`) = YEAR('$fecha') and numEmp in (select numero from cat_empleado where id_sucursal ='$suc')
        GROUP by `numEmp`,(ELT(WEEKDAY(`marcaje`) + 1, 'Lunes', 'Martes', 'Miercoles', 'Jueves', 'Viernes', 'Sabado', 'Domingo'))";



    $sql = "SELECT `numEmp`,SUBSTRING(min(`marcaje`),11,6) entrada,
        cat_empleado.nombre,concat(ap_paterno,' ') apellido,cat_horarios.nombre horario,
        if(SUBSTRING(min(`marcaje`),11,6) = SUBSTRING(max(`marcaje`),11,6),' ******',SUBSTRING(max(`marcaje`),11,6))  salida, (ELT(WEEKDAY(`marcaje`) + 1, 'lunes', 'martes', 'miercoles', 'jueves', 'viernes', 'sabado', 'dimingo')) as dia FROM `registro`
        
        left join cat_empleado on cat_empleado.numero = numEmp
        left join tbl_horarios on cat_empleado.id =tbl_horarios.idEmpleado 
        left join cat_horarios on tbl_horarios.idHora =cat_horarios.id
        where WEEKOFYEAR(`marcaje`) = WEEKOFYEAR('$fecha') and YEAR(`marcaje`) = YEAR('$fecha') and numEmp in (select numero from cat_empleado where id_sucursal ='$suc')
        GROUP by `numEmp`,(ELT(WEEKDAY(`marcaje`) + 1, 'Lunes', 'Martes', 'Miercoles', 'Jueves', 'Viernes', 'Sabado', 'Domingo'))";
    mysqli_query($conn, "SET NAMES 'utf8'");
    $resultset1 = mysqli_query($conn, $sql);
    $data = array();
    $emparray = array();
    while ($row = mysqli_fetch_assoc($resultset1)) {
        $emparray[] = $row;
    }
    if ($emparray != null) {
        $data =  array();
        $NumDentro = array();
        $numero = -1;

        foreach ($emparray as &$valor) {
            $resultSearch = false;
            $resultSearch = in_array($valor["numEmp"], $NumDentro);

            $datoUno =
                array(
                    "numEmp" => $valor["numEmp"],
                    "Nombre" => $valor["nombre"],
                    "apellido" => $valor["apellido"],
                    "lunes" => array(
                        "horario" => "",
                        "entrada" => "",
                        "salida" => ""
                    ),
                    "martes" => array(
                        "horario" => "",
                        "entrada" => "",
                        "salida" => ""
                    ),
                    "miercoles" => array(
                        "horario" => "",
                        "entrada" => "",
                        "salida" => ""
                    ),
                    "jueves" => array(
                        "horario" => "",
                        "entrada" => "",
                        "salida" => ""
                    ),
                    "viernes" => array(
                        "horario" => "",
                        "entrada" => "",
                        "salida" => ""
                    ),
                    "sabado" => array(
                        "horario" => "",
                        "entrada" => "",
                        "salida" => ""
                    ),
                    "domingo" => array(
                        "horario" => "",
                        "entrada" => "",
                        "salida" => ""
                    )
                );
            if ($resultSearch) {
                /*   $data[$numero]["lunes"]  =array(
                            "horario"=>$valor["horario"],
                            "entrada"=>$valor["entrada"],
                            "salida"=>$valor["salida"]
                        );     */
                switch ($valor["dia"]) {
                    case 'lunes':
                        $data[$numero]["lunes"] = array(
                            "horario" => $valor["horario"],
                            "entrada" => $valor["entrada"],
                            "salida" => $valor["salida"]
                        );
                        break;
                    case 'martes':
                        $data[$numero]["martes"] = array(
                            "horario" => $valor["horario"],
                            "entrada" => $valor["entrada"],
                            "salida" => $valor["salida"]
                        );
                        break;
                    case 'miercoles':
                        $data[$numero]["miercoles"] = array(
                            "horario" => $valor["horario"],
                            "entrada" => $valor["entrada"],
                            "salida" => $valor["salida"]
                        );
                        break;
                    case 'jueves':
                        $data[$numero]["jueves"] = array(
                            "horario" => $valor["horario"],
                            "entrada" => $valor["entrada"],
                            "salida" => $valor["salida"]
                        );
                        break;
                    case 'viernes':
                        $data[$numero]["viernes"] = array(
                            "horario" => $valor["horario"],
                            "entrada" => $valor["entrada"],
                            "salida" => $valor["salida"]
                        );
                        break;
                    case 'sabado':
                        $data[$numero]["sabado"] = array(
                            "horario" => $valor["horario"],
                            "entrada" => $valor["entrada"],
                            "salida" => $valor["salida"]
                        );
                        break;
                    case 'domingo':
                        $data[$numero]["domingo"] = array(
                            "horario" => $valor["horario"],
                            "entrada" => $valor["entrada"],
                            "salida" => $valor["salida"]
                        );
                        break;
                }
            } else {


                switch ($valor["dia"]) {
                    case 'lunes':
                        $datoUno["lunes"] = array(
                            "horario" => $valor["horario"],
                            "entrada" => $valor["entrada"],
                            "salida" => $valor["salida"]
                        );
                        break;
                    case 'martes':
                        $datoUno["martes"] = array(
                            "horario" => $valor["horario"],
                            "entrada" => $valor["entrada"],
                            "salida" => $valor["salida"]
                        );
                        break;
                    case 'miercoles':
                        $datoUno["miercoles"] = array(
                            "horario" => $valor["horario"],
                            "entrada" => $valor["entrada"],
                            "salida" => $valor["salida"]
                        );
                        break;
                    case 'jueves':
                        $datoUno["jueves"] = array(
                            "horario" => $valor["horario"],
                            "entrada" => $valor["entrada"],
                            "salida" => $valor["salida"]
                        );
                        break;
                    case 'viernes':
                        $datoUno["viernes"] = array(
                            "horario" => $valor["horario"],
                            "entrada" => $valor["entrada"],
                            "salida" => $valor["salida"]
                        );
                        break;
                    case 'sabado':
                        $datoUno["sabado"] = array(
                            "horario" => $valor["horario"],
                            "entrada" => $valor["entrada"],
                            "salida" => $valor["salida"]
                        );
                        break;
                    case 'domingo':
                        $datoUno["domingo"] = array(
                            "horario" => $valor["horario"],
                            "entrada" => $valor["entrada"],
                            "salida" => $valor["salida"]
                        );
                        break;
                }
                array_push($data, $datoUno);
                array_push($NumDentro, $valor["numEmp"]);
                $numero = $numero + 1;
                //  echo $numero;
            }


            //  echo print_r($NumDentro)."<br><br><br>";

        }


        // echo print_r($data)."456<br><br><br>";


    } else {
        $data = array("nodatos" => "1");
    }
}

$json = json_decode($_POST["json"], true);
//echo $json;
pdfsalir($json);
