Class: BrBoleto::Conta::BancoBrasil

Inherits:
Base show all
Defined in:
lib/br_boleto/conta/banco_brasil.rb

Instance Attribute Summary collapse

Attributes inherited from Base

#agencia, #carteira, #codigo_carteira, #conta_corrente, #convenio, #convenio_dv, #cpf_cnpj, #endereco, #modalidade, #razao_social, #valid_agencia_length, #valid_carteira_inclusion, #valid_carteira_length, #valid_carteira_maximum, #valid_carteira_minimum, #valid_carteira_required, #valid_codigo_carteira_length, #valid_codigo_carteira_required, #valid_conta_corrente_length, #valid_conta_corrente_maximum, #valid_conta_corrente_minimum, #valid_conta_corrente_required, #valid_convenio_inclusion, #valid_convenio_length, #valid_convenio_maximum, #valid_convenio_minimum, #valid_convenio_required, #valid_endereco_required, #valid_modalidade_inclusion, #valid_modalidade_length, #valid_modalidade_maximum, #valid_modalidade_minimum, #valid_modalidade_required

Instance Method Summary collapse

Methods inherited from Base

#carteira_formatada, #codigo_banco_formatado, #cpf_cnpj_formatado, #cpf_cnpj_formatado_com_label, #tipo_cobranca, #tipo_cpf_cnpj

Methods included from Helper::DefaultCodes

#codigos_movimento_retorno_para_ocorrencia_A_240, #codigos_movimento_retorno_para_ocorrencia_B_240, #codigos_movimento_retorno_para_ocorrencia_B_400, #codigos_movimento_retorno_para_ocorrencia_C_240, #codigos_movimento_retorno_para_ocorrencia_D_240, #default_codigo_juros, #default_codigo_multa, #equivalent_codigo_desconto, #equivalent_codigo_juros, #equivalent_codigo_moeda_240, #equivalent_codigo_moeda_400, #equivalent_codigo_motivo_ocorrencia_B_240, #equivalent_codigo_motivo_ocorrencia_B_400, #equivalent_codigo_motivo_ocorrencia_C_240, #equivalent_codigo_motivo_ocorrencia_D_240, #equivalent_codigo_movimento_remessa_240, #equivalent_codigo_movimento_retorno_240, #equivalent_codigo_multa, #equivalent_codigo_ocorrencia_pagador_240, #equivalent_codigo_ocorrencia_pagador_400, #equivalent_codigo_protesto_240, #equivalent_codigo_protesto_400, #equivalent_distribuicao_boleto, #equivalent_especie_titulo_240, #equivalent_identificacao_emissao_240, #equivalent_identificacao_emissao_400, #equivalent_tipo_cobranca_240, #equivalent_tipo_impressao_240, #equivalent_tipo_impressao_400, #get_codigo_desconto, #get_codigo_juros, #get_codigo_moeda, #get_codigo_motivo_ocorrencia, #get_codigo_movimento_remessa, #get_codigo_movimento_retorno, #get_codigo_multa, #get_codigo_ocorrencia_pagador, #get_codigo_protesto, #get_distribuicao_boleto, #get_especie_titulo, #get_identificacao_emissao, #get_tipo_cobranca, #get_tipo_impressao

Methods inherited from ActiveModelBase

#assign_attributes, #initialize

Constructor Details

This class inherits a constructor from BrBoleto::ActiveModelBase

Instance Attribute Details

#valid_variacao_carteira_requiredObject

Variação da Carteira



27
28
29
# File 'lib/br_boleto/conta/banco_brasil.rb', line 27

def valid_variacao_carteira_required
  @valid_variacao_carteira_required
end

#variacao_carteiraObject

VARIAÇÃO DA CARTEIRA O Banco do Brasil utiliza carteiras de cobrança com variações iniciando em 01 até 99 + dígito verificador, exceto aquelas em que o DV seja igual a X. Normalmente as empresas utilizam uma única variação (019), porém podem ter outras variações, dependendo da necessidade. Consultar a agência quando necessitar dessa informação para fins de configuração do sistema, pois o cadastramento é a a cargo da agência.



23
24
25
# File 'lib/br_boleto/conta/banco_brasil.rb', line 23

def variacao_carteira
  @variacao_carteira
end

Instance Method Details

#agencia_codigo_cedenteString

Campo Agência / Código do Cedente Exemplo: 9999-D / 99999999-D

Returns:

  • (String)

    Agência com 4 caracteres - digito da agência / Conta de Cobrança com 8 caracteres - Digito da Conta



92
93
94
# File 'lib/br_boleto/conta/banco_brasil.rb', line 92

def agencia_codigo_cedente
  "#{agencia}-#{agencia_dv} / #{conta_corrente}-#{conta_corrente_dv}"
end

#agencia_dvObject



79
80
81
82
83
# File 'lib/br_boleto/conta/banco_brasil.rb', line 79

def agencia_dv
  # utilizando a agencia com 4 digitos
  # para calcular o digito
  @agencia_dv ||= BrBoleto::Calculos::Modulo11FatorDe9a2RestoX.new(agencia).to_s
end

#carteiras_suportadasObject

Carteiras suportadas



71
72
73
# File 'lib/br_boleto/conta/banco_brasil.rb', line 71

def carteiras_suportadas
  %w[11 12 15 16 17 18 31 51]
end

#codigo_bancoObject



49
50
51
# File 'lib/br_boleto/conta/banco_brasil.rb', line 49

def codigo_banco
  '001'
end

#codigo_banco_dvObject

Dígito do código do banco descrito na documentação



54
55
56
# File 'lib/br_boleto/conta/banco_brasil.rb', line 54

def codigo_banco_dv
  '9'
end

#codigos_movimento_retorno_para_ocorrencia_A_400Object

Código Motivo Ocorrência Retorno CNAB 400



168
169
170
# File 'lib/br_boleto/conta/banco_brasil.rb', line 168

def codigos_movimento_retorno_para_ocorrencia_A_400
  %w[02 03]
end

#codigos_movimento_retorno_para_ocorrencia_C_400Object



277
278
279
# File 'lib/br_boleto/conta/banco_brasil.rb', line 277

def codigos_movimento_retorno_para_ocorrencia_C_400
  %w[06 09 10 17 45 101 102 103 120]
end

#codigos_movimento_retorno_para_ocorrencia_D_400Object



309
310
311
# File 'lib/br_boleto/conta/banco_brasil.rb', line 309

def codigos_movimento_retorno_para_ocorrencia_D_400
  %w[72]
end

#conta_corrente_dvObject



85
86
87
# File 'lib/br_boleto/conta/banco_brasil.rb', line 85

def conta_corrente_dv
  @conta_corrente_dv ||= BrBoleto::Calculos::Modulo11FatorDe9a2RestoX.new(conta_corrente).to_s
end

#default_valuesObject



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/br_boleto/conta/banco_brasil.rb', line 33

def default_values
  super.merge({
    carteira:                      '18',       
    variacao_carteira:             '019',        
    valid_carteira_required:       true, # <- Validação dinâmica que a modalidade é obrigatória
    valid_carteira_length:         2,    # <- Validação dinâmica que a modalidade deve ter 2 digitos
    valid_carteira_inclusion:      carteiras_suportadas, # <- Validação dinâmica de valores aceitos para a modalidade
    codigo_carteira:               '1',   # Cobrança Simples
    valid_codigo_carteira_length:   1,    # <- Validação dinâmica que a modalidade deve ter 1 digito
    valid_conta_corrente_required: true,  # <- Validação dinâmica que a conta_corrente é obrigatória
    valid_conta_corrente_maximum:  8,     # <- Validação que a conta_corrente deve ter no máximo 8 digitos
    valid_convenio_required:       true,  # <- Validação que a convenio deve ter obrigatório
    # valid_convenio_maximum:        8,     # <- Validação que a convenio deve ter no máximo 8 digitos
  })
end

#equivalent_codigo_motivo_ocorrencia_A_240(codigo_movimento_gem) ⇒ Object

Código Motivo Ocorrência Retorno



159
160
161
162
163
164
165
# File 'lib/br_boleto/conta/banco_brasil.rb', line 159

def equivalent_codigo_motivo_ocorrencia_A_240 codigo_movimento_gem
  super.merge(
    #  Padrão    Código para  
    {# do Banco    a GEM
      '52'    =>   'A104' , # Registro Rejeitado – Título já Liquidado
    })
end

#equivalent_codigo_motivo_ocorrencia_A_400(codigo_movimento_gem) ⇒ Object



171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
# File 'lib/br_boleto/conta/banco_brasil.rb', line 171

def equivalent_codigo_motivo_ocorrencia_A_400 codigo_movimento_gem
  case codigo_movimento_gem
  when '02'
    super.merge(
      #  Padrão    Código para  
      {# do Banco    a GEM
        '00'   =>    'A207',   # Entrada Por meio magnético
        '11'   =>    'A151',   # Entrada Por via convencional
        '16'   =>    'A152',   # Entrada Por alteração do código do cedente
        '17'   =>    'A153',   # Entrada Por alteração da variação
        '18'   =>    'A154',   # Entrada Por alteração da carteira
      })
  when '03'
    super.merge(
      #  Padrão    Código para  
      {# do Banco    a GEM
        '03'   =>    'A27',   # valor dos juros por um dia inválido
        '04'   =>    'A29',   # valor do desconto inválido
        '05'   =>    'A22',   # espécie de título inválida para carteira/variação
        '07'   =>    'A07',   # Prefixo da agência usuária inválido
        '08'   =>    'A20',   # valor do título/apólice inválido
        '09'   =>    'A16',   # data de vencimento inválida
        '16'   =>    'A11',   # Título preenchido de forma irregular
        '19'   =>    'A105',  # Código do cedente inválido
        '20'   =>    'A45',   # Nome/endereço do cliente não informado (ECT)
        '21'   =>    'A10',   # Carteira inválida
        '24'   =>    'A33',   # Valor do abatimento inválido
        '25'   =>    'A86',   # Novo número do título dado pelo cedente inválido (Seu número)
        '26'   =>    'A32',   # Valor do IOF de seguro inválido
        '29'   =>    'A47',   # Endereço não informado
        '30'   =>    'A104',  # Registro de título já liquidado (carteira 17-tipo 4)
        '33'   =>    'A09',   # Nosso número já existente
        '37'   =>    'A24',   # Data de emissão do título inválida
        '38'   =>    'A25',   # Data do vencimento anterior à data da emissão do título
        '39'   =>    'A04',   # Comando de alteração indevido para a carteira
        '41'   =>    'A36',   # Abatimento não permitido
        '42'   =>    'A51',   # CEP/UF inválido/não compatíveis (ECT)
        '46'   =>    'A105',  # Convenio encerrado
        '49'   =>    'A107',  # Abatimento a cancelar não consta do título
        '52'   =>    'A34',   # Abatimento igual ou maior que o valor do Título
        '66'   =>    'A53',   # Número do documento do sacado (CNPJ/CPF) inválido
        '69'   =>    'A59',   # Valor/Percentual de Juros Inválido
        '75'   =>    'A97',   # Qtde. de dias do prazo limite p/ recebimento de título vencido inválido
        '80'   =>    'A08',   # Nosso numero inválido
        '81'   =>    'A80',   # Data para concessão do desconto inválida.
        '82'   =>    'A48',   # CEP do sacado inválido

        '01'   =>    'A155',   # identificação inválida
        '02'   =>    'A156',   # variação da carteira inválida
        '06'   =>    'A157',   # espécie de valor invariável inválido
        '10'   =>    'A158',   # fora do prazo/só admissível na carteira
        '11'   =>    'A159',   # inexistência de margem para desconto
        '12'   =>    'A160',   # o banco não tem agência na praça do sacado
        '13'   =>    'A161',   # razões cadastrais
        '14'   =>    'A162',   # sacado interligado com o sacador (só admissível em cobrança simples- cart. 11 e 17)
        '15'   =>    'A163',   # Título sacado contra órgão do Poder Público (só admissível na carteira 11 e sem ordem de protesto)
        '17'   =>    'A164',   # Título rasurado
        '18'   =>    'A165',   # Endereço do sacado não localizado ou incompleto
        '22'   =>    'A166',   # Quantidade de valor variável inválida
        '23'   =>    'A167',   # Faixa nosso-numero excedida
        '27'   =>    'A168',   # Nome do sacado/cedente inválido
        '28'   =>    'A169',   # Data do novo vencimento inválida
        '31'   =>    'A170',   # Numero do borderô inválido
        '32'   =>    'A171',   # Nome da pessoa autorizada inválido
        '34'   =>    'A172',   # Numero da prestação do contrato inválido
        '35'   =>    'A173',   # percentual de desconto inválido
        '36'   =>    'A174',   # Dias para fichamento de protesto inválido
        '40'   =>    'A175',   # Tipo de moeda inválido
        '43'   =>    'A176',   # Código de unidade variável incompatível com a data de emissão do título
        '44'   =>    'A177',   # Dados para débito ao sacado inválidos
        '45'   =>    'A178',   # Carteira/variação encerrada
        '47'   =>    'A179',   # Título tem valor diverso do informado
        '48'   =>    'A180',   # Motivo de baixa invalido para a carteira
        '50'   =>    'A181',   # Comando incompatível com a carteira
        '51'   =>    'A182',   # Código do convenente invalido
        '53'   =>    'A183',   # Título já se encontra na situação pretendida
        '54'   =>    'A184',   # Título fora do prazo admitido para a conta 1
        '55'   =>    'A185',   # Novo vencimento fora dos limites da carteira
        '56'   =>    'A186',   # Título não pertence ao convenente
        '57'   =>    'A187',   # Variação incompatível com a carteira
        '58'   =>    'A188',   # Impossível a variação única para a carteira indicada
        '59'   =>    'A189',   # Título vencido em transferência para a carteira 51
        '60'   =>    'A190',   # Título com prazo superior a 179 dias em variação única para carteira 51
        '61'   =>    'A191',   # Título já foi fichado para protesto
        '62'   =>    'A192',   # Alteração da situação de débito inválida para o código de responsabilidade
        '63'   =>    'A193',   # DV do nosso número inválido
        '64'   =>    'A194',   # Título não passível de débito/baixa – situação anormal
        '65'   =>    'A195',   # Título com ordem de não protestar – não pode ser encaminhado a cartório
        '67'   =>    'A196',   # Título/carne rejeitado
        '70'   =>    'A197',   # Título já se encontra isento de juros
        '71'   =>    'A198',   # Código de Juros Inválido
        '72'   =>    'A199',   # Prefixo da Ag. cobradora inválido
        '73'   =>    'A200',   # Numero do controle do participante inválido
        '74'   =>    'A201',   # Cliente não cadastrado no CIOPE (Desconto/Vendor)
        '76'   =>    'A202',   # Título excluído automaticamente por decurso de prazo CIOPE (Desconto/Vendor)
        '77'   =>    'A203',   # Título vencido transferido para a conta 1 – Carteira vinculada
        '83'   =>    'A204',   # Carteira/variação não localizada no cedente
        '84'   =>    'A205',   # Título não localizado na existência/Baixado por protesto
        '85'   =>    'A206',   # Recusa do Comando “41” – Parâmetro de Liquidação Parcial.
        '99'   =>    'A999',   # Outros motivos
      })
  else
    super
  end
end

#equivalent_codigo_motivo_ocorrencia_C_400(codigo_movimento_gem) ⇒ Object



280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
# File 'lib/br_boleto/conta/banco_brasil.rb', line 280

def equivalent_codigo_motivo_ocorrencia_C_400 codigo_movimento_gem
  super.merge(
    #  Padrão    Código para  
    {# do Banco    a GEM
      '01'   =>   'C103',   # Liquidação normal
      '02'   =>   'C104',   # Liquidação parcial
      '03'   =>   'C01',    # Liquidação por saldo
      '04'   =>   'C105',   # Liquidação com cheque a compensar
      '05'   =>   'C106',   # Liquidação de título sem registro (carteira 7 tipo 4)
      '07'   =>   'C107',   # Liquidação na apresentação
      '09'   =>   'C08',    # Liquidação em cartório
      '10'   =>   'C110',   # Liquidação Parcial com Cheque a Compensar
      '11'   =>   'C111',   # Liquidação por Saldo com Cheque a Compensar

      '00'   =>   'C10',   # Solicitada pelo cliente
      '15'   =>   'C14',   # Protestado
      '18'   =>   'C118',  # Por alteração da carteira
      '19'   =>   'C119',  # Débito automático
      '31'   =>   'C131',  # Liquidado anteriormente
      '32'   =>   'C132',  # Habilitado em processo
      '33'   =>   'C133',  # Incobrável por nosso intermédio
      '34'   =>   'C134',  # Transferido para créditos em liquidação
      '46'   =>   'C46',   # Por alteração da variação
      '47'   =>   'C47',   # Por alteração da variação
      '51'   =>   'C51',   # Acerto
      '90'   =>   'C90',   # Baixa automática
    })
end

#equivalent_codigo_motivo_ocorrencia_D_400(codigo_movimento_gem) ⇒ Object



312
313
314
315
316
317
318
319
# File 'lib/br_boleto/conta/banco_brasil.rb', line 312

def equivalent_codigo_motivo_ocorrencia_D_400 codigo_movimento_gem
  #  Código     Padrão para  
  {# do Banco     a Gem
    '00'    =>    'D00', # Transferência de título de cobrança simples para descontada ou vice-versa
    '52'    =>    'D52', # Reembolso de título vendor ou descontado, quando ocorrerem reembolsos de títulos
                         # por falta de liquidação. Não há migração de carteira descontada para simples.
  }
end

#equivalent_codigo_movimento_remessa_400Object

Código Movimento da Remessa CNAB400



108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
# File 'lib/br_boleto/conta/banco_brasil.rb', line 108

def equivalent_codigo_movimento_remessa_400
  #  Padrão    Código para    Descrição 
  {# da GEM     o Banco
    '01'   =>   '01' ,     # Registro de títulos
    '02'   =>   '02' ,     # Solicitação de baixa
    '03'   =>   '03' ,     # Pedido de débito em conta
    '04'   =>   '04' ,     # Concessão de abatimento
    '05'   =>   '05' ,     # Cancelamento de abatimento
    '06'   =>   '06' ,     # Alteração de vencimento de título
    '22'   =>   '07' ,     # Alteração do número de controle do participante
    '21'   =>   '08' ,     # Alteração do número do Título dado pelo cedente
    '09'   =>   '09' ,     # Instrução para protestar 
    '10'   =>   '10' ,     # Instrução para sustar protesto
    '11'   =>   '11' ,     # Instrução para dispensar juros
    '24'   =>   '12' ,     # Alteração de nome e endereço do Sacado
    '12'   =>   '16' ,     # Alterar Juros de Mora
    '31'   =>   '31' ,     # Conceder desconto
    '32'   =>   '32' ,     # Não conceder desconto
    '33'   =>   '33' ,     # Retificar dados da concessão de desconto
    '34'   =>   '34' ,     # Alterar data para concessão de desconto
    '35'   =>   '35' ,     # Cobrar multa 
    '36'   =>   '36' ,     # Dispensar multa 
    '37'   =>   '37' ,     # Dispensar indexador
    '38'   =>   '38' ,     # Dispensar prazo limite de recebimento
    '39'   =>   '39' ,     # Alterar prazo limite de recebimento
    '40'   =>   '40' ,     # Alterar carteira/modalidade
  }
end

#equivalent_codigo_movimento_retorno_400Object

Identificações de Ocorrência / Código de ocorrência:



322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
# File 'lib/br_boleto/conta/banco_brasil.rb', line 322

def equivalent_codigo_movimento_retorno_400
  super.merge(
    #  Padrão    Código para  
    {# do Banco    a GEM
      '05'   =>   '17',   # Liquidado sem registro (carteira 17=tipo4)
      '07'   =>   '102',  # Liquidação por Conta/Parcial
      '08'   =>   '103',  # Liquidação por Saldo
      '15'   =>   '101',  # Liquidação em Cartório
      '16'   =>   '57',   # Confirmação de alteração de juros de mora
      '20'   =>   '120',  # Débito em Conta
      '21'   =>   '43',   # Alteração do Nome do Sacado
      '22'   =>   '43',   # Alteração do Endereço do Sacado
      '24'   =>   '20',   # Sustar Protesto
      '25'   =>   '60',   # Dispensar Juros de mora
      '26'   =>   '40',   # Alteração do número do título dado pelo Cedente (Seu número) – 10 e 15posições
      '28'   =>   '108',  # Manutenção de Título vencido
      '31'   =>   '07',   # Conceder desconto
      '32'   =>   '08',   # Não conceder desconto
      '33'   =>   '58',   # Retificar desconto
      '34'   =>   '58',   # Alterar data para desconto
      '35'   =>   '56',   # Cobrar Multa
      '36'   =>   '55',   # Dispensar Multa
      '37'   =>   '121',  # Dispensar Indexador
      '38'   =>   '39',   # Dispensar prazo limite para recebimento
      '39'   =>   '38',   # Alterar prazo limite para recebimento
      '46'   =>   '45',   # Título pago com cheque, aguardando compensação
      '73'   =>   '123',  # Confirmação de Instrução de Parâmetro de Pagamento Parcial
    })
end

#equivalent_especie_titulo_400Object

Espécie do Título



138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
# File 'lib/br_boleto/conta/banco_brasil.rb', line 138

def equivalent_especie_titulo_400
  #  Padrão    Código para  
  {# da GEM     o Banco
    '01'    =>   '10' , #  Cheque
    '02'    =>   '01' , #  Duplicata Mercantil
    '04'    =>   '12' , #  Duplicata de Serviço
    '07'    =>   '08' , #  Letra de Câmbio
    '12'    =>   '02' , #  Nota Promissória
    '16'    =>   '03' , #  Nota de Seguro
    '17'    =>   '05' , #  Recibo
    '19'    =>   '13' , #  Nota de Débito
    '20'    =>   '15' , #  Apólice de Seguro
    '26'    =>   '09' , #  Warrant
    '27'    =>   '26' , #  Dívida Ativa de Estado
    '28'    =>   '27' , #  Dívida Ativa de Município
    '29'    =>   '25' , #  Dívida Ativa da União
    '99'    =>   '99' , #  Outros
  }
end

#equivalent_tipo_cobranca_400Object

Código da Carteira



100
101
102
103
104
105
# File 'lib/br_boleto/conta/banco_brasil.rb', line 100

def equivalent_tipo_cobranca_400
  {
    '5' => '8', # Cobrança BBVendor
    '7' => '7', # Cobrança Direta Especial
  }
end

#nome_bancoObject



58
59
60
# File 'lib/br_boleto/conta/banco_brasil.rb', line 58

def nome_banco
  @nome_banco ||= 'BANCO DO BRASIL S.A.'
end

#versao_layout_arquivo_cnab_240Object



62
63
64
# File 'lib/br_boleto/conta/banco_brasil.rb', line 62

def versao_layout_arquivo_cnab_240
  '083'
end

#versao_layout_lote_cnab_240Object



66
67
68
# File 'lib/br_boleto/conta/banco_brasil.rb', line 66

def versao_layout_lote_cnab_240
  '042'
end