<?php
ini_set('error_reporting', "-1");
ini_set('error_reporting', E_ALL);
include('../../conex.php');

require '../Clases/Firmar_bol.php';
require '../Clases/Autentificacion.php';
require '../Clases/Empaquetar_bol.php';

require './Clase_SoapSII.php';
 
$id_empresa=1;

	$sql_empresa = "SELECT * FROM empresa, comunas WHERE comunas.cod_comuna = empresa.comuna and id=$id_empresa;";
	
	$res_empresa = mysql_query($sql_empresa,$enlace);
	$row=0;
	
		$empresa_rut=mysql_result($res_empresa, $row, "rut_empresa");
		$empresa_rut = str_replace('.', '', $empresa_rut);
		$rut_representante=mysql_result($res_empresa, $row, "rut_representante");
	  	$rut_representante = str_replace('.', '', $rut_representante);
		$fecha_resolucion=mysql_result($res_empresa, $row, "fecha_resolucion");
		$numero_resolucion=mysql_result($res_empresa, $row, "numero_resolucion");
		$fecha_certificacion=mysql_result($res_empresa, $row, "fecha_certificacion");
		$certificacion=mysql_result($res_empresa, $row, "certificacion");
		$correo_dte=mysql_result($res_empresa, $row, "correo_dte");
		$sitio_empresa=mysql_result($res_empresa, $row, "sitio_empresa");
        $ip_empresa=mysql_result($res_empresa, $row, "ip_empresa");
        $clave_certificado_digital=mysql_result($res_empresa, $row, "clave_certificado_digital");
		
		
		if($certificacion=='SI') { $ambiente="CERTIFICACION"; $fecha_resolucion=$fecha_certificacion; $numero_resolucion=0;} else      {$ambiente="PRODUCCION";}
	
		
define("SLC_HAMBIENTE", $ambiente );

define("RUT_EMISOR", $empresa_rut );  
define("RUT_ENVIA", $rut_representante);
define("PK_RUTA",'./'.$rut_representante.'.pfx');

define("FECHA_RESOLUCION", $fecha_resolucion);
define("NUMERO_RESOLUCION", $numero_resolucion);
		
		

require '../lib/tcpdf/tcpdf_barcodes_2d.php';
include '../lib/mpdf/mpdf.php';

date_default_timezone_set('America/Toronto');

require '../Clases/class.phpmailer.php';

//include('../Clases/conex_correo_base.php');  estan directos 8 19


define("PK_PASS",$clave_certificado_digital);
define("RUT_RECEPTOR", '7914075-9');
define("PEM_RUTA", "./crt.pem");
define("KEY_RUTA", "./server.key");



if (!isset($_GET["documento"])){
  echo "<h3>No se ha enviado ninguna ruta.</h3>";  
}
else{
    $doc_recibido = $_GET["documento"];

    
    $foliosRuta = './FoliosSII7836698033120141027124.xml';

   


    $arrDocRecibido = explode("|",$doc_recibido);

    foreach ($arrDocRecibido as $indiceDocs => $nDocs) {
        $documentos[$indiceDocs]["ruta"] = "../DOC/ORIGINAL/".$nDocs ;
        $documentos[$indiceDocs]["nombre"] = $nDocs ;
    }
    

    foreach ($documentos as $indice => $arrDocs) 
    {    
        $esteDocFrimar = new Firmar();
        $esteDocFrimar->dteFirmarRuta = $arrDocs["ruta"];
        $esteDocFrimar->dteFirmarNombre = $arrDocs["nombre"];
        $esteDocFrimar->pkRuta = PK_RUTA;
        $esteDocFrimar->pkPass = PK_PASS;
        $esteDocFrimar->foliosRuta = $foliosRuta;

        $esteDocFrimar->Procesa();

        $documentos[$indice]["rutaFirmado"] = $esteDocFrimar->arrDteFirmadoRuta['archivo'];
        $documentos[$indice]["tipoDTE"] = $esteDocFrimar->tipoDTE;

        unset($esteDocFrimar);

    }
    
    $estaAutentificacion = new Autentificacion();
    
    $estaAutentificacion->pkPass = PK_PASS;
    $estaAutentificacion->pkRuta = PK_RUTA;
    $estaAutentificacion->pemRuta = PEM_RUTA;
    $estaAutentificacion->keyRuta = KEY_RUTA;

    $estaAutentificacion->getToken(); 
    
    $token = $estaAutentificacion->token;
 
    $estePaquete = new Empaquetar($documentos);
    $estePaquete->sRutEmisor=RUT_EMISOR;
    $estePaquete->sRutEnvia=RUT_ENVIA;
    $estePaquete->pkPass=PK_PASS;
    $estePaquete->pkRuta=PK_RUTA;
    $estePaquete->sFechaResolucion=FECHA_RESOLUCION;
    $estePaquete->sNumeroResolucion=NUMERO_RESOLUCION;
    $estePaquete->Empaqueta();

   // $arrEnviar = $estePaquete->arrXmlEnviar;
//exit();   // no envia a SII**********************************************
  // $esteSoap = new Clase_SoapSII();

 //  $envio = $esteSoap->sendUploadDTE(array('rutEmisor' => RUT_EMISOR,'rutEnvia' => RUT_ENVIA,'archivo' => $arrEnviar['archivo'],'token' => $token));
  //  print_r($envio);
	
	
	
	///************PDF ****************
	
	 $nDocs = str_replace(".xml",'_f.xml',$nDocs);
	 
	$rutadoc = '../DOC/ORIGINAL/';
    $rutafrm = '../DOC/FIRMADO/';
    $rutapdf = '../DOC/PDF/';
	 $xmlf = file_get_contents($rutafrm.$nDocs);
   
    
    $xmlf=str_replace('<?xml version="1.0"?>','<?xml version="1.0" encoding="ISO-8859-1" ?>',$xmlf);
    //debug($xmlf); exit();    
    $xmlted = extraerTED(utf8_decode($xmlf));           // ted como xml    
   // debug($xmlted); exit();
    //echo "<textarea>".utf8_encode($xmlted)."</textarea>"; exit();
    
    $barcodeobj = new TCPDF2DBarcode($xmlted, 'PDF417');
    $timbre = $barcodeobj->getBarcodePngData(2, 1.3, array(0,0,0));
    $fp = fopen('timbre_1.png', 'w');
    fwrite($fp, $timbre);
    fclose($fp);
    
    //echo "<img src='timbre_1.png' >"; exit();
    
    genPDF($nDocs);
    
   // exit();

 }
	
 exit();
 ///****************************** fin ************************

function genPDF($xmlfirmado) {
    $rutafrm = '../DOC/FIRMADO/';
    $rutapdf = '../DOC/PDF/';
    
    $rutadoc = $rutafrm . $xmlfirmado;
    $mpdf = new mPDF();
    
    $xslDoc = new DOMDocument();
    $xslDoc->load("../visor/visualizador_boleta.xsl");
    
    $sXmlDoc=  utf8_encode(str_replace('<?xml version="1.0" encoding="UTF-8"?>'.chr(10), chr(10), file_get_contents($rutadoc)));
    
    $xmlDoc = new DOMDocument("1.0","iso-8859-1");
    $xmlDoc->loadXML($sXmlDoc);
    //echo $xmlDoc->saveXML();
    

    $proc = new XSLTProcessor();
    $proc->importStylesheet($xslDoc);
   
    $html = $proc->transformToXML($xmlDoc);
    
    //echo "$html";exit();

   $mpdf->WriteHTML($html);  //copias 1
    
   
    $mpdf ->Output($rutapdf.  str_replace(".xml", ".pdf", $xmlfirmado),'F');
   // $mpdf->Output();
}

/* funcion para extraer CAF, omitiendo nodos fuera de éste */
function extraerTED($xmlfirmado) {
    $dom = new DOMDocument();
    $dom->loadXML($xmlfirmado);
    $xmlted = $dom->saveXML();
    preg_match('/<TED.+?>.*?<\/TED>/ims', $xmlted, $ted);
    
    return(alinearXML($ted[0]));
}

function alinearXML($xml) {
	$xmlt = str_replace("\t", '', $xml);
	$xmlt = str_replace("\n", '', $xmlt);
	$xmlt = str_replace("\r", '', $xmlt);
	return($xmlt);
}

function debug($xmlstr) {
    $xmlstr = htmlentities($xmlstr);
    echo "<textarea style='width: 99%; height: 99%'>$xmlstr</textarea";
}
function get_string_between($string, $start, $end)
    {
    $string = " ".$string;
     $ini = strpos($string,$start);
     if ($ini == 0) return "";
     $ini += strlen($start);     
     $len = strpos($string,$end,$ini) - $ini;
     return substr($string,$ini,$len);
   }


?>