Santander::defaults()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 8
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
dl 0
loc 8
rs 9.4285
c 1
b 0
f 0
cc 1
eloc 5
nc 1
nop 0
1
<?php
2
3
namespace SmartCNAB\Support\Bank;
4
5
use SmartCNAB\Support\Bank\Bank;
6
7
/**
8
 * Bank Santander support class.
9
 */
10
class Santander extends Bank
11
{
12
    /**
13
     * Constants for returning occurrences statuses.
14
     */
15
    const OCCURRENCES_DISCHARGED = [9, 10];
16
    const OCCURRENCES_ENTRY = [2];
17
    const OCCURRENCES_PAID = [6, 7, 8, 17];
18
    const OCCURRENCES_PROTESTED = [15];
19
20
    /**
21
     * Especies codes.
22
     *
23
     * @var array
24
     */
25
    protected static $especies = [
26
        '01' => 'Duplicata',
27
        '02' => 'Nota promissória',
28
        '03' => 'Apólice / Nota de seguro',
29
        '05' => 'Recibo',
30
        '06' => 'Duplicata de serviço',
31
        '07' => 'Letra de cambio',
32
    ];
33
34
    /**
35
     * Billing instruction.
36
     *
37
     * @var array
38
     */
39
    protected static $instructions = [
40
        '00' => 'Não há instruções',
41
        '02' => 'Baixar após quinze dias do vencimento',
42
        '03' => 'Baixar após 30 dias do vencimento',
43
        '04' => 'Não baixar',
44
        '06' => 'Protestar',
45
        '07' => 'Não protestar',
46
        '08' => 'Não cobrar juros de mora',
47
    ];
48
49
    /**
50
     * Returning rejection codes.
51
     *
52
     * @var array
53
     */
54
    protected static $rejectionCodes = [
55
        '001' => 'Nosso número não númerico',
56
        '002' => 'Valor do abatimento não númerico',
57
        '003' => 'Data vencimento não númerica',
58
        '004' => 'Conta cobrança não númerica',
59
        '005' => 'Código da carteira não númerico',
60
        '006' => 'Código da carteira inválido',
61
        '007' => 'Espécie do documento inválida',
62
        '008' => 'Unidade de valor não númerica',
63
        '009' => 'Unidade de valor inválida',
64
        '010' => 'Código primeira instrução não númerica',
65
        '011' => 'Código segunda instrução não númerica',
66
        '012' => 'Valor do título em outra unidade',
67
        '013' => 'Valor do título não númerico',
68
        '014' => 'Valor de mora não númerico',
69
        '015' => 'Data emissão não númerica',
70
        '016' => 'Data de vencimento inválida',
71
        '017' => 'Código da agência cobradora não númerica',
72
        '018' => 'Valor do IOC não númerico',
73
        '019' => 'Número do CEP não númerico',
74
        '020' => 'Tipo inscrição não númerico',
75
        '021' => 'Número do CNPJ ou CPF não númerico',
76
        '022' => 'Código ocorrência inválido',
77
        '023' => 'Nosso número inválido para modalidade',
78
        '024' => 'Total parcela não númerico',
79
        '025' => 'Valor desconto não númerico',
80
        '026' => 'Código banco cobrador inválido',
81
        '027' => 'Número parcelas carnê não númerico',
82
        '028' => 'Número parcelas carnê zerado',
83
        '029' => 'Valor de mora inválido',
84
        '030' => 'Data vencimento menor de 15 dias da data processamento',
85
        '038' => 'Movimento excluído por solicitação',
86
        '039' => 'Perfil não aceita título em banco correspondente',
87
        '040' => 'Cobrança rápida não aceita-se banco correspondente',
88
        '041' => 'Agência cobradora não encontrada',
89
        '042' => 'Conta cobrança inválida',
90
        '043' => 'Não baixar, compl. informado inválido',
91
        '044' => 'Não protestar, compl. informado inválido',
92
        '045' => 'Quantidade de dias de baixa não preenchido',
93
        '046' => 'Quantidade de dias protesto não preenchido',
94
        '047' => 'Total parcelas informadas não bate cl otd parc ger',
95
        '048' => 'Carnê com parcelas com erro',
96
        '049' => 'Seu número não confere com o carnê',
97
        '050' => 'Número do título igual a zero',
98
        '051' => 'Titulo não encontrado',
99
        '052' => 'Ocorrência não acatada, título liquidado',
100
        '053' => 'Ocorrência não acatada, título baixado',
101
        '054' => 'Titulo com ordem de protesto já emitida',
102
        '055' => 'Ocorrência não acatada, título já protestado',
103
        '056' => 'Ocorrência não acatada, título não vencido',
104
        '057' => 'CEP do sacado incorreto',
105
        '058' => 'CNPJ/CPF incorreto',
106
        '059' => 'Instrução aceita só para cobrança simples',
107
        '060' => 'Espécie documento não protestável',
108
        '061' => 'Cedente sem carta de protesto',
109
        '062' => 'Sacado não protestável',
110
        '063' => 'CEP não encontrado na tabela de praças',
111
        '064' => 'Tipo de cobrança não permite protesto',
112
        '065' => 'Pedido sustação já solicitado',
113
        '066' => 'Sustação protesto fora de prazo',
114
        '067' => 'Cliente não transmite reg. de ocorrência',
115
        '068' => 'Tipo de vencimento inválido',
116
        '069' => 'Produto diferente de cobrança simples',
117
        '070' => 'Data prorrogação menor que data vencimento',
118
        '071' => 'Data antecipação maior que data vencimento',
119
        '072' => 'Data documento superior a data instrução',
120
        '073' => 'Abatimento maior/igual ao valor título',
121
        '074' => 'Primeiro desconto maior/igual valor título',
122
        '075' => 'Segundo desconto maior/igual valor título',
123
        '076' => 'Terceiro desconto maior/igual valor título',
124
        '077' => 'Desconto por antecipação maior/igual valor título',
125
        '078' => 'Não existe abatimento para cancelar',
126
        '079' => 'Não existe primeiro desconto para cancelar',
127
        '080' => 'Não existe segundo desconto para cancelar',
128
        '081' => 'Não existe terceiro desconto para cancelar',
129
        '082' => 'Não existe desconto por antecipação para cancelar',
130
        '083' => 'Não existe multa por atraso para cancelar',
131
        '084' => 'Já existe segundo desconto',
132
        '085' => 'Já existe terceiro desconto',
133
        '086' => 'Data segundo desconto inválida',
134
        '087' => 'Data terceiro desconto inválida',
135
        '088' => 'Data instrução inválida',
136
        '089' => 'Data multa menor/igual que vencimento',
137
        '090' => 'Já existe desconto por dia antecipação',
138
        '091' => 'Já existe concessao de desconto',
139
        '092' => 'Nosso número já cadastrado',
140
        '093' => 'Valor do título não informado',
141
        '094' => 'Valor título em outra moeda não informado',
142
        '095' => 'Perfil não aceita valor título zerado',
143
        '096' => 'Espécie documento não permite protesto',
144
        '097' => 'Espécie documento não permite IOC zerado',
145
        '098' => 'Data emissão inválida',
146
        '099' => 'Registro duplicado no movimento diário',
147
        '100' => 'Data emissão maior que a data vencimento',
148
        '101' => 'Nome do sacado não informado',
149
        '102' => 'Endereço do sacado não informado',
150
        '103' => 'Município do sacado não informado',
151
        '104' => 'Unidade da federação não informada',
152
        '105' => 'Tipo inscrição não existe',
153
        '106' => 'CNPJ/CPF não informado',
154
        '107' => 'Unidade da federação incorreta',
155
        '108' => 'Dígito CNPJ/CPF incorreto',
156
        '109' => 'Valor mora tem que ser zero (título = zero)',
157
        '110' => 'Data primeiro desconto inválida',
158
        '111' => 'Data desconto não númerica',
159
        '112' => 'Valor desconto não informado',
160
        '113' => 'Valor desconto inválido',
161
        '114' => 'Valor abatimento não informado',
162
        '115' => 'Valor abatimento maior valor título',
163
        '116' => 'Data multa não númerica',
164
        '117' => 'Valor desconto maior valor título',
165
        '118' => 'Data multa não informada',
166
        '119' => 'Data multa maior que data de vencimento',
167
        '120' => 'Percentual multa não númerico',
168
        '121' => 'Percentual multa não informado',
169
        '122' => 'Valor IOF maior que valor título',
170
        '123' => 'CEP do sacado não númerico',
171
        '124' => 'CEP sacado não encontrado',
172
        '125' => 'Complemento da instrução não númerico',
173
        '126' => 'Código para baixa/devolução inválido',
174
        '127' => 'Código para baixa/devolução não númerica',
175
        '128' => 'Código protesto inválido',
176
        '129' => 'Espécie de documento não númerica',
177
        '130' => 'Forma de cadastramento não númerica',
178
        '131' => 'Forma de cadastramento inválida',
179
        '132' => 'Forma cadast. 2 inválida para carteira 3',
180
        '133' => 'Forma cadast. 2 inválida para carteira 4',
181
        '134' => 'Código do movimento remessa não númerico',
182
        '135' => 'Código do movimento remessa inválido',
183
        '136' => 'Código banco na compensação não númerico',
184
        '137' => 'Código banco na compensação inválido',
185
        '138' => 'Número lote remessa(detalhe) não númerico',
186
        '139' => 'Tipo de registro inválido',
187
        '140' => 'Código sequecial do registro detalhe inválido',
188
        '141' => 'Número sequecial registro do lote não númerico',
189
        '142' => 'Número agência cedente/dígito não númerico',
190
        '143' => 'Número conta cedente/dígito não númerico',
191
        '144' => 'Tipo de documento não númerico',
192
        '145' => 'Tipo de documento inválido',
193
        '146' => 'Código para protesto não númerico',
194
        '147' => 'Quantidade de dias para protesto inválido',
195
        '148' => 'Quantidade de dias para protesto não númerico',
196
        '149' => 'Código de mora inválido',
197
        '150' => 'Código de mora não númerico',
198
        '151' => 'Valor mora igual a zeros para código mora 1',
199
        '152' => 'Valor taxa mora igual a zeros para código mora 2',
200
        '153' => 'Valor mora diferente de zeros para código mora 3',
201
        '154' => 'Valor mora não númerico para código mora 2',
202
        '155' => 'Valor mora inválido para código mora 4',
203
        '156' => 'Quantidade dias para baixa/devolução não númerico',
204
        '157' => 'Quantidade dias baixa/devolução inválido para código 1',
205
        '158' => 'Quantidade dias baixa/devolução inválido para código 2',
206
        '159' => 'Quantidade dias baixa/devolução inválido para código 3',
207
        '160' => 'Bairro do sacado não informado',
208
        '161' => 'Tipo inscrição CPF/CNPJ sacador/avalista não numérico',
209
        '162' => 'Indicador de carnê não númerico',
210
        '163' => 'Número total de parcelas carnê não númerico',
211
        '164' => 'Número do plano não númerico',
212
        '165' => 'Indicador de parcelas carnê inválido',
213
        '166' => 'Número sequencial parcela inválido para indic. maior 0',
214
        '167' => 'Número sequencial parcela inválido para indic. diferente de zeros',
215
        '168' => 'Número total parcelas inválido para  indic. maior que zeros',
216
        '169' => 'Número total parcelas inválido para  indic. diferente de zeros',
217
        '170' => 'Forma de cadastramento 2 inválido para carteira 5',
218
        '199' => 'Tipo inscrição CNPJ/CPF sacador/avalista inválido',
219
        '200' => 'Número inscrição (CNPJ) sacador/avalista não númerico',
220
        '201' => 'Alteração do contrato participante inválido',
221
        '202' => 'Alteração do seu número inválida',
222
        '212' => 'Data do juros de mora não númerico (d3p)',
223
        '218' => 'Banco compensação não númerico (d30)',
224
        '219' => 'Banco compensação inválido (d30)',
225
        '220' => 'Número do lote remessa não númerico (d30)',
226
        '221' => 'Número sequencial registro no lote (d30)',
227
        '222' => 'Tipo inscrição sacado não númerico (d30)',
228
        '223' => 'Tipo inscrição sacado inválido (d30)',
229
        '224' => 'Número inscrição sacado não númerico (d30)',
230
        '225' => 'Número inscrição sacado inválido para tipo inscrição (d30)',
231
        '226' => 'Número banco compensação não númerico (d3r)',
232
        '227' => 'Número banco compensação inválido (d3r)',
233
        '228' => 'Número lote remessa não númerico (d3r)',
234
        '229' => 'Número sequencial registro lote não númerico (d3r)',
235
        '241' => 'Data desc3 não númerica (d3r)',
236
        '242' => 'Código da multa não númerico (d3r)',
237
        '243' => 'Código multa inválido (d3r)',
238
        '244' => 'Valor da multa não númerico (d3r)',
239
        '245' => 'Data da multa não númerico (d3r)',
240
        '246' => 'Código banco compensação não númerico (d3s)',
241
        '247' => 'Código banco compensação inválido (d3s)',
242
        '248' => 'Número lote remessa não númerico (d3s)',
243
        '249' => 'Número sequencial do registro lote não númerico (d3s)',
244
        '250' => 'Número identificador de impressão não númerico (d3s)',
245
        '251' => 'Número identificador de impressão inválido (d3s)',
246
        '252' => 'Número linha impressa não númerico (d3s)',
247
        '253' => 'Código messagem para rec. sacado não númerico (d3s)',
248
        '254' => 'Código messagem para rec. sacado inválido (d3s)',
249
        '258' => 'Valor mora não númerico para cod 4 (d3p)',
250
        '259' => 'Cadastro de taxa de permanência inválido para código mora 4 (d3p)',
251
        '260' => 'Valor título (real) inválido para código mora 1 (dep)',
252
        '261' => 'Valor outros inválido para código mora 1 (d3p)',
253
        '262' => 'Cadastro de taxa de permanência inválido para código mora 3 (d3p)',
254
        '263' => 'Instrução para título não registrado',
255
        '264' => 'Código de aceite (A/N) inválido',
256
        '265' => 'Título com mais de 3 instruções financeiras',
257
        '266' => 'Código de cedente não cadastrado',
258
        '267' => 'Título sem ordem de protesto automática',
259
        '268' => 'Data de juros de tolerância inválido',
260
        '269' => 'Data de tolerância menor data vencimento',
261
        '270' => 'Percentual de juros de tolerância inválido',
262
        '371' => 'Titulo rejeitado - operação de desconto',
263
        '372' => 'Título rejeitado - horário limite operação desconto',
264
    ];
265
266
    /**
267
     * Remittance occurrences codes.
268
     *
269
     * @var array
270
     */
271
    protected static $remittanceOccurrences = [
272
        '01' => 'Entrada de título',
273
        '02' => 'Baixa de título',
274
        '04' => 'Concessão de abatimento',
275
        '05' => 'Cancelamento abatimento',
276
        '06' => 'Prorrogação de vencimento',
277
        '07' => 'Alteração de número da conta cedente',
278
        '08' => 'Alteração do seu número',
279
        '09' => 'Protestar',
280
        '18' => 'Sustar protesto',
281
    ];
282
283
    /**
284
     * Return occurrences codes.
285
     *
286
     * @var array
287
     */
288
    protected static $returnOccurrences = [
289
        '01' => 'Título não existe',
290
        '02' => 'Entrada título confirmada',
291
        '03' => 'Entrada título rejeitada',
292
        '06' => 'Liquidação',
293
        '07' => 'Liquidação por conta',
294
        '08' => 'Liquidação por saldo',
295
        '09' => 'Baixa automática',
296
        '10' => 'Título baixa confirmada instrução',
297
        '11' => 'Em ser',
298
        '12' => 'Abatimento concedido',
299
        '13' => 'Abatimento cancelado',
300
        '14' => 'Prorrogação de vencimento',
301
        '15' => 'Confirmação de protesto',
302
        '16' => 'Título já baixado / liquidado',
303
        '17' => 'Liquidado em cartório',
304
        '21' => 'Título enviado a cartório',
305
        '22' => 'Título retirado de cartório',
306
        '24' => 'Custas de cartório',
307
        '25' => 'Protestar título',
308
        '26' => 'Sustar protesto',
309
    ];
310
311
    /**
312
     * Return the default state of itau infos.
313
     *
314
     * @return \StdClass
315
     */
316
    public function defaults()
317
    {
318
        return (object) [
319
            'especie' => '01',
320
            'instruction1' => '00',
321
            'instruction2' => '00',
322
        ];
323
    }
324
}
325