Passed
Push — master ( 927f67...9bd000 )
by Claudson
06:56
created

DetalheTransacional   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 272
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 3
eloc 178
dl 0
loc 272
ccs 11
cts 11
cp 1
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 9 2
A matches() 0 3 1
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 DetalheTransacional 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_PREVISTA_PAGAMENTO',
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' => 2,
178
            'start' => 256,
179
            'type' => Numeric::class,
180
            'name' => 'STATUS_PAGAMENTO',
181
        ],
182
        [
183
            'size' => 2,
184
            'start' => 258,
185
            'type' => Any::class,
186
            'name' => 'FILLER',
187
        ],
188
        [
189
            'size' => 2,
190
            'start' => 260,
191
            'type' => Numeric::class,
192
            'name' => 'MEIO_PAGAMENTO',
193
        ],
194
        [
195
            'size' => 30,
196
            'start' => 262,
197
            'type' => Any::class,
198
            'name' => 'INSTITUICAO_FINANCEIRA',
199
        ],
200
        [
201
            'size' => 2,
202
            'start' => 292,
203
            'type' => Any::class,
204
            'name' => 'CANAL_ENTRADA',
205
        ],
206
        [
207
            'size' => 2,
208
            'start' => 294,
209
            'type' => Numeric::class,
210
            'name' => 'LEITOR',
211
        ],
212
        [
213
            'size' => 2,
214
            'start' => 296,
215
            'type' => Numeric::class,
216
            'name' => 'MEIO_CAPTURA',
217
        ],
218
        [
219
            'size' => 32,
220
            'start' => 298,
221
            'type' => Any::class,
222
            'name' => 'NUM_LOGICO',
223
        ],
224
        [
225
            'size' => 14,
226
            'start' => 330,
227
            'type' => Any::class,
228
            'name' => 'NSU',
229
        ],
230
        [
231
            'size' => 6,
232
            'start' => 344,
233
            'type' => Any::class,
234
            'name' => 'CARTAO_BIN',
235
        ],
236
        [
237
            'size' => 4,
238
            'start' => 350,
239
            'type' => Any::class,
240
            'name' => 'CARTAO_HOLDER',
241
        ],
242
        [
243
            'size' => 6,
244
            'start' => 354,
245
            'type' => Any::class,
246
            'name' => 'CODIGO_AUTORIZACAO',
247
        ],
248
        [
249
            'size' => 32,
250
            'start' => 360,
251
            'type' => Any::class,
252
            'name' => 'CODIGO_CV',
253
        ],
254
        [
255
            'size' => 32,
256
            'start' => 392,
257
            'type' => Any::class,
258
            'name' => 'NUMERO_SERIE_LEITOR',
259
        ],
260
        [
261
            'size' => 107,
262
            'start' => 424,
263
            'type' => Any::class,
264
            'name' => 'INTERNO_PAGSG',
265
        ],
266
    ];
267
268 20
    public function __construct()
269
    {
270 20
        foreach ($this->definitions as $definition) {
271 20
            $field = (new Field())
272 20
                ->setSize($definition['size'])
273 20
                ->setStart($definition['start'])
274 20
                ->setType(new $definition['type']())
275 20
                ->setName($definition['name']);
276 20
            $this->add($field);
277
        }
278 20
    }
279
280 20
    public function matches(string $line): bool
281
    {
282 20
        return TipoRegistro::DETALHE === substr($line, 0, 1);
283
    }
284
}
285