<?php
session_name('portal_absa');
session_start();
require("../../conexion/conectar.php");
require("../../libs/funciones.php");
require_once("../../MandaCorreos/FuncionSendMailBCC.php");

set_time_limit(0);

date_default_timezone_set('America/Mexico_City');

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

if(!$RFC_ACTIVOS_NOTIFICACION_PAGOS = getINI("RFC_ACTIVOS_NOTIFICACION_PAGOS=","../../config.ini")){
	setBitacora($conexion, "AUTOMATICO", "" , "NOTIFICACION AUTOMATICA COMPLEMENTOS FALTANTES", "Etiqueta RFC_ACTIVOS_NOTIFICACION_PAGOS Faltante", "No se encontro la etiqueta RFC_ACTIVOS_NOTIFICACION_PAGOS en el config.ini");exit;
}

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


$arrRFCReceptores = explode(",",$RFC_ACTIVOS_NOTIFICACION_PAGOS);

for($i=0; $i < count($arrRFCReceptores); $i++){
	//Extraigo Configuracion General de notificaciones
	$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, valida_fecha_pago,
date_format(fecha_valida_fecha_pago,'%Y%m%d%H%i%s') as formatFecha_valida_fecha_pago from configpagina where rfc_receptor='".$arrRFCReceptores[$i]."' limit 1";
// echo $qConfig;exit;s
	if(!$rConfig = mysqli_query($conexion->CONEXION,$qConfig)){
		
		setBitacora($conexion, "AUTOMATICO", $arrRFCReceptores[$i] , "NOTIFICACION AUTOMATICA COMPLEMENTOS FALTANTES", "Error en consulta de configuracion general.", $qConfig);exit;
	}
	if(mysqli_num_rows($rConfig) <= 0){
		setBitacora($conexion, "AUTOMATICO", $arrRFCReceptores[$i] , "NOTIFICACION AUTOMATICA COMPLEMENTOS FALTANTES", "No se encontro la configuracion del receptor.", $qConfig);continue;
	}
	$tConfig = mysqli_fetch_assoc($rConfig);
	$formatFecha_valida_fecha_pago = $tConfig["formatFecha_valida_fecha_pago"];
	$valida_fecha_pago = $tConfig["valida_fecha_pago"];
	$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"];
	
	//Valido la fecha
	$completaQueryValidacionFechaInicio = "";
	if($tConfig['notificar_fecha_inicio'] != ""){
		$completaQueryValidacionFechaInicio = "fecha >= '".$tConfig['notificar_fecha_inicio']."' and ";
	}

	$tConfig["tolerancia_NPvsComplemento"] = (trim($tConfig["tolerancia_NPvsComplemento"]) == "")? 0 : $tConfig["tolerancia_NPvsComplemento"];
	$tConfig["tolerancia_NPvsFactura"] = (trim($tConfig["tolerancia_NPvsFactura"]) == "")? 0 : $tConfig["tolerancia_NPvsFactura"];
	$tConfig["tolerancia_FacturaPagada"] = (trim($tConfig["tolerancia_FacturaPagada"]) == "")? 0 : $tConfig["tolerancia_FacturaPagada"];
	$tConfig["tolerancia_CompensacionEgreso"] = (trim($tConfig["tolerancia_CompensacionEgreso"]) == "")? 0 : $tConfig["tolerancia_CompensacionEgreso"];
	$tConfig["tolerancia_tipoCambio"] = (trim($tConfig["tolerancia_tipoCambio"]) == "")? 0 : $tConfig["tolerancia_tipoCambio"];

	//CONSULTO NOTIFICACION DE PAGO DEL RECEPTOR
	$qPagos = "select d.rfcreceptor,d.serie,d.folio,d.adicionalA as uuid,d.rfcemisor,d.moneda,d.tipocambio,d.nombrerec,d.total,
	dstatus.totalPPD as totalPorMetodoDePagoPPD,dstatus.totalPUE as totalPorMetodoDePagoPUE,
	d.con_complemento_correcto,d.adicionalB as formadepago,d.fecha, d.fechaPago, date_format(d.fechaPago,'%Y%m%d%H%i%s') as formatFechaPago,
	(select group_concat(correo separator ';') as correos from correos_proveedores where rfc=rfcreceptor and rfc_receptor=d.rfcemisor group by rfc) as correos,
	(select notificar_iniciar from proveedores where rfc=rfcreceptor and rfc_receptor=d.rfcemisor group by rfc) as notificar_iniciar,
	(select concat(notificar_dias,',',notificar_despuesde,',',notificar_repetirdias,',',notificar_general) as notificarConfigProveedor from proveedores where rfc=rfcreceptor and rfc_receptor=d.rfcemisor) as notificarConfigProveedor
	from (select * from doce where $completaQueryValidacionFechaInicio tipodocto='NOTIFICACION DE PAGO' and con_complemento_correcto='0' and status='1' and rfcemisor='".trim($arrRFCReceptores[$i])."') d inner join recibecfd_doce_status dstatus 
	ON d.adicionalA=dstatus.uuid
	where dstatus.status in('0','3','11') group by d.adicionalA
	order by d.rfcreceptor";
	 // echo $qPagos."<br><br>";exit;

	if(!$rPago = mysqli_query($conexion->CONEXION,$qPagos)){
		setBitacora($conexion, "AUTOMATICO", $arrRFCReceptores[$i], "NOTIFICACION AUTOMATICA COMPLEMENTOS FALTANTES", "Error en consulta de NOTIFICACIONES DE PAGO", $qPagos);exit;
	}
	if(mysqli_num_rows($rPago) <= 0){
		continue;
	}

	//ITERO TODOS LOS PAGOS
	$body="";
	$bodyEnviar="";
	$auxReceptor="";
	$correosProveedor="";
	while($tPago = mysqli_fetch_array($rPago)){
		$validarTipoCambio = true;
		if($tPago["totalPorMetodoDePagoPPD"] == 0){
			ActualizaStatus($tPago["uuid"],"");
			continue;
		}
		if(trim($tPago["notificar_iniciar"]) == "0"){
			continue;
		}
		$arrConfigProveedor = explode(",",$tPago["notificarConfigProveedor"]);
		$assocConfigProveedor["notificar_dias"]=$arrConfigProveedor[0];
		$assocConfigProveedor["notificar_despuesde"]=$arrConfigProveedor[1];
		$assocConfigProveedor["notificar_repetirdias"]=$arrConfigProveedor[2];
		$assocConfigProveedor["notificar_general"]=$arrConfigProveedor[3];
		
		if(trim($assocConfigProveedor["notificar_dias"]) == "" || $assocConfigProveedor["notificar_general"] == "1"){
			$assocConfigProveedor["notificar_dias"]=$tConfig["notificar_dias"];
			$assocConfigProveedor["notificar_despuesde"]=$tConfig["notificar_despuesde"];
			$assocConfigProveedor["notificar_repetirdias"]=$tConfig["notificar_repetirdias"];
		}
		
		//VALIDO FECHAS PARA ENVIAR LA NOTIFICACION
		if($assocConfigProveedor["notificar_despuesde"] == "FECHAPAGO"){
			
			//Le sumo
			$fechaDespues = sumaDiasFecha(substr($tPago["fecha"],0,10),$assocConfigProveedor["notificar_dias"]);
			$fechaHoy = date("Y-m-d");
			// echo str_replace("-","",$fechaHoy) ." < ". str_replace("-","",$fechaDespues)."<br/><br/>";
			if(str_replace("-","",$fechaHoy) < str_replace("-","",$fechaDespues)){
				
				continue;
			}else if(str_replace("-","",$fechaHoy) > str_replace("-","",$fechaDespues)){
				$noDias = date_diff2($fechaDespues, $fechaHoy);
				//$noDias = dateDifference($fechaDespues, $fechaHoy);
				if($noDias < $assocConfigProveedor["notificar_repetirdias"]){
					continue;
				}
				$residuo=$noDias%$assocConfigProveedor["notificar_repetirdias"];
				if($residuo != 0){
					continue;
				}
			}
		}else if($assocConfigProveedor["notificar_despuesde"] == "FINMES"){
			$fechaHoy = date("Y-m-d");
			$diaFinMes = getUltimoDiaMes(substr($tPago["fecha"],0,4),substr($tPago["fecha"],5,2));
			$fechaFinMes = substr($tPago["fecha"],0,4)."-".substr($tPago["fecha"],5,2)."-".$diaFinMes;
			//echo str_replace("-","",$fechaHoy) ." < ". str_replace("-","",$fechaDespues)."<br/><br/>";
			if(str_replace("-","",$fechaHoy) > str_replace("-","",$fechaFinMes)){
				
				$noDias = date_diff2($fechaHoy,$fechaFinMes);
				//$noDias = dateDifference($fechaHoy, $fechaFinMes);
				if($noDias < $assocConfigProveedor["notificar_repetirdias"]){
					continue;
				}
				$residuo=$noDias%$assocConfigProveedor["notificar_repetirdias"];
				if($residuo != 0){
					continue;
				}
			}else if(str_replace("-","",$fechaHoy) < str_replace("-","",$fechaFinMes)){
				continue;
			}
		}
		
		
		$bodyEnviar.=$body;
		$body="";
		if(trim($tPago["rfcreceptor"]) != $auxReceptor){
			if(trim($bodyEnviar) != ""){
				$ParaEmail="";
				if(trim($correosProveedor) != ""){
					$ParaEmail=$correosProveedor;
				}else{
					$ParaEmail=$tConfig["notificar_correos"];
				}
				// echo $bodyEnviar."<br><br><br>";
				$mensaje = SendMail($ParaEmail,$ParaEmail,$tConfig["notificar_asunto"],$bodyEnviar,"","","",$tConfig["notificar_correos_cc"],$tConfig["notificar_correos_cc"]);
				if(!$mensaje){
					echo "error al enviar correo Error: ".$mensaje;
					setBitacora($conexion, "AUTOMATICO", $arrRFCReceptores[$i], "NOTIFICACION AUTOMATICA COMPLEMENTOS FALTANTES", "No se pudo enviar el correo de notificacion.", $mensaje);
				}else{
					echo "se envio el corrreo";
					setBitacora($conexion, "AUTOMATICO", $arrRFCReceptores[$i], "NOTIFICACION AUTOMATICA COMPLEMENTOS FALTANTES", "Se ha logrado notificar a $ParaEmail", $bodyEnviar);
					
				}
			}
			$bodyEnviar="";
			$correosProveedor = $tPago["correos"];
			$auxReceptor=$tPago["rfcreceptor"];
		}
		
		$body.= '
		<table width="98%" bgcolor="white" style="border: 5px #DDDDDD solid;">
			<tr>
				<th style="background-color: #DDDDDD; text-align: center" colspan="10">Pago</th>
			</tr>
			<tr class="ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all">
				<td>Serie</td>
				<td>Folio</td>
				<!--<td>UUID</td>-->
				<td>Total PUE</td>
				<td>Total PPD</td>
				<td>Total</td>
				<td>Moneda</td>
				<td>Tipo Cambio</td>
				<td>Forma de Pago</td>
				<td>Proveedor</td>
				<td>Fecha de pago</td>
			</tr>
			<tr class="ui-accordion-header ui-helper-reset ui-state-default ui-corner-all ui-accordion-icons">
				<td>'.$tPago["serie"].'</td>
				<td>'.$tPago["folio"].'</td>
				<!--<td>'.$tPago["uuid"].'</td>-->
				<td>'.$tPago["totalPorMetodoDePagoPUE"].'</td>
				<td>'.$tPago["totalPorMetodoDePagoPPD"].'</td>
				<td>'.$tPago["total"].'</td>
				<td>'.$tPago["moneda"].'</td>
				<td>'.$tPago["tipocambio"].'</td>
				<td>'.$tPago["formadepago"].'</td>
				<td>'.$tPago["nombrerec"].'</td>
				<td>'.$tPago["fechaPago"].'</td>
			</tr>';
		
		$qPagoRecibePago = "select pdr.uuidcfdirelacionado,
		r1.serie,r1.folio,
		pdr.monto as PDRmontoPago,pdr.numparcialidad as PDRnumparcialidad,pdr.tipocambio as PDRtipocambio,pdr.moneda as PDRmoneda, rpdr.tipocambiodr as RPDRtipocambio,r.total as totalCFDI,r1.MetodoDePago as MetodoDePagoDoc,pdr.MetodoDePago as PDRMetodoDePago,rpdr.MetodoDePago as RPDRMetodoDePago,
	rpdr.monedadr as RPDRmoneda,rpdr.imppagado as RPDRimpagado,rpdr.NumParcialidad as RPDRnumparcialidad, r.nombreemi, rdp.MonedaP as RDPmoneda,rdp.Monto as RDPmonto,rdp.recibedoce_UUID,
	rdp.TipoCambioP as RDPtipocambio,rdp.formadepago, rdp.FechaPago as RDPFechaPago, date_format(rdp.FechaPago,'%Y%m%d%H%i%s') as formatRDPFechaPago, rcomplemento.status as statusComplemento,rcomplemento.uuid as RepUUID,rcomplemento.serie as RepSerie,rcomplemento.folio as RepFolio, 
	rdt.totalPagoDocumentosRef, rdt.totalIngresoCompensado, rdt.ImpPagadoComplemento, rdt.FechaNP, rdt.numReferenciasPagoDocumentosRef,
	(select count(*) from pago_documentos_ref where uuidcfdirelacionado=pdr.uuidcfdirelacionado and numparcialidad=pdr.numparcialidad) as numParcialidadDuplicada,pdr.doce_uuid
	from pago_documentos_ref pdr 
	left join recibedoce r1 
	ON pdr.uuidcfdirelacionado = r1.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 
	left join recibedoce_totales rdt
	ON rdt.uuid=r.uuid
	left join recibedoce rcomplemento on rdp.recibedoce_UUID = rcomplemento.uuid 
	where pdr.doce_uuid='".$tPago["uuid"]."' and r1.MetodoDePago='PPD' and (rcomplemento.status IN ('A','S','W','WS') or rcomplemento.status is null) and length(trim(pdr.uuidcfdirelacionado)) > 1";
	// where pdr.doce_uuid='".$tPago["uuid"]."' and r1.MetodoDePago='PPD' and rcomplemento.status IN ('A','S','W','WS')";
	// echo $qPagoRecibePago."<br/><br/>";	continue;
	/*if($tPago['uuid'] == "AA4C1A86-8728-4E42-9733-317935B47414"){
				echo $qPagoRecibePago;exit;
			}*/

		$qMoneda = "select moneda from pago_documentos_ref where doce_uuid = '".$tPago["uuid"]."' group by moneda";
		if(!$rMoneda = mysqli_query($conexion->CONEXION,$qMoneda)){
			?><script>$j_6.messager.alert("Error","Ocurrio un error al consultar las monedas de la NP <?php echo $tPago["serie"].$tPago["folio"];?>","error.");</script><?exit;
		}
		if(mysqli_num_rows($rMoneda) > 0){
			if(mysqli_num_rows($rMoneda) == 1){
				$qMoneda = "select moneda from pago_documentos_ref where doce_uuid = '".$tPago["uuid"]."' group by moneda limit 1";
				if(!$rMoneda = mysqli_query($conexion->CONEXION,$qMoneda)){
					?><script>$j_6.messager.alert("Error","Ocurrio un error al consultar la moneda detalle de la NP <?php echo $tPago["serie"].$tPago["folio"];?>","error.");</script><?exit;
				}
				$tMoneda = mysqli_fetch_assoc($rMoneda);
				if(trim(strtoupper($tMoneda["moneda"])) == trim(strtoupper($tPago["moneda"]))){
					$validarTipoCambio = false;
				}
			}
		}else{
			?><script>$j_6.messager.alert("Error","No se encontraron las monedas de pago de la NP <?php echo $tPago["serie"].$tPago["folio"];?>","error.");</script><?exit;
		}
		
		if(!$rPagoRecibePago = mysqli_query($conexion->CONEXION,$qPagoRecibePago)){
			setBitacora($conexion, "AUTOMATICO", "AUTOMATICO", "NOTIFICACION AUTOMATICA COMPLEMENTOS FALTANTES", "Ocurrio un error al consultar los documentos de referencia de pagos", $qPagoRecibePago);exit;
		}
		if(mysqli_num_rows($rPagoRecibePago) <= 0){
			$body.='
			<tr>
				<td colspan="10" style="padding: 20px 20px 20px 20px">
					<table width="98%" bgcolor="white" style="border: 2px #DDDDDD solid">
						<tr>
							<th style="background-color: #fcfbe5; text-align: center"></th>
						</tr>
					</table>
				</td>
			</tr>
			</table>';
		}
		$con=0;
			$body.='
			<tr>
				<td colspan="10" style="padding: 20px 20px 20px 20px">
					<table width="98%" bgcolor="white" style="border: 2px #DDDDDD solid">
						<tr style="color: #FFFFFF">
							<th style="background-color: #2476af; text-align: center" colspan="9">Pago / ICFDI 3.3</th>
							<th style="background-color: #000000; text-align: center" colspan="10">Complemento / ICFDI 3.3</th>
						</tr>
						<tr style="background-color: #2476af; color: #FFFFFF">
							<td>Serie</td>
							<td>Folio</td>
							<td>UUID</td>
							<td>Parcialidad</td>
							<td>Fecha de Pago</td>
							<td>Moneda</td>
							<td>T. Cambio</td>
							<td>Monto</td>
							<td>Metodo de Pago</td>
							
							<td style="background-color: #000000">Parcialidad</td>
							<td style="background-color: #000000">Fecha de Pago</td>
							<td style="background-color: #000000">Moneda</td>
							<td style="background-color: #000000">T. Cambio</td>
							<td style="background-color: #000000">Forma de Pago</td>
							<td style="background-color: #000000">Monto</td>
							<td style="background-color: #000000">Metodo de Pago</td>
							<td style="background-color: #000000">REP UUID</td>
							<td style="background-color: #000000">REP Serie</td>
							<td style="background-color: #000000">REP Folio</td>
						</tr>';
		
		
		/*
		************************************************************************
		************************************************************************
		************************************************************************
		************************************************************************
		************************************************************************
		************************************************************************
		empieza a iterar los cfdi pagados
		*/
		$totalMontosFacturasNP=0;
		$sumaMontoPago=0.00;
		$banIncorrecto=false;
		$totalPPD=0.00;
		$totalEncabezadoComplemento = 0.00;
		while($tPagoRecibePago = mysqli_fetch_array($rPagoRecibePago,MYSQLI_ASSOC)){
			//Si es una PUE la ignoro
			if(trim($tPagoRecibePago["MetodoDePagoDoc"]) == "PUE"){
				continue;
			}
			if($tPagoRecibePago["MetodoDePagoDoc"] == "PPD"){
				$totalPPD = $totalPPD + $tPagoRecibePago["PDRmontoPago"];
			}
			$totalEncabezadoComplemento = $tPagoRecibePago["RDPmonto"];
			$con++;
			$res = $con%2;
			$trEstilo="";
			if($res == 0){
				$trEstilo = "style='background-color: #999999'";
			}
			$tdEstiloMonto = "";
			$tdEstiloTipoCambio = "";
			$tdEstiloMoneda = "";
			$tdEstiloFechaPago = "";
			$tdEstiloParcialidad = "";
			$tdEstiloFormaDePago = "";
			$tdEstiloMetodoDePago = "";
			$tdEstiloParcialidadPago = "";
			
			//Valido el monto pagado al documento en NP vs Complemento
			if($tPagoRecibePago["PDRmontoPago"] != $tPagoRecibePago["RPDRimpagado"]){
				
				$diferencia = (float) $tPagoRecibePago["PDRmontoPago"] - (float) $tPagoRecibePago["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;
			}
			//Valido el tipo de cambio del pago al documento en NP vs Complemento
			if($validarTipoCambio == true){
				if($tPagoRecibePago["PDRtipocambio"] != $tPagoRecibePago["RPDRtipocambio"]){
					$diferencia = (float) $tPagoRecibePago["PDRtipocambio"] - (float) $tPagoRecibePago["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;
				}
			}
			//Valido la moneda
			if($tPagoRecibePago["PDRmoneda"] != $tPagoRecibePago["RPDRmoneda"]){
				$tdEstiloMoneda = "style='background-color: red'";
				$banIncorrecto=true;
			}
			//Valido el numero de parcialidad
			if($tPagoRecibePago["PDRnumparcialidad"] != $tPagoRecibePago["RPDRnumparcialidad"]){
				$tdEstiloParcialidad = "style='background-color: red'";
				$tdEstiloParcialidadPago = "style='background-color: red'";
				$banIncorrecto=true;
			}
			//Valido la forma de pago
			if(trim($tPagoRecibePago["formadepago"]) != trim($tPago["formadepago"])){
				$tdEstiloFormaDePago = "style='background-color: red'";
				$banIncorrecto=true;
			}
			//Valido la fecha de pago
			/*if($valida_fecha_pago == "1"){
				if(substr($tPago["formatFechaPago"],0,8) >= substr($formatFecha_valida_fecha_pago,0,8)){									
					if($tPago["formatFechaPago"] != $tPagoRecibePago["formatRDPFechaPago"]){
						$tdEstiloFechaPago = "style='background-color: red'";
						$banIncorrecto = true;
					}
				}
			}*/
			if($valida_fecha_pago == "1"){
				if($tPago["formatFechaPago"] == ""){
					$tdEstiloFechaPago = "style='background-color: red'";
					$banIncorrecto = true;
				}else if(substr($tPago["formatFechaPago"],0,8) >= substr($formatFecha_valida_fecha_pago,0,8)){
					if(substr($tPagoRecibePago["formatRDPFechaPago"],8,6) != "120000"){
						if($tPago["formatFechaPago"] != $tPagoRecibePago["formatRDPFechaPago"]){
							$tdEstiloFechaPago = "style='background-color: red'";
							$banIncorrecto = true;
						}
					}
				}
			}
			if(trim($tPagoRecibePago["PDRMetodoDePago"]) != trim($tPagoRecibePago["RPDRMetodoDePago"])){
				$tdEstiloMetodoDePago = "style='background-color: red'";
				$banIncorrecto=true;
			}
			
			//Valido que si es PUE, el pago haya sido por completo al total del CFDI
			if(trim($tPago["RPDRMetodoDePago"]) == "PUE"){
				$totalCompensadoMasPagadoCom = $tPagoRecibePago["RPDRimpagado"]+$tPagoRecibePago["totalIngresoCompensado"];
				if($totalCompensadoMasPagadoCom != $tPagoRecibePago["totalCFDI"]){
					if($totalCompensadoMasPagadoCom > $tPagoRecibePago["totalCFDI"]){
						$diferencia = (float) $totalCompensadoMasPagadoCom - (float) $tPagoRecibePago["totalCFDI"];
					}
					if($totalCompensadoMasPagadoCom < $tPagoRecibePago["totalCFDI"]){
						$diferencia = (float) $tPagoRecibePago["totalCFDI"] - (float) $totalCompensadoMasPagadoCom;
					}
					if($diferencia < 0){
						$diferencia = $diferencia * -1;
					}
					if((float) $diferencia > (float) $tConfig["tolerancia_FacturaPagada"]){
						$tdEstiloMonto = "style='background-color: red'";
					}
				}
			}
			
			if($tPagoRecibePago["statusComplemento"] == "C" || $tPagoRecibePago["statusComplemento"] == "R" || trim($tPagoRecibePago["RPDRimpagado"]) == ""){
				$tdEstiloMonto = "style='background-color: red'";
				$tdEstiloTipoCambio = "style='background-color: red'";
				$tdEstiloMoneda = "style='background-color: red'";
				$tdEstiloFechaPago = "style='background-color: red'";
				$tdEstiloParcialidad = "style='background-color: red'";
				$tdEstiloParcialidadPago = "style='background-color: red'";
				$tdEstiloFormaDePago = "style='background-color: red'";
				$tdEstiloMetodoDePago = "style='background-color: red'";
				$tPagoRecibePago["RPDRimpagado"] = "";
				$tPagoRecibePago["RPDRmoneda"]="";
				$tPagoRecibePago["RPDRtipocambio"]="";
				$tPagoRecibePago["formadepago"]="";
				$tPagoRecibePago["RPDRnumparcialidad"]="";
				$banIncorrecto=true;
			}
			if($tPagoRecibePago["numParcialidadDuplicada"] > 1){
				if($tdEstiloParcialidadPago != ""){
					$tdEstiloParcialidadPago = "class='tdParcialidadPago'";
				}else{
					$tdEstiloParcialidadPago = "style='background-color: yellow'";
				}
			}
				$body.='
				<tr '.$trEstilo.'>
					<td>'.$tPagoRecibePago["serie"].'</td>
					<td>'.$tPagoRecibePago["folio"].'</td>
					<td>'.$tPagoRecibePago["uuidcfdirelacionado"].'</td>
					<td '.$tdEstiloParcialidadPago.'>'.$tPagoRecibePago["PDRnumparcialidad"].'</td>
					<td '.$tdEstiloFechaPago.'>'.$tPago["fechaPago"].'</td>
					<td '.$tdEstiloMoneda.'>'.$tPagoRecibePago["PDRmoneda"].'</td>
					<td '.$tdEstiloTipoCambio.'>'.$tPagoRecibePago["PDRtipocambio"].'</td>
					<td '.$tdEstiloMonto.'>'.$tPagoRecibePago["PDRmontoPago"].'</td>
					<td '.$tdEstiloMetodoDePago.'>'.$tPagoRecibePago["PDRMetodoDePago"].'</td>
					
					<td '.$tdEstiloParcialidad.'>'.$tPagoRecibePago["RPDRnumparcialidad"].'</td>
					<td '.$tdEstiloFechaPago.'>'.$tPagoRecibePago["RDPFechaPago"].'</td>
					<td '.$tdEstiloMoneda.'>'.$tPagoRecibePago["RPDRmoneda"].'</td>
					<td '.$tdEstiloTipoCambio.'>'.$tPagoRecibePago["RPDRtipocambio"].'</td>
					<td '.$tdEstiloFormaDePago.'>'.$tPagoRecibePago["formadepago"].'</td>
					<td '.$tdEstiloMonto.'>'.$tPagoRecibePago["RPDRimpagado"].'</td>
					<td '.$tdEstiloMetodoDePago.'>'.$tPagoRecibePago["RPDRMetodoDePago"].'</td>
					<td '.$tdEstiloMetodoDePago.'>'.$tPagoRecibePago["RepUUID"].'</td>
					<td '.$tdEstiloMetodoDePago.'>'.$tPagoRecibePago["RepSerie"].'</td>
					<td '.$tdEstiloMetodoDePago.'>'.$tPagoRecibePago["RepFolio"].'</td>
				</tr>';	
		// $sumaMontoPago = $tPagoRecibePago["RDPmonto"];
		// $sumaMontoPago += (trim($tPagoRecibePago["RPDRimpagado"]) == "")? 0.00 : $tPagoRecibePago["RPDRimpagado"];
		
		$sumaMontoPago += (trim($tPagoRecibePago["RPDRimpagado"]) == "")? 0.00 : ((float) (trim($tPagoRecibePago["RPDRimpagado"]))) / (float) $tPagoRecibePago["RPDRtipocambio"];
		
		// $totalMontosFacturasNP = (float) $totalMontosFacturasNP + (float) $tPagoRecibePago["PDRmontoPago"];
		$totalMontosFacturasNP = (float) $totalMontosFacturasNP + (((float) $tPagoRecibePago["PDRmontoPago"]) / (float) $tPagoRecibePago["PDRtipocambio"]);
		}// Termina While Facturas y Complementos de la Notificacion de pago
		
		$tdEstiloPagoTotal="";
		$tdEstiloPagoTotalComplemento="";
		$tdEstiloTotalMontosFacturasNP="";
		//Valido el monto total de la Notificaci�n de Pago contra el monto total del complemento.
		//Multiplico por 1000000 para sacar la parte entera y poder comparar enteros, ya que con decimales hay problemas
		$totalEnPago1000000 = $tPago["totalPorMetodoDePagoPPD"] * 1000000;
		$sumaMontoPago1000000 = $sumaMontoPago * 1000000;
		$totalEncabezadoComplemento1000000 = $totalEncabezadoComplemento * 1000000;
		$arrTotalEnPago1000000 = explode(".",$totalEnPago1000000);
		$arrSumaMontoPago1000000 = explode(".",$sumaMontoPago1000000);
		$arrTotalEncabezadoComplemento1000000 = explode(".",$totalEncabezadoComplemento1000000);
		// if($tPago["totalPorMetodoDePagoPPD"] != $sumaMontoPago){
		if($arrTotalEnPago1000000[0] != $arrSumaMontoPago1000000[0]){
			$diferencia = (float) $tPago["totalPorMetodoDePagoPPD"] - (float) $sumaMontoPago;
			if($diferencia < 0){
				$diferencia = $diferencia * -1;
			}
			
			if((float) $diferencia > (float) $tConfig["tolerancia_NPvsComplemento"]){
				$tdEstiloPagoTotal = "style='background-color: red'";
				$banIncorrecto=true;
			}else{
				$tdEstiloPagoTotal = "style='background-color: orange'";
			}
			// $tdEstiloPagoTotal="style='background-color: red'";
			// $banIncorrecto=true;
		}
		
		//Valido total encabezado complemento vs total en NP
		if($arrTotalEnPago1000000[0] != $arrTotalEncabezadoComplemento1000000[0]){
			$diferencia = (float) $tPago["totalPorMetodoDePagoPPD"] - (float) $totalEncabezadoComplemento;
			if($diferencia < 0){
				$diferencia = $diferencia * -1;
			}
			
			if((float) $diferencia > (float) $tConfig["tolerancia_NPvsComplemento"]){
				$tdEstiloPagoTotalComplemento = "style='background-color: red'";
				$banIncorrecto=true;
			}else{
				$tdEstiloPagoTotalComplemento = "style='background-color: orange'";
			}
			// $tdEstiloPagoTotalComplemento="style='background-color: red'";
			// $banIncorrecto=true;
		}
		
		//Valido el monto total de la Notificaci�n de Pago contra el total de la suma de los montos de las facturas
		//Multiplico por 1000000 para sacar la parte entera y poder comparar enteros, ya que con decimales hay problemas
		$totalMontosFacturasNP1000000 = $totalMontosFacturasNP * 1000000;
		$arrTotalMontosFacturasNP1000000 = explode(".",$totalMontosFacturasNP1000000);
		// if($tPago["totalPorMetodoDePagoPPD"] != $totalMontosFacturasNP){
		if($arrTotalEnPago1000000[0] != $arrTotalMontosFacturasNP1000000[0]){
			$diferencia = (float) $tPago["totalPorMetodoDePagoPPD"] - (float) $totalMontosFacturasNP;
			if($diferencia < 0){
				$diferencia = $diferencia * -1;
			}
			if((float) $diferencia > (float) $tConfig["tolerancia_NPvsFactura"]){
				$tdEstiloTotalMontosFacturasNP = "style='background-color: red'";
				$banIncorrecto=true;
			}else{
				$tdEstiloTotalMontosFacturasNP = "style='background-color: orange'";
			}
			// $tdEstiloTotalMontosFacturasNP="style='background-color: red'";
			// $banIncorrecto=true;
		}
						$body.='
						<tr>
							<th style="text-align: right" colspan="7">Total Pago</th>
							<th style="text-align: right" colspan="1" '.$tdEstiloTotalMontosFacturasNP.'>'.number_format(floor($totalMontosFacturasNP*1000000)/1000000, 6,".",",").'</th>
							<th style="text-align: right" colspan="6">Total Suma Complemento</th>
							<th style="text-align: right" colspan="1" '.$tdEstiloPagoTotal.'>'.number_format(floor($sumaMontoPago*1000000)/1000000, 6,".",",").'</th>
						</tr>
						<tr>
							<th style="text-align: right" colspan="14">Total Complemento</th>
							<th style="text-align: right" colspan="1" '.$tdEstiloPagoTotalComplemento.'>'.number_format(floor($totalEncabezadoComplemento*1000000)/1000000, 6,".",",").'</th>
						</tr>
					</table>
				</td>';
		
		// if($tPago["totalPorMetodoDePagoPPD"] != $sumaMontoPago){
		if($arrTotalEnPago1000000[0] != $arrTotalMontosFacturasNP1000000[0]){
			$diferencia = (float) $tPago["totalPorMetodoDePagoPPD"] - (float) $sumaMontoPago;
			if($diferencia < 0){
				$diferencia = $diferencia * -1;
			}
			
			if((float) $diferencia > (float) $tConfig["tolerancia_NPvsComplemento"]){
				?><script>$j_6("#totalpago_<?=$tPago["uuid"]?>").css("background-color","red");</script><?
			}else{
				?><script>$j_6("#totalpago_<?=$tPago["uuid"]?>").css("background-color","orange");</script><?
			}
			
		}
		if($banIncorrecto == true){
					if($tPago["con_complemento_correcto"] == "0"  || trim($tPago["con_complemento_correcto"]) == ""){
						$body.='<td>
							<table width="98%" bgcolor="white" style="border: 2px #DDDDDD solid">
								<tr>
									<th style="background-color: #fcfbe5; text-align: center"></th>
								</tr>
							</table>
						</td>';
					}else{
						ActualizaStatus($tPago["uuid"],$arrRFCReceptores[$i]);
						$body.=''; continue;
					}
		}else{
				ActualizaStatus($tPago["uuid"],$arrRFCReceptores[$i]);
				$body='';continue;
		}
			$body.='
			</tr>
			<tr><td  style="background-color: #DDDDDD; text-align: center" colspan="9">"Estimado proveedor estamos esperando el complemento de pago aun no recibido, si no se recibe el sistema bloquear� toda operaci�n"</td></tr>
		</table>';
		
	}//Termina While Notificacion Pago
	$bodyEnviar.=$body;
	$body="";
	if(trim($tPago["rfcreceptor"]) != $auxReceptor){
		if(trim($bodyEnviar) != ""){
			$ParaEmail="";
			if(trim($correosProveedor) != ""){
				$ParaEmail=$correosProveedor;
			}else{
				$ParaEmail=$tConfig["notificar_correos"];
			}
			// echo $bodyEnviar."<br><br><br>";
			$mensaje = SendMail($ParaEmail,$ParaEmail,$tConfig["notificar_asunto"],$bodyEnviar,"","","",$tConfig["notificar_correos_cc"],$tConfig["notificar_correos_cc"]);
			if(!$mensaje){
				echo "Ocurrio un error al enviar el correo. Error: ".$mensaje;
				setBitacora($conexion, "AUTOMATICO", $arrRFCReceptores[$i], "NOTIFICACION AUTOMATICA COMPLEMENTOS FALTANTES", "No se pudo enviar el correo de notificacion.", $mensaje);
			}else{
				echo "Correo enviado correctamente.";
				setBitacora($conexion, "AUTOMATICO", $arrRFCReceptores[$i], "NOTIFICACION AUTOMATICA COMPLEMENTOS FALTANTES", "Se ha logrado notificar a $ParaEmail", $bodyEnviar);
			}
		}
		$bodyEnviar="";
		$correosProveedor = $tPago["correos"];
		$auxReceptor=$tPago["rfcreceptor"];
	}
}//Termina FOR Receptores

function sumaDiasFecha($fecha,$dias){
	$fechaS = date("Y-m-d", strtotime("$fecha $dias days"));
	return $fechaS;
}

function getUltimoDiaMes($elAnio,$elMes) {
  return date("d",(mktime(0,0,0,$elMes+1,1,$elAnio)-1));
}

function date_diff2($date1, $date2) { 
    $current = $date1; 
    $datetime2 = date_create($date2); 
    $count = 0; 
    while(date_create($current) < $datetime2){ 
        $current = gmdate("Y-m-d", strtotime("+1 day", strtotime($current))); 
        $count++; 
    } 
    return $count; 
}

function dateDifference($date_1 , $date_2 , $differenceFormat = '%a' )
{
    $datetime1 = date_create($date_1);
    $datetime2 = date_create($date_2);
    
    $interval = date_diff($datetime1, $datetime2);
    
    return $interval->format($differenceFormat);
    
}

function ActualizaStatus($uuid,$rfc){
	global $conexion;
	$q="update doce set notificar_complemento_faltante='0' where adicionalA='$uuid'";
	if(!mysqli_query($conexion->CONEXION,$q)){
		setBitacora($conexion, "AUTOMATICO", $arrRFCReceptores[$i], "NOTIFICACION AUTOMATICA COMPLEMENTOS FALTANTES", "No se pudo actualizar el status de notificar_complemento_faltante.", $q);
		return false;
	}else{
		setBitacora($conexion, "AUTOMATICO", $arrRFCReceptores[$i], "NOTIFICACION AUTOMATICA COMPLEMENTOS FALTANTES", "Se logro actualizar el status de notificar_complemento_faltante.", $q);
		return true;
	}
}
?>