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

DetalheAntecipacao::__construct()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 9
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 8
CRAP Score 2

Importance

Changes 0
Metric Value
eloc 7
dl 0
loc 9
ccs 8
cts 8
cp 1
rs 10
c 0
b 0
f 0
cc 2
nc 2
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 DetalheAntecipacao 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' => 2,
94
            'start' => 124,
95
            'type' => Any::class,
96
            'name' => 'PLANO',
97
        ],
98
        [
99
            'size' => 2,
100
            'start' => 126,
101
            'type' => Any::class,
102
            'name' => 'PARCELA',
103
        ],
104
        [
105
            'size' => 2,
106
            'start' => 128,
107
            'type' => Numeric::class,
108
            'name' => 'QUANTIDADE_PARCELAS',
109
        ],
110
        [
111
            'size' => 8,
112
            'start' => 130,
113
            'type' => Numeric::class,
114
            'name' => 'DATA_PREVISTA_PAGAMENTO',
115
        ],
116
        [
117
            'size' => 8,
118
            'start' => 138,
119
            'type' => Numeric::class,
120
            'name' => 'DATA_MOVIMENTACAO',
121
        ],
122
        [
123
            'size' => 13,
124
            'start' => 146,
125
            'type' => Numeric::class,
126
            'name' => 'VALOR_LIQUIDO_TRANSACAO',
127
        ],
128
        [
129
            'size' => 13,
130
            'start' => 159,
131
            'type' => Numeric::class,
132
            'name' => 'TAXA_ANTECIPACAO',
133
        ],
134
        [
135
            'size' => 13,
136
            'start' => 172,
137
            'type' => Numeric::class,
138
            'name' => 'VALOR_LIQUIDO_ANTECIPACAO',
139
        ],
140
        [
141
            'size' => 2,
142
            'start' => 185,
143
            'type' => Numeric::class,
144
            'name' => 'STATUS_PAGAMENTO',
145
        ],
146
        [
147
            'size' => 32,
148
            'start' => 187,
149
            'type' => Any::class,
150
            'name' => 'NUM_LOGICO',
151
        ],
152
        [
153
            'size' => 14,
154
            'start' => 219,
155
            'type' => Any::class,
156
            'name' => 'NSU',
157
        ],
158
        [
159
            'size' => 6,
160
            'start' => 233,
161
            'type' => Any::class,
162
            'name' => 'CARTAO_BIN',
163
        ],
164
        [
165
            'size' => 4,
166
            'start' => 239,
167
            'type' => Any::class,
168
            'name' => 'CARTAO_HOLDER',
169
        ],
170
        [
171
            'size' => 6,
172
            'start' => 243,
173
            'type' => Any::class,
174
            'name' => 'CODIGO_AUTORIZACAO',
175
        ],
176
        [
177
            'size' => 32,
178
            'start' => 249,
179
            'type' => Any::class,
180
            'name' => 'CODIGO_CV',
181
        ],
182
        [
183
            'size' => 250,
184
            'start' => 281,
185
            'type' => Any::class,
186
            'name' => 'INTERNO_PAGSG',
187
        ],
188
    ];
189
190 2
    public function __construct()
191
    {
192 2
        foreach ($this->definitions as $definition) {
193 2
            $field = (new Field())
194 2
                ->setSize($definition['size'])
195 2
                ->setStart($definition['start'])
196 2
                ->setType(new $definition['type']())
197 2
                ->setName($definition['name']);
198 2
            $this->add($field);
199
        }
200 2
    }
201
202 2
    public function matches(string $line): bool
203
    {
204 2
        return TipoRegistro::DETALHE === substr($line, 0, 1);
205
    }
206
}
207