<?php
include_once("../../../php/sessionStart.php"); 
include_once("../../../php/db/dbExec.php");
include_once('../../../php/functions.php');
include_once("../../../php/fpdf/functions.php");
include_once('../../../php/maxExecTime.php');

global $empCod, $usuNom, $bitMod, $bitForm, $selBan, $tipop, $dtGrabado, $dtFec, $numNum, $Banctab, $Banctac, $numAnio, $numMes, $concepto, $ctasuel;

$bitForm = "nom1075";
$bitMod = "nom";
$empCod=utf8_decode($_SESSION["empCod"]);
$empNom=utf8_decode($_SESSION["empNom"]);
$usuCod = utf8_decode($_SESSION['usuCod']);
$usuNom = utf8_decode($_SESSION['usuNom']);

$numNum=$_GET["numNum"];
$numCoddm=(empty($_GET['numCoddm'])) ? 0 : $_GET['numCoddm'];
$selBan=$_GET["selBan"];
$Banctab=$_GET["Banctab"];
$Banctac=$_GET["Banctac"];
$dtFec=$_GET["dtFec"];
$numAnio=date("Y", strtotime($dtFec));
$numMes=date("n", strtotime($dtFec));
$tipop="004";
$ctasuel="1120104";
$dtGrabado=date("Y-m-d H:i:s", STRTOTIME(date('h:i:sa')));

$lineWidth=19;
$lineHeight=0.42;

class generatePDF extends PDF_MC_Table {
    function Header() {
        global $empNom, $lineHeight, $lineWidth, $dtFec, $numNum, $Banctab;
        $this->SetMargins(1.5, 1, 2);
        $this->Cell(0, 0, "", 0, 1);

        $this->SetFont("Arial","B",12);
        $this->Cell($lineWidth,.7,$empNom,0,0,"L");

        $this->SetFont("Arial","I",8);
        $this->SetY(.7);
        $this->Cell(0,1,utf8_decode("PÁGINA ").$this->PageNo(),0,1,"R");

        $this->SetFont("","",9);
        $this->MultiAlignCell($lineWidth, $lineHeight, utf8_decode("LISTADO DE CHEQUES EMITIDOS POR CONCEPTO DE ANTICIPO CON FECHA: ".strftime("%d/%m/%Y", strtotime($dtFec))),0,1,"L");
        $this->MultiAlignCell($lineWidth, $lineHeight, "PLANILLA No. : ".$numNum,0,1,"L");
        $this->MultiAlignCell($lineWidth, $lineHeight, "CUENTA BANCARIA: ".$Banctab,0,1,"L");

        $this->Ln();
        $this->SetFont("","",9);
        $header = array("CODIGO","NOMBRE PARA EL CHEQUE","NUMERO/CHEQUE","MONTO");
        $this->SetFont("","B");
        $this->SetWidths(array(2,10,3.5,3));
        $this->SetAligns(array("C","C","C","C"));
        $this->Row($header, $lineHeight);

        $this->SetFont("");
        $this->SetAligns(array("L","L","L","R"));
    }
    
    function Footer() {
        // Posición: a 1,5 cm del final
        //$this->SetY(-2.5);
        //$this->SetFont("Arial","I",8);
        //$this->Cell(0,1,"PAGINA ".$this->PageNo(),0,0,"C");
    }
}

# QUERYS
if ($numCoddm==0) {
    $sAnti = "SELECT ant.*, TRIM(mae.mae_nom) AS mae_nom, TRIM(mae.mae_ape) AS mae_ape,
                TRIM(mae.mae_nomch) AS mae_nomch, TRIM(tpu.tpu_nom) AS tpu_nom
                FROM antipla ant
                LEFT JOIN maestro mae ON ant.ant_emp=mae.mae_emp AND ant.ant_cod = mae.mae_cod 
                LEFT JOIN tpuesto tpu ON mae.mae_tpue = tpu.tpu_cod 
                WHERE ant_emp='$empCod' AND ant_numpla='$numNum' AND mae_fpago>2 AND ant_chafe=0";
} else {
    $sAnti = "SELECT ant.*, TRIM(mae.mae_nom) AS mae_nom, TRIM(mae.mae_ape) AS mae_ape,
                TRIM(mae.mae_nomch) AS mae_nomch, TRIM(tpu.tpu_nom) AS tpu_nom
                FROM antipla ant
                LEFT JOIN maestro mae ON ant.ant_emp=mae.mae_emp AND ant.ant_cod = mae.mae_cod 
                LEFT JOIN tpuesto tpu ON mae.mae_tpue = tpu.tpu_cod 
                WHERE ant_emp='$empCod' AND ant_numpla='$numNum' AND ant_cod='$numCoddm' AND mae_fpago>2 AND ant_chafe=0";
}

$sBancos = "SELECT ban_ctac,ban_corr FROM bancos WHERE ban_emp='$empCod' AND ban_num='$selBan'";

$sSaldob = "SELECT * FROM saldob WHERE salb_emp='$empCod' AND salb_num='$selBan'";


function uAnti($cod,$numch) { 
    global $empCod, $usuNom, $selBan, $numNum;
    return "UPDATE antipla SET ant_chafe=1, ant_ban='$selBan', ant_cheque='$numch' WHERE ant_emp='$empCod' AND ant_numpla='$numNum' AND ant_cod='$cod'";
}

function uBancos($nuevocorr) { 
    global $empCod, $usuNom, $selBan;
    return "UPDATE bancos SET ban_corr=$nuevocorr WHERE ban_emp='$empCod' AND ban_num='$selBan'";
}

function sCheques($numch) { 
    global $empCod, $usuNom, $selBan, $tipop, $dtFec;
    return "SELECT * FROM cheques WHERE ch_emp='$empCod' AND ch_tipo='$tipop' AND ch_ban='$selBan' AND ch_num='$numch'";
}

function iCheques($numch,$tot,$bene,$concepto) { 
    global $empCod, $usuNom, $selBan, $tipop, $dtFec, $numNum;
    return "INSERT INTO cheques(ch_emp, ch_tipo, ch_ban, ch_num, ch_fec, ch_tot, ch_tcam, ch_bene, ch_con, ch_nego, ch_ulcam) VALUES ('$empCod','$tipop','$selBan','$numch','$dtFec','$tot',1.00,'$bene','$concepto','N','$usuNom')";
}

function iMovAcu($numch,$tot,$bene,$concepto) { 
    global $empCod, $usuNom, $selBan, $tipop, $dtFec;
    return "INSERT INTO mov_acu(ma_emp, ma_tipo, ma_ban, ma_num, ma_fec, ma_haber, ma_bene, ma_con, ma_stat) VALUES ('$empCod','$tipop','$selBan','$numch','$dtFec','$tot','$bene','$concepto','C')";
}

function iPolizas($numch,$tot,$concepto) { 
    global $empCod, $usuNom, $selBan, $tipop, $dtFec, $dtGrabado;
    return "INSERT INTO polizas(pol_emp, pol_fec, pol_ban, pol_tipo, pol_num, pol_con, pol_ulcam, pol_grabado) VALUES ('$empCod','$dtFec','$selBan','$tipop','$numch','$concepto','$usuNom','$dtGrabado')";
}

function iPoli_det($numch,$cta,$ctanom,$debe,$haber) { 
    global $empCod, $usuNom, $selBan, $tipop, $dtFec, $dtGrabado;
    return "INSERT INTO poli_det (pold_emp, pold_fec, pold_ban, pold_tipo, pold_num, pold_cta, pold_ctan, pold_debe, pold_haber) VALUES ('$empCod','$dtFec','$selBan','$tipop','$numch','$cta','$ctanom','$debe','$haber')";
}

function uSaldob($nvalor) { 
    global $empCod, $usuNom, $selBan;
    return "UPDATE saldob SET salb_saldo=$nvalor WHERE salb_emp='$empCod' AND salb_num='$selBan'";
}

function iSaldob($nvalor) { 
    global $empCod, $usuNom, $selBan;
    return "INSERT INTO saldob(salb_emp, salb_num, salb_saldo) VALUES('$empCod','$selBan',$nvalor)";
}

function sCuentas($cta) { 
    global $empCod;
    return "SELECT * FROM cuentas WHERE cta_emp='$empCod' AND cta='$cta'";
}

function sCierres($cta, $numAnio, $numMes) { 
    global $empCod;
    return "SELECT * FROM cierres WHERE cie_emp='$empCod' AND cie_ano=$numAnio AND cie_mes=$numMes AND cie_cta='$cta'";
}

function uCierres($cta, $numAnio, $numMes, $mdebe, $mhaber) { 
    global $empCod, $usuNom;
    return "UPDATE cierres SET cie_mdebe=$mdebe, cie_mhaber=$mhaber, cie_ulcam='$usuNom' WHERE cie_emp='$empCod' AND cie_ano=$numAnio AND cie_mes=$numMes AND cie_cta='$cta'";
}

function iCierres($cta, $numAnio, $numMes, $mdebe, $mhaber) { 
    global $empCod, $usuNom;
    return "INSERT INTO cierres(cie_emp, cie_ano, cie_mes, cie_cta, cie_mdebe, cie_mhaber, cie_ulcam) VALUES('$empCod',$numAnio,$numMes,'$cta',$mdebe,$mhaber,'$usuNom')";      
}


# EJECUCION DE QUERYS
$db = new dbExec();
$select["antipla"] = $db->query($sAnti);

$select["bancos"] = $db->query($sBancos);
$fetchAssoc["bancos"] = $db->fetchAssoc($select["bancos"]);     
$ctaBanco = trim($fetchAssoc["bancos"]["ban_ctac"]);
$numch = $fetchAssoc["bancos"]["ban_corr"];
$numchini=$numch;
$todossn='S';
$nogenerados="";
$totpag=0;
# GENERAR PDF
//$pdf = new generatePDF("L","cm", "Letter");
$pdf = new generatePDF("P","cm", "Letter");
$pdf->AddPage();
$func = new functions();

while ($rec = $db->fetchAssoc($select["antipla"])) {
    $cod=$rec["ant_cod"];
    $nomch=$rec["mae_nomch"];
    if ($nomch=="") {
        $nomch=$rec["mae_nom"]." ".$rec["mae_ape"];
    }
    $tot=$rec["ant_liqrec"];
    if ($tot == 0){
        continue;
    }
    $concepto="Pago de Anticipo correspondiente a Planilla No. ".$numNum."  Empleado: ".$nomch;
    // Aqui hace la revision para generar cheques y ver si procede
    $select["cheques"] = $db->query(sCheques($numch));
    $fetchAssoc["cheques"] = $db->fetchAssoc($select["cheques"]);     
    if ($db->numRows($select["cheques"]) == 0) {
        $select["saldob"] = $db->query($sSaldob);
        if ($db->numRows($select["saldob"]) == 0) {
            $vSaldo = 0;
            $nvalor = ($vSaldo - $tot);
            $db->query(iSaldob($nvalor));
        } else {
            $fetchAssoc["saldob"] = $db->fetchAssoc($select["saldob"]);     
            $vSaldo = $fetchAssoc["saldob"]["salb_saldo"];
            $nvalor = ($vSaldo) - $tot;
            $db->query(uSaldob($nvalor));
        }       
        $db->query(iCheques($numch,$tot,$nomch,$concepto));
        $db->query(iMovAcu($numch,$tot,$nomch,$concepto));
        $db->query(iPolizas($numch,$tot,$concepto));
        $db->query(uAnti($cod,$numch));

        // Para el detalle de la cuenta de sueldos
        $select["cuentas"] = $db->query(sCuentas($ctasuel));
        $fetchAssoc["cuentas"] = $db->fetchAssoc($select["cuentas"]);     
        if ($db->numRows($select["cuentas"]) == 0) {
            $ctanom="Cuenta No definida";
        } else {
            $ctanom=$fetchAssoc["cuentas"]["cta_nom"];
        }
        $debe=$tot;
        $haber=0;
        $db->query(iPoli_det($numch,$ctasuel,$ctanom,$debe,$haber));
        $cta = $ctasuel;
        while (!empty($cta)) {
            $select["cuentas"] = $db->query(sCuentas($cta));
            $select["cierres"] = $db->query(sCierres($cta, $numAnio, $numMes));

            $fetchAssoc["cuentas"] = $db->fetchAssoc($select["cuentas"]);
            $ctaActa = trim($fetchAssoc["cuentas"]["cta_acta"]);

            if ($db->numRows($select["cierres"]) > 0) {
                $fetchAssoc["cierres"] = $db->fetchAssoc($select["cierres"]);
                $mdebe=$fetchAssoc["cierres"]["cie_mdebe"]+$debe;
                $mhaber=$fetchAssoc["cierres"]["cie_mhaber"]+$haber;
                $db->query(uCierres($cta, $numAnio, $numMes, $mdebe, $mhaber));
            } else {
                $mdebe=$debe;
                $mhaber=$haber;
                $db->query(iCierres($cta, $numAnio, $numMes, $mdebe, $mhaber));
            }
            $cta = $ctaActa;
        }
        // Aqui termina el proceso para actualizar la cuenta de sueldos


        // Para el detalle de la cuenta del banco
        $select["cuentas"] = $db->query(sCuentas($ctaBanco));
        $fetchAssoc["cuentas"] = $db->fetchAssoc($select["cuentas"]);     
        if ($db->numRows($select["cuentas"]) == 0) {
            $ctanom="Cuenta No definida";
        } else {
            $ctanom=$fetchAssoc["cuentas"]["cta_nom"];;
        }
        $debe=0;
        $haber=$tot;
        $db->query(iPoli_det($numch,$ctaBanco,$ctanom,$debe,$haber));
        $cta = $ctaBanco;
        while (!empty($cta)) {
            $select["cuentas"] = $db->query(sCuentas($cta));
            $select["cierres"] = $db->query(sCierres($cta, $numAnio, $numMes));

            $fetchAssoc["cuentas"] = $db->fetchAssoc($select["cuentas"]);
            $ctaActa = trim($fetchAssoc["cuentas"]["cta_acta"]);

            if ($db->numRows($select["cierres"]) > 0) {
                $fetchAssoc["cierres"] = $db->fetchAssoc($select["cierres"]);
                $mdebe=$fetchAssoc["cierres"]["cie_mdebe"]+$debe;
                $mhaber=$fetchAssoc["cierres"]["cie_mhaber"]+$haber;
                $db->query(uCierres($cta, $numAnio, $numMes, $mdebe, $mhaber));
            } else {
                $mdebe=$debe;
                $mhaber=$haber;
                $db->query(iCierres($cta, $numAnio, $numMes, $mdebe, $mhaber));
            }
            $cta = $ctaActa;
        }
        // Aqui termina el proceso para actualizar la cuenta de bancos

        $body = array(
            $rec["ant_cod"],
            trim($rec["mae_nomch"]),
            $numch,        
            number_format($rec["ant_liqrec"], 2, '.', ','),
        );
        $pdf->RowBorderHidden($body, $lineHeight);

        $db->iEx($func->iBitacora(utf8_decode("Se creó Cheque No.: $numch  Banco: $selBan Fecha: $dtFec Usuario: ").$usuNom, $bitMod, $bitForm));

        $totpag+=$rec["ant_liqrec"];
        $numch+=1;
    } else {
        $todossn='N';
        $nogenerados=$nogenerados.$rec["ant_cod"].", ";
    }
}
$pdf->line($pdf->GetX()+10, $pdf->GetY(), 20, $pdf->GetY());
if ($numch>$numchini) {
    $numchfin=$numch-1;
    $body = array(
        "",
        "",
        "   TOTAL",        
        number_format($totpag, 2, '.', ','),        
    );
    $pdf->RowBorderHidden($body, $lineHeight);
} else {
    $numchfin=$numch;
    $body = array(
        "",
        "**** NO SE ENCONTRARON CHEQUES PARA IMPRIMIR EN ESTA PLANILLA ****",
        "",        
        "",        
    );
    $pdf->RowBorderHidden($body, $lineHeight);
}
if ($todossn=='N') {
    $body = array(
        "",
        "CHEQUES NO GENERADOS, CODIGO(S): ".$nogenerados,
        "",        
        "",        
    );
    $pdf->RowBorderHidden($body, $lineHeight);
}
// Para cambiar el correlativo de cheques
$db->query(uBancos($numch));

$pdf->Output(utf8_decode("Listachequesant").".pdf","I");
$db->close();
?>