/** * 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; } }
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();