Exemplo n.º 1
0
 /**
  * Método que realiza el envío del documento al SII
  * @return Track ID del envío o =false si hubo algún problema al enviar el documento
  * @author Esteban De La Fuente Rubio, DeLaF (esteban[at]sasco.cl)
  * @version 2015-12-14
  */
 public function enviar()
 {
     // generar XML que se enviará
     if (!$this->xml_data) {
         $this->xml_data = $this->generar();
     }
     if (!$this->xml_data) {
         \sasco\LibreDTE\Log::write(\sasco\LibreDTE\Estado::DOCUMENTO_ERROR_GENERAR_XML, \sasco\LibreDTE\Estado::get(\sasco\LibreDTE\Estado::DOCUMENTO_ERROR_GENERAR_XML, substr(get_class($this), strrpos(get_class($this), '\\') + 1)));
         return false;
     }
     // validar schema del documento antes de enviar
     if (!$this->schemaValidate()) {
         return false;
     }
     // solicitar token
     $token = \sasco\LibreDTE\Sii\Autenticacion::getToken($this->Firma);
     if (!$token) {
         return false;
     }
     // enviar DTE
     $envia = $this->caratula['RutEnvia'];
     $emisor = !empty($this->caratula['RutEmisor']) ? $this->caratula['RutEmisor'] : $this->caratula['RutEmisorLibro'];
     $result = \sasco\LibreDTE\Sii::enviar($envia, $emisor, $this->xml_data, $token);
     if ($result === false) {
         return false;
     }
     if (!is_numeric((string) $result->TRACKID)) {
         return false;
     }
     return (int) (string) $result->TRACKID;
 }
Exemplo n.º 2
0
// EnvioDTE::enviar() que envía el XML que se genera, ver ejemplo 010-set_pruebas.php
$EnvioDTE = new \sasco\LibreDTE\Sii\EnvioDTE();
$EnvioDTE->agregar($DTE);
$EnvioDTE->setCaratula($caratula);
$EnvioDTE->setFirma($Firma);
$xml = $EnvioDTE->generar();
// solicitar token
$token = \sasco\LibreDTE\Sii\Autenticacion::getToken($Firma);
if (!$token) {
    foreach (\sasco\LibreDTE\Log::readAll() as $log) {
        echo $log, "\n";
    }
    exit;
}
// enviar DTE
$result = \sasco\LibreDTE\Sii::enviar($caratula['RutEnvia'], $factura['Encabezado']['Emisor']['RUTEmisor'], $xml, $token);
// si hubo algún error al enviar al servidor mostrar
if ($result === false) {
    foreach (\sasco\LibreDTE\Log::readAll() as $log) {
        echo $log, "\n";
    }
    exit;
}
// Mostrar resultado del envío
if ($result->STATUS != '0') {
    foreach (\sasco\LibreDTE\Log::readAll() as $log) {
        echo $log, "\n";
    }
    exit;
}
echo 'DTE enviado. Track ID ' . $result->TRACKID, "\n";
Exemplo n.º 3
0
 /**
  * Método que realiza el envío del libro IECV al SII
  * @return Track ID del envío o =false si hubo algún problema al enviar el documento
  * @warning No se está validano schema
  * @author Esteban De La Fuente Rubio, DeLaF (esteban[at]sasco.cl)
  * @version 2015-10-30
  */
 public function enviar()
 {
     // generar XML que se enviará
     if (!$this->xml_data) {
         $this->xml_data = $this->generar();
     }
     if (!$this->xml_data) {
         \sasco\LibreDTE\Log::write(\sasco\LibreDTE\Estado::LIBROCOMPRAVENTA_ERROR_GENERAR_XML, \sasco\LibreDTE\Estado::get(\sasco\LibreDTE\Estado::LIBROCOMPRAVENTA_ERROR_GENERAR_XML));
         return false;
     }
     // validar schema del documento antes de enviar
     // WARNING: tanto en certificación como en producción si el libro se
     // firma da error al subirlo, pero si va sin firma da error de schema,
     // por esta razón no se valida el schema, para que pueda ser enviado al
     // sii sin firmar ¿?
     /*if (\sasco\LibreDTE\Sii::getAmbiente()==\sasco\LibreDTE\Sii::PRODUCCION and !$this->schemaValidate())
       return false;*/
     // solicitar token
     $token = Autenticacion::getToken($this->Firma);
     if (!$token) {
         return false;
     }
     // enviar DTE
     $result = \sasco\LibreDTE\Sii::enviar($this->caratula['RutEnvia'], $this->caratula['RutEmisorLibro'], $this->xml_data, $token);
     if ($result === false) {
         return false;
     }
     if (!is_numeric((string) $result->TRACKID)) {
         return false;
     }
     return (int) (string) $result->TRACKID;
 }
Exemplo n.º 4
0
 /**
  * Método que realiza el envío del sobre con el o los DTEs al SII
  * @return Track ID del envío o =false si hubo algún problema al enviar el documento
  * @author Esteban De La Fuente Rubio, DeLaF (esteban[at]sasco.cl)
  * @version 2015-09-17
  */
 public function enviar()
 {
     // generar XML que se enviará
     if (!$this->xml_data) {
         $this->xml_data = $this->generar();
     }
     if (!$this->xml_data) {
         \sasco\LibreDTE\Log::write(\sasco\LibreDTE\Estado::ENVIODTE_FALTA_XML, \sasco\LibreDTE\Estado::get(\sasco\LibreDTE\Estado::ENVIODTE_FALTA_XML));
         return false;
     }
     // validar schema del documento antes de enviar
     if (!$this->schemaValidate()) {
         return false;
     }
     // solicitar token
     $token = Autenticacion::getToken($this->Firma);
     if (!$token) {
         return false;
     }
     // enviar DTE
     $result = \sasco\LibreDTE\Sii::enviar($this->caratula['RutEnvia'], $this->caratula['RutEmisor'], $this->xml_data, $token);
     if ($result === false) {
         return false;
     }
     if (!is_numeric((string) $result->TRACKID)) {
         return false;
     }
     return (int) (string) $result->TRACKID;
 }
 /**
  * Acción que envía el DTE al SII si este no ha sido envíado (no tiene track_id)
  * @author Esteban De La Fuente Rubio, DeLaF (esteban[at]sasco.cl)
  * @version 2015-09-24
  */
 public function enviar_sii($dte, $folio)
 {
     $Emisor = $this->getContribuyente();
     // obtener DTE emitido
     $DteEmitido = new Model_DteEmitido($Emisor->rut, $dte, $folio, (int) $Emisor->certificacion);
     if (!$DteEmitido->exists()) {
         \sowerphp\core\Model_Datasource_Session::message('No existe el DTE solicitado', 'error');
         $this->redirect('/dte/dte_emitidos/listar');
     }
     // si el dte ya fue enviado error
     if ($DteEmitido->track_id) {
         \sowerphp\core\Model_Datasource_Session::message('DTE ya se encuentra envíado, tiene el Track ID: ' . $DteEmitido->track_id, 'warning');
         $this->redirect(str_replace('enviar_sii', 'ver', $this->request->request));
     }
     // obtener firma
     $Firma = $Emisor->getFirma($this->Auth->User->id);
     if (!$Firma) {
         \sowerphp\core\Model_Datasource_Session::message('No hay firma electrónica asociada a la empresa (o bien no se pudo cargar), debe agregar su firma antes de generar DTE', 'error');
         $this->redirect('/dte/admin/firma_electronicas');
     }
     // obtener token
     $token = \sasco\LibreDTE\Sii\Autenticacion::getToken($Firma);
     if (!$token) {
         \sowerphp\core\Model_Datasource_Session::message('No fue posible obtener el token para el SII<br/>' . implode('<br/>', \sasco\LibreDTE\Log::readAll()), 'error');
         $this->redirect(str_replace('enviar_sii', 'ver', $this->request->request));
     }
     // enviar XML
     $result = \sasco\LibreDTE\Sii::enviar($Firma->getID(), $Emisor->rut . '-' . $Emisor->dv, base64_decode($DteEmitido->xml), $token);
     if ($result === false or $result->STATUS != '0') {
         \sowerphp\core\Model_Datasource_Session::message('No fue posible enviar el DTE al SII<br/>' . implode('<br/>', \sasco\LibreDTE\Log::readAll()), 'error');
         $this->redirect(str_replace('enviar_sii', 'ver', $this->request->request));
     }
     $DteEmitido->track_id = (int) $result->TRACKID;
     $DteEmitido->save();
     $this->redirect(str_replace('enviar_sii', 'ver', $this->request->request));
 }
Exemplo n.º 6
0
 /**
  * Método que realiza el envío del libro IECV al SII
  * @return Track ID del envío o =false si hubo algún problema al enviar el documento
  * @author Esteban De La Fuente Rubio, DeLaF (esteban[at]sasco.cl)
  * @version 2015-09-17
  */
 public function enviar()
 {
     // generar XML que se enviará
     if (!$this->xml_data) {
         $this->xml_data = $this->generar();
     }
     if (!$this->xml_data) {
         \sasco\LibreDTE\Log::write(\sasco\LibreDTE\Estado::LIBROCOMPRAVENTA_ERROR_GENERAR_XML, \sasco\LibreDTE\Estado::get(\sasco\LibreDTE\Estado::LIBROCOMPRAVENTA_ERROR_GENERAR_XML));
         return false;
     }
     // validar schema del documento antes de enviar (sólo en producción, ya
     // que en certificación el libro no se firma y daría error de schema)
     if (\sasco\LibreDTE\Sii::getAmbiente() == \sasco\LibreDTE\Sii::PRODUCCION and !$this->schemaValidate()) {
         return false;
     }
     // solicitar token
     $token = Autenticacion::getToken($this->Firma);
     if (!$token) {
         return false;
     }
     // enviar DTE
     $result = \sasco\LibreDTE\Sii::enviar($this->caratula['RutEnvia'], $this->caratula['RutEmisorLibro'], $this->xml_data, $token);
     if ($result === false) {
         return false;
     }
     if (!is_numeric((string) $result->TRACKID)) {
         return false;
     }
     return (int) (string) $result->TRACKID;
 }
Exemplo n.º 7
0
// incluir archivos php de la biblioteca y configuraciones
include 'inc.php';
// datos del envío
$xml = file_get_contents('dte_33.xml');
$RutEnvia = '99888777-6';
$RutEmisor = '55444333-2';
// solicitar token
$token = \sasco\LibreDTE\Sii\Autenticacion::getToken($config['firma']);
if (!$token) {
    foreach (\sasco\LibreDTE\Log::readAll() as $error) {
        echo $error, "\n";
    }
    exit;
}
// enviar DTE
$result = \sasco\LibreDTE\Sii::enviar($RutEnvia, $RutEmisor, $xml, $token);
// si hubo algún error al enviar al servidor mostrar
if ($result === false) {
    foreach (\sasco\LibreDTE\Log::readAll() as $error) {
        echo $error, "\n";
    }
    exit;
}
// Mostrar resultado del envío
if ($result->STATUS != '0') {
    foreach (\sasco\LibreDTE\Log::readAll() as $error) {
        echo $error, "\n";
    }
    exit;
}
echo 'DTE envíado. Track ID ' . $result->TRACKID, "\n";