Class: Brcobranca::Boleto::BancoBrasil

Inherits:
Base
  • Object
show all
Defined in:
lib/brcobranca/boleto/banco_brasil.rb

Overview

Banco do Brasil

Instance Attribute Summary

Attributes inherited from Base

#aceite, #agencia, #avalista, #avalista_documento, #carteira, #carteira_label, #cedente, #cedente_endereco, #codigo_servico, #conta_corrente, #convenio, #data_documento, #data_processamento, #data_vencimento, #demonstrativo, #documento_cedente, #documento_numero, #emv, #especie, #especie_documento, #instrucao1, #instrucao2, #instrucao3, #instrucao4, #instrucao5, #instrucao6, #instrucao7, #instrucoes, #local_pagamento, #moeda, #quantidade, #sacado, #sacado_documento, #sacado_endereco, #valor, #variacao

Instance Method Summary collapse

Methods inherited from Base

#codigo_barras, #fator_vencimento, #logotipo, #valor_documento

Methods included from Template::Base

define_template

Methods included from Validations

#errors, included, #invalid?, #valid?

Constructor Details

#initialize(campos = {}) ⇒ BancoBrasil

Nova instancia do BancoBrasil

Parameters:

  • campos (Hash) (defaults to: {})


31
32
33
34
35
36
37
38
# File 'lib/brcobranca/boleto/banco_brasil.rb', line 31

def initialize(campos = {})
  campos = { 
    carteira: '18', 
    codigo_servico: false, 
    local_pagamento: 'PAGÁVEL EM QUALQUER BANCO.'
  }.merge!(campos)       
  super(campos)
end

Instance Method Details

#agencia_conta_boletoString

Agência + conta corrente do cliente para exibir no boleto.

Examples:

boleto.agencia_conta_boleto #=> "0548-7 / 00001448-6"

Returns:

  • (String)


134
135
136
# File 'lib/brcobranca/boleto/banco_brasil.rb', line 134

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

#agencia_dvString

Retorna dígito verificador da agência

Returns:

  • (String)

    1 caracteres numéricos.



64
65
66
# File 'lib/brcobranca/boleto/banco_brasil.rb', line 64

def agencia_dv
  agencia.modulo11(mapeamento: { 10 => 'X' })
end

#bancoString

Codigo do banco emissor (3 dígitos sempre)

Returns:

  • (String)

    3 caracteres numéricos.



43
44
45
# File 'lib/brcobranca/boleto/banco_brasil.rb', line 43

def banco
  '001'
end

#banco_dvString

Dígito verificador do banco

Returns:

  • (String)

    1 caracteres numéricos.



57
58
59
# File 'lib/brcobranca/boleto/banco_brasil.rb', line 57

def banco_dv
  banco.modulo11(mapeamento: { 10 => 'X' })
end

#carteira=(valor) ⇒ String

Carteira

Returns:

  • (String)

    2 caracteres numéricos.



50
51
52
# File 'lib/brcobranca/boleto/banco_brasil.rb', line 50

def carteira=(valor)
  @carteira = valor.to_s.rjust(2, '0') if valor
end

#codigo_barras_segunda_parteString

Segunda parte do código de barras. A montagem é feita baseada na quantidade de dígitos do convênio.

Returns:

  • (String)

    25 caracteres numéricos.



141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
# File 'lib/brcobranca/boleto/banco_brasil.rb', line 141

def codigo_barras_segunda_parte
  case convenio.to_s.size
  when 8 # Nosso Número de 17 dígitos com Convenio de 8 dígitos e nosso_numero de 9 dígitos
    "000000#{convenio}#{nosso_numero}#{carteira}"
  when 7 # Nosso Número de 17 dígitos com Convenio de 7 dígitos e nosso_numero de 10 dígitos
    "000000#{convenio}#{nosso_numero}#{carteira}"
  when 6 # Convenio de 6 dígitos
    if codigo_servico == false
      # Nosso Número de 11 dígitos com Convenio de 6 dígitos e nosso_numero de 5 dígitos
      "#{convenio}#{nosso_numero}#{agencia}#{conta_corrente}#{carteira}"
    else
      # Nosso Número de 17 dígitos com Convenio de 6 dígitos e sem nosso_numero, carteira 16 e 18
      raise "Só é permitido emitir boletos com nosso número de 17 dígitos com carteiras 16 ou 18. Sua carteira atual é #{carteira}" unless %w[
        16 18
      ].include?(carteira)

      "#{convenio}#{nosso_numero}21"
    end
  when 4 # Nosso Número de 7 dígitos com Convenio de 4 dígitos e sem nosso_numero
    "#{convenio}#{nosso_numero}#{agencia}#{conta_corrente}#{carteira}"
  end
end

#conta_corrente=(valor) ⇒ String

Conta corrente

Returns:

  • (String)

    8 caracteres numéricos.



70
71
72
# File 'lib/brcobranca/boleto/banco_brasil.rb', line 70

def conta_corrente=(valor)
  @conta_corrente = valor.to_s.rjust(8, '0') if valor
end

#conta_corrente_dvString

Dígito verificador da conta corrente

Returns:

  • (String)

    1 caracteres numéricos.



76
77
78
# File 'lib/brcobranca/boleto/banco_brasil.rb', line 76

def conta_corrente_dv
  conta_corrente.modulo11(mapeamento: { 10 => 'X' })
end

#nosso_numeroString #nosso_numeroString #nosso_numeroString #nosso_numeroString #nosso_numeroString

Número seqüencial utilizado para identificar o boleto. (Número de dígitos depende do tipo de convênio).

Overloads:

  • #nosso_numeroString

    Nosso Número de 17 dígitos com Convenio de 8 dígitos.

    Returns:

    • (String)

      9 caracteres numéricos.

  • #nosso_numeroString

    Nosso Número de 17 dígitos com Convenio de 7 dígitos.

    Returns:

    • (String)

      10 caracteres numéricos.

  • #nosso_numeroString

    Nosso Número de 7 dígitos com Convenio de 4 dígitos.

    Returns:

    • (String)

      4 caracteres numéricos.

  • #nosso_numeroString

    Nosso Número de 11 dígitos com Convenio de 6 dígitos e Brcobranca::Boleto::Base#codigo_servico false.

    Returns:

    • (String)

      5 caracteres numéricos.

  • #nosso_numeroString

    Nosso Número de 17 dígitos com Convenio de 6 dígitos e Brcobranca::Boleto::Base#codigo_servico true. (carteira 16 e 18)

    Returns:

    • (String)

      17 caracteres numéricos.

Raises:



99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
# File 'lib/brcobranca/boleto/banco_brasil.rb', line 99

def nosso_numero
  quantidade = case @convenio.to_s.size
               when 8
                 9
               when 7
                 10
               when 4
                 7
               when 6
                 codigo_servico ? 17 : 5
               else
                 raise Brcobranca::NaoImplementado, 'Tipo de convênio não implementado.'
               end
  quantidade ? @nosso_numero.to_s.rjust(quantidade, '0') : @nosso_numero
end

#nosso_numero_boletoString

Nosso número para exibir no boleto.

Examples:

boleto.nosso_numero_boleto #=> "12387989000004042-4"

Returns:

  • (String)


126
127
128
# File 'lib/brcobranca/boleto/banco_brasil.rb', line 126

def nosso_numero_boleto
  "#{convenio}#{nosso_numero}"
end

#nosso_numero_dvString

Dígito verificador do nosso número.

Returns:

  • (String)

    1 caracteres numéricos.

See Also:



118
119
120
# File 'lib/brcobranca/boleto/banco_brasil.rb', line 118

def nosso_numero_dv
  "#{convenio}#{nosso_numero}".modulo11(mapeamento: { 10 => 'X' })
end