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

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


$arrRFCEmisor = explode("?",$_GET["rfcEmisor"]);
//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 from configpagina where rfc_receptor='".$arrRFCEmisor[0]."' limit 1";

/*$responce->rows[0]['cell']=array('','',$arrRFCEmisor[0]);
echo json_encode($responce);exit;*/

if(!$rConfig = mysqli_query($conexion->CONEXION,$qConfig)){
	setBitacora($conexion, "AUTOMATICO", $arrRFCEmisor[0] , "NOTIFICACION AUTOMATICA COMPLEMENTOS FALTANTES", "Error en consulta de configuracion general.", $qConfig);exit;
}
if(mysqli_num_rows($rConfig) <= 0){
	
	setBitacora($conexion, "AUTOMATICO", $arrRFCEmisor[0] , "NOTIFICACION AUTOMATICA COMPLEMENTOS FALTANTES", "No se encontro la configuracion del receptor.", $qConfig);exit;
}

$tConfig = mysqli_fetch_assoc($rConfig);

$notificar_fecha_inicio = (float) $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"];

$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"];

if(trim($notificar_fecha_inicio) == "" || $notificar_fecha_inicio=="0000-00-00 00:00:00"){
	$notificar_fecha_inicio = "2018-01-01 00:00:00";
}

$notificar_fecha_inicio = str_replace(":","",str_replace(":","",str_replace(" ","",$notificar_fecha_inicio)));
	

$page = $_GET['page']; // get the requested page
$limit = (integer) $_GET['rows']; // get how many rows we want to have into the grid
$sidx = $_GET['sidx']; // get index row - i.e. user click to sort
$sord = $_GET['sord']; // get the direction

if(!$sidx) $sidx =1;

$totalrows = isset($_REQUEST['totalrows']) ? $_REQUEST['totalrows']: false;
if($totalrows) {
	//$limit = (integer) $totalrows;
}

$filtros="";
$busqueda="";
if(isset($_REQUEST['filters'])){
	$filtros = json_decode($_REQUEST['filters']);
	foreach($filtros->rules as $rule){ 
		if(trim($rule->data) != ""){
			$busqueda.=" AND ".$rule->field." like '%".$rule->data."%'";
		}
	}
}



$_SESSION['query'] = str_replace("\\","",$_SESSION['query']);
$SQL_1="select COUNT(*) as count from (".$_SESSION['query']." $busqueda) as temp";
//$SQL_1="select COUNT(*) as count from (select rfcemisor,tipodocto,serie,folio from doce) as temp";

$result = mysqli_query($conexion->CONEXION,$SQL_1) or die(mysqli_error($conexion->CONEXION));

$row = mysqli_fetch_array($result,MYSQLI_ASSOC);
$count = (integer) $row['count'];

if( $count >0 ) {
	$total_pages = (integer) ceil($count/$limit);
} else {
	$total_pages = 0;
}
if ($page > $total_pages) $page=$total_pages;
if ($limit<0) $limit = 0;
$start = (integer) $limit*$page - $limit;
if ($start<0) $start = 0;

$SQL = $_SESSION['query']." $busqueda order by $sidx $sord LIMIT $start , $limit";
//$SQL = "select rfcemisor,tipodocto,serie,folio from doce order by $sidx $sord LIMIT $start , $limit";

$result = mysqli_query($conexion->CONEXION, $SQL ) or die(mysqli_error($conexion->CONEXION));

$responce=new stdclass();
$responce->page = $page;
$responce->total = $total_pages;
$responce->records = $count;
$i=0;

/*$responce->rows[0]['cell']=array($SQL);
echo json_encode($responce);exit;*/

$valorIni = getINI("CAMPOSD_ORDEN=","../config.ini");

$arrConf = explode(",",$valorIni);

while($row = mysqli_fetch_array($result,MYSQLI_ASSOC)){
	$arrTemp = array();		
	if($row['usarRutaDistribuida'] == "SI"){
		$year = substr($row['fecha'],0,4);
		$mes = substr($row['fecha'],5,2);
		$row['xml'].=$year."/".$mes."/".$row['archXML'];
		$row['pdf'].=$year."/".$mes."/".$row['archPDF'];
	}else{
		$row['xml'].=$row['archXML'];
		$row['pdf'].=$row['archPDF'];
	}
	
	$ArchXML = trim($row['archXML']);
	$ArchPDF = trim($row['archPDF']);

	$rutaXML = trim(str_replace('\\','/',$row['xml']));
	$rutaPDF = trim(str_replace('\\','/',$row['pdf']));
	
	$ban=0;
	
	$rs = getStatus($row["uuid"]);
	
	

	
	$row["statusNP"] = "<img src='Imagenes/circulo_".$rs.".png' width='16' height='16'>";
	
	
	if(is_file($rutaXML)){
		$icoXML="<img src='grids/Imagenes/xml.png' width='11' height='15' style='cursor:pointer' title='Descargar XML' 
	onClick='javascript: descargar(\"$ArchXML\",\"".str_replace('../','',$rutaXML)."\")'/>";
	
	//VISTA ARCHIVOS BELL FLAVORS
	/*$icoXML="<img src='grids/Imagenes/xml.png' width='11' height='15' style='cursor:pointer' title='Descargar XML' 
	onClick='window.open(\"".str_replace('../','',$rutaXML)."\")'/>";*/
	
		$ban++;
	}else{
		$icoXML="<img src='Imagenes/nodisponible.jpg' width='11' height='15' title='XML no disponible'/>";
	}
	
	if(is_file($rutaPDF)){
		$icoPDF="<img src='grids/Imagenes/pdf.png' width='11' height='15' style='cursor:pointer' title='Descargar PDF' 
	onClick='javascript: descargar(\"$ArchPDF\",\"".str_replace('../','',$rutaPDF)."\")'/>";
	
	//VISTA ARCHIVOS BELL FLAVORS
	/*$icoPDF="<img src='grids/Imagenes/pdf.png' width='11' height='15' style='cursor:pointer' title='Descargar PDF' 
	onClick='window.open(\"".str_replace('../','',$rutaPDF)."\")'/>";*/
	
		$ban++;
	}else{
		$icoPDF="<img src='Imagenes/nodisponible.jpg' width='11' height='15' title='PDF no disponible'/>";
	}
	
	if($_SESSION['esAdmin'] == "SI"){
		if($row['mostrarweb'] == "SI"){
			$iconoShowHide="table_row_insert.png";
			$titulo="Ocultar";
			$mostrar="NO";
		}else{
			$iconoShowHide="table_row_delete.png";
			$titulo="Mostrar";
			$mostrar="SI";
		}
		$icoShow="<img style='cursor: pointer' id='".$titulo."_".$row['rfcemisor'].$row['tipodocto'].$row['serie'].$row['folio']."' title='$titulo' onClick='showHide(\"".$row['rfcemisor']."\",\"".$row['tipodocto']."\",\"".$row['serie']."\",\"".$row['folio']."\",\"".$mostrar."\",this.id);' src='Imagenes/$iconoShowHide' width='11' height='15'/>";
	}
	$icoMail="";
	if($ban==2){
		$icoMail='<img style="cursor: pointer" id="mail" title="Enviar por correo" onClick="ventanaModal2(\'[formularios/form_correo.php,450,150]\',\'\',\''.str_replace('../','',$rutaPDF).'\',\''.str_replace('../','',$rutaXML).'\',\''.$ArchXML.'\')" src="Imagenes/E-Mail.png" width="16" height="14" />';
	}
	
	$row["xml"]= "<center><pre> $icoXML $icoPDF ".$icoMail." $icoShow</pre></center>";
	
	array_push($arrTemp,$row["xml"]);
	
		if(trim($row["status"]) == "1")
			$img="accept.png";
		else
			$img="cancel.png";
		
		$row["status"] = "<center><img src='grids/Imagenes/$img'/></center>";
	
	for($j = 0; $j < count($arrConf); $j++){
		array_push($arrTemp,$row[$arrConf[$j]]);
	}
	
	$responce->rows[$i]['cell']=$arrTemp;
	$i++;
}
echo json_encode($responce);


function getStatus($uuid){
	global $conexion,$tConfig,$notificar_fecha_inicio;
	
	
	$qPagos = "select rfcreceptor,serie,folio,adicionalA as uuid,rfcemisor,moneda,tipocambio,nombrerec,total,fecha,con_complemento_correcto,adicionalB as formadepago from doce where tipodocto='NOTIFICACION DE PAGO' and adicionalA='$uuid'";
	
	
	if(!$rPago = mysqli_query($conexion->CONEXION,$qPagos)){
		return 0;
		exit;
	}
	if(mysqli_num_rows($rPago) <= 0){
		return 0;
		exit;
	}
	
	$tPago = mysqli_fetch_assoc($rPago);
	
	$tPago["fecha"] = str_replace(":","",str_replace(":","",str_replace(" ","",$tPago["fecha"])));
	
	if($tPago["fecha"] < $notificar_fecha_inicio){
		return 4;
	}

	$qPagoRecibePago = "select pdr.doce_uuid as doce_uuidEnPagoRef, 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, r1.MetodoDePago as MetodoDePagoDoc,pdr.MetodoDePago as PDRMetodoDePago,rpdr.MetodoDePago as RPDRMetodoDePago,r1.nombreemi,r1.serie,r1.folio,r1.total as totalCFDI, rdp.MonedaP as RDPmoneda,rdp.Monto as RDPmonto,rdp.recibedoce_UUID, 
	rdp.TipoCambioP as RDPtipocambio,rdp.formadepago,nPago.adicionalA as uuid,nPago.con_complemento_correcto,nPago.total as totalNP,nPago.formadepago as formadepagoNP,rcomplemento.status as statusComplemento,
	rpdr.doce_uuid as doce_uuidEnComplemento,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
	from doce nPago left join pago_documentos_ref pdr 
	on nPago.adicionalA = pdr.doce_uuid
	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='$uuid'";
	
	// echo $qPagoRecibePago."<br/>";exit;


	if(!$rPagoRecibePago = mysqli_query($conexion->CONEXION,$qPagoRecibePago)){
		
		return 4;
	}
	//echo mysqli_num_rows($rPagoRecibePago);exit;
	
	if(mysqli_num_rows($rPagoRecibePago) <= 0){
		// return 0;
		return 5;
	}
	if($tPago["con_complemento_correcto"] == "1"){
		return 4;
	}

	$banIncorrecto=false;
	$banFaltante=false;
		
	$totalPPD = 0.00;
	$statusTemp = false;
	while($tPagoRecibePago = mysqli_fetch_array($rPagoRecibePago,MYSQLI_ASSOC)){

		if($tPagoRecibePago["MetodoDePagoDoc"] == "PPD"){
			$totalPPD = $totalPPD + $tPagoRecibePago["PDRmontoPago"];
		}
				
		if($tPagoRecibePago["PDRmontoPago"] != $tPagoRecibePago["RPDRimpagado"]){
			if($tPagoRecibePago["PDRmontoPago"] > $tPagoRecibePago["RPDRimpagado"]){
				$diferencia = (float) $tPagoRecibePago["PDRmontoPago"] - (float) $tPagoRecibePago["RPDRimpagado"];
			}
			if($tPagoRecibePago["PDRmontoPago"] < $tPagoRecibePago["RPDRimpagado"]){
				$diferencia = (float) $tPagoRecibePago["RPDRimpagado"] - (float) $tPagoRecibePago["PDRmontoPago"];
			}
			if($diferencia < 0){
				$diferencia = $diferencia * -1;
			}
			if((float) $diferencia > (float) $tConfig["tolerancia_NPvsComplemento"]){
				$banIncorrecto=true;
			}
		}
		if($tPagoRecibePago["PDRtipocambio"] != $tPagoRecibePago["RPDRtipocambio"]){
			if($tPagoRecibePago["PDRtipocambio"] > $tPagoRecibePago["RPDRtipocambio"]){
				$diferencia = (float) $tPagoRecibePago["PDRtipocambio"] - (float) $tPagoRecibePago["RPDRtipocambio"];
			}
			if($tPagoRecibePago["PDRtipocambio"] < $tPagoRecibePago["RPDRtipocambio"]){
				$diferencia = (float) $tPagoRecibePago["RPDRtipocambio"] - (float) $tPagoRecibePago["PDRtipocambio"];
			}
			if($diferencia < 0){
				$diferencia = $diferencia * -1;
			}
			if((float) $diferencia > (float) $tConfig["tolerancia_tipoCambio"]){
				$banIncorrecto=true;
			}
		}
		if($tPagoRecibePago["PDRmoneda"] != $tPagoRecibePago["RPDRmoneda"]){
			$banIncorrecto=true;
		}
		if($tPagoRecibePago["PDRnumparcialidad"] != $tPagoRecibePago["RPDRnumparcialidad"]){
			$banIncorrecto=true;
		}
		if(trim($tPagoRecibePago["formadepago"]) != trim($tPago["formadepago"])){
			$banIncorrecto=true;
		}
		if(trim($tPagoRecibePago["PDRMetodoDePago"]) != trim($tPago["RPDRMetodoDePago"])){
			$banIncorrecto=true;
		}
		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"]){
					$banIncorrecto=true;
				}
			}
		}
		
		if($tPagoRecibePago["statusComplemento"] == "C" || $tPagoRecibePago["statusComplemento"] == "R" || $tPagoRecibePago["RPDRimpagado"] == ""){
			$statusTemp = true;
		}
		
		if($tPagoRecibePago["numParcialidadDuplicada"] > 1){
				$banIncorrecto=true;
		}
		
	}//while Pagos NP
	
	if($totalPPD == 0){
		if($tPagoRecibePago["statusComplemento"] != "C" && $tPagoRecibePago["statusComplemento"] != "R" && trim($tPagoRecibePago["RPDRimpagado"]) != ""){
			return 11;
		}
		return 8;
	}elseif($statusTemp == true){
		return 0;
	}elseif($totalPPD != $tPagoRecibePago["RDPmonto"]){
		if($totalPPD > $tPagoRecibePago["RDPmonto"]){
			$diferencia = (float) $totalPPD - (float) $tPagoRecibePago["RDPmonto"];
		}
		if($totalPPD < $tPagoRecibePago["RDPmonto"]){
			$diferencia = (float) $tPagoRecibePago["RDPmonto"] - (float) $totalPPD;
		}
		if($diferencia < 0){
			$diferencia = $diferencia * -1;
		}
		if((float) $diferencia > (float) $tConfig["tolerancia_NPvsComplemento"]){
			$banIncorrecto=true;
		}
	}
	
	
	if($banIncorrecto == true){
		return 3;
	}else{
		return 4;
	}
}//Termina funcion getUUIDS

?>