<?php
/*
Autor: Lic. Carlos Alberto Vaca Coronado
Version: 3.3.0
Cambio: Se valida si ya esta como pagado el documento, si es asi, ya no deja cambiar el status, depende de la 
		configuracion del config.ini
*/

session_name('portal_absa');
session_start();
if(!isset($_SESSION['usuario_p_prov_absa']) || trim($_SESSION['usuario_p_prov_absa']) == "" || trim(strtoupper($_SESSION["URL_PORTAL"]."admin.php")) != trim(strtoupper($_SERVER['HTTP_REFERER']))){
	?><script>window.location.href="<?=$_SESSION["URL_PORTAL"]."index.php"?>"</script><?
	exit;
}
require_once "../conexion/conectar.php";
require "../libs/funciones.php";


$conexion = new CONDB();
$conexion->conectar();

$uuidEgreso = $_REQUEST["id"];
$uuidIngreso = $_REQUEST["id2"];

$tEgreso = getDatosEgreso($uuidEgreso,$uuidIngreso);
$tIngreso = getDatosIngreso($uuidIngreso);
$tIngresoPagado = getTotalPagoAlIngreso($uuidIngreso);
$totalEgresoCompensado = getTotalCompensadoEgreso($uuidEgreso);
$totalIngresoCompensado = getTotalCompensadoAlIngreso($uuidIngreso);

//Valido si la query me trae montos vacios, si es asi los seteo a ceros.
$tEgreso["monto_enmoneda_padre"] =(trim($tEgreso["monto_enmoneda_padre"]) == "" || $tEgreso["monto_enmoneda_padre"] == 0)? 0.00 : $tEgreso["monto_enmoneda_padre"];
$tEgreso["tipocambio_padre"] =(trim($tEgreso["tipocambio_padre"]) == "" || $tEgreso["tipocambio_padre"] == 0)? 0.00 : $tEgreso["tipocambio_padre"];
$tEgreso["monto_enmoneda_hijo"] =(trim($tEgreso["monto_enmoneda_hijo"]) == "" || $tEgreso["monto_enmoneda_hijo"] == 0)? 0.00 : $tEgreso["monto_enmoneda_hijo"];
$tEgreso["tipocambio_hijo"] =(trim($tEgreso["tipocambio_hijo"]) == "" || $tEgreso["tipocambio_hijo"] == 0)? 0.00 : $tEgreso["tipocambio_hijo"];

$tC = validaCompensacionGenerada($uuidEgreso,$uuidIngreso);

if($tC != 0){
	if($tC["automatico"] == "1"){
		?><script>$j_6.messager.alert("Error","No es posible actualizar una compensaci&oacute;n generada automaticamente.","error");</script><?
	}
}
function getTotalPagoAlIngreso($uuid){
	global $conexion;
	//TRAIGO LA SUMA TOTAL PAGADA AL DOCUMENTO DE INGRESO
	$qIngresoPagado="select sum(monto) as montoPagadoTotalIngreso from pago_documentos_ref
	where uuidcfdirelacionado='$uuid'";
	if(!$rIngresoPagado = mysqli_query($conexion->CONEXION,$qIngresoPagado)){
		?><script>$j_6.messager.alert("Error","Ocurrio un error al consultar el monto total compensado del egreso.<br/>Intente nuevamente.","error");</script><?exit;
	}
	if(mysqli_num_rows($rIngresoPagado) > 0){
		$tIngresoPagado = mysqli_fetch_assoc($rIngresoPagado);
		return $tIngresoPagado["montoPagadoTotalIngreso"];
	}else{
		return 0.00;
	}
}
function getDatosEgreso($uuidEgreso,$uuidIngreso){
	global $conexion;
	//TRAIGO LOS DATOS DEL DOCUMENTO DE EGRESO (NOTA DE CREDITO)
	$qEgreso = "select r.nombreemi,r.serie,r.folio,r.uuid,r.total,r.tipomoneda,r.tipoCambio as tipocambioegreso,c.uuidHijo,rc.uuid_padre,rc.monto_enmoneda_padre,rc.monto_enmoneda_hijo,rc.tipocambio_padre as tipocambio_padre,rc.tipocambio_padre as tipocambio_hijo
	from recibedoce r left join cfdirelacionados c on c.uuidPadre = r.uuid
	left join
	recibedoce_compensacion rc on rc.uuid_padre=c.uuidHijo where r.uuid='$uuidEgreso'  and (rc.uuid_hijo = '$uuidEgreso' and rc.uuid_padre='$uuidIngreso' or rc.uuid_padre is null) limit 1;";
	if(!$rEgreso = mysqli_query($conexion->CONEXION,$qEgreso)){
		?><script>$j_6.messager.alert("Error","Ocurrio un error al consultar el documento de egreso.<br/>Intente nuevamente.","error");</script><?exit;
	}
	if(mysqli_num_rows($rEgreso) > 0){
		$tEgreso = mysqli_fetch_assoc($rEgreso);
		return $tEgreso;
	}else{?><script>$j_6.messager.alert("Informaci�n.","No se encontro el documento de egreso.<br/>Intente nuevamente.","info");</script><?exit;}
}
function getDatosIngreso($uuid){
	global $conexion;
	//TRAIGO LOS DATOS DEL DOCUMENTO DE INGRESO.
	$qIngreso = "select nombreemi,serie,folio,uuid,total,tipomoneda,tipocambio from recibedoce where uuid='$uuid'";
	if(!$rIngreso = mysqli_query($conexion->CONEXION,$qIngreso)){
		?><script>$j_6.messager.alert("Error","Ocurrio un error al consultar el documento de ingreso.<br/>Intente nuevamente.","error");</script><?exit;
	}
	if(mysqli_num_rows($rIngreso) > 0){
		$tIngreso = mysqli_fetch_assoc($rIngreso);
		return $tIngreso;
	}else{?><script>$j_6.messager.alert("Informaci�n.","No se encontro el documento de ingreso.<br/>Intente nuevamente.","info");</script><?exit;}
}

function getTotalCompensadoEgreso($uuid){
	global $conexion;
	$qEgresoCompensado="select sum(monto_enmoneda_hijo) as TotalCompensadoEgreso from recibedoce_compensacion
						where uuid_hijo='$uuid'";
	if(!$rEgresoCompensado = mysqli_query($conexion->CONEXION,$qEgresoCompensado)){
		echo mysqli_error($conexion->CONEXION);exit;
		?><script>$j_6.messager.alert("Error","Ocurrio un error al consultar el monto total compensado del egreso.<br/>Intente nuevamente.","error");</script><?exit;
	}
	$suma=0.00;
	if(mysqli_num_rows($rEgresoCompensado) > 0){
		$tEgresoCompensado = mysqli_fetch_assoc($rEgresoCompensado);
		return $tEgresoCompensado["TotalCompensadoEgreso"];
	}
	return 0.00;
}
function getTotalCompensadoAlIngreso($uuid){
	global $conexion;
	$qIngresoCompensado="select sum(monto_enmoneda_padre) as TotalCompensadoIngreso from recibedoce_compensacion
						where uuid_padre='$uuid'";
	if(!$rIngresoCompensado = mysqli_query($conexion->CONEXION,$qIngresoCompensado)){
		?><script>$j_6.messager.alert("Error","Ocurrio un error al consultar el monto total compensado del egreso.<br/>Intente nuevamente.","error");</script><?exit;
	}
	$suma=0.00;
	if(mysqli_num_rows($rIngresoCompensado) > 0){
		$tIngresoCompensado = mysqli_fetch_assoc($rIngresoCompensado);
		return $tIngresoCompensado["TotalCompensadoIngreso"];
	}
	return 0.00;
}
function validaCompensacionGenerada($uuidEgreso,$uuidIngreso){
	global $conexion;
	$q="select automatico from recibedoce_compensacion where uuid_padre='$uuidIngreso' and uuid_hijo='$uuidEgreso'";
	if(!$r = mysqli_query($conexion->CONEXION,$q)){
		?><script>$j_6.messager.alert("Error.","Ocurrio un error al consultar las compensaciones del egreso. Intente nuevamente.","error");</script><?exit;
	}
	if(mysqli_num_rows($r) > 0){
		$tmp = mysqli_fetch_assoc($r);
		return $tmp;
	}
	return 0;
}
?>
<script>
var seguirGuardando = true;
$j_6(document).ready(function() {
		$j_6('#form, #fat, #form_compensar').submit(function() {
			$j_6("body").addClass("loading");
        $j_6.ajax({
            type: 'POST',
            url: $j_6(this).attr('action'),
            data: $j_6(this).serialize(),
			beforeSend: function(){
				/*seguirGuardando = validaMontos();
				$j_6("body").removeClass("loading");
				alert(seguirGuardando);*/
				//return seguirGuardando;
			}
			,
            success: function(data) {
					$j_6('#result').html(data);
					$j_6('#loading').hide();
					$j_6("body").removeClass("loading");
            }
        })
        
        return false;
    });	
});

function convertirMontos(elemento){
	if(elemento.value.trim() == ""){
		elemento.value = 0.00;
	}
	<?if($tEgreso["tipomoneda"] == $tIngreso["tipomoneda"]){?>
	var tipocambio_padre = 1;
	var tipocambio_hijo = 1;
	<?}else{?>
	var tipocambio_padre = $j_6("#tipoCambioPadre").val();
	var tipocambio_hijo = $j_6("#tipoCambioHijo").val();
	<?}?>
	var monto_enmoneda_padre = $j_6("#monto_enmoneda_padre").val();
	var monto_enmoneda_hijo = $j_6("#monto_enmoneda_hijo").val();
	if(elemento.name=="tipocambio_hijo" || elemento.name=="monto_enmoneda_hijo"){
		var montoPesos = parseFloat(monto_enmoneda_hijo) * parseFloat(tipocambio_hijo);
		//console.log(montoPesos);
		var monedaPadre = '<?=$tIngreso["tipomoneda"]?>';
		if(monedaPadre.toUpperCase != "MXN"){
			if(tipocambio_padre <= 0){
				$j_6("#monto_enmoneda_padre").val(0.00);
				return false;
			}
			montoPesos = parseFloat(montoPesos) / parseFloat(tipocambio_padre);
		}
		$j_6("#monto_enmoneda_padre").val(montoPesos.toFixed(2));
	}else{
		var montoPesos = parseFloat(monto_enmoneda_padre) * parseFloat(tipocambio_padre);
		var monedaHijo = '<?=$tEgreso["tipomoneda"]?>';
		if(monedaHijo.toUpperCase != "MXN"){
			if(tipocambio_hijo <= 0){
				$j_6("#monto_enmoneda_hijo").val(0.00);
				return false;
			}
			montoPesos = parseFloat(montoPesos) / parseFloat(tipocambio_hijo);
		}
		$j_6("#monto_enmoneda_hijo").val(montoPesos.toFixed(2));
	}
}
function validaMontos(){
	$j_6("body").addClass("loading");
	$j_6.post("formularios/extras/validaMontosCompensacion.php",{uuidEgreso: '<?=$uuidEgreso?>',uuidIngreso: '<?=$uuidIngreso?>',monto_enmoneda_padre: $j_6("#monto_enmoneda_padre").val(),
	monto_enmoneda_hijo: $j_6("#monto_enmoneda_hijo").val(),tipoCambioHijo: $j_6("#tipoCambioHijo").val(),tipoCambioPadre: $j_6("#tipoCambioPadre").val()},function(data){
		$j_6('#result').html(data);
		$j_6("body").removeClass("loading");
		if(data.indexOf("Error") != -1){
			return false;
		}else{
			return true;
		}
	});
}
close_w();
</script>
<style>
.formInput{
	font-size: 15px; 
	border-color: #fbca93;
}
.formInput[readonly=true]{
	font-size: 15px; 
	border-color: #fbca93;
}
</style>
<font color="gray" style="font-size: 14px"><strong>Compensar documento</strong></font><br/><br/>
<form action="formularios/guardar/alta_compensacion.php" name="form_compensar" id="form_compensar">
		<input type="hidden" name="uuidEgreso" id="uuidEgreso" value="<?=$uuidEgreso?>"/>
		<input type="hidden" name="uuidIngreso" id="uuidIngreso" value="<?=$uuidIngreso?>"/>
<table width="100%">
	<tr>
		<td colspan="6">
			<font style="font-size: 15px; border-color: #fbca93; font-weight: bold">I CFDI 3.3:</font>
		</td>
	</tr>
	<tr>
		<td>
			<font style="font-size: 15px; border-color: #fbca93">Emisor:</font>
		</td>
		<td>
			<input class="formInput" readonly="true" type="text" size="15" value="<?=$tIngreso["nombreemi"]?>" />
		</td>
		<td>
			<font style="font-size: 15px; border-color: #fbca93">Serie:</font>
		</td>
		<td>
			<input class="formInput" readonly="true" type="text" size="15" value="<?=$tIngreso["serie"]?>" />
		</td>
		<td>
			<font style="font-size: 15px; border-color: #fbca93">Folio:</font>
		</td>
		<td>
			<input class="formInput" readonly="true" type="text" style="text-align: right" size="15" value="<?=$tIngreso["folio"]?>" />
		</td>
	</tr>
	<tr>
		<td>
			<font style="font-size: 15px; border-color: #fbca93">Moneda:</font>
		</td>
		<td>
			<input class="formInput" readonly="true" type="text" size="15" value="<?=$tIngreso["tipomoneda"]?>" />
		</td>
		<td>
			<font style="font-size: 15px; border-color: #fbca93">Tipo cambio:</font>
		</td>
		<td>
			<input class="formInput" readonly="true" type="text" size="15" style="text-align: right" value="<?=number_format($tIngreso["tipocambio"],2,".",",")?>" />
		</td>
		<td>
			<font style="font-size: 15px; border-color: #fbca93">Total:</font>
		</td>
		<td>
			<input class="formInput" readonly="true" type="text" size="15" style="text-align: right" value="<?=$tIngreso["total"]?>" />
		</td>
	</tr>
	<tr>
		<td colspan="6">
			<font style="font-size: 15px; border-color: #fbca93; font-weight: bold">E CFDI 3.3:</font>
		</td>
	</tr>
	<tr>
		<td>
			<font style="font-size: 15px; border-color: #fbca93">Emisor:</font>
		</td>
		<td>
			<input class="formInput" readonly="true" type="text" size="15" value="<?=$tEgreso["nombreemi"]?>" />
		</td>
		<td>
			<font style="font-size: 15px; border-color: #fbca93">Serie:</font>
		</td>
		<td>
			<input class="formInput" readonly="true" type="text" size="15" value="<?=$tEgreso["serie"]?>" />
		</td>
		<td>
			<font style="font-size: 15px; border-color: #fbca93">Folio:</font>
		</td>
		<td>
			<input class="formInput" readonly="true" type="text" style="text-align: right" size="15" value="<?=$tEgreso["folio"]?>" />
		</td>
	</tr>
	<tr>
		<td>
			<font style="font-size: 15px; border-color: #fbca93">Moneda:</font>
		</td>
		<td>
			<input class="formInput" readonly="true" type="text" size="15" value="<?=$tEgreso["tipomoneda"]?>" />
		</td>
		<td>
			<font style="font-size: 15px; border-color: #fbca93">Tipo cambio:</font>
		</td>
		<td>
			<input class="formInput" readonly="true" type="text" style="text-align: right" size="15" value="<?=number_format($tEgreso["tipocambioegreso"],2,".",",")?>" />
		</td>
		<td>
			<font style="font-size: 15px; border-color: #fbca93">Total:</font>
		</td>
		<td>
			<input class="formInput" readonly="true" type="text" size="15" style="text-align: right" value="<?=$tEgreso["total"]?>" />
		</td>
	</tr>
	<tr>
		<td colspan="6">
		<font style="font-size: 15px; border-color: #fbca93; font-weight: bold">Monto a compensar:</font>
		</td>
	</tr>
	<tr>
		<td colspan="6">
		<font style="font-size: 15px; border-color: #fbca93; font-weight: bold">En moneda del Egreso:</font>
		</td>
	</tr>
	<tr>
		<td>
			<font style="font-size: 15px; border-color: #fbca93">Tipo de Cambio:</font>
		</td>
		<?
		$readonlyTipoCambio = "";
		$readonlyImportes = "";
		if($tEgreso["tipomoneda"] == $tIngreso["tipomoneda"]){
			$readonlyTipoCambio = "readonly";
		}
		
		if($tC != 0){
			if($tC["automatico"] == "1"){
				$readonlyTipoCambio = "readonly";
				$readonlyImportes = "readonly";
			}
		}
		?>
		<td>
			<input <?=$readonlyTipoCambio?> <?if($readonlyTipoCambio==""){?>onkeyup="onlyNumsAndOneDotAndLimitDecimals(this,6)" onBlur="convertirMontos(this);"<?}?> 
			name="tipoCambioHijo" id="tipoCambioHijo" class="formInput" type="text" size="15" style="text-align: right" 
			value="<?=number_format((($tEgreso["tipocambio_hijo"] <= 0)?$tEgreso["tipocambioegreso"]: $tEgreso["tipocambio_hijo"]),2,".","")?>" />
		</td>
		<td>
			<font style="font-size: 15px; border-color: #fbca93">Importe:</font>
		</td>
		<td>
			<input class="formInput" <?=$readonlyImportes?> <?if($readonlyImportes==""){?>onBlur="convertirMontos(this);" onkeyup="onlyNumsAndOneDotAndLimitDecimals(this,6)"<?}?> type="text" size="15" style="text-align: right" value="<?=$tEgreso["monto_enmoneda_hijo"]?>" name="monto_enmoneda_hijo" id="monto_enmoneda_hijo"/>
		</td>
	</tr>
	<tr>
		<td colspan="6">
		<font style="font-size: 15px; border-color: #fbca93; font-weight: bold">En moneda del Ingreso:</font>
		</td>
	</tr>
	<tr>
		<td>
			<font style="font-size: 15px; border-color: #fbca93">Tipo de Cambio:</font>
		</td>
		<td>
			<input <?=$readonlyTipoCambio?> <?if($readonlyTipoCambio==""){?>onkeyup="onlyNumsAndOneDotAndLimitDecimals(this,6)" onBlur="convertirMontos(this);"<?}?> 
			name="tipoCambioPadre" id="tipoCambioPadre" class="formInput" type="text" size="15" style="text-align: right" 
			value="<?=number_format((($tEgreso["tipocambio_padre"] <= 0)? $tIngreso["tipocambio"] : $tEgreso["tipocambio_padre"]),2,".","")?>" />
		</td>
		<td>
			<font style="font-size: 15px; border-color: #fbca93">Importe:</font>
		</td>
		<td>
			<input class="formInput" <?=$readonlyImportes?> <?if($readonlyImportes==""){?>onkeyup="onlyNumsAndOneDotAndLimitDecimals(this,6)" onBlur="convertirMontos(this);"<?}?> type="text" size="15" style="text-align: right" name="monto_enmoneda_padre" id="monto_enmoneda_padre" value="<?=$tEgreso["monto_enmoneda_padre"]?>" />
		</td>
	</tr>
	<tr>
		<td colspan="6"><input type="submit" value="Guardar" id="guardarPago"/></td>
	</tr>
</table>
</form>

<table width="100%">
	<tr>
		<th style="text-align: left">Total Compensado Egreso:</th>
		<td id="totalDetalle" style="text-align: right"><?=round($totalEgresoCompensado,2,PHP_ROUND_HALF_UP)?></td>
	</tr>
	<tr>
		<th style="text-align: left">Total Compensado Ingreso:</th>
		<td id="totalDetalle" style="text-align: right"><?=round($totalIngresoCompensado,2,PHP_ROUND_HALF_UP)?></td>
	</tr>
	<tr>
		<th style="text-align: left">Total Pagado Ingreso:</th>
		<td id="totalDetalle" style="text-align: right"><?=round($tIngresoPagado,2,PHP_ROUND_HALF_UP)?></td>
	</tr>
</table>
