BancoDoBrasil::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 BancoDoBrasil support class.
9
 */
10
class BancoDoBrasil extends Bank
11
{
12
    /**
13
     * Constants for returning occurrences statuses.
14
     */
15
    const OCCURRENCES_CONFIRMATION = [12, 13, 14, 16, 21, 22, 23, 24, 25, 26,
16
        28, 31, 32, 33, 34, 35, 36, 37, 38, 39, 41, 42, 44, 46, 72, 73, 96, 97,
17
        98];
18
    const OCCURRENCES_DISCHARGED = [9, 10, 20];
19
    const OCCURRENCES_ENTRY = [2];
20
    const OCCURRENCES_ERROR = [3];
21
    const OCCURRENCES_PAID = [5, 6, 7, 8, 15];
22
    const OCCURRENCES_PROTESTED = [19];
23
24
    /**
25
     * Channels codes.
26
     *
27
     * @var array
28
     */
29
    protected static $billing = [
30
        '04DSC' => 'Solicitação de registro na Modalidade Descontada',
31
        '08VDR' => 'Solicitação de registro na Modalidade BBVendor',
32
        '02VIN' => 'Solicitação de registro na Modalidade Vinculada',
33
    ];
34
35
    /**
36
     * Channels codes.
37
     *
38
     * @var array
39
     */
40
    protected static $channels = [
41
        '00' => 'Não é sacado eletrônico no DDA',
42
        '01' => 'Terminal de auto-atendimento',
43
        '02' => 'Internet',
44
        '03' => 'Central de atendimento (URA)',
45
        '04' => 'Gerenciador financeiro',
46
        '05' => 'Central de atendimento',
47
        '06' => 'Outro canal de auto-atendimento',
48
        '07' => 'Correspondente bancário',
49
        '08' => 'Guichê de caixa',
50
        '09' => 'Arquivo-eletrônico',
51
        '10' => 'Compensação',
52
        '11' => 'Outro canal eletrônico',
53
        '50' => 'Sacado eletrônico no DDA',
54
    ];
55
56
    /**
57
     * Especies codes.
58
     *
59
     * @var array
60
     */
61
    protected static $especies = [
62
        '01' => 'Duplicata mercantil',
63
        '02' => 'Nota promissória',
64
        '03' => 'Nota de seguro',
65
        '05' => 'Recibo',
66
        '08' => 'Letra de câmbio',
67
        '09' => 'Warrant',
68
        '10' => 'Cheque',
69
        '12' => 'Duplicata de serviço',
70
        '13' => 'Nota de débito',
71
        '15' => 'Apólice de seguro',
72
        '25' => 'Dívida ativa da união',
73
        '26' => 'Dívida ativa de estado',
74
        '27' => 'Dívida ativa de município',
75
    ];
76
77
    /**
78
     * Billing instruction.
79
     *
80
     * @var array
81
     */
82
    protected static $instructions = [
83
        '00' => 'Ausência de instruções',
84
        '01' => 'Cobrar juros (dispensável se informado o valor a ser cobrado por dia de atraso)',
85
        '03' => 'Protestar no 3o dia útil após vencido',
86
        '04' => 'Protestar no 4o dia útil após vencido',
87
        '05' => 'Protestar no 5o dia útil após vencido',
88
        '06' => 'Indica protesto em dias corridos, com prazo de 6 a 29, 35 ou 40 dias corridos',
89
        '07' => 'Não protestar',
90
        '10' => 'Protestar no 10o dia corrido após vencido',
91
        '15' => 'Protestar no 15o dia corrido após vencido',
92
        '20' => 'Protestar no 20o dia corrido após vencido',
93
        '22' => 'Conceder desconto só até a data estipulada',
94
        '25' => 'Protestar no 25o dia corrido após vencido',
95
        '30' => 'Protestar no 30o dia corrido após vencido',
96
        '35' => 'Protestar no 35o dia corrido após vencido',
97
        '40' => 'Protestar no 40o dia corrido após vencido',
98
        '45' => 'Protestar no 45o dia corrido após vencido',
99
        '42' => 'Devolver',
100
        '44' => 'Baixar',
101
        '46' => 'Entregar ao sacado franco de pagamento',
102
    ];
103
104
    /**
105
     * Motives codes.
106
     *
107
     * @var array
108
     */
109
    protected static $motives = [
110
        '05, 06, 07, 08, 15, 46' => [
111
            '01' => 'Liquidação normal',
112
            '02' => 'Liquidação parcial',
113
            '03' => 'Liquidação por saldo',
114
            '04' => 'Liquidação com cheque a compensar',
115
            '05' => 'Liquidação de título sem registro',
116
            '07' => 'Liquidação na apresentação',
117
            '09' => 'Liquidação em cartório',
118
            '10' => 'Liquidação parcial com cheque a compensar',
119
            '11' => 'Liquidação por saldo com cheque a compensar',
120
        ],
121
        '02' => [
122
            '00' => 'Por meio magnético',
123
            '11' => 'Por via convencional',
124
            '16' => 'Por alteração do código do cedente',
125
            '17' => 'Por alteração da variação',
126
            '18' => 'Por alteração da carteira',
127
        ],
128
        '09, 10, 20' => [
129
            '00' => 'Solicitada pelo cliente',
130
            '15' => 'Protestado',
131
            '18' => 'Por alteração da carteira',
132
            '19' => 'Débito automático',
133
            '31' => 'Liquidado anteriormente',
134
            '32' => 'Habilitado em processo',
135
            '33' => 'Incobrável por nosso intermédio',
136
            '34' => 'Transferido para créditos em liquidação',
137
            '46' => 'Por alteração da variação',
138
            '47' => 'Por alteração da variação',
139
            '51' => 'Acerto',
140
            '90' => 'Baixa automática',
141
        ],
142
        '03' => [
143
            '01' => 'Identificação inválida',
144
            '02' => 'Variação da carteira inválida',
145
            '03' => 'Valor dos juros por um dia inválido',
146
            '04' => 'Valor do desconto inválido',
147
            '05' => 'Espécie de título inválida para carteira/variação',
148
            '06' => 'Espécie de valor invariável inválido',
149
            '07' => 'Prefixo da agência usuária inválido',
150
            '08' => 'Valor do título/apólice inválido',
151
            '09' => 'Data de vencimento inválida',
152
            '10' => 'Fora do prazo/só admissível na carteira',
153
            '11' => 'Inexistência de margem para desconto',
154
            '12' => 'O banco não tem agência na praça do sacado',
155
            '13' => 'Razões cadastrais',
156
            '14' => 'Sacado interligado com o sacador',
157
            '15' => 'Titulo sacado contra órgão do poder público',
158
            '16' => 'Titulo preenchido de forma irregular',
159
            '17' => 'Titulo rasurado',
160
            '18' => 'Endereço do sacado não localizado ou incompleto',
161
            '19' => 'Código do cedente inválido',
162
            '20' => 'Nome/endereço do cliente não informado (ECT)',
163
            '21' => 'Carteira inválida',
164
            '22' => 'Quantidade de valor variável inválida',
165
            '23' => 'Faixa nosso-numero excedida',
166
            '24' => 'Valor do abatimento inválido',
167
            '25' => 'Novo número do título dado pelo cedente inválido (seu número)',
168
            '26' => 'Valor do iof de seguro inválido',
169
            '27' => 'Nome do sacado/cedente inválido',
170
            '28' => 'Data do novo vencimento inválida',
171
            '29' => 'Endereço não informado',
172
            '30' => 'Registro de título já liquidado',
173
            '31' => 'Numero do borderô inválido',
174
            '32' => 'Nome da pessoa autorizada inválido',
175
            '33' => 'Nosso número já existente',
176
            '34' => 'Numero da prestação do contrato inválido',
177
            '35' => 'Percentual de desconto inválido',
178
            '36' => 'Dias para fichamento de protesto inválido',
179
            '37' => 'Data de emissão do título inválida',
180
            '38' => 'Data do vencimento anterior à data da emissão do título',
181
            '39' => 'Comando de alteração indevido para a carteira',
182
            '40' => 'Tipo de moeda inválido',
183
            '41' => 'Abatimento não permitido',
184
            '42' => 'CEP/UF inválido/não compatíveis (ECT)',
185
            '43' => 'Código de unidade variável incompatível com a data de emissão do título',
186
            '44' => 'Dados para débito ao sacado inválidos',
187
            '45' => 'Carteira/variação encerrada',
188
            '46' => 'Convenio encerrado',
189
            '47' => 'Titulo tem valor diverso do informado',
190
            '48' => 'Motivo de baixa invalido para a carteira',
191
            '49' => 'Abatimento a cancelar não consta do título',
192
            '50' => 'Comando incompatível com a carteira',
193
            '51' => 'Código do convenente invalido',
194
            '52' => 'Abatimento igual ou maior que o valor do titulo',
195
            '53' => 'Titulo já se encontra na situação pretendida',
196
            '54' => 'Titulo fora do prazo admitido para a conta 1',
197
            '55' => 'Novo vencimento fora dos limites da carteira',
198
            '56' => 'Titulo não pertence ao convenente',
199
            '57' => 'Variação incompatível com a carteira',
200
            '58' => 'Impossível a variação única para a carteira indicada',
201
            '59' => 'Titulo vencido em transferência para a carteira 51',
202
            '60' => 'Titulo com prazo superior a 179 dias em variação única para carteira 51',
203
            '61' => 'Titulo já foi fichado para protesto',
204
            '62' => 'Alteração da situação de débito inválida para o código de responsabilidade',
205
            '63' => 'DV do nosso número inválido',
206
            '64' => 'Titulo não passível de débito/baixa - situação anormal',
207
            '65' => 'Titulo com ordem de não protestar - não pode ser encaminhado a cartório',
208
            '66' => 'Número do documento do sacado (CNPJ/CPF) inválido',
209
            '67' => 'Titulo/carne rejeitado',
210
            '69' => 'Valor/percentual de juros inválido',
211
            '70' => 'Título já se encontra isento de juros',
212
            '71' => 'Código de juros inválido',
213
            '72' => 'Prefixo da ag. cobradora inválido',
214
            '73' => 'Numero do controle do participante inválido',
215
            '74' => 'Cliente não cadastrado no ciope (desconto/vendor)',
216
            '75' => 'Quantidade de dias do prazo limite para recebimento de título vencido inválido',
217
            '76' => 'Titulo excluído automaticamente por decurso de prazo ciope (desconto/vendor)',
218
            '77' => 'Titulo vencido transferido para a conta 1 - carteira vinculada',
219
            '84' => 'Título não localizado na existência/baixado por protesto',
220
            '80' => 'Nosso numero inválido',
221
            '81' => 'Data para concessão do desconto inválida. gerada nos seguintes casos',
222
            '82' => 'CEP do sacado inválido',
223
            '83' => 'Carteira/variação não localizada no cedente',
224
            '84' => 'Titulo não localizado na existência',
225
            '85' => 'Recusa do comando 41 - parâmetro de liquidação parcial',
226
            '99' => 'Outros motivos',
227
        ],
228
        '72' => [
229
            '00' => 'Transferência de título de cobrança simples para descontada ou vice-versa',
230
            '52' => 'Reembolso de título vendor ou descontado',
231
        ],
232
    ];
233
234
    /**
235
     * Remittance occurrences codes.
236
     *
237
     * @var array
238
     */
239
    protected static $remittanceOccurrences = [
240
        '01' => 'Registro de títulos',
241
        '02' => 'Solicitação de baixa',
242
        '03' => 'Pedido de débito em conta',
243
        '04' => 'Concessão de abatimento',
244
        '05' => 'Cancelamento de abatimento',
245
        '06' => 'Alteração de vencimento de título',
246
        '07' => 'Alteração do número de controle do participante',
247
        '08' => 'Alteração do número do titulo dado pelo cedente',
248
        '09' => 'Instrução para protestar',
249
        '10' => 'Instrução para sustar protesto',
250
        '11' => 'Instrução para dispensar juros',
251
        '12' => 'Alteração de nome e endereço do sacado',
252
        '16' => 'Alterar juros de mora',
253
        '31' => 'Conceder desconto',
254
        '32' => 'Não conceder desconto',
255
        '33' => 'Retificar dados da concessão de desconto',
256
        '34' => 'Alterar data para concessão de desconto',
257
        '35' => 'Cobrar multa',
258
        '36' => 'Dispensar multa',
259
        '37' => 'Dispensar indexador',
260
        '38' => 'Dispensar prazo limite de recebimento',
261
        '39' => 'Alterar prazo limite de recebimento',
262
        '40' => 'Alterar modalidade',
263
    ];
264
265
    /**
266
     * Return occurrences codes.
267
     *
268
     * @var array
269
     */
270
    protected static $returnOccurrences = [
271
        '02' => 'Confirmação de entrada de título',
272
        '03' => 'Comando recusado',
273
        '05' => 'Liquidado sem registro',
274
        '06' => 'Liquidação normal',
275
        '07' => 'Liquidação por conta/parcial',
276
        '08' => 'Liquidação por saldo',
277
        '09' => 'Baixa de titulo',
278
        '10' => 'Baixa solicitada',
279
        '11' => 'Títulos em ser',
280
        '12' => 'Abatimento concedido',
281
        '13' => 'Abatimento cancelado',
282
        '14' => 'Alteração de vencimento do título',
283
        '15' => 'Liquidação em cartório',
284
        '16' => 'Confirmação de alteração de juros de mora',
285
        '19' => 'Confirmação de recebimento de instruções para protesto',
286
        '20' => 'Débito em conta',
287
        '21' => 'Alteração do nome do sacado',
288
        '22' => 'Alteração do endereço do sacado',
289
        '23' => 'Indicação de encaminhamento a cartório',
290
        '24' => 'Sustar protesto',
291
        '25' => 'Dispensar juros de mora',
292
        '26' => 'Alteração do número do título dado pelo cedente (seu número)',
293
        '28' => 'Manutenção de titulo vencido',
294
        '31' => 'Conceder desconto',
295
        '32' => 'Não conceder desconto',
296
        '33' => 'Retificar desconto',
297
        '34' => 'Alterar data para desconto',
298
        '35' => 'Cobrar multa',
299
        '36' => 'Dispensar multa',
300
        '37' => 'Dispensar indexador',
301
        '38' => 'Dispensar prazo limite para recebimento',
302
        '39' => 'Alterar prazo limite para recebimento',
303
        '41' => 'Alteração do número do controle do participante',
304
        '42' => 'Alteração do número do documento do sacado (CNPJ/CPF)',
305
        '44' => 'Título pago com cheque devolvido',
306
        '46' => 'Título pago com cheque, aguardando compensação',
307
        '72' => 'Alteração de tipo de cobrança',
308
        '73' => 'Confirmação de instrução de parâmetro de pagamento parcial',
309
        '96' => 'Despesas de protesto',
310
        '97' => 'Despesas de sustação de protesto',
311
        '98' => 'Débito de custas antecipadas',
312
    ];
313
314
    /**
315
     * Return the default state of info.
316
     *
317
     * @return \StdClass
318
     */
319
    public function defaults()
320
    {
321
        return (object) [
322
            'especie' => '01',
323
            'instruction1' => '00',
324
            'instruction2' => '00',
325
        ];
326
    }
327
}
328