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, #carteira, #cedente, #codigo_servico, #conta_corrente, #convenio, #data_documento, #data_processamento, #dias_vencimento, #documento_cedente, #especie, #especie_documento, #instrucao1, #instrucao2, #instrucao3, #instrucao4, #instrucao5, #instrucao6, #instrucao7, #local_pagamento, #moeda, #quantidade, #sacado, #sacado_documento, #sacado_endereco, #valor, #variacao

Instance Method Summary collapse

Methods inherited from Base

#codigo_barras, #data_vencimento, #fator_vencimento, #logotipo, #valor_documento

Methods included from Template::Base

#define_template

Constructor Details

#initialize(campos = {}) ⇒ BancoBrasil

Nova instancia do BancoBrasil

Parameters:

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


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

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)


132
133
134
# File 'lib/brcobranca/boleto/banco_brasil.rb', line 132

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

#agencia_dvString

Retorna dígito verificador da agência

Returns:

  • (String)

    1 caracteres numéricos.



62
63
64
# File 'lib/brcobranca/boleto/banco_brasil.rb', line 62

def agencia_dv
  self.agencia.modulo11_9to2_10_como_x
end

#bancoString

Codigo do banco emissor (3 dígitos sempre)

Returns:

  • (String)

    3 caracteres numéricos.



41
42
43
# File 'lib/brcobranca/boleto/banco_brasil.rb', line 41

def banco
  "001"
end

#banco_dvString

Dígito verificador do banco

Returns:

  • (String)

    1 caracteres numéricos.



55
56
57
# File 'lib/brcobranca/boleto/banco_brasil.rb', line 55

def banco_dv
  self.banco.modulo11_9to2_10_como_x
end

#carteira=(valor) ⇒ String

Carteira

Returns:

  • (String)

    2 caracteres numéricos.



48
49
50
# File 'lib/brcobranca/boleto/banco_brasil.rb', line 48

def carteira=(valor)
  @carteira = valor.to_s.rjust(2,'0') unless valor.nil?
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.



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

def codigo_barras_segunda_parte
  case self.convenio.to_s.size
  when 8 # Nosso Número de 17 dígitos com Convenio de 8 dígitos e numero_documento de 9 dígitos
    "000000#{self.convenio}#{self.numero_documento}#{self.carteira}"
  when 7 # Nosso Número de 17 dígitos com Convenio de 7 dígitos e numero_documento de 10 dígitos
    "000000#{self.convenio}#{self.numero_documento}#{self.carteira}"
  when 6 # Convenio de 6 dígitos
    if self.codigo_servico == false
      # Nosso Número de 11 dígitos com Convenio de 6 dígitos e numero_documento de 5 dígitos
      "#{self.convenio}#{self.numero_documento}#{self.agencia}#{self.conta_corrente}#{self.carteira}"
    else
      # Nosso Número de 17 dígitos com Convenio de 6 dígitos e sem numero_documento, 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 é #{self.carteira}" unless (["16","18"].include?(self.carteira))
      "#{self.convenio}#{self.numero_documento}21"
    end
  when 4 # Nosso Número de 7 dígitos com Convenio de 4 dígitos e sem numero_documento
    "#{self.convenio}#{self.numero_documento}#{self.agencia}#{self.conta_corrente}#{self.carteira}"
  end
end

#conta_corrente=(valor) ⇒ String

Conta corrente

Returns:

  • (String)

    8 caracteres numéricos.



68
69
70
# File 'lib/brcobranca/boleto/banco_brasil.rb', line 68

def conta_corrente=(valor)
  @conta_corrente = valor.to_s.rjust(8,'0') unless valor.nil?
end

#conta_corrente_dvString

Dígito verificador da conta corrente

Returns:

  • (String)

    1 caracteres numéricos.



74
75
76
# File 'lib/brcobranca/boleto/banco_brasil.rb', line 74

def conta_corrente_dv
  self.conta_corrente.modulo11_9to2_10_como_x
end

#nosso_numero_boletoString

Nosso número para exibir no boleto.

Examples:

boleto.nosso_numero_boleto #=> "12387989000004042-4"

Returns:

  • (String)


124
125
126
# File 'lib/brcobranca/boleto/banco_brasil.rb', line 124

def nosso_numero_boleto
  "#{self.convenio}#{self.numero_documento}-#{self.nosso_numero_dv}"
end

#nosso_numero_dvString

Dígito verificador do nosso número.

Returns:

  • (String)

    1 caracteres numéricos.

See Also:



116
117
118
# File 'lib/brcobranca/boleto/banco_brasil.rb', line 116

def nosso_numero_dv
  "#{self.convenio}#{self.numero_documento}".modulo11_9to2_10_como_x
end

#numero_documentoString #numero_documentoString #numero_documentoString #numero_documentoString #numero_documentoString

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

Overloads:

  • #numero_documentoString

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

    Returns:

    • (String)

      9 caracteres numéricos.

  • #numero_documentoString

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

    Returns:

    • (String)

      10 caracteres numéricos.

  • #numero_documentoString

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

    Returns:

    • (String)

      4 caracteres numéricos.

  • #numero_documentoString

    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.

  • #numero_documentoString

    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:



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

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