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, #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: {})

30
31
32
33
# File 'lib/brcobranca/boleto/banco_brasil.rb', line 30

def initialize(campos = {})
  campos = { carteira: '18', codigo_servico: false }.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)

129
130
131
# File 'lib/brcobranca/boleto/banco_brasil.rb', line 129

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.


59
60
61
# File 'lib/brcobranca/boleto/banco_brasil.rb', line 59

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

#bancoString

Codigo do banco emissor (3 dígitos sempre)

Returns:

  • (String)

    3 caracteres numéricos.


38
39
40
# File 'lib/brcobranca/boleto/banco_brasil.rb', line 38

def banco
  '001'
end

#banco_dvString

Dígito verificador do banco

Returns:

  • (String)

    1 caracteres numéricos.


52
53
54
# File 'lib/brcobranca/boleto/banco_brasil.rb', line 52

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

#carteira=(valor) ⇒ String

Carteira

Returns:

  • (String)

    2 caracteres numéricos.


45
46
47
# File 'lib/brcobranca/boleto/banco_brasil.rb', line 45

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.


136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
# File 'lib/brcobranca/boleto/banco_brasil.rb', line 136

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.


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

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.


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

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:


94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# File 'lib/brcobranca/boleto/banco_brasil.rb', line 94

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)

121
122
123
# File 'lib/brcobranca/boleto/banco_brasil.rb', line 121

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:


113
114
115
# File 'lib/brcobranca/boleto/banco_brasil.rb', line 113

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