Test Failed
Push — master ( e81f34...58150d )
by
unknown
19:06
created

DteEmitidos   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 69
Duplicated Lines 0 %

Test Coverage

Coverage 0%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 21
c 1
b 0
f 0
dl 0
loc 69
ccs 0
cts 26
cp 0
rs 10
wmc 3

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 10 1
A verificarDteEmitido() 0 30 2
1
<?php
2
3
declare(strict_types=1);
4
5
/**
6
 * API Gateway: Cliente de API en PHP.
7
 * Copyright (C) API Gateway <https://www.apigateway.cl>
8
 *
9
 * Este programa es software libre: usted puede redistribuirlo y/o modificarlo
10
 * bajo los términos de la GNU Lesser General Public License (LGPL) publicada
11
 * por la Fundación para el Software Libre, ya sea la versión 3 de la Licencia,
12
 * o (a su elección) cualquier versión posterior de la misma.
13
 *
14
 * Este programa se distribuye con la esperanza de que sea útil, pero SIN
15
 * GARANTÍA ALGUNA; ni siquiera la garantía implícita MERCANTIL o de APTITUD
16
 * PARA UN PROPÓSITO DETERMINADO. Consulte los detalles de la GNU Lesser General
17
 * Public License (LGPL) para obtener una información más detallada.
18
 *
19
 * Debería haber recibido una copia de la GNU Lesser General Public License
20
 * (LGPL) junto a este programa. En caso contrario, consulte
21
 * <http://www.gnu.org/licenses/lgpl.html>.
22
 */
23
24
namespace apigatewaycl\api_client\sii;
25
26
use apigatewaycl\api_client\ApiBase;
27
28
/**
29
 * Módulo para interactuar con las opciones de Documentos Tributarios
30
 * Electrónicos (DTE) del SII.
31
 *
32
 * Para más información sobre la API, consulte la `documentación completa de
33
 * los DTE <https://developers.apigateway.cl/#8c113b9a-ea05-4981-9273-73e3f20ef991>`_.
34
 */
35
class DteEmitidos extends ApiBase
36
{
37
    /**
38
     * Cliente específico para gestionar DTE emitidos.
39
     *
40
     * Permite verificar la validez y autenticidad de un DTE emitido.
41
     *
42
     * @param array $credenciales Credenciales de autenticación.
43
     * @param string $token Token de autenticación para la API.
44
     * @param string $url URL base para la API.
45
     */
46
    public function __construct(
47
        array $credenciales,
48
        string $token = null,
49
        string $url = null
50
    )
51
    {
52
        parent::__construct(
53
            credenciales: $credenciales,
54
            token: $token,
55
            url: $url
56
        );
57
    }
58
59
    /**
60
     * Verifica la validez de un DTE emitido.
61
     *
62
     * @param string $emisor RUT del emisor del DTE.
63
     * @param string $receptor RUT del receptor del DTE.
64
     * @param int $dte Tipo de DTE.
65
     * @param int $folio Número de folio del DTE.
66
     * @param string $fecha Fecha de emisión del DTE.
67
     * @param int $total Monto total del DTE.
68
     * @param string|null $firma Firma electrónica del DTE (opcional).
69
     * @param bool|null $certificacion Indica si la verificación es en ambiente
70
     * de certificación (opcional).
71
     * @return \Psr\Http\Message\ResponseInterface Respuesta JSON con el
72
     * resultado de la verificación del DTE.
73
     */
74
    public function verificarDteEmitido(
75
        string $emisor,
76
        string $receptor,
77
        int $dte,
78
        int $folio,
79
        string $fecha,
80
        int $total,
81
        string $firma = null,
82
        bool $certificacion = null
83
    ) {
84
        $certificacion_flag = $certificacion ? 1 : 0;
85
        $url = sprintf(
86
            '/sii/dte/emitidos/verificar?certificacion=%d',
87
            $certificacion_flag
88
        );
89
        $body = [
90
            'auth' => $this->getAuthPass(),
91
            'dte' => [
92
                'emisor' => $emisor,
93
                'receptor' => $receptor,
94
                'dte' => $dte,
95
                'folio' => $folio,
96
                'fecha' => $fecha,
97
                'total' => $total,
98
                'firma' => $firma,
99
            ],
100
        ];
101
        $response = $this->post($url, $body);
102
103
        return $response;
104
    }
105
}
106