include 'inc.php';
// primer folio a usar para envio de set de pruebas
$folios = [34 => 24, 56 => 19, 61 => 34];
// caratula para el envío de los dte
$caratula = ['RutEnvia' => '11222333-4', 'RutReceptor' => '60803000-K', 'FchResol' => '2014-12-05', 'NroResol' => 0];
// datos del emisor
$Emisor = ['RUTEmisor' => '76192083-9', 'RznSoc' => 'SASCO SpA', 'GiroEmis' => 'Servicios integrales de informática', 'Acteco' => 726000, 'DirOrigen' => 'Santiago', 'CmnaOrigen' => 'Santiago'];
// datos de los DTE (cada elemento del arreglo $set_pruebas es un DTE)
$set_pruebas = [['Encabezado' => ['IdDoc' => ['TipoDTE' => 34, 'Folio' => $folios[34]], 'Emisor' => $Emisor, 'Receptor' => ['RUTRecep' => '55666777-8', 'RznSocRecep' => 'Empresa S.A.', 'GiroRecep' => 'Servicios jurídicos', 'DirRecep' => 'Santiago', 'CmnaRecep' => 'Santiago']], 'Detalle' => [['NmbItem' => 'HORAS PROGRAMADOR', 'QtyItem' => 12, 'UnmdItem' => 'Hora', 'PrcItem' => 6991]], 'Referencia' => ['TpoDocRef' => 'SET', 'FolioRef' => $folios[34], 'RazonRef' => 'CASO 414178-1']], ['Encabezado' => ['IdDoc' => ['TipoDTE' => 61, 'Folio' => $folios[61]], 'Emisor' => $Emisor, 'Receptor' => ['RUTRecep' => '55666777-8', 'RznSocRecep' => 'Empresa S.A.', 'GiroRecep' => 'Servicios jurídicos', 'DirRecep' => 'Santiago', 'CmnaRecep' => 'Santiago'], 'Totales' => ['MntExe' => 0, 'MntTotal' => 0]], 'Detalle' => [['NmbItem' => 'HORAS PROGRAMADOR', 'IndExe' => 1, 'QtyItem' => 12, 'UnmdItem' => 'Hora', 'PrcItem' => 874]], 'Referencia' => [['TpoDocRef' => 'SET', 'FolioRef' => $folios[61], 'RazonRef' => 'CASO 414178-2'], ['TpoDocRef' => 34, 'FolioRef' => $folios[34], 'CodRef' => 3, 'RazonRef' => 'MODIFICA MONTO']]], ['Encabezado' => ['IdDoc' => ['TipoDTE' => 34, 'Folio' => $folios[34] + 1], 'Emisor' => $Emisor, 'Receptor' => ['RUTRecep' => '55666777-8', 'RznSocRecep' => 'Empresa S.A.', 'GiroRecep' => 'Servicios jurídicos', 'DirRecep' => 'Santiago', 'CmnaRecep' => 'Santiago']], 'Detalle' => [['NmbItem' => 'SERV CONSULTORIA FACT ELECTRONICA', 'QtyItem' => 1, 'PrcItem' => 360368], ['NmbItem' => 'SERV CONSULTORIA GUIA DESPACHO ELECT', 'QtyItem' => 1, 'PrcItem' => 262001]], 'Referencia' => ['TpoDocRef' => 'SET', 'FolioRef' => $folios[34] + 1, 'RazonRef' => 'CASO 414178-3']], ['Encabezado' => ['IdDoc' => ['TipoDTE' => 61, 'Folio' => $folios[61] + 1], 'Emisor' => $Emisor, 'Receptor' => ['RUTRecep' => '55666777-8', 'RznSocRecep' => 'Empresa S.A.', 'GiroRecep' => 'Servicios jurídicos', 'DirRecep' => 'Santiago', 'CmnaRecep' => 'Santiago'], 'Totales' => ['MntExe' => 0, 'MntTotal' => 0]], 'Detalle' => [['NmbItem' => 'SERV CONSULTORIA FACT ELECTRONICA']], 'Referencia' => [['TpoDocRef' => 'SET', 'FolioRef' => $folios[61] + 1, 'RazonRef' => 'CASO 414178-4'], ['TpoDocRef' => 34, 'FolioRef' => $folios[34] + 1, 'CodRef' => 2, 'RazonRef' => 'CORRIGE GIRO']]], ['Encabezado' => ['IdDoc' => ['TipoDTE' => 56, 'Folio' => $folios[56]], 'Emisor' => $Emisor, 'Receptor' => ['RUTRecep' => '55666777-8', 'RznSocRecep' => 'Empresa S.A.', 'GiroRecep' => 'Servicios jurídicos', 'DirRecep' => 'Santiago', 'CmnaRecep' => 'Santiago'], 'Totales' => ['MntExe' => 0, 'MntTotal' => 0]], 'Detalle' => [['NmbItem' => 'SERV CONSULTORIA FACT ELECTRONICA']], 'Referencia' => [['TpoDocRef' => 'SET', 'FolioRef' => $folios[56], 'RazonRef' => 'CASO 414178-5'], ['TpoDocRef' => 61, 'FolioRef' => $folios[61] + 1, 'CodRef' => 1, 'RazonRef' => 'ANULA NOTA DE CREDITO ELECTRONICA']]], ['Encabezado' => ['IdDoc' => ['TipoDTE' => 34, 'Folio' => $folios[34] + 2], 'Emisor' => $Emisor, 'Receptor' => ['RUTRecep' => '55666777-8', 'RznSocRecep' => 'Empresa S.A.', 'GiroRecep' => 'Servicios jurídicos', 'DirRecep' => 'Santiago', 'CmnaRecep' => 'Santiago']], 'Detalle' => [['NmbItem' => 'CAPACITACION USO CIGUEÑALES', 'QtyItem' => 1, 'PrcItem' => 350414], ['NmbItem' => 'CAPACITACION USO PLC\'s CNC', 'QtyItem' => 1, 'PrcItem' => 239579]], 'Referencia' => [['TpoDocRef' => 'SET', 'FolioRef' => $folios[34] + 2, 'RazonRef' => 'CASO 414178-6']]], ['Encabezado' => ['IdDoc' => ['TipoDTE' => 61, 'Folio' => $folios[61] + 2], 'Emisor' => $Emisor, 'Receptor' => ['RUTRecep' => '55666777-8', 'RznSocRecep' => 'Empresa S.A.', 'GiroRecep' => 'Servicios jurídicos', 'DirRecep' => 'Santiago', 'CmnaRecep' => 'Santiago'], 'Totales' => ['MntExe' => 0, 'MntTotal' => 0]], 'Detalle' => [['NmbItem' => 'CAPACITACION USO CIGUEÑALES', 'IndExe' => 1, 'QtyItem' => 1, 'PrcItem' => 175207]], 'Referencia' => [['TpoDocRef' => 'SET', 'FolioRef' => $folios[61] + 2, 'RazonRef' => 'CASO 414178-7'], ['TpoDocRef' => 34, 'FolioRef' => $folios[34] + 2, 'CodRef' => 3, 'RazonRef' => 'MODIFICA MONTO']]], ['Encabezado' => ['IdDoc' => ['TipoDTE' => 56, 'Folio' => $folios[56] + 1], 'Emisor' => $Emisor, 'Receptor' => ['RUTRecep' => '55666777-8', 'RznSocRecep' => 'Empresa S.A.', 'GiroRecep' => 'Servicios jurídicos', 'DirRecep' => 'Santiago', 'CmnaRecep' => 'Santiago'], 'Totales' => ['MntExe' => 0, 'MntTotal' => 0]], 'Detalle' => [['NmbItem' => 'CAPACITACION USO PLC\'s CNC', 'IndExe' => 1, 'QtyItem' => 1, 'PrcItem' => 47916]], 'Referencia' => [['TpoDocRef' => 'SET', 'FolioRef' => $folios[56] + 1, 'RazonRef' => 'CASO 414178-8'], ['TpoDocRef' => 34, 'FolioRef' => $folios[34] + 2, 'CodRef' => 3, 'RazonRef' => 'MODIFICA MONTO']]]];
// Objetos de Firma, Folios y EnvioDTE
$Firma = new \sasco\LibreDTE\FirmaElectronica($config['firma']);
$Folios = [];
foreach ($folios as $tipo => $cantidad) {
    $Folios[$tipo] = new \sasco\LibreDTE\Sii\Folios(file_get_contents('xml/folios/' . $tipo . '.xml'));
}
$EnvioDTE = new \sasco\LibreDTE\Sii\EnvioDTE();
// generar cada DTE, timbrar, firmar y agregar al sobre de EnvioDTE
foreach ($set_pruebas as $documento) {
    $DTE = new \sasco\LibreDTE\Sii\Dte($documento);
    if (!$DTE->timbrar($Folios[$DTE->getTipo()])) {
        break;
    }
    if (!$DTE->firmar($Firma)) {
        break;
    }
    $EnvioDTE->agregar($DTE);
}
// enviar dtes y mostrar resultado del envío: track id o bien =false si hubo error
$EnvioDTE->setCaratula($caratula);
$EnvioDTE->setFirma($Firma);
//file_put_contents('xml/EnvioDTE.xml', $EnvioDTE->generar()); // guardar XML en sistema de archivos
Beispiel #2
0
include 'inc.php';
// datos
$factura = ['Encabezado' => ['IdDoc' => ['TipoDTE' => 33, 'Folio' => 1], 'Emisor' => ['RUTEmisor' => '76192083-9', 'RznSoc' => 'SASCO SpA', 'GiroEmis' => 'Servicios integrales de informática', 'Acteco' => 726000, 'DirOrigen' => 'Santiago', 'CmnaOrigen' => 'Santiago'], 'Receptor' => ['RUTRecep' => '60803000-K', 'RznSocRecep' => 'Servicio de Impuestos Internos', 'GiroRecep' => 'Gobierno', 'DirRecep' => 'Alonso Ovalle 680', 'CmnaRecep' => 'Santiago']], 'Detalle' => [['NmbItem' => 'Cajón AFECTO', 'QtyItem' => 123, 'PrcItem' => 923], ['NmbItem' => 'Relleno AFECTO', 'QtyItem' => 53, 'PrcItem' => 1473]]];
$caratula = ['RutEnvia' => '11222333-4', 'RutReceptor' => '60803000-K', 'FchResol' => '2014-12-05', 'NroResol' => 0];
// Objetos de Firma y Folios
$Firma = new \sasco\LibreDTE\FirmaElectronica($config['firma']);
$Folios = new \sasco\LibreDTE\Sii\Folios(file_get_contents('xml/folios/33.xml'));
// generar XML del DTE timbrado y firmado
$DTE = new \sasco\LibreDTE\Sii\Dte($factura);
$DTE->timbrar($Folios);
$DTE->firmar($Firma);
// generar sobre con el envío del DTE
// en este ejemplo sólo se obtendrá el XML del EnvioDT y se enviará
// posteriormente por el método "paso a paso", existe un método
// 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