<?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 = "cnt3010";
$bitMod = "cnt";
$empCod = $_SESSION['empCod'];
$usuCod = utf8_decode($_SESSION['usuCod']);
$usuNom = utf8_decode($_SESSION['usuNom']);

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

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

function consultar() {
	global $empCod;

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

	$func = new functions();

	$selTipoCod=$_POST['selTipoCod'];
	$numPol=$_POST['numPol'];
}


function guardar() {
	global $empCod, $usuNom, $bitMod, $bitForm;

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

	$func = new functions();

	$selTipoCod=$_POST['selTipoCod'];
	$dtFecPol=$_POST['dtFecPol'];
	$numPol=$_POST['numPol'];
	$txtStat="";
	$AnoT=date("Y", strtotime($_SESSION['empFtrab']));
	$MesT=date("m", strtotime($_SESSION['empFtrab']));
	$numBan=0;
	$txtCon="POLIZA DE CIERRE CUENTAS DE BALANCE";
	$valDebead=0;
	$valHaberad=0;
	$txtGru="";
	
	# QUERYS 
	$sCierres = "SELECT 
                c.cie_mes,
                cta.cta_niv,
                cta.cta_con,
                TRIM(c.cie_cta) AS cie_cta,
                TRIM(cta.cta_nom) AS cta_nom,
                TRIM(cta.cta_acta) AS cta_acta,
                (0) AS salIni,
                c.cie_mdebe,
                c.cie_mhaber,
                (SUM(cie_mdebe)-SUM(cie_mhaber)) AS salMes
            FROM cierres c 
            INNER JOIN cuentas cta ON c.cie_emp=cta.cta_emp AND c.cie_cta=cta.cta
            WHERE c.cie_emp='$empCod' AND c.cie_ano=$AnoT AND c.cie_mes<=$MesT AND cta.cta_con='N' 
            GROUP BY c.cie_cta, cie_mes=$MesT";

	$dPoliFin = "DELETE FROM polifin WHERE polf_emp='$empCod' AND polf_ano='$AnoT'";
	
	function iPoliFin($numPol,$txtCta,$txtCtan,$valDebe,$valHaber,$dtFecPol,$selTipoCod,$txtStat,$AnoT,$numBan,$txtCon) {
		global $empCod;
		return "INSERT INTO polifin(polf_emp, polf_ano, polf_fec, polf_ban, polf_tipo, polf_num, polf_con,polf_stat,polf_cta,polf_ctan,polf_debe,polf_haber) VALUES ('$empCod','$AnoT','$dtFecPol','$numBan','$selTipoCod','$numPol','$txtCon','$txtStat','$txtCta','$txtCtan','$valDebe','$valHaber')"; 
		}
	
	# EJECUCION DE QUERYS 
	$db = new dbExec();
	
	$totDebe=0;
	$totHaber=0;
	$salIni=0;
	$camNum=1;
	$salAct=0;

	$db->iEx($dPoliFin);

	$select["cierres"] = $db->query($sCierres);
	$arrayCie=$db->fetchAll($select["cierres"]);

	$i=0;
	foreach ($arrayCie as $rec) {
		$rec["salIni"]=$salIni;
		$i++;
		if ($rec["cie_mes"]!=$MesT) {
			$salIni=$rec["salMes"];

			if ($i<sizeof($arrayCie)) {
				if ($arrayCie[$i]["cie_cta"]==$rec["cie_cta"]){
					continue;
				}
			}
			$rec["salIni"]=$salIni;
		}

		$txtCta = $rec["cie_cta"];
		$txtCtan = $rec["cta_nom"];

		if ($rec["salIni"]!=0 || $rec["cie_mdebe"]!=0 || $rec["cie_mhaber"]!=0) {

			// MES NO TRABAJADO
			if ($rec["cie_mes"]!=$MesT) {
				$rec["cie_mdebe"]=0;
				$rec["cie_mhaber"]=0;
			}
       		$salAct=($rec["salIni"]+$rec["cie_mdebe"])-$rec["cie_mhaber"];

			if ($salAct>0) {
				$valDebe=0;
				$valHaber=$salAct;
			} else {
				$valHaber=0;
				$valDebe=($salAct*(-1));
			}

			if ($rec["cie_cta"][0] < "4") {
       			$totDebe += $valDebe;
       			$totHaber += $valHaber;
        	}  		
			if ($rec["cie_cta"][0] >= "4" && $camNum == 1) {
       			$numPol++;
       			$camNum=2;
				$txtCon="POLIZA DE CIERRE CUENTAS DE RESULTADOS";
        	} 

			$db->iEx(iPoliFin($numPol,$txtCta,$txtCtan,$valDebe,$valHaber,$dtFecPol,$selTipoCod,$txtStat,$AnoT,$numBan,$txtCon)); 

			$salIni=0;
		}
		
    }

    # Para poner avisos, si la variable error es verdadero lo mostrara.
	/*if ($totDebe!=$totHaber) {
		$db->dEx($dPoliFin);

		$resp['msgWarning'] = array(
			'error'=>true,
			'msg'=>array(
				'title'=>'Poliza Descuadrada',
				'text'=>'Su partida esta descuadrada, seguramente le falta registrar la poliza de regularizacion de la perdida o ganancia, o alguna cuenta mal asignada, revise y vuelva a intentar'
			),
		);
	} else { */
		$resp = $db->iEx($func->iBitacora(utf8_decode("Se Genero la Poliza de Cierre del A«Šo $AnoT Usuario: ").$usuNom, $bitMod, $bitForm));
		$resp['msgWarning'] = array(
			'error'=>false,
		);
	//}
	
	$db->close();

	return json_encode($resp);
}

?>