<?
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("../../conexion/conectar.php");
require("../../libs/funciones.php");

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

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

if(strtoupper(trim($_SESSION['usuario_p_prov_absa'])) == "ADMIN"){
	$rfcreceptor = $_REQUEST['RFCReceptor'];
}else{
	$rfcreceptor = $_SESSION['RFC_RECEPTOR_PORTAL'];
}

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

//Extraigo Configuracion General de notificaciones
$notificar_fecha_inicio="";
$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='".$rfcreceptor."' limit 1";
if($rConfig = mysqli_query($conexion->CONEXION,$qConfig)){
	if(mysqli_num_rows($rConfig) > 0){
		$tConfig = mysqli_fetch_assoc($rConfig);
		$notificar_fecha_inicio = $tConfig["notificar_fecha_inicio"];
		$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"];
	}
}

?>
<?if(trim($_SESSION["sesion_editar_expediente"]) == "1"){?>
<script>
function cambiaStatusComoPagada(uuid){
	var img = $j_6("#img_"+uuid).attr("src");
	if(img.indexOf("ok.png") != -1){
		$j_6.messager.confirm("Confirmar.","<?=utf8_encode("¿")?>Esta seguro de marcar la factura como no pagada?",function(r){
			if(r){
				$j_6.post("formularios/extras/cambia_status_como_pagada.php",{uuid: uuid,status:0},function(data){
					$j_6("#result").html(data);
				});
			}else{
				return false;
			}
		});
	}else{
		$j_6.messager.confirm("Confirmar.","<?=utf8_encode("¿")?>Esta seguro de marcar el pago como correcto?",function(r){
			if(r){
				$j_6.post("formularios/extras/cambia_status_como_pagada.php",{uuid: uuid,status:1},function(data){
					$j_6("#result").html(data);
				});
			}else{
				return false;
			}
		});
	}
}
</script>
<?}?>
<?
$completaQueryPagos = "";
if($_REQUEST["serie"] != ""){$completaQueryPagos = " and serie='".$_REQUEST["serie"]."'";}
if($_REQUEST["folio"] != ""){$completaQueryPagos .= " and folio='".$_REQUEST["folio"]."'";}
if($_REQUEST["uuid"] != ""){$completaQueryPagos .= " and uuid='".$_REQUEST["uuid"]."'";}
if($_REQUEST["fecha_emision_inicio"] != ""){$completaQueryPagos .= " and fechadocto > '".$_REQUEST["fecha_emision_inicio"]."'";}
if($_REQUEST["fecha_emision_final"] != ""){$completaQueryPagos .= " and fechadocto < '".$_REQUEST["fecha_emision_final"]."'";}
if($_REQUEST["emisor_nombre"] != ""){$completaQueryPagos .= " and nombreemi like '%".$_REQUEST["emisor_nombre"]."%'";}
if($_REQUEST["emisor_rfc"] != ""){$completaQueryPagos .= " and rfcemisor < '".$_REQUEST["emisor_rfc"]."'";}

if($_SESSION['todo_RFC_p_prov_absa'] == "SI"){
	$complementoQuery="";
	$permisosComplemento=$_SESSION['permisos_p_prov_absa'];
}else{
	$complementoQuery="and rfcEmisor='".$_SESSION['rfc_cliente_p_prov_absa']."'";
}

$qRecibeDoce = "select rfcemisor,serie,folio,uuid,fechaDocto,tipomoneda as moneda,tipocambio as tipocambio,nombreemi,total,marcar_como_pagada,formadepago, 
(select doce.fecha as fecha from pago_documentos_ref p inner join doce ON p.doce_uuid=doce.adicionalA where uuidCFDIRelacionado=recibedoce.uuid and doce.status <>'C' order by fecha desc limit 1)
as FechaNP
from recibedoce where status not in('C','R') and tipodocto='I CFDI 3.3' and  rfc_receptor='$rfcreceptor' $completaQueryPagos $complementoQuery $permisosComplemento";
if(!$rRecibeDoce = mysqli_query($conexion->CONEXION,$qRecibeDoce)){
	?><script>$j_6.messager.alert("Error","Ocurrio un error al consultar los documentos.","error.");</script><?exit;
}
if(mysqli_num_rows($rRecibeDoce) <= 0){
	?><script>$j_6.messager.alert("Error","No se encontraron documentos.","error.");</script><?exit;
}
while($tRecibeDoce = mysqli_fetch_array($rRecibeDoce,MYSQLI_ASSOC)){
	
	if($notificar_fecha_inicio != ""){
		if( str_replace(":","",str_replace(" ","",str_replace("-","",$tRecibeDoce["fechaDocto"]))) < str_replace(":","",str_replace(" ","",str_replace("-","",$notificar_fecha_inicio))) ){
			if(trim($tRecibeDoce["FechaNP"]) != ""){
				if( str_replace(":","",str_replace(" ","",str_replace("-","",$tRecibeDoce["FechaNP"]))) < str_replace(":","",str_replace(" ","",str_replace("-","",$notificar_fecha_inicio))) ){
					continue;
				}
			}else{
				continue;
			}
		}
	}
	
	$montoTotalCompensado = getMontoCompensado($tRecibeDoce["uuid"]);
	$sumaPagadoEnPago=0.00;
	$sumaPagadoEnComplemento=0.00;
	$totalAPagarEnPago=0.00;
	$totalAPagarEnComplemento=0.00;
	?><table width="98%" bgcolor="white" style="border: 5px #DDDDDD solid" style="display: none" id="cfdi_<?=$tRecibeDoce["uuid"]?>">
		<tr>
			<th style="background-color: #DDDDDD; text-align: center" colspan="7">I CFDI 3.3</th>
		</tr>
		<!--<tr class="ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all">-->
		<tr style="background-color: #DDDDDD; text-align: center">
			<td>Proveedor</td>
			<td>Serie</td>
			<td>Folio</td>
			<td>UUID</td>
			<td>Total</td>
			<td>Moneda</td>
			<td>TipoCambio</td>
		</tr>
		<!--<tr class="ui-accordion-header ui-helper-reset ui-state-default ui-corner-all ui-accordion-icons">-->
		<tr>
			<!--<td></td>-->
			<td><?=$tRecibeDoce["nombreemi"]?></td>
			<td><?=$tRecibeDoce["serie"]?></td>
			<td><?=$tRecibeDoce["folio"]?></td>
			<td><?=$tRecibeDoce["uuid"]?></td>
			<td><?=$tRecibeDoce["total"]?></td>
			<td><?=$tRecibeDoce["moneda"]?></td>
			<td><?=$tRecibeDoce["tipocambio"]?></td>
		</tr>
		<?
			$qMontosAplicados = "select d.serie as Dserie,d.folio as Dfolio,d.adicionalA as Duuid,d.total as Dtotal,d.adicionalB as Dformadepago,pdr.uuidcfdirelacionado,pdr.monto as PDRmontoPago,pdr.numparcialidad as PDRnumparcialidad,pdr.tipocambio as PDRtipocambio,pdr.moneda as PDRmoneda,
			rpdr.tipocambiodr as RPDRtipocambio,rpdr.monedadr as RPDRmoneda,rpdr.imppagado as RPDRimpagado,rpdr.NumParcialidad as RPDRnumparcialidad,
			r.nombreemi,r.serie,r.folio,
			rdp.MonedaP as RDPmoneda,rdp.Monto as RDPmonto,rdp.recibedoce_UUID,rdp.TipoCambioP as RDPtipocambio,rdp.formadepago as RDPformadepago
			from 
			doce d inner join
			pago_documentos_ref pdr ON d.adicionalA=pdr.doce_uuid
			left join recibedoce_pagos_docto_relacionado rpdr 
			ON pdr.doce_uuid = rpdr.doce_uuid and pdr.uuidcfdirelacionado = rpdr.uuidcfdirelacionado and (pdr.numparcialidad = rpdr.numparcialidad or pdr.numparcialidad <> rpdr.numparcialidad)
			left join recibedoce_pagos rdp ON rpdr.recibedoce_pagos_id = rdp.recibedoce_pagos_id 
			left join recibedoce r on rpdr.uuidcfdirelacionado = r.uuid where pdr.uuidCFDIRelacionado='".$tRecibeDoce["uuid"]."' and d.status <> '0'";
			
			if(!$rMontosAplicados = mysqli_query($conexion->CONEXION,$qMontosAplicados)){
				?><script>$j_6.messager.alert("Error","Ocurrio un error al consultar los documentos.","error.");</script><?exit;
			}
			if(mysqli_num_rows($rMontosAplicados) <= 0){
				?>
				<tr>
					<td colspan="7">
						<table width="98%" bgcolor="white" style="border: 2px #DDDDDD solid">
							<tr>
								<th style="background-color: #fcfbe5; text-align: center"><img id="img_<?=$tRecibeDoce["uuid"]?>" src="Imagenes/Attention_A.png"/></th>
							</tr>
						</table>
					</td>
				</tr>
				</table><?
				if($_REQUEST["status"] == "FALTANTEPAGO"){
					?><script>$j_6("#cfdi_<?=$tRecibeDoce["uuid"]?>").css("display","block");</script><?
				}
				if($_REQUEST["status"] == "YAPAGADO"){
					?><script>$j_6("#cfdi_<?=$tRecibeDoce["uuid"]?>").remove();</script><?
				}
				if($_REQUEST["status"] == ""){
					?><script>$j_6("#cfdi_<?=$tRecibeDoce["uuid"]?>").css("display","block");</script><?
				}
				continue;
			}
		?>
		<tr>
			<td style="padding: 20px 20px 20px 20px" colspan="6">
				<table width="98%" bgcolor="white" style="border: 2px #DDDDDD solid">
					<tr>
						<th style="background-color: #DDDDDD; text-align: center" colspan="12">PAGOS AL DOCUMENTO</th>
					</tr>
					<tr style="color: #FFFFFF">
						<th style="background-color: #2476af; text-align: center" colspan="7">Pago / I CFDI 3.3</th>
						<th style="background-color: #000000; text-align: center" colspan="5">Complemento / I CFDI 3.3</th>
					</tr>
					<tr style="color: #FFFFFF">
						<td style="background-color: #2476af; text-align: center">Serie</td>
						<td style="background-color: #2476af; text-align: center">Folio</td>
						<!--<td>UUID</td>-->
						<td style="background-color: #2476af; text-align: center">Forma de pago</td>
						<td style="background-color: #2476af; text-align: center">Parcialidad</td>
						<td style="background-color: #2476af; text-align: center">Tipo Cambio</td>
						<td style="background-color: #2476af; text-align: center">Moneda</td>
						<td style="background-color: #2476af; text-align: center">Monto</td>
						<td style="background-color: #000000; text-align: center">Forma de pago</td>
						<td style="background-color: #000000; text-align: center">Parcialidad</td>
						<td style="background-color: #000000; text-align: center">Tipo Cambio</td>
						<td style="background-color: #000000; text-align: center">Moneda</td>
						<td style="background-color: #000000; text-align: center">Monto</td>
					</tr>
	<?
	$con=0;
	$tdEstiloPagoTotal="";
	$banIncorrecto=false;
	$sumaPagadoEnComplemento=0.00;
	$sumaPagadoEnPago=0.00;
	while($tMontosAplicados = mysqli_fetch_array($rMontosAplicados,MYSQLI_ASSOC)){
		
		$sumaPagadoEnComplemento+=$tMontosAplicados["RPDRimpagado"];
		$sumaPagadoEnPago+=$tMontosAplicados["PDRmontoPago"];
		$con++;
		$res = $con%2;
		$trEstilo="";
		if($res == 0)
			$trEstilo = "style='background-color: #999999'";
		
		$tdEstiloMonto = "";
		$tdEstiloTipoCambio = "";
		$tdEstiloMoneda = "";
		$tdEstiloParcialidad = "";
		$tdEstiloFormaDePago = "";
		if((float) $tMontosAplicados["PDRmontoPago"] != (float) $tMontosAplicados["RPDRimpagado"]){
			$diferencia = (float) $tMontosAplicados["PDRmontoPago"] - (float) $tMontosAplicados["RPDRimpagado"];
			if($diferencia < 0){
				$diferencia = $diferencia * -1;
			}
			
			if((float) $diferencia > (float) $tConfig["tolerancia_NPvsComplemento"]){
				$tdEstiloMonto = "style='background-color: red'";
				$banIncorrecto=true;
			}else{
				$tdEstiloMonto = "style='background-color: orange'";
			}
			// $tdEstiloMonto="style='background-color: red'";
			// $banIncorrecto=true;
		}
		if((float) $tMontosAplicados["PDRtipocambio"] != (float) $tMontosAplicados["RPDRtipocambio"]){
			$diferencia = (float) $tMontosAplicados["PDRtipocambio"] - (float) $tMontosAplicados["RPDRtipocambio"];
			if($diferencia < 0){
				$diferencia = $diferencia * -1;
			}
			
			if((float) $diferencia > (float) $tConfig["tolerancia_tipoCambio"]){
				$tdEstiloTipoCambio = "style='background-color: red'";
				$banIncorrecto=true;
			}else{
				$tdEstiloTipoCambio = "style='background-color: orange'";
			}
			// $tdEstiloTipoCambio="style='background-color: red'";
			// $banIncorrecto=true;
			
		}
		if($tMontosAplicados["PDRmoneda"] != $tMontosAplicados["RPDRmoneda"]){
			$tdEstiloMoneda="style='background-color: red'";
			$banIncorrecto=true;
			
		}
		if($tMontosAplicados["PDRnumparcialidad"] != $tMontosAplicados["RPDRnumparcialidad"]){
			$tdEstiloParcialidad="style='background-color: red'";
			$banIncorrecto=true;
		}
		if($tMontosAplicados["Dformadepago"] != $tMontosAplicados["RDPformadepago"]){
			$tdEstiloFormaDePago="style='background-color: red'";
			$banIncorrecto=true;
		}
		?>
					<tr <?=$trEstilo?>>
						<td><?=$tMontosAplicados["Dserie"]?></td>
						<td><?=$tMontosAplicados["Dfolio"]?></td>
						<!--<td><?=$tMontosAplicados["Duuid"]?></td>-->
						<td <?=$tdEstiloFormaDePago?>><?=$tMontosAplicados["Dformadepago"]?></td>
						<td <?=$tdEstiloParcialidad?>><?=$tMontosAplicados["PDRnumparcialidad"]?></td>
						<td <?=$tdEstiloTipoCambio?>><?=$tMontosAplicados["PDRtipocambio"]?></td>
						<td <?=$tdEstiloMoneda?>><?=$tMontosAplicados["PDRmoneda"]?></td>
						<td <?=$tdEstiloMonto?>><?=$tMontosAplicados["PDRmontoPago"]?></td>
						<td <?=$tdEstiloFormaDePago?>><?=$tMontosAplicados["RDPformadepago"]?></td>
						<td <?=$tdEstiloParcialidad?>><?=$tMontosAplicados["RPDRnumparcialidad"]?></td>
						<td <?=$tdEstiloTipoCambio?>><?=$tMontosAplicados["RPDRtipocambio"]?></td>
						<td <?=$tdEstiloMoneda?>><?=$tMontosAplicados["RPDRmoneda"]?></td>
						<td <?=$tdEstiloMonto?>><?=$tMontosAplicados["RPDRimpagado"]?></td>
					</tr>
			
		<?
		
		
	}
	
	//Multiplico por 1000000 para sacar la parte entera y poder comparar enteros, ya que con decimales hay problemas
	$sumaPagadoEnPago1000000 = $sumaPagadoEnPago * 1000000;
	$sumaPagadoEnComplemento1000000 = $sumaPagadoEnComplemento * 1000000;
	$arrSumaPagadoEnPago1000000 = explode(".",$sumaPagadoEnPago1000000);
	$arrSumaPagadoEnComplemento1000000 = explode(".",$sumaPagadoEnComplemento1000000);
	
	// if($sumaPagadoEnPago != $sumaPagadoEnComplemento){
	if($arrSumaPagadoEnPago1000000[0] != $arrSumaPagadoEnComplemento1000000[0]){
		$diferencia = (float) $sumaPagadoEnPago - (float) $sumaPagadoEnComplemento;
		if($diferencia < 0){
			$diferencia = $diferencia * -1;
		}
		
		if((float) $diferencia > (float) $tConfig["tolerancia_NPvsComplemento"]){
			$tdEstiloPagoTotal = "style='text-align: right; background-color: red'";
			$banIncorrecto=true;
		}else{
			$tdEstiloPagoTotal = "style='text-align: right; background-color: orange'";
		}
		// $tdEstiloPagoTotal="style='background-color: red'";
		// $banIncorrecto=true;
	}
	//echo $tRecibeDoce["total"]." - ".$sumaPagadoEnPago." - ".$montoTotalCompensado;
	$totalAPagarEnPago = $tRecibeDoce["total"] - ($sumaPagadoEnPago + $montoTotalCompensado);
	$totalAPagarEnComplemento = $tRecibeDoce["total"] - ($sumaPagadoEnComplemento + $montoTotalCompensado);
	
	if($totalAPagarEnPago > 0){
		if((float) $totalAPagarEnPago > (float) $tConfig["tolerancia_FacturaPagada"]){
			$tdEstiloPagoTotal = "style='text-align: right; background-color: red'";
			$banIncorrecto=true;
		}else{
			$tdEstiloPagoTotal = "style='text-align: right; background-color: orange'";
		}
		// $tdEstiloPagoTotal="style='background-color: red'";
		// $banIncorrecto=true;
	}
	if($totalAPagarEnComplemento > 0){
		if((float) $totalAPagarEnComplemento > (float) $tConfig["tolerancia_FacturaPagada"]){
			$tdEstiloPagoTotal = "style='text-align: right; background-color: red'";
			$banIncorrecto=true;
		}else{
			$tdEstiloPagoTotal = "style='text-align: right; background-color: orange'";
		}
		// $tdEstiloPagoTotal="style='background-color: red'";
		// $banIncorrecto=true;
	}
	?>
					<tr>
						<th style="text-align: right" colspan="5">Total Pagado</th>
						<th colspan="2" <?=$tdEstiloPagoTotal?>><?=$sumaPagadoEnPago?></th>
						<th style="text-align: right" colspan="4">Total Pagado</th>
						<th colspan="2" <?=$tdEstiloPagoTotal?>><?=$sumaPagadoEnComplemento?></th>
					</tr>
					<tr>
						<th style="text-align: right" colspan="5">Total Compensado</th>
						<th style="text-align: right" colspan="2"><?=$montoTotalCompensado?></th>
						<th style="text-align: right" colspan="4"></th>
						<th style="text-align: right" colspan="2"></th>
					</tr>
					<tr>
						<?if($totalAPagarEnPago < 0){$totalAPagarEnPago = $totalAPagarEnPago*-1;}?>
						<?if($totalAPagarEnComplemento < 0){$totalAPagarEnComplemento = $totalAPagarEnComplemento*-1;}?>
						<th style="text-align: right" colspan="5">Total a Pagar</th>
						<th style="text-align: right" colspan="2"><?=number_format($totalAPagarEnPago,2,".","")?></th>
						<th style="text-align: right" colspan="4">Total a Pagar</th>
						<th style="text-align: right" colspan="2"><?=number_format($totalAPagarEnComplemento,2,".","")?></th>
					</tr>
				</table>
			</td>
			<?if($banIncorrecto == true){?>
				<td>
					<?if($tRecibeDoce["marcar_como_pagada"] == "0"){?>
						<table width="98%" bgcolor="white" style="border: 2px #DDDDDD solid">
							<tr>
								<th style="background-color: #fcfbe5; text-align: center"><img id="img_<?=$tRecibeDoce["uuid"]?>" src="Imagenes/Attention_A.png"/></th>
							</tr>
							<tr>
								<td>
									<a href="#" id="lbl_<?=$tRecibeDoce["uuid"]?>" onclick="cambiaStatusComoPagada('<?=$tRecibeDoce["uuid"]?>')" >Marcar como pagada.</a>
								</td>
							</tr>
						</table>
					<?}else{?>
						<table width="98%" bgcolor="white" style="border: 2px #DDDDDD solid">
							<tr>
								<th style="background-color: #fcfbe5; text-align: center"><img id="img_<?=$tRecibeDoce["uuid"]?>" src="Imagenes/ok.png"/></th>
							</tr>
							<tr>
								<td>
									<a href="#" id="lbl_<?=$tRecibeDoce["uuid"]?>" onclick="cambiaStatusComoPagada('<?=$tRecibeDoce["uuid"]?>')" >Marcar como NO pagada.</a>
								</td>
							</tr>
						</table>
					<?}?>
				</td>
			<?}else{?>
				<td>
					<table width="98%" bgcolor="white" style="border: 2px #DDDDDD solid">
						<tr>
							<th style="background-color: #fcfbe5; text-align: center"><img src="Imagenes/ok.png"/></th>
						</tr>
					</table>
				</td>
			<?}?>
		</tr>
	</table><?
	if($_REQUEST["status"] == ""){?><script>$j_6("#Pago_<?=$tRecibeDoce["uuid"]?>").css("display","block");</script><?continue;}
	if($_REQUEST["status"] == "FALTANTEPAGO" && $banIncorrecto == true){
		if($tRecibeDoce["marcar_como_pagada"] == "0"){
			?><script>$j_6("#cfdi_<?=$tRecibeDoce["uuid"]?>").css("display","block");</script><?continue;
		}else{
			?><script>$j_6("#cfdi_<?=$tRecibeDoce["uuid"]?>").remove();</script><?continue;
		}
	}
	if($_REQUEST["status"] == "YAPAGADO" && ($banIncorrecto == false || $tRecibeDoce["marcar_como_pagada"] == "1")){
			?><script>$j_6("#cfdi_<?=$tRecibeDoce["uuid"]?>").css("display","block");</script><?continue;
	}else{
		?><script>$j_6("#cfdi_<?=$tRecibeDoce["uuid"]?>").remove();</script><?continue;
	}
}
function getMontoCompensado($uuid){
	global $conexion;
	$qMontosCompensados = "select sum(monto_enmoneda_padre) as monto from recibedoce_compensacion where uuid_padre='$uuid' group by uuid_padre";
	if(!$rMontosCompensados = mysqli_query($conexion->CONEXION,$qMontosCompensados)){
		?><script>$j_6.messager.alert("Error","Ocurrio un error al consultar los documentos.","error.");</script><?exit;
	}
	if(mysqli_num_rows($rMontosCompensados) <= 0){
		return 0.00;
	}
	$tMontosCompensados = mysqli_fetch_assoc($rMontosCompensados);
	return $tMontosCompensados["monto"];
	
}
?>











