<?php
/*
Escript que funciona por get para iniciar el flujo de integracion con la DGT
*/

error_reporting(E_ALL);
ini_set('display_errors', 1);
date_default_timezone_set('America/Costa_Rica');

require ('../../conexion.php');		//Controla las credenciales para BD
require ('fe_consultasbd.php');	//Realizas las consultas a BD para la optencion de datos
require ('fe_objeto_te.php');   //Forma el un string en para exportar a xml

	$numcomp = $facturas['numcomp'];
	$tipocomprobante = substr("$numcomp",8,2);
/*************************************
		COMPROBATE SIN FIRMA
*************************************/

	$xml_data = new SimpleXMLElement('<?xml version="1.0" encoding="utf-8"?><FacturaElectronicaCompra '.$encabezado.'></FacturaElectronicaCompra>');	



$firmador = new Firmadocr();
$firmador->array_to_xml($data,$xml_data);
$dom = new DOMDocument("1.0");
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
$dom->loadXML($xml_data->asXML());
$result  = $dom->saveXML();

$result = str_replace('ListaDetalles', $detalleFactura, $result);

$result = str_replace('<TotalDesgloseImpuesto/>', $detalleimpuestos, $result);    //  se agrega en la version 4.4  //////////////////////////

if($facturas['conventa'] === '01'){ $result = str_replace('<MedioPago/>', $detallepagos, $result); } else { $result = str_replace('<MedioPago/>', "", $result); }  //  se agrega en la version 4.4 ////
file_put_contents("crt/comprobante-sf.xml", $result);



/*************************************
		COMPROBANTE CON FIRMA
*************************************/
$xmlSinFirmar = 'crt/comprobante-sf.xml';
$xmlFirmado = $parametros['rutaComprobantes'].$numeroConce.'.xml';
			

$firmador->firmar(
	$parametros['certificado'],     //uri del cert.p12
	$parametros['claveCertificado'],//clave para el cert.p12
	$xmlSinFirmar,					//URI XML sin fimar
	$xmlFirmado,					//URI donde va caer el xmlFirmardo
	$tipocomprobante
); //IMP: Parametros de tipo doc



$xmlFirmado = file_get_contents($xmlFirmado);


/***************************************	
		PREPARACION
***************************************/	
	$ahora = strtotime(date('Y-m-d H:i:s'));	
	$bdHora = $resultadoToken['refresh_token_limit'];
		
	if((int)$ahora < (int)($bdHora)){		
		$eltoken = $resultadoToken['access_token'];		
	}else{
			$eltoken = $resultadoToken['access_token'];			
	}
	
	$mensaje ='{
	  "clave": "'.$clave.'",
	  "fecha": "'.$fechaEmision.'", 
	  "emisor": {
		"tipoIdentificacion": "'.$web_0000['TIPCEDEMP'].'",
		"numeroIdentificacion": "'.$web_0000['CEDJUR'].'"
	  },';
	 
	if($facturas['cdgpro'] !== '9999'){
		$mensaje .='
		  "receptor": {
			"tipoIdentificacion": "'.$facturas['cedtip'].'",
			"numeroIdentificacion": "'.$facturas['cedcli'].'"
		  },
		  "comprobanteXml": "'.base64_encode($xmlFirmado).'"
		}'; 
	}else{
		$mensaje .='
		  "comprobanteXml": "'.base64_encode($xmlFirmado).'"
		}'; 
	}
 
	$header = array(
		'Authorization: bearer '.$eltoken,//NOTA: Token
		'Content-Type: application/json'
	);
	
	$curl = curl_init($parametros['uriRecepcion']);
	curl_setopt($curl, CURLOPT_HEADER, true);
	curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
	curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
	curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
	curl_setopt($curl, CURLOPT_POSTFIELDS, $mensaje);
	curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
	curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);

	$respuesta = curl_exec($curl);
	$status = curl_getinfo($curl,CURLINFO_HTTP_CODE);
	curl_close($curl);
	
	$headers = array();
	
	$data = explode("\n",$respuesta);
		
	$mensaje = '';
	foreach($data as $key=>$currentkey ){
		$pos = strpos($currentkey,'X-Error-Cause');		
		if ($pos !== false) {	
			$mensaje = utf8_encode($data[$key]);
			break;
		}
	}
	
	//modificar el tiquete electronico con la clave actual	
	if($facturas['estadoComprobanteIntegracion'] >= 200 && $facturas['estadoComprobanteIntegracion'] <=299){
		$status = $facturas['estadoComprobanteIntegracion'];
		if(empty($facturas['mensajeHacienda']))
			$mensaje = $facturas['mensajeHacienda'];		
	}
	
	$actualizarEstadoComp = "
	UPDATE facturas_compra_electronica
	SET 
		estadoComprobanteIntegracion = $status,
		mensajeHacienda = '$mensaje'
		
	WHERE codfactura = $idFactura";
	
	if ($mysqli->query($actualizarEstadoComp) === TRUE) {
		echo "Record updated successfully";
	} else {
		echo "Error updating record: " . $mysqli->error;
		echo '<br>'.$actualizarEstadoComp;
		
	}
	$mysqli->close();

	
	if((int)$status >= 201 && (int)$status <= 299){		
		/***************************************	
		Proceso de consulta de estado del comprobantes
		***************************************/	

		require('fe_estado.php'); /**/
		
		
	}else{


	}
	
	