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

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

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

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

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

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

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

	$func = new functions();

	$tipoCod="002.01";
	$numNum=$_POST['numNum'];
	$selBanCod=$_POST['selBanCod'];

	# QUERYS
	$sMovi = "SELECT * FROM movi WHERE mov_emp='$empCod' AND mov_ban='$selBanCod' AND mov_tipo='$tipoCod' AND mov_num='$numNum'";
	$sPoli_det = "SELECT *, TRIM(pold_cta) AS pold_cta FROM poli_det WHERE pold_emp='$empCod' AND pold_ban='$selBanCod' AND pold_tipo='$tipoCod' AND pold_num='$numNum'";

	# EJECUCION DE QUERYS
	$db = new dbExec();
	$resp = $db->sEx($sMovi, "movi");
	$resp["poli_det"] = $db->sFetchAll($sPoli_det);
	$db->close();

	$func = new functions();
	//$resp["asdf"]=$sPoli_det;
	//return $func->jsonEncodeArrayEach($resp, array('cheques', 'poli_det'));
	return $func->jsonEncodeArray($resp, 'movi');
}


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

	$func = new functions();
	$dtFec=$_POST['dtFec'];
	$nAnio=date("Y", strtotime($dtFec));
	$nMes=date("n", strtotime($dtFec));

	# QUERYS
	$sCiemes = "SELECT ciem_stat FROM ciemes WHERE ciem_emp='$empCod' AND ciem_ano=$nAnio AND ciem_mes=$nMes";
	# EJECUCION DE QUERYS
	$db = new dbExec();
	$resp["ciemes"] = $db->sfetchAssoc($sCiemes);
	$db->close();
	$func = new functions();
	return $func->jsonEncodeArray($resp, "ciemes");
}

function consultarCta() {
	global $empCod;
	$txtCod=utf8_decode($_POST['txtCod']);

	# QUERYS
	$sCuentas = "SELECT c.*, TRIM(cta) AS cta, TRIM(cta_nom) AS cta_nom
				FROM cuentas c WHERE cta='$txtCod' AND cta_emp='$empCod'";
	
	# EJECUCION DE QUERYS
	$db = new dbExec();
	$resp = $db->sEx($sCuentas, "cuentas");
	$db->close();

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


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

	$func = new functions();

	$numNum=$_POST['numNum'];
	$selTipoCod="002.01";
	$totant=$_POST['totant'];	
	$selBanCod=$_POST['selBanCod'];
	$dtFec=$_POST['dtFec'];
	$jsonPolAnt=json_decode($_POST['tblPolAnt']);
	$numAnio=date("Y", strtotime($dtFec));
	$numMes=date("n", strtotime($dtFec));
	$numAnioAnt=date("Y", strtotime($dtFec));
	$numMesAnt=date("n", strtotime($dtFec));

	# QUERYS
	$sMovicc = "SELECT * FROM movicc WHERE mov_emp='$empCod' AND mov_tipo='$selTipoCod' AND mov_ban='$selBanCod' AND mov_num='$numNum'";
	$dMovicc = "DELETE FROM movicc WHERE mov_emp='$empCod' AND mov_tipo='$selTipoCod' AND mov_ban='$selBanCod' AND mov_num='$numNum'";
	$uAnticpc = "UPDATE anticpc SET ant_stat='P', ant_tipo='', ant_ban=0, ant_ndoc=0 WHERE ant_emp='$empCod' AND ant_tipo='$selTipoCod' AND ant_ban='$selBanCod' AND ant_ndoc='$numNum'";

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

	$dMovi = "DELETE FROM movi WHERE mov_emp='$empCod' AND mov_ban='$selBanCod' AND mov_tipo='$selTipoCod' AND mov_num='$numNum'";

	$dMovAcu = "DELETE FROM mov_acu WHERE ma_emp='$empCod' AND ma_ban='$selBanCod' AND ma_tipo='$selTipoCod' AND ma_num='$numNum'";

	$dPolizas = "DELETE FROM polizas WHERE pol_emp='$empCod' AND  pol_ban='$selBanCod' AND pol_tipo='$selTipoCod' AND pol_num='$numNum'";

	$dPoli_det = "DELETE FROM poli_det WHERE pold_emp='$empCod' AND pold_ban='$selBanCod' AND pold_tipo='$selTipoCod' AND pold_num='$numNum'";

	function sDoctoscc($tipod, $seried, $codcli, $numd) { 
		global $empCod, $usuNom;
		return "SELECT dc_emp, dc_codp, dc_serie,dc_num, dc_abo FROM doctoscc WHERE dc_emp='$empCod' AND dc_codp='$codcli' AND dc_tipo='$tipod' AND dc_serie='$seried' AND dc_num='$numd'";
	}
	function uDoctoscc($tipod, $seried, $codcli, $numd, $nvalorabo) { 
		global $empCod, $usuNom;
		return "UPDATE doctoscc SET dc_abo=$nvalorabo WHERE dc_emp='$empCod' AND dc_codp='$codcli' AND dc_tipo='$tipod' AND dc_serie='$seried' AND dc_num='$numd'";
	}

	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 uSaldob($nvalor) { 
		global $empCod, $usuNom, $selBanCod;
		return "UPDATE saldob SET salb_saldo=$nvalor WHERE salb_emp='$empCod' AND salb_num='$selBanCod'";
	}

	# EJECUCION DE QUERYS 
	$db = new dbExec();
	$resp = $db->dEx($dPolizas);
	$db->dEx($dMovi);
	$db->dEx($dMovAcu);
	$db->dEx($dPoli_det);

	// PARA REVERTIR LOS CIERRES
	foreach ($jsonPolAnt as $obj) {
		$cta = $obj->pold_cta;
		$numAnioAnt=date("Y", strtotime($obj->pold_fec));
		$numMesAnt=date("n", strtotime($obj->pold_fec));
		while (!empty($cta)) {
			$select["cuentas"] = $db->query(sCuentas($cta));
			$select["cierres"] = $db->query(sCierres($cta, $numAnioAnt, $numMesAnt));

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

			$fetchAssoc["cierres"] = $db->fetchAssoc($select["cierres"]);
			$mdebe=$fetchAssoc["cierres"]["cie_mdebe"]-$obj->pold_debe;
			$mhaber=$fetchAssoc["cierres"]["cie_mhaber"]-$obj->pold_haber;

			$db->query(uCierres($cta, $numAnioAnt, $numMesAnt, $mdebe, $mhaber));

			$cta = $ctaActa;
		}
	}

	#Para Actualizar el saldo del banco
	$select["saldob"] = $db->query($sSaldob);
	if ($db->numRows($select["saldob"]) == 0) {
	} else {
		$fetchAssoc["saldob"] = $db->fetchAssoc($select["saldob"]);		
		$vSaldo = $fetchAssoc["saldob"]["salb_saldo"];
		$nvalor = ($vSaldo-$totant);
		$db->query(uSaldob($nvalor));
	}		

	# Corregir saldos y documentos de abono de C X C
	$select["movicc"] = $db->query($sMovicc);
    while ($rec = $db->fetchAssoc($select['movicc'])) {
        $codcli = $rec["mov_codp"];
        $tipod = $rec["mov_tipoc"];
        $seried = $rec["mov_seriec"];
        $numerod = $rec["mov_numc"];
        $abonod = $rec["mov_abo"];
		$select["doctoscc"] = $db->query(sDoctoscc($tipod,$seried,$codcli,$numerod));
		if ($db->numRows($select["doctoscc"]) > 0) {
			$fetchAssoc["doctoscc"] = $db->fetchAssoc($select["doctoscc"]);		
			$vAbono = $fetchAssoc["doctoscc"]["dc_abo"];
			$nvalorabo = ($vAbono-$abonod);
			$db->query(uDoctoscc($tipod,$seried,$codcli,$numerod,$nvalorabo));
		}		
    }
	$db->query($dMovicc);
	$db->query($uAnticpc);
	//

	$db->iEx($func->iBitacora(utf8_decode("Se borró Deposito Desde CxC No.: $numNum Banco: $selBanCod Fecha: $dtFec Usuario: ").$usuNom, $bitMod, $bitForm));

	$db->close();

	return json_encode($resp);
}
function anular() {
	global $empCod, $usuNom, $bitMod, $bitForm, $selBanCod;

	$func = new functions();

	$numNum=$_POST['numNum'];
	$selTipoCod="002.01";
	$selBanCod=$_POST['selBanCod'];
	$totant=$_POST['totant'];	
	$dtFec=$_POST['dtFec'];
	$jsonPolAnt=json_decode($_POST['tblPolAnt']);
	$numAnio=date("Y", strtotime($dtFec));
	$numMes=date("n", strtotime($dtFec));
	$numAnioAnt=date("Y", strtotime($dtFec));
	$numMesAnt=date("n", strtotime($dtFec));
	$Anulado="**** ANULADO ****";
	$valAnu=0.00;
	# QUERYS
	$sMovicc = "SELECT * FROM movicc WHERE mov_emp='$empCod' AND mov_tipo='$selTipoCod' AND mov_ban='$selBanCod' AND mov_num='$numNum'";
	$dMovicc = "DELETE FROM movicc WHERE mov_emp='$empCod' AND mov_tipo='$selTipoCod' AND mov_ban='$selBanCod' AND mov_num='$numNum'";
	$uAnticpc = "UPDATE anticpc SET ant_stat='P', ant_tipo='', ant_ban=0, ant_ndoc=0 WHERE ant_emp='$empCod' AND ant_tipo='$selTipoCod' AND ant_ban='$selBanCod' AND ant_ndoc='$numNum'";

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

	$uMovi = "UPDATE movi SET mov_tot=$valAnu, mov_con='$Anulado' WHERE mov_emp='$empCod' AND mov_ban='$selBanCod' AND mov_tipo='$selTipoCod' AND mov_num='$numNum'";

	$uMovAcu = "UPDATE mov_acu SET ma_debe=$valAnu, ma_haber=$valAnu, ma_bene='$Anulado', ma_con='$Anulado', ma_stat='A' WHERE ma_emp='$empCod' AND ma_ban='$selBanCod' AND ma_tipo='$selTipoCod' AND ma_num='$numNum'";

	$uPolizas = "UPDATE polizas SET pol_con='$Anulado' WHERE pol_emp='$empCod' AND pol_ban='$selBanCod' AND pol_tipo='$selTipoCod' AND pol_num='$numNum'";

	$uPoli_det = "UPDATE poli_det SET pold_debe=$valAnu, pold_haber=$valAnu WHERE pold_emp='$empCod' AND pold_ban='$selBanCod' AND pold_tipo='$selTipoCod' AND pold_num='$numNum'";

	function sDoctoscc($tipod, $seried, $codcli, $numd) { 
		global $empCod, $usuNom;
		return "SELECT dc_emp, dc_codp, dc_serie,dc_num, dc_abo FROM doctoscc WHERE dc_emp='$empCod' AND dc_codp='$codcli' AND dc_serie='$seried' AND dc_num='$numd'";
	}
	function uDoctoscc($tipod, $seried, $codcli, $numd, $nvalorabo) { 
		global $empCod, $usuNom;
		return "UPDATE doctoscc SET dc_abo=$nvalorabo WHERE dc_emp='$empCod' AND dc_codp='$codcli' AND dc_serie='$seried' AND dc_num='$numd'";
	}

	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 uSaldob($nvalor) { 
		global $empCod, $usuNom, $selBanCod;
		return "UPDATE saldob SET salb_saldo=$nvalor WHERE salb_emp='$empCod' AND salb_num='$selBanCod'";
	}

	# EJECUCION DE QUERYS 
	$db = new dbExec();
	$resp = $db->uEx($uMovi);
	$db->uEx($uMovAcu);
    
	// PARA ANULAR PARTIDA Y REVERTIR CIERRES 
	$resp = $db->anEx($uPolizas);
	$db->uEx($uPoli_det);
	// PARA REVERTIR LOS CIERRES
	foreach ($jsonPolAnt as $obj) {
		$cta = $obj->pold_cta;
		$numAnioAnt=date("Y", strtotime($obj->pold_fec));
		$numMesAnt=date("n", strtotime($obj->pold_fec));
		while (!empty($cta)) {
			$select["cuentas"] = $db->query(sCuentas($cta));
			$select["cierres"] = $db->query(sCierres($cta, $numAnioAnt, $numMesAnt));

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

			$fetchAssoc["cierres"] = $db->fetchAssoc($select["cierres"]);
			$mdebe=$fetchAssoc["cierres"]["cie_mdebe"]-$obj->pold_debe;
			$mhaber=$fetchAssoc["cierres"]["cie_mhaber"]-$obj->pold_haber;

			$db->query(uCierres($cta, $numAnioAnt, $numMesAnt, $mdebe, $mhaber));

			$cta = $ctaActa;
		}
	}

	#Para Actualizar el saldo del banco
	$select["saldob"] = $db->query($sSaldob);
	if ($db->numRows($select["saldob"]) == 0) {
	} else {
		$fetchAssoc["saldob"] = $db->fetchAssoc($select["saldob"]);		
		$vSaldo = $fetchAssoc["saldob"]["salb_saldo"];
		$nvalor = ($vSaldo-$totant);
		$db->query(uSaldob($nvalor));
	}

	# Corregir saldos y documentos de abono de C X P
	$select["movicc"] = $db->query($sMovicc);
    while ($rec = $db->fetchAssoc($select['movicc'])) {
        $codcli = $rec["mov_codp"];
        $tipod = $rec["mov_tipoc"];
        $seried = $rec["mov_seriec"];
        $numerod = $rec["mov_numc"];
        $abonod = $rec["mov_abo"];
		$select["doctoscc"] = $db->query(sDoctoscc($tipod,$seried,$codcli,$numerod));
		if ($db->numRows($select["doctoscc"]) > 0) {
			$fetchAssoc["doctoscc"] = $db->fetchAssoc($select["doctoscc"]);		
			$vAbono = $fetchAssoc["doctoscc"]["dc_abo"];
			$nvalorabo = ($vAbono-$abonod);
			$db->query(uDoctoscc($tipod,$seried,$codcli,$numerod,$nvalorabo));
		}		
    }
	$db->query($dMovicc);
	$db->query($uAnticpc);

	//
	$db->iEx($func->iBitacora(utf8_decode("Se Anulo Deposito Desde CxC No.: $numNum Banco: $selBanCod Usuario: ").$usuNom, $bitMod, $bitForm));

	$db->close();

	return json_encode($resp);
}

?>