<?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 = "cnt3060";
$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();
}


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

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

	$func = new functions();

	$AnoTi=date("Y", strtotime($_SESSION['empFinie']));
	$MesTi=date("m", strtotime($_SESSION['empFinie']));
	$txtStat="C";
	$BanCod=0;
	$TipoPi="001";

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

	$sPoliini = "SELECT * FROM poliini WHERE poli_emp='$empCod' AND poli_ano='$AnoTi'";

	function sPolizas($BanCod,$FecPoli,$TipoPi,$numPoli) { 
		global $empCod;
		return "SELECT * FROM polizas WHERE pol_emp='$empCod' AND pol_fec='$FecPoli' AND pol_ban='$BanCod' AND pol_tipo='$TipoPi' AND pol_num='$numPoli'";
	}	

	$uPoliini = "UPDATE poliini SET poli_stat='A' WHERE poli_emp='$empCod' AND poli_ano='$AnoTi'";

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

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

	function uCierres($ctac, $AnoTi, $MesTi, $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=$AnoTi AND cie_mes=$MesTi AND cie_cta='$ctac'";
	}

	function iCierres($ctac, $AnoTi, $MesTi, $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',$AnoTi,$MesTi,'$ctac',$mdebe,$mhaber,'$usuNom')";	    
	}

	function iPolizas($BanCod,$FecPoli,$TipoPi,$numPoli,$Concep,$dtGrabado) {
		global $empCod, $usuNom;
		return "INSERT INTO polizas (pol_emp, pol_fec, pol_ban, pol_tipo, pol_num, pol_con,pol_ulcam, pol_tipoi, pol_nit, pol_grabado) VALUES ('$empCod','$FecPoli','$BanCod','$TipoPi','$numPoli','$Concep','$usuNom','','','$dtGrabado')"; 
		}

	function iPoliDet($BanCod,$FecPoli,$TipoPi,$numPoli,$Cta,$Ctan,$valDebe,$valHaber) {
		global $empCod;
		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','$FecPoli','$BanCod','$TipoPi','$numPoli','$Cta','$Ctan','$valDebe','$valHaber', '', '')"; 
		}
	

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

	$totDebe=0;
	$totHaber=0;
	$salIni=0;
	$camNum=1;
	$salAct=0;
    $yagen=false;
    $yaimp=true;
    
	$select["poliini"] = $db->query($sPoliini);

	while ($recpf = $db->fetchAssoc($select['poliini'])) {
   		if ($recpf["poli_stat"] == "A") {
       		$yagen=true;
       		continue;
   		}
   		if ($recpf["poli_stat"]!="I" && $recpf["poli_stat"]!="A") {
       		$yaimp=false;
       		continue;
   		}

		$numPoli=$recpf["poli_num"];
		$FecPoli=$recpf["poli_fec"];
   		$Concep=$recpf["poli_con"];
   		$Cta=$recpf["poli_cta"];
   		$Ctan=$recpf["poli_ctan"];
		$valDebe=$recpf["poli_debe"];
		$valHaber=$recpf["poli_haber"];
   		$ctac=$recpf["poli_cta"];

		// PARA APLICAR LOS CIERRES
		while (!empty($ctac)) {
			$select["cuentas"] = $db->query(sCuentas($ctac));
			$select["cierres"] = $db->query(sCierres($ctac, $AnoTi, $MesTi));

			$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"]+$valDebe;
				$mhaber=$fetchAssoc["cierres"]["cie_mhaber"]+$valHaber;

				$db->query(uCierres($ctac, $AnoTi, $MesTi, $mdebe, $mhaber));
			} else {
				$mdebe=$valDebe;
				$mhaber=$valHaber;

				$db->query(iCierres($ctac, $AnoTi, $MesTi, $mdebe, $mhaber));
			}
			$ctac = $ctaActa;
		}

		$select["polizas"] = $db->query(sPolizas($BanCod,$FecPoli,$TipoPi,$numPoli));
		if ($db->numRows($select["polizas"]) == 0) {
			$db->query(iPolizas($BanCod,$FecPoli,$TipoPi,$numPoli,$Concep,$dtGrabado));
		}		

		$db->query(iPolidet($BanCod,$FecPoli,$TipoPi,$numPoli,$Cta,$Ctan,$valDebe,$valHaber));
		
	}


    # Para poner avisos, si la variable error es verdadero lo mostrara.
	$resp['msgWarning'] = array(
		'error'=>false,
	);

	if (!$yagen  && $yaimp == true) {
		$db->uEx($uPoliini);
		$db->iEx($func->iBitacora(utf8_decode("Se Mayorizo la poliza de apertura correspondiente a $AnoTi Usuario: ").$usuNom, $bitMod, $bitForm));

		$resp['msgWarning'] = array(
			'error'=>false,
			'msg'=>array(
				'type'=>'success',
				'title'=>'FINALIZO MAYORIZACION',
				'text'=>'Se mayorizo la poliza de apertura, puede continuar',
				'showConfirmButton'=>'Aceptar'
			),
		); 
	}

	if ($yagen) {
		$resp['msgWarning'] = array(
			'error'=>true,
			'msg'=>array(
				'title'=>'POLIZA YA PROCESADA',
				'text'=>'Lo siento, esta poliza  ya fue procesada previamente, no se puede hacer el proceso, sin que antes borre la poliza de apertura que genero y vuelva a intentarlo'
			),
		);
    }
	if (!$yaimp) {
		$resp['msgWarning'] = array(
			'error'=>true,
			'msg'=>array(
				'title'=>'FALTA IMPRIMIR POLIZA DE APERTURA',
				'text'=>'Antes de realizar este proceso, debe imprimir la poliza de apertura, hagalo y vuelva a intentarlo'
			),
		);
    }

	
	$db->close();

	//$resp["prueba"] = $AnoT;
	//$resp["prueba2"] = $valHaberi;

	return json_encode($resp);
}

?>