Bhe::obtenerDetalleBhe()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 3
c 1
b 0
f 0
nc 1
nop 1
dl 0
loc 7
ccs 0
cts 4
cp 0
crap 2
rs 10
1
<?php
2
3
declare(strict_types=1);
4
5
/**
6
 * BHExpress
7
 * Copyright (C) SASCO SpA (https://sasco.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 bhexpress\api_client\bhe;
25
26
use bhexpress\api_client\ApiBase;
27
28
/**
29
 * Módulo que permite gestionar las BHE registradas y/o sincronizadas en BHExpress.
30
 */
31
class Bhe extends ApiBase
32
{
33
    /**
34
     * Módulo que permite gestionar las BHE registradas y/o sincronizadas en BHExpress.
35
     *
36
     * @param string $token Token de autenticación del usuario. Si no se
37
     * proporciona, se intentará obtener de una variable de entorno.
38
     * @param string $rut RUT del emisor de BHExpress. Si no se proporciona,
39
     * se intentará obtener de una variable de entorno.
40
     * @param string $url URL base de la API. Si no se proporciona, se
41
     * usará una URL por defecto.
42
     */
43
    public function __construct(
44
        string $token = null,
45
        string $rut = null,
46
        string $url = null
47
    ) {
48
        parent::__construct($token, $rut, $url);
49
    }
50
51
    /**
52
     * Recurso que permite obtener el listado paginado de boletas de honorarios electrónicas emitidas.
53
     *
54
     * @param array $filtros Filtros para obtener BHEs específicas (opcional).
55
     * @return \Psr\Http\Message\ResponseInterface Respuesta con el listado de boletas emitidas.
56
     */
57
    public function listarBhes(array $filtros = [])
58
    {
59
        $url = '/bhe/boletas';
60
        if (count($filtros) > 0) {
61
            $queryString = http_build_query($filtros);
62
            $url = sprintf('%s?%s', $url, $queryString);
63
        }
64
65
        $response = $this->get($url);
66
67
        return $response;
68
    }
69
70
    /**
71
     * Recurso que permite obtener el detalle de una boleta de honorarios electrónica emitida.
72
     *
73
     * @param int $numeroBhe Número de la BHE emitida.
74
     * @return \Psr\Http\Message\ResponseInterface Respuesta con el detalle de la boleta emitida.
75
     */
76
    public function obtenerDetalleBhe(int $numeroBhe)
77
    {
78
        $url = sprintf('/bhe/boletas/%d', $numeroBhe);
79
80
        $response = $this->get($url);
81
82
        return $response;
83
    }
84
85
    /**
86
     * Recurso que permite emitir una nueva Boleta de Honorarios Electrónica.
87
     *
88
     * @param array $datosBoleta Información detallada de la boleta a emitir.
89
     * @return \Psr\Http\Message\ResponseInterface Respuesta con el
90
     * encabezado y detalle de la boleta emitida.
91
     */
92
    public function emitirBhe(array $datosBoleta)
93
    {
94
        $url = '/bhe/emitir';
95
96
        $response = $this->post($url, $datosBoleta);
97
98
        return $response;
99
    }
100
101
    /**
102
     * Recurso que permite descargar el PDF de una Boleta de Honorarios
103
     * Electrónica específica.
104
     *
105
     * @param int $numeroBhe Número de la BHE registrada en BHExpress.
106
     * @return \Psr\Http\Message\ResponseInterface Respuesta con el
107
     * contenido del PDF de la BHE.
108
     */
109
    public function descargarPdfBhe(int $numeroBhe)
110
    {
111
        $url = sprintf('/bhe/pdf/%d', $numeroBhe);
112
113
        $response = $this->get($url);
114
115
        return $response;
116
    }
117
118
    /**
119
     * Recurso que permite enviar por correo electrónico una BHE.
120
     *
121
     * @param int $numeroBhe Número de la BHE registrada en BHExpress.
122
     * @param string $email Correo del destinatario.
123
     * @return \Psr\Http\Message\ResponseInterface Respuesta con la
124
     * confirmación del envío del email.
125
     */
126
    public function enviarEmailBhe(int $numeroBhe, string $email)
127
    {
128
        $url = sprintf('/bhe/email/%d', $numeroBhe);
129
        $data = [
130
            'destinatario' => [
131
                'email' => $email,
132
            ],
133
        ];
134
135
        $response = $this->post($url, $data);
136
137
        return $response;
138
    }
139
140
    /**
141
     * Recurso que permite anular una Boleta de Honorarios Electrónica específica.
142
     *
143
     * @param int $numeroBhe Número de la BHE registrada en BHExpress.
144
     * @param int $causa Causa de la anulación de la BHE.
145
     * @return \Psr\Http\Message\ResponseInterface Respuesta con el
146
     * encabezado de la boleta anulada.
147
     */
148
    public function anularBhe(int $numeroBhe, int $causa)
149
    {
150
        $url = sprintf('/bhe/anular/%d', $numeroBhe);
151
152
        $data = [
153
            'causa' => $causa,
154
        ];
155
156
        $response = $this->post($url, $data);
157
158
        return $response;
159
    }
160
161
    /**
162
     * Recurso que permite calcular el monto líquido a partir de un monto bruto.
163
     *
164
     * @param int $bruto Monto bruto a convertir.
165
     * @param string $periodo Periodo para el cual calcular los totales.
166
     * @return \Psr\Http\Message\ResponseInterface|null Respuesta con el
167
     * monto líquido calculado.
168
     */
169
    public function calcularMontoLiquido(int $bruto, string $periodo)
170
    {
171
        $url = sprintf('/bhe/liquido/%d/%s', $bruto, $periodo);
172
173
        $response = $this->get($url);
174
175
        return $response;
176
    }
177
178
    /**
179
     * Recurso que permite calcular el monto bruto a partir de un monto líquido.
180
     *
181
     * @param int $liquido Monto líquido a convertir.
182
     * @param string $periodo Periodo para el cual calcular los totales.
183
     * @return \Psr\Http\Message\ResponseInterface|null Respuesta con el
184
     * monto bruto calculado.
185
     */
186
    public function calcularMontoBruto(int $liquido, string $periodo)
187
    {
188
        $url = sprintf('/bhe/bruto/%d/%s', $liquido, $periodo);
189
190
        $response = $this->get($url);
191
192
        return $response;
193
    }
194
}
195