Class: BrBoleto::Boleto::BancoBrasil

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

Overview

Implementação de emissão de boleto bancário pelo Banco BancoBrasil.

Documentação Implementada

A documentação na qual essa implementação foi baseada está localizada na pasta ‘documentacoes_dos_boletos/bradesco’ dentro dessa biblioteca.

Instance Attribute Summary

Attributes inherited from Base

#aceite, #codigo_moeda, #data_documento, #data_vencimento, #especie, #especie_documento, #instrucoes1, #instrucoes2, #instrucoes3, #instrucoes4, #instrucoes5, #instrucoes6, #local_pagamento, #logo, #numero_documento, #parcelas, #valor_documento

Instance Method Summary collapse

Methods inherited from Base

#aceite_formatado, #codigo_de_barras, #codigo_de_barras_padrao, #data_vencimento_deve_ser_uma_data, #digito_codigo_de_barras, #fator_de_vencimento, #linha_digitavel, #nosso_numero_retorno, #persisted?, #to_partial_path, #valid_valor_documento_tamanho_maximo, #valor_formatado_para_codigo_de_barras

Methods included from HavePagador

#pagador, #pagador=

Methods included from HaveConta

#conta, #conta=

Methods inherited from ActiveModelBase

#assign_attributes, #initialize

Constructor Details

This class inherits a constructor from BrBoleto::ActiveModelBase

Instance Method Details

#codigo_de_barras_do_bancoObject

_

| Posi

Código de barras do banco com Convênio de 7 e 8 dígitos

 ___________________________________________________________________________
| Posi


118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
# File 'lib/br_boleto/boleto/banco_brasil.rb', line 118

def codigo_de_barras_do_banco
  tamanho = "#{conta.convenio}".strip.size
  cod_barras = ''
  if tamanho == 4 or tamanho == 6
    cod_barras << "#{conta.convenio}"
    cod_barras << "#{numero_documento}"
    cod_barras << "#{conta.agencia}"
    cod_barras << "#{conta.conta_corrente}"
    cod_barras << "#{conta.carteira}"

  elsif tamanho == 7 or tamanho == 8
    cod_barras << "000000"
    cod_barras << "#{conta.convenio}"
    cod_barras << "#{numero_documento}"
    cod_barras << "#{conta.carteira}"
  end
  cod_barras
end

#conta_classObject



11
12
13
# File 'lib/br_boleto/boleto/banco_brasil.rb', line 11

def conta_class
  BrBoleto::Conta::BancoBrasil
end

#default_valuesObject

Conforme descrito na documentação, o valor que deve constar em local do pagamento é “Pagável em qualquer banco até o vencimento. Após, atualize o boleto no site bb.com.br”



61
62
63
64
65
# File 'lib/br_boleto/boleto/banco_brasil.rb', line 61

def default_values
  super.merge({
    :local_pagamento   => 'Pagável em qualquer banco até o vencimento. Após, atualize o boleto no site bb.com.br'
  })
end

#digito_verificador_nosso_numeroString

Para o cálculo do dígito, será necessário acrescentar o código do convenio antes do Nosso Número (número do documento), e aplicar o módulo 11, com fatores de 2 a 7.

Returns:

  • (String)

    Retorno do cálculo do módulo 11 na base 7 (2,3,4,5,6,7)



93
94
95
# File 'lib/br_boleto/boleto/banco_brasil.rb', line 93

def digito_verificador_nosso_numero
  BrBoleto::Calculos::Modulo11FatorDe9a2RestoX.new("#{conta.convenio}#{numero_documento}")
end

#nosso_numeroObject

Nosso Número descrito na documentação (Pag. 18 a 22):

Código do Convênio (4 dígitos) Número do Documento (7 dígitos) - Nosso número DV

Exemplo: 44447777777-D

Código do Convênio (6 dígitos) Número do Documento (5 dígitos) - Nosso número DV

Exemplo: 66666655555-D

Código do Convênio (7 dígitos) Número do Documento (10 digitos)

Exemplo: 77777771010101010

Código do Convênio (8 dígitos) Número do Documento (9 dígitos)

Exemplo: 88888888999999999



81
82
83
84
85
86
87
88
# File 'lib/br_boleto/boleto/banco_brasil.rb', line 81

def nosso_numero
  tamanho = conta.convenio.to_s.size
  if tamanho == 7 or tamanho == 8
    "#{conta.convenio}#{numero_documento}"
  else
    "#{conta.convenio}#{numero_documento}-#{digito_verificador_nosso_numero}"
  end
end

#numero_documento_esperadoObject

Código do Convênio VS. Número do Documento

No caso do Banco do Brasil, o tamanho do código do cedente ditará o tamanho do número do documento. Ou seja, quando o código do cedente for X, o tamanho do número do documento deverá ser Y. Segue abaixo:

 ______________________________________________________________
| Tamanho do C


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

def numero_documento_esperado
  { 0 => 0, 4 => 7, 6 => 5, 7 => 10, 8 => 9 }
end

#valid_carteira_inclusionObject



20
21
22
# File 'lib/br_boleto/boleto/banco_brasil.rb', line 20

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

#valid_conta_corrente_maximumObject

Tamanho máximo de uma conta corrente no Banco BancoBrasil



25
26
27
# File 'lib/br_boleto/boleto/banco_brasil.rb', line 25

def valid_conta_corrente_maximum 
  8
end

#valid_convenio_requiredObject

codigo_cedente/Convênio deve ser obrigatório



35
36
37
# File 'lib/br_boleto/boleto/banco_brasil.rb', line 35

def valid_convenio_required
  true
end

#valid_numero_documento_maximumObject

VALIDAÇÕES DINÂMICAS #################



16
17
18
# File 'lib/br_boleto/boleto/banco_brasil.rb', line 16

def valid_numero_documento_maximum
  numero_documento_esperado["#{conta.convenio}".strip.size]
end