Bradesco   A
last analyzed

Complexity

Total Complexity 1

Size/Duplication

Total Lines 461
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 1
lcom 0
cbo 1
dl 0
loc 461
rs 10
c 1
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
A defaults() 0 8 1
1
<?php
2
3
namespace SmartCNAB\Support\Bank;
4
5
use SmartCNAB\Support\Bank\Bank;
6
7
/**
8
 * Bank Bradesco support class.
9
 */
10
class Bradesco extends Bank
11
{
12
    /**
13
     * Constants for returning occurrences statuses.
14
     */
15
    const OCCURRENCES_DEBITS = [28];
16
    const OCCURRENCES_DISCHARGED = [9, 10];
17
    const OCCURRENCES_DISUSED_AUTO_DEBIT = [35];
18
    const OCCURRENCES_ENTRY = [2];
19
    const OCCURRENCES_ERROR = [3, 24, 27, 30, 32];
20
    const OCCURRENCES_PAID = [6, 15, 17];
21
    const OCCURRENCES_PAYER_CLAIMS = [29];
22
    const OCCURRENCES_PROTESTED = [19, 25];
23
24
    /**
25
     * Motives for debits occurrence code that has irregular size.
26
     */
27
    const MOTIVES_DEBITS_IRREGULAR = [100, 101, 102, 105, 106, 107];
28
29
    /**
30
     * Channels codes.
31
     *
32
     * @var array
33
     */
34
    protected static $channels = [
35
        '001' => 'CICS (AT00)',
36
        '007' => 'Terminal gerência CBCA PF8',
37
        '010' => 'Terminal gerência CBCA senhas',
38
        '074' => 'Boca do caixa',
39
        '075' => 'Retaguarda',
40
        '076' => 'Subcentro',
41
        '002' => 'BDN multi saque',
42
        '024' => 'Terminal multi função',
43
        '027' => 'Pagamento contas',
44
        '014' => 'Internet',
45
        '035' => 'Net empresa',
46
        '052' => 'Shop credit',
47
        '073' => 'Pag for',
48
        '013' => 'Fone fácil',
49
        '067' => 'Débito automático',
50
        '077' => 'Cartão de crédito',
51
        '078' => 'Compensação eletrônica',
52
        '082' => 'Bradesco expresso',
53
    ];
54
55
    /**
56
     * Emission codes.
57
     *
58
     * @var array
59
     */
60
    protected static $emission = [
61
        '1' => 'Banco emite',
62
        '2' => 'Cliente emite',
63
    ];
64
65
    /**
66
     * Especies codes.
67
     *
68
     * @var array
69
     */
70
    protected static $especies = [
71
        '01' => 'Duplicata',
72
        '02' => 'Nota promissória',
73
        '03' => 'Nota de seguro',
74
        '04' => 'Cobrança seriada',
75
        '05' => 'Recibo',
76
        '10' => 'Letras de câmbio',
77
        '11' => 'Nota de débito',
78
        '12' => 'Duplicata de serviço',
79
        '99' => 'Outros',
80
    ];
81
82
    /**
83
     * Billing instruction.
84
     *
85
     * @var array
86
     */
87
    protected static $instructions = [
88
        '00' => 'Nenhuma instrucão',
89
        '05' => 'Protestar (falimentar)',
90
        '06' => 'Protestar',
91
        '18' => 'Baixa por decurso de prazo',
92
    ];
93
94
    /**
95
     * Returning motives codes.
96
     *
97
     * @var array
98
     */
99
    protected static $motives = [
100
        '02' => [
101
            '00' => 'Ocorrência aceita',
102
            '01' => 'Código do banco inválido',
103
            '04' => 'Código do movimento não permitido para a carteira',
104
            '15' => 'Características da cobrança incompatíveis',
105
            '17' => 'Data de vencimento anterior a data de emissão',
106
            '21' => 'Espécie do título inválido',
107
            '24' => 'Data da emissão inválida',
108
            '27' => 'Valor/taxa de juros mora inválido',
109
            '38' => 'Prazo para protesto inválido',
110
            '39' => 'Pedido para protesto não permitido para título',
111
            '43' => 'Prazo para baixa e devolução inválido',
112
            '45' => 'Nome do pagador inválido',
113
            '46' => 'Tipo/número de inscrição do pagador inválidos',
114
            '47' => 'Endereço do pagador não informado',
115
            '48' => 'CEP inválido',
116
            '50' => 'CEP referente a banco correspondente',
117
            '53' => 'Número de inscrição do pagador/avalista inválidos (CPF/CNPJ)',
118
            '54' => 'Pagador/avalista não informado',
119
            '67' => 'Débito automático agendado',
120
            '68' => 'Débito não agendado - erro nos dados de remessa',
121
            '69' => 'Débito não agendado - pagador não consta no cadastro de autorizante',
122
            '70' => 'Débito não agendado - beneficiário não autorizado pelo pagador',
123
            '71' => 'Débito não agendado - beneficiário não participa da modalidade de débito automático',
124
            '72' => 'Débito não agendado - código de moeda diferente de R$',
125
            '73' => 'Débito não agendado - data de vencimento inválida/vencida',
126
            '75' => 'Débito não agendado - tipo do número de inscrição do pagador debitado inválido',
127
            '76' => 'Pagador eletrônico dda',
128
            '86' => 'Seu número do documento inválido',
129
            '89' => 'Email pagador não enviado – título com débito automático',
130
            '90' => 'Email pagador não enviado – título de cobrança sem registro',
131
        ],
132
        '03' => [
133
            '02' => 'Código do registro detalhe inválido',
134
            '03' => 'Código da ocorrência inválida',
135
            '04' => 'Código de ocorrência não permitida para a carteira',
136
            '05' => 'Código de ocorrência não numérico',
137
            '07' => 'Agência/conta/dígito - inválido',
138
            '08' => 'Nosso número inválido',
139
            '09' => 'Nosso número duplicado',
140
            '10' => 'Carteira inválida',
141
            '13' => 'Identificação da emissão do bloqueto inválida',
142
            '16' => 'Data de vencimento inválida',
143
            '18' => 'Vencimento fora do prazo de operação',
144
            '20' => 'Valor do título inválido',
145
            '21' => 'Espécie do título inválida',
146
            '22' => 'Espécie não permitida para a carteira',
147
            '24' => 'Data de emissão inválida',
148
            '28' => 'Código do desconto inválido',
149
            '38' => 'Prazo para protesto inválido',
150
            '44' => 'Agência beneficiário não prevista',
151
            '45' => 'Nome do pagador não informado',
152
            '46' => 'Tipo/número de inscrição do pagador inválidos',
153
            '47' => 'Endereço do pagador não informado',
154
            '48' => 'CEP inválido',
155
            '50' => 'CEP irregular - banco correspondente',
156
            '63' => 'Entrada para título já cadastrado',
157
            '65' => 'Limite excedido',
158
            '66' => 'Número autorização inexistente',
159
            '68' => 'Débito não agendado - erro nos dados de remessa',
160
            '69' => 'Débito não agendado - pagador não consta no cadastro de autorizante',
161
            '70' => 'Débito não agendado - beneficiário não autorizado pelo pagador',
162
            '71' => 'Débito não agendado - beneficiário não participa do débito automático',
163
            '72' => 'Débito não agendado - código de moeda diferente de R$',
164
            '73' => 'Débito não agendado - data de vencimento inválida',
165
            '74' => 'Débito não agendado - conforme seu pedido, título não registrado',
166
            '75' => 'Débito não agendado – tipo de número de inscrição do debitado inválido',
167
        ],
168
        '06' => [
169
            '00' => 'Título pago com dinheiro',
170
            '15' => 'Título pago com cheque',
171
            '42' => 'Rateio não efetuado, código cálculo 2',
172
        ],
173
        '09' => [
174
            '00' => 'Ocorrência aceita',
175
            '10' => 'Baixa comandada pelo cliente',
176
        ],
177
        '10' => [
178
            '00' => 'Baixado conforme instruções da agência',
179
            '14' => 'Título protestado',
180
            '15' => 'Título excluído',
181
            '16' => 'Título baixado pelo banco por decurso prazo',
182
            '17' => 'Titulo baixado transferido carteira',
183
            '20' => 'Titulo baixado e transferido para desconto',
184
        ],
185
        '15, 17' => [
186
            '00' => 'Título pago com dinheiro',
187
            '15' => 'Título pago com cheque',
188
        ],
189
        '24' => [
190
            '48' => 'CEP inválido',
191
        ],
192
        '27' => [
193
            '04' => 'Código de ocorrência não permitido para a carteira',
194
            '07' => 'Agência/conta/dígito inválidos',
195
            '08' => 'Nosso número inválido',
196
            '10' => 'Carteira inválida',
197
            '15' => 'Carteira/agência/conta/nosso número inválidos',
198
            '40' => 'Título com ordem de protesto emitido',
199
            '42' => 'Código para baixa/devolução via tele bradesco inválido',
200
            '60' => 'Movimento para título não cadastrado',
201
            '77' => 'Transferência para desconto não permitido para a carteira',
202
            '85' => 'Título com pagamento vinculado',
203
        ],
204
        '28' => [
205
            '02' => 'Tarifa de permanência título cadastrado',
206
            '03' => 'Tarifa de sustação',
207
            '04' => 'Tarifa de protesto',
208
            '05' => 'Tarifa de outras instruções',
209
            '06' => 'Tarifa de outras ocorrências',
210
            '08' => 'Custas de protesto',
211
            '12' => 'Tarifa de registro',
212
            '13' => 'Tarifa título pago no bradesco',
213
            '14' => 'Tarifa título pago compensação',
214
            '15' => 'Tarifa título baixado não pago',
215
            '16' => 'Tarifa alteração de vencimento',
216
            '17' => 'Tarifa concessão abatimento',
217
            '18' => 'Tarifa cancelamento de abatimento',
218
            '19' => 'Tarifa concessão desconto',
219
            '20' => 'Tarifa cancelamento desconto',
220
            '21' => 'Tarifa título pago CICS',
221
            '22' => 'Tarifa título pago internet',
222
            '23' => 'Tarifa título pago terminal gerencial serviços',
223
            '24' => 'Tarifa título pago pág-contas',
224
            '25' => 'Tarifa título pago fone fácil',
225
            '26' => 'Tarifa título débito postagem',
226
            '27' => 'Tarifa impressão de títulos pendentes',
227
            '28' => 'Tarifa título pago BDN',
228
            '29' => 'Tarifa título pago terminal multi função',
229
            '30' => 'Impressão de títulos baixados',
230
            '31' => 'Impressão de títulos pagos',
231
            '32' => 'Tarifa título pago pagfor',
232
            '33' => 'Tarifa reg/pgto – guichê caixa',
233
            '34' => 'Tarifa título pago retaguarda',
234
            '35' => 'Tarifa título pago subcentro',
235
            '36' => 'Tarifa título pago cartão de crédito',
236
            '37' => 'Tarifa título pago comp eletrônica',
237
            '38' => 'Tarifa título baixado/pago cartório',
238
            '39' => 'Tarifa título baixado acerto banco',
239
            '40' => 'Baixa registro em duplicidade',
240
            '41' => 'Tarifa título baixado decurso prazo',
241
            '42' => 'Tarifa título baixado judicialmente',
242
            '43' => 'Tarifa título baixado via remessa',
243
            '44' => 'Tarifa título baixado rastreamento',
244
            '45' => 'Tarifa título baixado conf. pedido',
245
            '46' => 'Tarifa título baixado protestado',
246
            '47' => 'Tarifa título baixado para devolução',
247
            '48' => 'Tarifa título baixado franco pagto',
248
            '49' => 'Tarifa título baixado sust/ret/cartório',
249
            '50' => 'Tarifa título baixado sus/sem/rem/cartório',
250
            '51' => 'Tarifa título transferido desconto',
251
            '52' => 'Cobrado baixa manual',
252
            '53' => 'Baixa por acerto cliente',
253
            '54' => 'Tarifa baixa por contabilidade',
254
            '55' => 'Tarifa tentativa cons deb aut',
255
            '56' => 'Tarifa credito online',
256
            '57' => 'Tarifa reg/pagto bradesco expresso',
257
            '58' => 'Tarifa emissão papeleta',
258
            '59' => 'Tarifa fornec papeleta semi preenchida',
259
            '60' => 'Acondicionador de papeletas (rpb)s',
260
            '61' => 'Acondicionador de papelatas (rpb)s personal',
261
            '62' => 'Papeleta formulário branco',
262
            '63' => 'Formulário A4 serrilhado',
263
            '64' => 'Fornecimento de softwares transmiss',
264
            '65' => 'Fornecimento de softwares consulta',
265
            '66' => 'Fornecimento micro completo',
266
            '67' => 'Fornecimento moden',
267
            '68' => 'Fornecimento de máquina fax',
268
            '69' => 'Fornecimento de máquinas óticas',
269
            '70' => 'Fornecimento de impressoras',
270
            '71' => 'Reativação de título',
271
            '72' => 'Alteração de produto negociado',
272
            '73' => 'Tarifa emissão de contra recibo',
273
            '74' => 'Tarifa emissão 2a via papeleta',
274
            '75' => 'Tarifa regravação arquivo retorno',
275
            '76' => 'Arq. títulos a vencer mensal',
276
            '77' => 'Listagem auxiliar de crédito',
277
            '78' => 'Tarifa cadastro cartela instrução permanente',
278
            '79' => 'Canalização de crédito',
279
            '80' => 'Cadastro de mensagem fixa',
280
            '81' => 'Tarifa reapresentação automática título',
281
            '82' => 'Tarifa registro título déb. automático',
282
            '83' => 'Tarifa rateio de crédito',
283
            '84' => 'Emissão papeleta sem valor',
284
            '85' => 'Sem uso',
285
            '86' => 'Cadastro de reembolso de diferença',
286
            '87' => 'Relatório fluxo de pagto',
287
            '88' => 'Emissão extrato mov. carteira',
288
            '89' => 'Mensagem campo local de pagto',
289
            '90' => 'Cadastro concessionária serv. publ.',
290
            '91' => 'Classif. extrato conta corrente',
291
            '92' => 'Contabilidade especial',
292
            '93' => 'Realimentação pagto',
293
            '94' => 'Repasse de créditos',
294
            '96' => 'Tarifa reg. pagto outras mídias',
295
            '97' => 'Tarifa reg/pagto – net empresa',
296
            '98' => 'Tarifa título pago vencido',
297
            '99' => 'Tarifa título baixado por decurso prazo',
298
            '100' => 'Arquivo retorno antecipado',
299
            '101' => 'Arq retorno hora/hora',
300
            '102' => 'Tarifa agendamento déb aut',
301
            '105' => 'Tarifa agendamento rat. crédito',
302
            '106' => 'Tarifa emissão aviso rateio',
303
            '107' => 'Extrato de protesto',
304
        ],
305
        '29' => [
306
            '78' => 'Pagador alega que faturamento e indevido',
307
            '95' => 'Pagador aceita/reconhece o faturamento',
308
        ],
309
        '30' => [
310
            '01' => 'Código do banco inválido',
311
            '04' => 'Código de ocorrência não permitido para a carteira',
312
            '05' => 'Código da ocorrência não numérico',
313
            '08' => 'Nosso número inválido',
314
            '15' => 'Característica da cobrança incompatível',
315
            '16' => 'Data de vencimento inválido',
316
            '17' => 'Data de vencimento anterior a data de emissão',
317
            '18' => 'Vencimento fora do prazo de operação',
318
            '24' => 'Data de emissão inválida',
319
            '26' => 'Código de juros de mora inválido',
320
            '27' => 'Valor/taxa de juros de mora inválido',
321
            '28' => 'Código de desconto inválido',
322
            '29' => 'Valor do desconto maior/igual ao valor do título',
323
            '30' => 'Desconto a conceder não confere',
324
            '31' => 'Concessão de desconto já existente (desconto anterior)',
325
            '32' => 'Valor do iof inválido',
326
            '33' => 'Valor do abatimento inválido',
327
            '34' => 'Valor do abatimento maior/igual ao valor do título',
328
            '38' => 'Prazo para protesto inválido',
329
            '39' => 'Pedido de protesto não permitido para o título',
330
            '40' => 'Título com ordem de protesto emitido',
331
            '42' => 'Código para baixa/devolução inválido',
332
            '46' => 'Tipo/número de inscrição do pagador inválidos',
333
            '48' => 'CEP inválido',
334
            '53' => 'Tipo/número de inscrição do pagador/avalista inválidos',
335
            '54' => 'Pagadorr/avalista não informado',
336
            '57' => 'Código da multa inválido',
337
            '58' => 'Data da multa inválida',
338
            '60' => 'Movimento para título não cadastrado',
339
            '79' => 'Data de juros de mora inválida',
340
            '80' => 'Data do desconto inválida',
341
            '85' => 'Título com pagamento vinculado.',
342
            '88' => 'E-mail pagador não lido no prazo 5 dias',
343
            '91' => 'E-mail pagador não recebido',
344
        ],
345
        '32' => [
346
            '01' => 'Código do banco inválido',
347
            '02' => 'Código do registro detalhe inválido',
348
            '04' => 'Código de ocorrência não permitido para a carteira',
349
            '05' => 'Código de ocorrência não numérico',
350
            '07' => 'Agência/conta/dígito inválidos',
351
            '08' => 'Nosso número inválido',
352
            '10' => 'Carteira inválida',
353
            '15' => 'Características da cobrança incompatíveis',
354
            '16' => 'Data de vencimento inválida',
355
            '17' => 'Data de vencimento anterior a data de emissão',
356
            '18' => 'Vencimento fora do prazo de operação',
357
            '20' => 'Valor do título inválido',
358
            '21' => 'Espécie do título inválida',
359
            '22' => 'Espécie não permitida para a carteira',
360
            '24' => 'Data de emissão inválida',
361
            '28' => 'Código de desconto via telebradesco inválido',
362
            '29' => 'Valor do desconto maior/igual ao valor do título',
363
            '30' => 'Desconto a conceder não confere',
364
            '31' => 'Concessão de desconto - já existe desconto anterior',
365
            '33' => 'Valor do abatimento inválido',
366
            '34' => 'Valor do abatimento maior/igual ao valor do título',
367
            '36' => 'Concessão abatimento - já existe abatimento anterior',
368
            '38' => 'Prazo para protesto inválido',
369
            '39' => 'Pedido de protesto não permitido para o título',
370
            '40' => 'Título com ordem de protesto emitido',
371
            '41' => 'Pedido cancelamento/sustação para título sem instrução de protesto',
372
            '42' => 'Código para baixa/devolução inválido',
373
            '45' => 'Nome do pagador não informado',
374
            '46' => 'Tipo/número de inscrição do pagador inválidos',
375
            '47' => 'Endereço do pagador não informado',
376
            '48' => 'CEP inválido',
377
            '50' => 'CEP referente a um banco correspondente',
378
            '53' => 'Tipo de inscrição do pagador avalista inválidos',
379
            '60' => 'Movimento para título não cadastrado',
380
            '85' => 'Título com pagamento vinculado',
381
            '86' => 'Seu número inválido',
382
            '94' => 'Título penhorado – instrução não liberada pela agência',
383
        ],
384
        '35' => [
385
            '81' => 'Tentativas esgotadas, baixado',
386
            '82' => 'Tentativas esgotadas, pendente',
387
            '83' => 'Cancelado pelo pagador e mantido pendente, conforme negociação',
388
            '84' => 'Cancelado pelo pagador e baixado, conforme negociação',
389
        ],
390
    ];
391
392
    /**
393
     * Remittance occurrences codes.
394
     *
395
     * @var array
396
     */
397
    protected static $remittanceOccurrences = [
398
        '01' => 'Remessa',
399
        '02' => 'Pedido de baixa',
400
        '03' => 'Pedido de protesto falimentar',
401
        '04' => 'Concessão de abatimento',
402
        '05' => 'Cancelamento de abatimento concedido',
403
        '06' => 'Alteração de vencimento',
404
        '07' => 'Alteração do controle do participante',
405
        '08' => 'Alteração de seu número',
406
        '09' => 'Pedido de protesto',
407
        '18' => 'Sustar protesto e baixar título',
408
        '19' => 'Sustar protesto e manter em carteira',
409
        '22' => 'Transferência cessão crédito ID produto 10',
410
        '23' => 'Transferência entre carteiras',
411
        '24' => 'Dev. transferência entre carteiras',
412
        '31' => 'Alteração de outros dados',
413
        '68' => 'Acerto nos dados do rateio de crédito',
414
        '69' => 'Cancelamento do rateio de crédito',
415
    ];
416
417
    /**
418
     * Return occurrences codes.
419
     *
420
     * @var array
421
     */
422
    protected static $returnOccurrences = [
423
        '02' => 'Entrada confirmada',
424
        '03' => 'Entrada rejeitada',
425
        '06' => 'Liquidação normal',
426
        '09' => 'Baixado automaticamente via arquivo',
427
        '10' => 'Baixado conforme instruções da agência',
428
        '11' => 'Em ser - arquivo de títulos pendentes',
429
        '12' => 'Abatimento concedido',
430
        '13' => 'Abatimento cancelado',
431
        '14' => 'Vencimento alterado',
432
        '15' => 'Liquidação em cartório',
433
        '16' => 'Título pago em cheque – vinculado',
434
        '17' => 'Liquidação após baixa ou título não registrado',
435
        '18' => 'Acerto de depositária',
436
        '19' => 'Confirmação recebimento instrução de protesto',
437
        '20' => 'Confirmação recebimento instrução sustação de protesto',
438
        '21' => 'Acerto do controle do participante',
439
        '22' => 'Título com pagamento cancelado',
440
        '23' => 'Entrada do título em cartório',
441
        '24' => 'Entrada rejeitada por CEP irregular',
442
        '25' => 'Confirmação recebimento instrução de protesto falimentar',
443
        '27' => 'Baixa rejeitada',
444
        '28' => 'Débito de tarifas/custas',
445
        '29' => 'Ocorrências do pagador',
446
        '30' => 'Alteração de outros dados rejeitados',
447
        '32' => 'Instrução rejeitada',
448
        '33' => 'Confirmação pedido alteração outros dados',
449
        '34' => 'Retirado de cartório e manutenção carteira',
450
        '35' => 'Desagendamento do débito automático',
451
        '40' => 'Estorno de pagamento',
452
        '55' => 'Sustado judicial',
453
        '68' => 'Acerto dos dados do rateio de crédito',
454
        '69' => 'Cancelamento dos dados do rateio',
455
    ];
456
457
    /**
458
     * Return the default state of info.
459
     *
460
     * @return \StdClass
461
     */
462
    public function defaults()
463
    {
464
        return (object) [
465
            'especie' => '01',
466
            'instruction1' => '00',
467
            'instruction2' => '00',
468
        ];
469
    }
470
}
471