Passed
Push — master ( 43d512...08379c )
by Claudson
02:09
created

DetalheFinanceiro::getValorTotal()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
eloc 1
dl 0
loc 3
ccs 0
cts 2
cp 0
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 0
crap 2
1
<?php
2
3
namespace Claudsonm\Pedi\Standards\PagSeguro\Records;
4
5
use Claudsonm\Pedi\Standards\PagSeguro\Enums\TipoRegistro;
6
use Claudsonm\Pedi\Structure\Field;
7
use Claudsonm\Pedi\Structure\Record;
8
use Claudsonm\Pedi\Structure\Types\Any;
9
use Claudsonm\Pedi\Structure\Types\Numeric;
10
11
class DetalheFinanceiro extends Record
12
{
13
    private array $definitions = [
14
        [
15
            'size' => 1,
16
            'start' => 1,
17
            'type' => Numeric::class,
18
            'name' => 'TIPO_REGISTRO',
19
        ],
20
        [
21
            'size' => 10,
22
            'start' => 2,
23
            'type' => Numeric::class,
24
            'name' => 'ESTABELECIMENTO',
25
        ],
26
        [
27
            'size' => 8,
28
            'start' => 12,
29
            'type' => Numeric::class,
30
            'name' => 'DATA_INICIAL_TRANSACAO',
31
        ],
32
        [
33
            'size' => 6,
34
            'start' => 20,
35
            'type' => Numeric::class,
36
            'name' => 'HORA_INICIAL_TRANSACAO',
37
        ],
38
        [
39
            'size' => 8,
40
            'start' => 26,
41
            'type' => Numeric::class,
42
            'name' => 'DATA_VENDA_AJUSTE',
43
        ],
44
        [
45
            'size' => 6,
46
            'start' => 34,
47
            'type' => Numeric::class,
48
            'name' => 'HORA_VENDA_AJUSTE',
49
        ],
50
        [
51
            'size' => 2,
52
            'start' => 40,
53
            'type' => Numeric::class,
54
            'name' => 'TIPO_EVENTO',
55
        ],
56
        [
57
            'size' => 2,
58
            'start' => 42,
59
            'type' => Numeric::class,
60
            'name' => 'TIPO_TRANSACAO',
61
        ],
62
        [
63
            'size' => 2,
64
            'start' => 44,
65
            'type' => Any::class,
66
            'name' => 'FILLER',
67
        ],
68
        [
69
            'size' => 32,
70
            'start' => 46,
71
            'type' => Any::class,
72
            'name' => 'CODIGO_TRANSACAO',
73
        ],
74
        [
75
            'size' => 20,
76
            'start' => 78,
77
            'type' => Any::class,
78
            'name' => 'CODIGO_VENDA',
79
        ],
80
        [
81
            'size' => 13,
82
            'start' => 98,
83
            'type' => Numeric::class,
84
            'name' => 'VALOR_TOTAL_TRANSACAO',
85
        ],
86
        [
87
            'size' => 13,
88
            'start' => 111,
89
            'type' => Numeric::class,
90
            'name' => 'VALOR_PARCELA',
91
        ],
92
        [
93
            'size' => 1,
94
            'start' => 124,
95
            'type' => Any::class,
96
            'name' => 'PAGAMENTO_PRAZO',
97
        ],
98
        [
99
            'size' => 2,
100
            'start' => 125,
101
            'type' => Any::class,
102
            'name' => 'PLANO',
103
        ],
104
        [
105
            'size' => 2,
106
            'start' => 127,
107
            'type' => Any::class,
108
            'name' => 'PARCELA',
109
        ],
110
        [
111
            'size' => 2,
112
            'start' => 129,
113
            'type' => Numeric::class,
114
            'name' => 'QUANTIDADE_PARCELAS',
115
        ],
116
        [
117
            'size' => 8,
118
            'start' => 131,
119
            'type' => Numeric::class,
120
            'name' => 'DATA_MOVIMENTACAO',
121
        ],
122
        [
123
            'size' => 13,
124
            'start' => 139,
125
            'type' => Numeric::class,
126
            'name' => 'TAXA_PARCELA_COMPRADOR',
127
        ],
128
        [
129
            'size' => 13,
130
            'start' => 152,
131
            'type' => Numeric::class,
132
            'name' => 'TARIFA_BOLETO_COMPRA',
133
        ],
134
        [
135
            'size' => 13,
136
            'start' => 165,
137
            'type' => Numeric::class,
138
            'name' => 'VALOR_ORIGINAL_TRANSACAO',
139
        ],
140
        [
141
            'size' => 13,
142
            'start' => 178,
143
            'type' => Numeric::class,
144
            'name' => 'TAXA_PARCELA_VENDEDOR',
145
        ],
146
        [
147
            'size' => 13,
148
            'start' => 191,
149
            'type' => Numeric::class,
150
            'name' => 'TAXA_INTERMEDIACAO',
151
        ],
152
        [
153
            'size' => 13,
154
            'start' => 204,
155
            'type' => Numeric::class,
156
            'name' => 'TARIFA_INTERMEDIACAO',
157
        ],
158
        [
159
            'size' => 13,
160
            'start' => 217,
161
            'type' => Numeric::class,
162
            'name' => 'TARIFA_BOLETO_VENDEDOR',
163
        ],
164
        [
165
            'size' => 13,
166
            'start' => 230,
167
            'type' => Numeric::class,
168
            'name' => 'TAXA_REP_APLICACAO',
169
        ],
170
        [
171
            'size' => 13,
172
            'start' => 243,
173
            'type' => Numeric::class,
174
            'name' => 'VALOR_LIQUIDO_TRANSACAO',
175
        ],
176
        [
177
            'size' => 13,
178
            'start' => 256,
179
            'type' => Numeric::class,
180
            'name' => 'TAXA_ANTECIPACAO',
181
        ],
182
        [
183
            'size' => 13,
184
            'start' => 269,
185
            'type' => Numeric::class,
186
            'name' => 'VALOR_LIQUIDO_ANTECIPACAO',
187
        ],
188
        [
189
            'size' => 2,
190
            'start' => 282,
191
            'type' => Numeric::class,
192
            'name' => 'STATUS_PAGAMENTO',
193
        ],
194
        [
195
            'size' => 2,
196
            'start' => 284,
197
            'type' => Any::class,
198
            'name' => 'IDENTIFICADOR_REVENDA',
199
        ],
200
        [
201
            'size' => 2,
202
            'start' => 286,
203
            'type' => Numeric::class,
204
            'name' => 'MEIO_PAGAMENTO',
205
        ],
206
        [
207
            'size' => 30,
208
            'start' => 288,
209
            'type' => Any::class,
210
            'name' => 'INSTITUICAO_FINANCEIRA',
211
        ],
212
        [
213
            'size' => 2,
214
            'start' => 318,
215
            'type' => Any::class,
216
            'name' => 'CANAL_ENTRADA',
217
        ],
218
        [
219
            'size' => 2,
220
            'start' => 320,
221
            'type' => Numeric::class,
222
            'name' => 'LEITOR',
223
        ],
224
        [
225
            'size' => 2,
226
            'start' => 322,
227
            'type' => Numeric::class,
228
            'name' => 'MEIO_CAPTURA',
229
        ],
230
        [
231
            'size' => 6,
232
            'start' => 324,
233
            'type' => Numeric::class,
234
            'name' => 'COD_BANCO',
235
        ],
236
        [
237
            'size' => 9,
238
            'start' => 330,
239
            'type' => Any::class,
240
            'name' => 'BANCO_AGENCIA',
241
        ],
242
        [
243
            'size' => 16,
244
            'start' => 339,
245
            'type' => Any::class,
246
            'name' => 'CONTA_BANCO',
247
        ],
248
        [
249
            'size' => 32,
250
            'start' => 355,
251
            'type' => Any::class,
252
            'name' => 'NUM_LOGICO',
253
        ],
254
        [
255
            'size' => 14,
256
            'start' => 387,
257
            'type' => Any::class,
258
            'name' => 'NSU',
259
        ],
260
        [
261
            'size' => 6,
262
            'start' => 401,
263
            'type' => Any::class,
264
            'name' => 'CARTAO_BIN',
265
        ],
266
        [
267
            'size' => 4,
268
            'start' => 407,
269
            'type' => Any::class,
270
            'name' => 'CARTAO_HOLDER',
271
        ],
272
        [
273
            'size' => 6,
274
            'start' => 411,
275
            'type' => Any::class,
276
            'name' => 'CODIGO_AUTORIZACAO',
277
        ],
278
        [
279
            'size' => 32,
280
            'start' => 417,
281
            'type' => Any::class,
282
            'name' => 'CODIGO_CV',
283
        ],
284
        [
285
            'size' => 32,
286
            'start' => 449,
287
            'type' => Any::class,
288
            'name' => 'NUMERO_SERIE_LEITOR',
289
        ],
290
        [
291
            'size' => 50,
292
            'start' => 481,
293
            'type' => Any::class,
294
            'name' => 'INTERNO_PAGSG',
295
        ],
296
    ];
297
298 21
    public function __construct()
299
    {
300 21
        foreach ($this->definitions as $definition) {
301 21
            $field = (new Field())
302 21
                ->setSize($definition['size'])
303 21
                ->setStart($definition['start'])
304 21
                ->setType(new $definition['type']())
305 21
                ->setName($definition['name']);
306 21
            $this->add($field);
307
        }
308 21
    }
309
310 21
    public function matches(string $line): bool
311
    {
312 21
        return TipoRegistro::DETALHE === substr($line, 0, 1);
313
    }
314
315
    /**
316
     * Código do cliente. Identificador único do vendedor no PagSeguro.
317
     */
318
    public function getEstabelecimento(): string
319
    {
320
        return $this->fields[1]->getContent();
321
    }
322
323
    /**
324
     * Código de identificação do evento.
325
     *
326
     * @see \Claudsonm\Pedi\Standards\PagSeguro\Enums\TipoEvento
327
     */
328
    public function getTipoEvento(): string
329
    {
330
        return $this->fields[6]->getContent();
331
    }
332
333
    /**
334
     * Identifica o tipo de ajuste.
335
     */
336
    public function getTipoTransacao(): string
337
    {
338
        return $this->fields[7]->getContent();
339
    }
340
341
    /**
342
     * Valor total da transação.
343
     */
344
    public function getValorTotal(): int
345
    {
346
        return $this->fields[11]->getContent();
347
    }
348
349
    /**
350
     * Valor original da transação.
351
     */
352
    public function getValorOriginal(): int
353
    {
354
        return $this->fields[20]->getContent();
355
    }
356
357
    /**
358
     * Valor líquido da transação.
359
     */
360
    public function getValorLiquido(): int
361
    {
362
        return $this->fields[26]->getContent();
363
    }
364
365
    /**
366
     * Identifica a situação em que se encontra a transação na data da geração do arquivo.
367
     */
368
    public function getStatusPagamento(): int
369
    {
370
        return $this->fields[29]->getContent();
371
    }
372
}
373