-
Notifications
You must be signed in to change notification settings - Fork 157
/
Copy path017-etapa_intercambio_ResultadoDTE.php
97 lines (84 loc) · 3.17 KB
/
017-etapa_intercambio_ResultadoDTE.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<?php
/**
* LibreDTE
* Copyright (C) SASCO SpA (https://sasco.cl)
*
* Este programa es software libre: usted puede redistribuirlo y/o
* modificarlo bajo los términos de la Licencia Pública General Affero de GNU
* publicada por la Fundación para el Software Libre, ya sea la versión
* 3 de la Licencia, o (a su elección) cualquier versión posterior de la
* misma.
*
* Este programa se distribuye con la esperanza de que sea útil, pero
* SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita
* MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO.
* Consulte los detalles de la Licencia Pública General Affero de GNU para
* obtener una información más detallada.
*
* Debería haber recibido una copia de la Licencia Pública General Affero de GNU
* junto a este programa.
* En caso contrario, consulte <http://www.gnu.org/licenses/agpl.html>.
*/
/**
* @file 017-etapa_intercambio_ResultadoDTE.php
*
* Ejemplo que genera el XML de respuesta con los resultados de la recepción de
* un EnvioDTE, el XML generado deberá ser subido "a mano" a
* https://www4.sii.cl/pfeInternet
*
* @author Esteban De La Fuente Rubio, DeLaF (esteban[at]sasco.cl)
* @version 2015-09-16
*/
// respuesta en texto plano
header('Content-type: text/plain; charset=ISO-8859-1');
// incluir archivos php de la biblioteca y configuraciones
include 'inc.php';
// datos para validar
$archivo_recibido = 'xml/intercambio/ENVIO_DTE_420328.xml';
$RutReceptor_esperado = '76192083-9';
$RutEmisor_esperado = '88888888-8';
// Cargar EnvioDTE y extraer arreglo con datos de carátula y DTEs
$EnvioDte = new \sasco\LibreDTE\Sii\EnvioDte();
$EnvioDte->loadXML(file_get_contents($archivo_recibido));
$Caratula = $EnvioDte->getCaratula();
$Documentos = $EnvioDte->getDocumentos();
// caratula
$caratula = [
'RutResponde' => $RutReceptor_esperado,
'RutRecibe' => $Caratula['RutEmisor'],
'IdRespuesta' => 1,
//'NmbContacto' => '',
//'MailContacto' => '',
];
// objeto para la respuesta
$RespuestaEnvio = new \sasco\LibreDTE\Sii\RespuestaEnvio();
// procesar cada DTE
$i = 1;
foreach ($Documentos as $DTE) {
$estado = !$DTE->getEstadoValidacion(['RUTEmisor'=>$RutEmisor_esperado, 'RUTRecep'=>$RutReceptor_esperado]) ? 0 : 2;
$RespuestaEnvio->agregarRespuestaDocumento([
'TipoDTE' => $DTE->getTipo(),
'Folio' => $DTE->getFolio(),
'FchEmis' => $DTE->getFechaEmision(),
'RUTEmisor' => $DTE->getEmisor(),
'RUTRecep' => $DTE->getReceptor(),
'MntTotal' => $DTE->getMontoTotal(),
'CodEnvio' => $i++,
'EstadoDTE' => $estado,
'EstadoDTEGlosa' => \sasco\LibreDTE\Sii\RespuestaEnvio::$estados['respuesta_documento'][$estado],
]);
}
// asignar carátula y Firma
$RespuestaEnvio->setCaratula($caratula);
$RespuestaEnvio->setFirma(new \sasco\LibreDTE\FirmaElectronica($config['firma']));
// generar XML
$xml = $RespuestaEnvio->generar();
// validar schema del XML que se generó
if ($RespuestaEnvio->schemaValidate()) {
// mostrar XML al usuario, deberá ser guardado y subido al SII en:
// https://www4.sii.cl/pfeInternet
echo $xml;
}
// si hubo errores mostrar
foreach (\sasco\LibreDTE\Log::readAll() as $error)
echo $error,"\n";