예제 #1
0
파일: Dte.php 프로젝트: jenniev89/LibreDTE
 /**
  * Método que normaliza los datos de una nota de crédito
  * @param datos Arreglo con los datos del documento que se desean normalizar
  * @author Esteban De La Fuente Rubio, DeLaF (esteban[at]sasco.cl)
  * @version 2015-09-06
  */
 private function normalizar_61(array &$datos)
 {
     // completar con nodos por defecto
     $datos = \sasco\LibreDTE\Arreglo::mergeRecursiveDistinct(['Encabezado' => ['IdDoc' => false, 'Emisor' => false, 'Receptor' => false, 'Totales' => ['MntNeto' => false, 'MntExe' => false, 'TasaIVA' => false, 'IVA' => false, 'MntTotal' => 0]]], $datos);
     // normalizar datos
     $this->normalizar_detalle($datos);
     $this->normalizar_agregar_IVA_MntTotal($datos);
     if ($datos['Encabezado']['Totales']['MntNeto'] === false) {
         $datos['Encabezado']['Totales']['MntNeto'] = 0;
     }
 }
예제 #2
0
        break;
    }
    $EnvioDTE->agregar($DTE);
}
$EnvioDTE->setFirma($Firma);
$EnvioDTE->setCaratula($caratula);
$EnvioDTE->generar();
if ($EnvioDTE->schemaValidate()) {
    if (is_writable('xml/EnvioBOLETA.xml')) {
        file_put_contents('xml/EnvioBOLETA.xml', $EnvioDTE->generar());
    }
    // guardar XML en sistema de archivos
    echo $EnvioDTE->generar();
}
// crear notas de crédito para el set de prueba
$notas_credito = [\sasco\LibreDTE\Arreglo::mergeRecursiveDistinct($set_pruebas[0], ['Encabezado' => ['IdDoc' => ['TipoDTE' => 61, 'Folio' => $folios[61], 'MntBruto' => 1], 'Totales' => ['MntNeto' => 0, 'TasaIVA' => \sasco\LibreDTE\Sii::getIVA(), 'IVA' => 0, 'MntTotal' => 0]], 'Referencia' => ['TpoDocRef' => $set_pruebas[0]['Encabezado']['IdDoc']['TipoDTE'], 'FolioRef' => $set_pruebas[0]['Encabezado']['IdDoc']['Folio'], 'CodRef' => 1, 'RazonRef' => 'ANULA BOLETA']]), \sasco\LibreDTE\Arreglo::mergeRecursiveDistinct($set_pruebas[2], ['Encabezado' => ['IdDoc' => ['TipoDTE' => 61, 'Folio' => $folios[61] + 1, 'MntBruto' => 1], 'Totales' => ['MntNeto' => 0, 'TasaIVA' => \sasco\LibreDTE\Sii::getIVA(), 'IVA' => 0, 'MntTotal' => 0]], 'Referencia' => ['TpoDocRef' => $set_pruebas[2]['Encabezado']['IdDoc']['TipoDTE'], 'FolioRef' => $set_pruebas[2]['Encabezado']['IdDoc']['Folio'], 'CodRef' => 1, 'RazonRef' => 'ANULA BOLETA']]), \sasco\LibreDTE\Arreglo::mergeRecursiveDistinct($set_pruebas[4], ['Encabezado' => ['IdDoc' => ['TipoDTE' => 61, 'Folio' => $folios[61] + 2, 'MntBruto' => 1], 'Totales' => ['MntNeto' => 0, 'TasaIVA' => \sasco\LibreDTE\Sii::getIVA(), 'IVA' => 0, 'MntTotal' => 0]], 'Referencia' => ['TpoDocRef' => $set_pruebas[4]['Encabezado']['IdDoc']['TipoDTE'], 'FolioRef' => $set_pruebas[4]['Encabezado']['IdDoc']['Folio'], 'CodRef' => 1, 'RazonRef' => 'ANULA BOLETA']]), \sasco\LibreDTE\Arreglo::mergeRecursiveDistinct($set_pruebas[6], ['Encabezado' => ['IdDoc' => ['TipoDTE' => 61, 'Folio' => $folios[61] + 3, 'MntBruto' => 1], 'Totales' => ['MntNeto' => 0, 'TasaIVA' => \sasco\LibreDTE\Sii::getIVA(), 'IVA' => 0, 'MntTotal' => 0]], 'Detalle' => [['QtyItem' => $set_pruebas[6]['Detalle'][0]['QtyItem'] * 0.4]], 'Referencia' => ['TpoDocRef' => $set_pruebas[6]['Encabezado']['IdDoc']['TipoDTE'], 'FolioRef' => $set_pruebas[6]['Encabezado']['IdDoc']['Folio'], 'CodRef' => 3, 'RazonRef' => 'SE REBAJA EN UN 40%']]), \sasco\LibreDTE\Arreglo::mergeRecursiveDistinct($set_pruebas[9], ['Encabezado' => ['IdDoc' => ['TipoDTE' => 61, 'Folio' => $folios[61] + 4, 'MntBruto' => 1], 'Totales' => ['MntNeto' => 0, 'TasaIVA' => \sasco\LibreDTE\Sii::getIVA(), 'IVA' => 0, 'MntTotal' => 0]], 'Detalle' => [['QtyItem' => $set_pruebas[9]['Detalle'][0]['QtyItem'] * 0.4]], 'Referencia' => ['TpoDocRef' => $set_pruebas[9]['Encabezado']['IdDoc']['TipoDTE'], 'FolioRef' => $set_pruebas[9]['Encabezado']['IdDoc']['Folio'], 'CodRef' => 3, 'RazonRef' => 'SE REBAJA EN UN 40%']])];
// generar cada DTE, timbrar, firmar y agregar al sobre de EnvioDTE
$EnvioDTE = new \sasco\LibreDTE\Sii\EnvioDte();
foreach ($notas_credito as $documento) {
    $DTE = new \sasco\LibreDTE\Sii\Dte($documento);
    if (!$DTE->timbrar($Folios[$DTE->getTipo()])) {
        break;
    }
    if (!$DTE->firmar($Firma)) {
        break;
    }
    $EnvioDTE->agregar($DTE);
}
$EnvioDTE->setFirma($Firma);
$EnvioDTE->setCaratula($caratula);
$EnvioDTE->generar();