BheRecibidas::descargarPdfBheRecibida()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 12
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

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