<meta http-equiv="refresh" content="30"><?php

require_once("/var/www/html/prod/motor/funciones.php");

$dbh = new PDO('mysql:host=localhost;dbname=facturac_quesosymas2;charset=UTF8', 'db_facturacion', 'Fact8u6tra$PyM3s.2026_XyZ!', array(PDO::ATTR_PERSISTENT => true));
 
    
    
 
 if(isset($_GET['factura'])){
     $facturilla = " and rowid = ".$_GET['factura'];
 }else{
     $facturilla = "";
 }

//".WHERE_REVISAR." 

echo  $sql="select  *  from fi_facturas   where    rowid > 587301    ".WHERE_REVISAR."     order by rowid DESC     limit 20  ";  
 
 
 
 $db = $dbh ->prepare($sql);
 $db->execute();
 
 $i = 0;
 
 while ( $factura=$db->FETCH(PDO::FETCH_OBJ)) { 

 $i++;
 if (empty($factura->rowid)){ echo " No Existen Facturas por procesar"; exit(1);} 
 

 

  
 if ($i==1){ 
    $Comunicacion = new Comunicacion($dbh, $factura->entidad);
    $XML_Hacienda  = new XML_Hacienda($dbh, $factura->entidad);
 }
 
 $XML_Hacienda->getClave($factura->rowid);
 
 
  
 
  
 
 

// funciones compartidas
  
$dia = date('d',strtotime($XML_hacienda->documento_fecha)) ;  // '22';
$mes = date('m',strtotime($XML_hacienda->documento_fecha)) ;  // '22';'01';
$ano = date('y',strtotime($XML_hacienda->documento_fecha)) ;  // '22'; '18';
 



$claveFactura   = $factura->clave;
$receptor       = $XML_Hacienda->receptor_identificacion; //''3101123456';
$emisor         = $XML_Hacienda->emisor_identificacion;
$fechaEmision = '20' . $ano . '-' . $mes . '-' . $dia . 'T10:16:00-0600';
$recepcionUrl = 'https://api.comprobanteselectronicos.go.cr/recepcion-sandbox/v1/recepcion';



// Termina obtención de token
$access_token =$Comunicacion->getToken();


echo '<table  border="1" width="2" >';
echo '<tr><td> Factura ID </td><td>'.$factura->rowid.' </td></tr>';
echo '<tr><td> Factura Referencia</td><td>'.$factura->referencia.' </td></tr>';

echo '<tr><td> $claveFactura</td><td>'.$claveFactura.' </td></tr>';
echo '<tr><td> $receptor</td><td>'.$receptor.' </td></tr>';
echo '<tr><td> $emisor</td><td>'.$emisor.' </td></tr>';
echo '<tr><td> $fechaEmision</td><td>'.$fechaEmision.' </td></tr>';

echo '</table>';
 

if (empty($access_token)){ echo "Token no se obtuvo"; exit(1);}


/**
 *
 *    REvisamos el payload para estar Seguros que ocurrio 
 * 
 **/

 
 $tr.="<tr><td> Analizando la factura </td><td><strong> ".$factura->referencia."</strong></td></tr>";

 //$a=$Comunicacion->revisa_Estado($access_token , $claveFactura);
    $a=$Comunicacion->revisa_Estado2($access_token , $claveFactura);



 echo "<br> Mensaje Total <br> ";
 
 echo "<p style='color:blue;'>";
       print_r($a['respuesta']);
 echo "</p>";

 echo "Mensaje";
 echo "<p style='color:blue;'>";
       print_r($a['mensaje']);
 echo "</p>";

echo "Error";
 echo "<p style='color:red;'>";
       print_r($a['error']);
 echo "</p>";

 
 if (!empty($a['error'])){ $error=1;} else { $error=0;}
  
  
  

 
 
  
  
   //-------------------------------------------------------
   //
   //
   //
   //

    if ($error){$resultado='error';  $error_si=1; } else { $resultado='aceptada'; $error_si=0;}
    //---------------------------------------------------
    //
    //
    //
    //
    //----------------------------------------------------
                $sql="insert into electronica_comunicacion 
                      ( fk_factura , 
                        resultado  ,
                        comentario ,
                        fecha ,
                        respuesta_xml) 
                        values 
                        (
                        :fk_factura , 
                        '$resultado' ,
                        :comentario ,
                        NOW()       ,
                        :respuesta_xml
                        )
                        "; 
                        
                $db2= $dbh->prepare($sql);
                $db2->bindValue(":fk_factura", $factura->rowid, PDO::PARAM_INT);
                $comentario = !empty($a['mensaje']) ? $a['mensaje'] : $a['error'];
                $db2->bindValue(":comentario", $comentario  ,   PDO::PARAM_STR);
                $db2->bindValue(":respuesta_xml", $a['respuesta_xml']  ,   PDO::PARAM_STR);


                $db2->execute();
            
                print_r($dbh->errorInfo());
                print_r($db2->errorInfo());
    //---------------------------------------------------
    //
    //
    //
    //
    //----------------------------------------------------
    
    

echo "<table  border='1' widht='50%'> $tr </table>  ";
    
 if ($a['no_comunico_hacienda']==true)  { echo "<br> Como no me comunique no puedo  Actualizar la factura"; exit(1);}  
  
  
  
echo  $sql="update fi_facturas   set   
                electronica_resultado  = 1 
              , electronica_resultado_txt = :electronica_resultado_txt   
              , electronica_resultado_fecha  = NOW()   
              , electronica_error     = $error_si
              , electronica_error_txt	= :electronica_error_txt	
            
            where rowid = :fk_factura  " ;  
 $db2= $dbh->prepare($sql);

 $db2->bindValue(":fk_factura", $factura->rowid  , PDO::PARAM_INT);
 $db2->bindValue(":electronica_resultado_txt", $a['mensaje']."" , PDO::PARAM_STR);
 $db2->bindValue(":electronica_error_txt", $a['mensaje']."" , PDO::PARAM_STR);
 $db2->execute();
    print_r($db2->errorInfo());
    print_r($dbh->errorInfo());
  
 
     
     
 }  // fin del WHILE 
 
 
 ?>