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

BheRecibidas::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 10
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 4
c 1
b 0
f 0
nc 1
nop 3
dl 0
loc 10
ccs 0
cts 5
cp 0
crap 2
rs 10
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 Boletas de Honorarios Electrónicas recibidas del SII.
30
 *
31
 * Para más información sobre la API, consulte la `documentación completa de
32
 * las BHE <https://developers.apigateway.cl/#7de04cde-a3e4-4ab5-b64a-e0fec7f7a5e9>`_.
33
 */
34
class BheRecibidas extends ApiBase
35
{
36
    /**
37
     * Cliente específico para gestionar Boletas de Honorarios Electrónicas (BHE) recibidas.
38
     *
39
     * Provee métodos para obtener documentos, obtener PDF y observar BHE recibidas.
40
     *
41
     * @param array $credenciales Credenciales de autenticación.
42
     * @param string|null $token Token de autenticación para la API.
43
     * @param string|null $url URL base para la API.
44
     */
45
    public function __construct(
46
        array $credenciales,
47
        string $token = null,
48
        string $url = null
49
    )
50
    {
51
        parent::__construct(
52
            credenciales: $credenciales,
53
            token: $token,
54
            url: $url
55
        );
56
    }
57
58
    /**
59
     * Obtiene los documentos de BHE recibidos por un receptor en un periodo específico.
60
     *
61
     * @param string $receptor RUT del receptor de las boletas.
62
     * @param string $periodo Período de tiempo de las boletas recibidas.
63
     * @param int|null $pagina Número de página para paginación (opcional).
64
     * @param string|null $pagina_sig_codigo Código para la siguiente página (opcional).
65
     * @return \Psr\Http\Message\ResponseInterface Respuesta JSON con
66
     * los documentos de BHE.
67
     */
68
    public function listarBhesRecibidas(
69
        string $receptor,
70
        string $periodo,
71
        int $pagina = null,
72
        string $pagina_sig_codigo = null
73
    )
74
    {
75
        $url = sprintf(
76
            '/sii/bhe/recibidas/documentos/%s/%s',
77
            $receptor,
78
            $periodo
79
        );
80
        if ($pagina != null) {
0 ignored issues
show
Bug Best Practice introduced by
It seems like you are loosely comparing $pagina of type integer|null against null; this is ambiguous if the integer can be zero. Consider using a strict comparison !== instead.
Loading history...
81
            $url = sprintf(
82
                $url.'?pagina=%d',
83
                $pagina
84
            );
85
            if ($pagina_sig_codigo != null) {
0 ignored issues
show
Bug introduced by
It seems like you are loosely comparing $pagina_sig_codigo of type null|string against null; this is ambiguous if the string can be empty. Consider using a strict comparison !== instead.
Loading history...
86
                $url = sprintf(
87
                    $url.'&pagina_sig_codigo=%s',
88
                    $pagina_sig_codigo ?? '00000000000000'
89
                );
90
            }
91
        }
92
        $body = [
93
            'auth' => $this->getAuthPass(),
94
        ];
95
        $response = $this->post($url, $body);
96
        return $response;
97
    }
98
99
    /**
100
     * Obtiene el PDF de una BHE recibida.
101
     *
102
     * @param string $codigo Código único de la BHE.
103
     * @return \Psr\Http\Message\ResponseInterface Contenido del PDF de la BHE.
104
     */
105
    public function descargarPdfBheRecibida(string $codigo)
106
    {
107
        $url = sprintf(
108
            '/sii/bhe/recibidas/pdf/%s',
109
            $codigo
110
        );
111
        $body = [
112
            'auth' => $this->getAuthPass(),
113
        ];
114
        $response = $this->post($url, $body);
115
116
        return $response;
117
    }
118
119
    /**
120
     * Marca una observación en una BHE recibida.
121
     *
122
     * @param string $emisor RUT del emisor de la boleta.
123
     * @param string $numero Número de la boleta.
124
     * @param int $causa Motivo de la observación.
125
     * @return \Psr\Http\Message\ResponseInterface Respuesta JSON con la
126
     * confirmación de la observación.
127
     */
128
    public function observarBheRecibida(
129
        string $emisor,
130
        string $numero,
131
        int $causa = 1
132
    )
133
    {
134
        $url = sprintf(
135
            '/sii/bhe/recibidas/observar/%s/%s/%d',
136
            $emisor,
137
            $numero,
138
            $causa
139
        );
140
        $body = [
141
            'auth' => $this->getAuthPass(),
142
        ];
143
        $response = $this->post($url, $body);
144
145
        return $response;
146
    }
147
}
148