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

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

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

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

	$func = new functions();

	$numAno=$_POST['numAno'];

	$uCierres0 = "UPDATE cierres SET cie_mdebe=0, cie_mhaber=0 WHERE cie_emp='$empCod' AND cie_ano=$numAno";

	$sPoliDet = "SELECT TRIM(pd.pold_cta) AS pold_cta, SUM(pd.pold_debe) AS pold_sumdebe, SUM(pd.pold_haber) AS pold_sumhaber, year(pd.pold_fec) AS pold_ano, month(pd.pold_fec) AS pold_mes 
	    FROM poli_det pd WHERE pd.pold_emp='$empCod' AND YEAR(pd.pold_fec)=$numAno 
	    GROUP BY pd.pold_emp, pd.pold_cta, year(pd.pold_fec), month(pd.pold_fec) ORDER BY pold_emp,pold_cta,pold_ano,pold_mes";

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

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

	function uCierres($cta, $numAno, $selMesCod, $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=$numAno AND cie_mes=$selMesCod AND cie_cta='$cta'";
	}

	function iCierres($cta, $numAno, $selMesCod, $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',$numAno,$selMesCod,'$cta',$mdebe,$mhaber,'$usuNom')";	    
	}
	
	# EJECUCION DE QUERYS 
	$db = new dbExec();

	$select["poli_det"]=$db->query($sPoliDet);

	$db->uEx($uCierres0);
	// PARA APLICAR LOS CIERRES
	while ($rec = $db->fetchAssoc($select["poli_det"])) {
		$cta = $rec["pold_cta"];
		$selMesCod = $rec["pold_mes"];
		while (!empty($cta)) {
			$select["cuentas"] = $db->query(sCuentas($cta));
			$select["cierres"] = $db->query(sCierres($cta, $numAno, $selMesCod));

			$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"]+$rec["pold_sumdebe"];
				$mhaber=$fetchAssoc["cierres"]["cie_mhaber"]+$rec["pold_sumhaber"];

				$db->query(uCierres($cta, $numAno, $selMesCod, $mdebe, $mhaber));
			} else {
				$mdebe=$rec["pold_sumdebe"];
				$mhaber=$rec["pold_sumhaber"];
				$db->query(iCierres($cta, $numAno, $selMesCod, $mdebe, $mhaber));
			}
			$cta = $ctaActa;
		}
	}

	$resp = $db->iEx($func->iBitacora(utf8_decode("Revisó el año $numAno Usuario: ").$usuNom, $bitMod, $bitForm));

	$db->close();

	return json_encode($resp);
}

?>