<?
/*
Autor: Lic. Carlos Alberto Vaca Coronado
Version: 3.4.0
Cambio: archivo nuevo para verificar los CFDI en el SAT
*/

//require_once('../WS//lib/nusoap.php');
//error_reporting(E_ALL);
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('../WS/lib/nusoap/src/nusoap.php');
require_once('../WS/ws_SAT.php');
require_once('../conexion/conectar.php');
require_once("../clases/wsUtil.class.php");
require_once("../libs/funciones.php");
include_once("../config.php");

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

$wsUtil = null;

if($PORTAL_TEST == 1){
	$wsUtil = new wsUtil('T');
}else{
	$wsUtil = new wsUtil('P');
}

$wsUtil = new wsUtil('P');

$re=$_REQUEST["id"];
$tipodocto=$_REQUEST["id2"];
$serie=$_REQUEST["id3"];
$folio=$_REQUEST["id4"];
$uuid=$_REQUEST["id5"];

if(!$result = mysqli_query($conexion->CONEXION,"select rfc_receptor,total from recibedoce where rfcemisor='$re' and tipodocto='$tipodocto' and serie='$serie' and folio='$folio' and uuid='$uuid' limit 1")){
	echo "Ocurrio un error al consultar el documento.";
	exit;
}

if(mysqli_num_rows($result) <= 0){
	echo "No se encontro el registro del documento.";
	exit;
}

$tmp = mysqli_fetch_array($result,MYSQLI_ASSOC);
$rr = $tmp["rfc_receptor"];
$tt = $tmp["total"];

$rFecha = mysqli_query($conexion->CONEXION,"select max(fecharecibido) as fecharecibido from detallerecibedoce where rfcemisor='$re' and tipodocto='$tipodocto' and serie='$serie' and folio='$folio' and uuid='$uuid'");

if(mysqli_num_rows($rFecha) > 0){
	$tmpF = mysqli_fetch_array($rFecha,MYSQLI_ASSOC);
	$fecha = $tmpF['fecharecibido'];
}else{
	echo "No se encontraron las validaciones del documento. Intente nuevamente";
	exit;
}

$ws = new WSSAT();

$ws->expresionImpresa="?re=".str_replace("&","&amp;",$re)."&rr=".str_replace("&","&amp;",$rr)."&tt=$tt&id=".$uuid;
$ws->verificaCFDI();

$requestWSDL = @$ws->ws_sat->request;
$responseWSDL = @$ws->ws_sat->response;

/*echo htmlspecialchars($requestWSDL,ENT_QUOTES)."<br/><br/><br/>";
echo htmlspecialchars($responseWSDL,ENT_QUOTES);
exit;*/

if($ws->codigoStatus == "S"){
	if(trim($ws->estadoCFDI)=="Cancelado"){
		$Estatus='C';
	}else{
		$Estatus='V';
	}
}else{
	$Estatus='?';
}

$mensajeCompleto=$ws->mensajeCompleto."\n".$ws->estadoCFDI."\n";

$query="update recibedoce set verificacionSAT='$Estatus' where rfcemisor='$re' and tipodocto='$tipodocto' and serie='$serie' and folio='$folio' and uuid='$uuid'";

if(mysqli_query($conexion->CONEXION,$query)){
	$query="insert into detallerecibedoce set rfcemisor='$re',tipodocto='$tipodocto',serie='$serie',folio='$folio',
	uuid='$uuid',fechaEvento=NOW(),evento='Verificacion de CFDI', status='$Estatus',fecharecibido=current_timestamp(),xml='',pdf='',comentario='".mysqli_real_escape_string($conexion->CONEXION,str_replace("-"," ",limpiar_caracteres_especiales($mensajeCompleto)))."<<SAT>>',request='".mysqli_real_escape_string($conexion->CONEXION,$requestWSDL)."',response='".mysqli_real_escape_string($conexion->CONEXION,$responseWSDL)."'";

	if(mysqli_query($conexion->CONEXION,$query)){
	?>
		<center><h1>Resultado de la verificaci&oacute;n</h1></center>
		<table style="text-align: left; padding: 20px 20px 20px 20px">
		<tr><th>Codigo de Estatus:</th><td><?=$ws->codigoStatus?></td></tr>
		<tr><th>Resultado:</th><td><?=str_replace("-"," ",limpiar_caracteres_especiales($ws->mensaje))?></td></tr>
		<tr><th>Estado del CFDI:</th><td><?=$ws->estadoCFDI?></td></tr>
		</table>
	<?php
		if($EJECUTAR_WS_SQLSERVER == 1){
			$query = str_replace("<<UUID>>",$uuid,str_replace("<<VERIFICACFDI>>",$Estatus,$QUERY_ACTUALIZA_VERIFICA_CFDI));
			$json = $wsUtil->preparaJSON_WS_SQLSERVER($query);
			$responseB64 = $wsUtil->ejecutaWS_SqlServer($wsUtil->Encripta($json));
			if($wsUtil->CODEHTTP != 200){
				?><script>alert('Ocurrio un error al actualizar en la base externa con WS_SqlServer Error -> <?php echo $wsUtil->ERROR_MESSAGE?>');</script><?php
			}else{
				$res = $wsUtil->Encripta($responseB64,1);
				try{
					$resJson = json_decode($res);
					if($resJson->iRS != 0){
						?><script>alert('Ocurrio un error al actualizar en la base externa. Error -> <?php echo $resJson->sError;?>');</script><?php exit;
					}
				}catch(Exception $e){
						?><script>alert('Error al decodificar la respuesta del WS. Error -> <?php echo $e->getMessage();?>');</script><?php exit;
				}
				?><script>alert('Actualice la busqueda para ver el cambio reflejado.');</script><?php exit;
			}
		}
	}else{
		echo "<br/>Error: ".mysqli_error($conexion->CONEXION);
	}
}else{

	echo mysqli_error($conexion->CONEXION);
}


function limpiar_caracteres_especiales($s) {
	$s = preg_replace("[áàâãª]","a",$s);
	$s = preg_replace("[ÁÀÂÃ]","A",$s);
	$s = preg_replace("[éèê]","e",$s);
	$s = preg_replace("[ÉÈÊ]","E",$s);
	$s = preg_replace("[íìî]","i",$s);
	$s = preg_replace("[ÍÌÎ]","I",$s);
	$s = preg_replace("[óòôõº]","o",$s);
	$s = preg_replace("[ÓÒÔÕ]","O",$s);
	$s = preg_replace("[úùû]","u",$s);
	$s = preg_replace("[ÚÙÛ]","U",$s);
	$s = str_replace(" ","-",$s);
	$s = str_replace("ñ","n",$s);
	$s = str_replace("Ñ","N",$s);
	//para ampliar los caracteres a reemplazar agregar lineas de este tipo:
	//$s = str_replace("caracter-que-queremos-cambiar","caracter-por-el-cual-lo-vamos-a-cambiar",$s);
	return $s;
}
?>
