<?
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']))){
	$arrHTTP = explode("?",trim(strtoupper($_SERVER['HTTP_REFERER'])));
	$http = trim(strtoupper($arrHTTP[0]));

	if(!isset($_SESSION['usuario_p_prov_absa']) || trim($_SESSION['usuario_p_prov_absa']) == "" || (trim(strtoupper($_SESSION["URL_PORTAL"]."FORMULARIOS/FORM_EXPEDIENTE_COMPLEMENTOPAGO.PHP")) != $http && trim(strtoupper($_SESSION["URL_PORTAL"]."FORMULARIOS/FORM_EXPEDIENTE_ICFDI.PHP")) != $http && trim(strtoupper($_SESSION["URL_PORTAL"]."FORMULARIOS/FORM_EXPEDIENTE_PAGO.PHP")) != $http)){
		?><script>window.close();</script><?
		exit;
	}else{
		?><script>window.location.href="<?=$_SESSION["URL_PORTAL"]."index.php"?>"</script><?
		exit;
	}
}*/
require_once("../../conexion/conectar.php");
require_once("../../libs/funciones.php");
require_once("../../clases/datosbd.class.php");

if(!$TOLERANCIA_COMPENSADO_PAGADO = getINI("../../config.ini","TOLERANCIA_COMPENSADO_PAGADO=")){
	$TOLERANCIA_COMPENSADO_PAGADO =.5;
}

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

if(!isset($_REQUEST["uuidPago"])){
	?><script>
	$j_7.messager.alert("Error.","Faltan parametros.","error");
	</script><?
	exit;
}



/*$qConfig = "select notificar_dias,notificar_despuesde,notificar_repetirdias,notificar_correos,notificar_asunto,notificar_correos_cc,notificar_fecha_inicio,tolerancia_NPvsComplemento,tolerancia_NPvsFactura,tolerancia_FacturaPagada,tolerancia_CompensacionEgreso,tolerancia_tipoCambio from configpagina where rfc_receptor='".$rfcemisor."' limit 1";
if($rConfig = mysqli_query($conexion->CONEXION,$qConfig)){
	if(mysqli_num_rows($rConfig) > 0){
		$tConfig = mysqli_fetch_assoc($rConfig);
		$tConfig["tolerancia_NPvsComplemento"] = (float) $tConfig["tolerancia_NPvsComplemento"];
		$tConfig["tolerancia_NPvsFactura"] = (float) $tConfig["tolerancia_NPvsFactura"];
		$tConfig["tolerancia_FacturaPagada"] = (float) $tConfig["tolerancia_FacturaPagada"];
		$tConfig["tolerancia_CompensacionEgreso"] = (float) $tConfig["tolerancia_CompensacionEgreso"];
		$tConfig["tolerancia_tipoCambio"] = (float) $tConfig["tolerancia_tipoCambio"];
	}
}*/


$uuidPago=$_REQUEST["uuidPago"];
$tDoce = getDoce($uuidPago);

//Extraigo Configuracion General de notificaciones
$datosbd = new datosbd();
$datosbd->getConfig($tDoce["rfcemisor"]);
if($datosbd->noerror == -1){
	$datosbd->Alert($datosbd->mensaje);
}
if($datosbd->cConfig == null){
	$datosbd->Alert("No se encontro la configuración del receptor.");exit;
}
$tConfig = $datosbd->cConfig;
//Termina extraer configuraci�n general de notificaciones.
// echo $tConfig["tolerancia_NPvsComplemento"];exit;

$uuidIngreso=$_REQUEST["uuidIngreso"];
$tIngreso = getDatosIngreso($uuidIngreso);

$monto_enmoneda_padre=$_REQUEST["monto_enmoneda_padre"];
$monto_enmoneda_pago=$_REQUEST["monto_enmoneda_pago"];
$numparcialidad=$_REQUEST["numparcialidad"];

if($tDoce["moneda"] == $tIngreso["tipomoneda"]){
	$tipocambioingreso=1;
}

$montoTotalPago = getPagoTotalRelacionado($uuidPago);
$tPagoIngreso = getPagoDocumentosRefIngreso($uuidPago,$uuidIngreso);
$tIngresoPagado = getTotalPagoAlIngreso($uuidIngreso);
$totalIngresoCompensado = getTotalCompensadoAlIngreso($uuidIngreso);

//Le resto al monto total pagado el monto anterior pagado.
$montoTotalPagoAnterior = $montoTotalPago - $tPagoIngreso["monto"];
//Le sumo el monto nuevo al monto total del pago.
if($tDoce["moneda"] != $tIngreso["tipomoneda"]){
	$montoTotalPagadoNuevo = (($montoTotalPagoAnterior + $monto_enmoneda_padre) / $tDoce["tipocambio"]);
}else{
	$montoTotalPagadoNuevo = $montoTotalPagoAnterior + $monto_enmoneda_padre;
}

//Le resto el monto anterior pagado al total pagado del ingreso.
$totalPagadoAnterior = $tIngresoPagado - $tPagoIngreso["monto"];
// Le sumo al total anterior el monto nuevo a pagar.
$totalPagadoNuevo = $totalPagadoAnterior+$monto_enmoneda_padre;
//Le resto al total del ingreso el total compensado
$totalRealAPagar = $tIngreso["total"] - $totalIngresoCompensado;

if($totalPagadoNuevo > $totalRealAPagar){
	//Valido que no se haya pasado de la tolerancia y del total a pagar de la factura.
	$totalPositivo = $totalRealAPagar;
	if($totalRealAPagar < 0){
		$totalPositivo = $totalPositivo * -1;
	}
	$diferencia = $totalPagadoNuevo - $totalPositivo;

	if($diferencia > $tConfig["tolerancia_FacturaPagada"]){
		//if($tDoce["moneda"] == "MXN" && $tIngreso["tipomoneda"] == "MXN"){
		//if($tDoce["moneda"] == $tIngreso["tipomoneda"]){
			?><script>$j_7.messager.alert("Error","El monto a pagar a sobrepasado el maximo a pagar al ingreso.","error");</script><?
			exit;
		/*}else{
			$diferencia = $totalPagadoNuevo - $totalRealAPagar;
			if($diferencia > $TOLERANCIA_COMPENSADO_PAGADO){
				?><script>$j_7.messager.alert("Error","El monto a pagar a sobrepasado el maximo a pagar al ingreso.","error");</script><?
				exit;
			}
		}*/
	}
}

if($montoTotalPagadoNuevo > $tDoce["total"]){
	//Valido que no se haya pasado de la tolerancia y del total pagado a facturas contra el total de la notificaci�n.
	$diferencia = $montoTotalPagadoNuevo - $tDoce["total"];

	if($diferencia > $tConfig["tolerancia_NPvsFactura"]){
		//if($tDoce["moneda"] == "MXN" && $tIngreso["tipomoneda"] == "MXN"){
		//if($tDoce["moneda"] == $tIngreso["tipomoneda"]){
			?><script>$j_7.messager.alert("Error","El monto total relacionado a documentos a sobrepasado el maximo del pago.","error");</script><?
			exit;
		/*}else{
			$diferencia = $montoTotalPagadoNuevo - $tDoce["total"];
			if($diferencia > $TOLERANCIA_COMPENSADO_PAGADO){
				?><script>$j_7.messager.alert("Error","El monto total relacionado a documentos a sobrepasado el maximo del pago.","error");</script><?
				exit;
			}
		}*/
	}
}

function getDoce($uuid){
	global $conexion;
	$queryDocs = "SELECT tipodocto,rfcemisor,serie,folio,adicionalA as uuid,total,tipocambio,moneda FROM doce
	WHERE adicionalA='$uuid'";
	if(!$rDocs = mysqli_query($conexion->CONEXION,$queryDocs)){
		?><script>$j_7.messager.alert("Error","Ocurrio un error al consultar el pago.<br/>Intente nuevamente.","error");</script><?exit;
	}

	if(mysqli_num_rows($rDocs) > 0){
		$tmp = mysqli_fetch_assoc($rDocs);
		return $tmp;
	}else{
		?><script>$j_7.messager.alert("Error","No se encontro el pago.<br/>Intente nuevamente.","error");</script><?exit;
	}
}
function getPagoDocumentosRefIngreso($uuidPago,$uuidRecibe){
	global $conexion;
	$queryDocs = "SELECT tipocambio,monto,numparcialidad FROM pago_documentos_ref
	WHERE doce_uuid='$uuidPago' and uuidcfdirelacionado='$uuidRecibe'";
	if(!$rTmp = mysqli_query($conexion->CONEXION,$queryDocs)){
		?><script>$j_7.messager.alert("Error","Ocurrio un error al consultar el pago.<br/>Intente nuevamente.","error");</script><?exit;
	}
	if(mysqli_num_rows($rTmp) > 0){
		$tmp = mysqli_fetch_assoc($rTmp);
		return $tmp;
	}else{
		return 0;
	}
}

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_7.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 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_7.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_7.messager.alert("Informaci�n.","No se encontro el documento de ingreso.<br/>Intente nuevamente.","info");</script><?exit;}
}
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_7.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 getPagoTotalRelacionado($uuidPago){
	global $conexion;
	$queryDocs = "SELECT sum(monto) as montoTotalPago FROM pago_documentos_ref
	WHERE doce_uuid='$uuidPago'";
	if(!$rTmp = mysqli_query($conexion->CONEXION,$queryDocs)){
		?><script>$j_7.messager.alert("Error","Ocurrio un error al consultar el pago.<br/>Intente nuevamente.","error");</script><?exit;
	}
	if(mysqli_num_rows($rTmp) > 0){
		$tmp = mysqli_fetch_assoc($rTmp);
		return $tmp["montoTotalPago"];
	}else{
		return 0;
	}
}
?>
