<?php
include_once('../../../php/sessionStart.php');
include_once('../../../php/db/dbExec.php');
include_once('../../../php/functions.php');
include_once('../../../php/timezone.php');
include_once('../../../php/privileges.php');
include_once('../../../php/maxExecTime.php');

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

switch ($_POST['action']) {
	case 'consultarMae':
		echo consultarMae();
		break;

	case 'consultarCorr':
		echo consultarCorr();
		break;

	case 'generar':
		echo generar();
		break;

	case 'borrar':
		echo borrar();
		break;
}


function consultarMae() {
	global $empCod, $usuNom;

	$func = new functions();

	$numCod=$_POST['numCod'];

	# QUERYS

	$sMaestro = "SELECT *, TRIM(mae.mae_nom) AS mae_nom, TRIM(mae.mae_ape) AS mae_ape,
				TRIM(tpu.tpu_nom) AS tpu_nom
				FROM maestro mae
 				LEFT JOIN tpuesto tpu ON mae.mae_tpue = tpu.tpu_cod 
				WHERE mae_emp='$empCod' AND mae_cod='$numCod'";

	# EJECUCION DE QUERYS
	$db = new dbExec();
	$resp["maestro"] = $db->sFetchAssoc($sMaestro);
	$db->close();

	$func = new functions();
	return $func->jsonEncodeArray($resp, 'maestro');
}

function consultarCorr() {
	global $empCod, $usuNom;

	$func = new functions();
	$selBanCod=$_POST['selBanCod'];
	# QUERYS
	$sBancos = "SELECT ban_mon,ban_corr FROM bancos WHERE ban_emp='$empCod' AND ban_num='$selBanCod'";
	
	# EJECUCION DE QUERYS
	$db = new dbExec();
	$resp["bancos"] = $db->sFetchAssoc($sBancos);
	$db->close();

	$func = new functions();
	return $func->jsonEncodeArray($resp, "bancos");
}

function generar() {
	global $empCod, $usuNom, $bitMod, $bitForm, $numCod, $tipop, $dtGrabado, $selBan, $numCh, $dtFing, $dtFsal, $dtFec, $Banctac;

	$priv = new privileges();
	if (!$priv->modify($_SESSION['usuPriv'])) {
		return json_encode($priv->rErrorModify());
	}

	$func = new functions();

	$numCod=$_POST['numCod'];
	$txtNom=utf8_decode($_POST['txtNom']);
	$dtFec=$_POST['dtFec'];
	$dtFing=$_POST['dtFing'];
	$dtFsal=$_POST['dtFsal'];
	$selBan=$_POST['selBan'];
	$numCh=$_POST['numCh'];
	$Banctac=$_POST['Banctac'];
	$tipop="004";

	$ctainde="2310103";

    $dtGrabado=date("Y-m-d H:i:s", STRTOTIME(date('h:i:sa')));

    $anosal=date("Y", strtotime($dtFsal));
    $messal=date("n", strtotime($dtFsal));
    $diasal=date("d", strtotime($dtFsal));

    $anoing=date("Y", strtotime($dtFing));
    $mesing=date("n", strtotime($dtFing));
    $diaing=date("d", strtotime($dtFing));

	$ano=date("Y", strtotime($dtFec));
	$mes=date("n", strtotime($dtFec));
	$dia=date("d", strtotime($dtFec));

	$anoini=$anosal-1;
	$mesini=$messal;

    $numAnio=date("Y", strtotime($dtFec));
    $numMes=date("n", strtotime($dtFec));

/*	
	$fecini1=$anoant."-07-01";
	$fecfin1=$numAno."-06-30";
	$fini = date("Y-m-d", strtotime($fecini1));
	$ffin = date("Y-m-d", strtotime($fecfin1));

	$fecdic1=$anoant."-12-01";
	$fecdic2=$anoant."-12-16";
*/
	# QUERYS PARA UN REGISTRO
	function sNomper($ano,$mes) { 
	    global $empCod, $usuNom,  $numCod;
	    return "SELECT np_emp,np_cod,np_snom, SUM(np_sord) AS np_ssord, SUM((np_boni-125)) AS np_sboni, SUM(np_bonii) AS np_sbonii, SUM(np_otrp) AS np_sotrp, SUM(np_dtra+np_dvaca) AS  np_sdtra, SUM(np_dsusi) AS np_sdsusi,
	        SUM(np_sext) AS np_ssext, SUM(np_vaca) AS np_svaca
	        FROM nomper np
	        WHERE np_emp='$empCod' AND np_cod='$numCod' AND year(np_ffin)='$ano' AND month(np_ffin)='$mes'
	        GROUP BY np_emp,np_cod,year(np_ffin),month(np_ffin)";
	}

	function sMes($mes) { 
	    global $empCod, $numCod;
	    return "SELECT *, TRIM(m.mes_nom) AS mes_nom FROM meses m WHERE mes_cod='$mes'";
	}

	$sMaestro = "SELECT *, mae.mae_cod, TRIM(mae.mae_nom) AS mae_nom, TRIM(mae.mae_ape) AS mae_ape, TRIM(mae.mae_dpi) AS mae_dpi,
	        TRIM(pue.tpu_nom) AS tpu_nom, TRIM(dep.dep_nom) AS dep_nom 
	        FROM maestro mae LEFT JOIN tpuesto pue ON mae.mae_tpue=pue.tpu_cod 
	        LEFT JOIN dep dep ON mae.mae_dep=dep.dep_cod 
	        WHERE mae_emp='$empCod' AND mae_cod='$numCod'";

	$sLiqui = "SELECT SUM(liq_inde) AS liq_antii FROM liquidacion WHERE liq_emp='$empCod' AND liq_cod='$numCod' GROUP BY liq_emp,liq_cod";


	$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 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, pol_tipoi, pol_nit) 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,pold_tipoi,pold_nit) 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')";      
	}

	function iLiquidacion($liq) { 
	    global $empCod, $usuNom, $numCod, $dtFing, $dtFsal, $dtFec, $selBan, $numCh;
	    return "INSERT INTO liquidacion(liq_emp, liq_cod, liq_del, liq_al, liq_fec, liq_inde, liq_b14, liq_agui, liq_vaca, liq_tot, liq_ulcam, liq_chban, liq_chnum, liq_chfec) VALUES('$empCod', '$numCod', '$dtFing', '$dtFsal', '$dtFec', '$liq', 0, 0, 0, '$liq', '$usuNom', '$selBan', '$numCh', '$dtFec')";
	}
	function uLiquidacion($liq) { 
	    global $empCod, $usuNom, $numCod, $dtFing, $dtFsal, $dtFec, $selBan, $numCh;
		return "UPDATE liquidacion SET liq_fec='$dtFec', liq_inde='$liq', liq_tot='$liq', liq_ulcam='$usuNom', liq_chban='$selBan', liq_chnum='$numCh', liq_chfec='$dtFec' 
		WHERE liq_emp='$empCod' AND liq_cod='$numCod' AND liq_del='$dtFing' AND liq_al='$dtFsal'";
	}

	$sLiquidacion = "SELECT * FROM liquidacion WHERE liq_emp='$empCod' AND liq_cod='$numCod' AND liq_del='$dtFing' AND liq_al='$dtFsal'";

	# EJECUCION DE QUERYS 
	$db = new dbExec();

	$select["liquidacion"] = $db->query($sLiqui);
	$liq = $db->fetchAssoc($select['liquidacion']);
	if ($db->numRows($select["liquidacion"]) == 0) {
	    $antii=0;
	} else {
	    $antii=$liq["liq_antii"];
	}

	$select["meses"] = $db->query(sMes($messal));
	$fetchAssoc["meses"] = $db->fetchAssoc($select["meses"]);
	$mesnomsal=$fetchAssoc["meses"]["mes_nom"];

	$select["meses"] = $db->query(sMes($mesing));
	$fetchAssoc["meses"] = $db->fetchAssoc($select["meses"]);
	$mesnoming=$fetchAssoc["meses"]["mes_nom"];

	$select["meses"] = $db->query(sMes($mes));
	$fetchAssoc["meses"] = $db->fetchAssoc($select["meses"]);
	$mesnom=$fetchAssoc["meses"]["mes_nom"];

	$letfsal=$diasal." de ".$mesnomsal." de ".$anosal;
	$letfing=$diaing." de ".$mesnoming." de ".$anoing;
	$letfec=$dia." de ".$mesnom." de ".$ano;


	$select["maestro"] = $db->query($sMaestro);
	$mae = $db->fetchAssoc($select["maestro"]);
	$sueldo=$mae["mae_sueldo"];
	$boniley=$mae["mae_bonil"]-250;
	$dinde = $func->dateDiff($dtFing,$dtFsal);
	$dinde = $dinde->format('%a');    
	$dinde = $dinde+1;

	$anocont=$anoini;
	$mescont=$mesini;
	$mes1=0;
	$mes2=0;
	$mes3=0;
	$mes4=0;
	$mes5=0;
	$mes6=0;
	$dproi=0;
	for ($q=1; $q < 13; $q++) { 

	    $select["nomper"] = $db->query(sNomper($anocont,$mescont));
	    $rec = $db->fetchAssoc($select['nomper']);
	    if ($db->numRows($select["nomper"]) == 0) {
	        $sord = 0;
	        $boni = 0;
	        $bonii = 0;
	        $sext = 0;
	        $vaca = 0;
	        $otrp = 0;
	        $dias=0;
	    } else {
	        $sord = $rec["np_ssord"];
	        $boni = $rec["np_sboni"];
	        $bonii = $rec["np_sbonii"];
	        $sext = $rec["np_ssext"];
	        $vaca = $rec["np_svaca"];
	        $otrp = $rec["np_sotrp"];
	        $dias = $rec["np_sdtra"];
	    }
	    if ($dias > 30) {
	        $dias = 30;
	    }
	    if ($q>=7) {
	       $dproi+=$dias;
	    }
	    switch ($q){
	      case 7:
	        $mes1 = $sord+$boni+$bonii+$sext+$vaca;
	        break;
	      case 8:
	        $mes2 = $sord+$boni+$bonii+$sext+$vaca;
	        break;
	      case 9:
	        $mes3 = $sord+$boni+$bonii+$sext+$vaca;
	        break;
	      case 10:
	        $mes4 = $sord+$boni+$bonii+$sext+$vaca;
	        break;
	      case 11:
	        $mes5 = $sord+$boni+$bonii+$sext+$vaca;
	        break;
	      case 12:
	        $mes6 = $sord+$boni+$bonii+$sext+$vaca;
	        break;
	    }
	    if ($mescont >= 12) {
	        $anocont+= 1;
	        $mescont=1;
	    } else{
	        $mescont+=1;
	    }
	}
	$sumdev=$mes1+$mes2+$mes3+$mes4+$mes5+$mes6;

	if ($dinde>182) {
	    $aguii=round((($sueldo+$boniley)/2),2);
	    $bonoi=round((($sueldo+$boniley)/2),2);
	} else {
	    $aguii=0;
	    $bonoi=0;
	}

	$inde1=$sumdev+$aguii+$bonoi;
	if ($dproi==0) {
	   $promi=0;
	} else {
	   $promi=round((($inde1/$dproi)*30),2);
	}
	if ($dproi==0) {
	   $inde=0;
	} else {
	   $inde=round((($promi*$dinde)/365),2);
	}

	if ($dproi=0) {
	    $inde=0;
	}

	$liq=$inde-$antii;

	//
	// Inicia rutina para registrar el cheque en conta y bancos
    $concepto="Anticipo de Liquidacion correspondiente del ".$dtFing." al ".$dtFsal."  Empleado: ".$txtNom;
    // 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 - $liq);
            $db->query(iSaldob($nvalor));
        } else {
            $fetchAssoc["saldob"] = $db->fetchAssoc($select["saldob"]);     
            $vSaldo = $fetchAssoc["saldob"]["salb_saldo"];
            $nvalor = ($vSaldo) - $liq;
            $db->query(uSaldob($nvalor));
        }       
        $db->query(iCheques($numCh,$liq,$txtNom,$concepto));
        $db->query(iMovAcu($numCh,$liq,$txtNom,$concepto));
        $db->query(iPolizas($numCh,$liq,$concepto));

        // Para el detalle de la cuenta de sueldos
        $select["cuentas"] = $db->query(sCuentas($ctainde));
        $fetchAssoc["cuentas"] = $db->fetchAssoc($select["cuentas"]);     
        if ($db->numRows($select["cuentas"]) == 0) {
            $ctanom="Cuenta No definida";
        } else {
            $ctanom=$fetchAssoc["cuentas"]["cta_nom"];
        }
        $debe=$liq;
        $haber=0;
        $db->query(iPoli_det($numCh,$ctainde,$ctanom,$debe,$haber));
        $cta = $ctainde;
        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($Banctac));
        $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=$liq;
        $db->query(iPoli_det($numCh,$Banctac,$ctanom,$debe,$haber));
        $cta = $Banctac;
        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;
        }
        $nuevocorr=$numCh+1;
		$db->query(uBancos($nuevocorr));
        // Aqui termina el proceso para actualizar la cuenta de bancos y comienza para registrar la liquidacion generada
		$select["liquidacion"] = $db->query($sLiquidacion);
		$fetchAssoc["liquidacion"] = $db->fetchAssoc($select["liquidacion"]);
		if ($db->numRows($select["liquidacion"]) == 0) {
			$resp = $db->iEx(iLiquidacion($liq));
		} else {
			$resp = $db->uEx(uLiquidacion($liq));
		}
	}	

	$db->iEx($func->iBitacora(utf8_decode("Se Genero Anticipo de Indemnizacion del:  $dtFing al $dtFsal Empleado $numCod  $txtNom Usuario: ").$usuNom, $bitMod, $bitForm));

	$db->close();

	return json_encode($resp);
}

?>