Class: BancoBanespa

Inherits:
Brcobranca::Boleto::Base show all
Defined in:
lib/brcobranca/boleto/banco_banespa.rb

Overview

Banco BANESPA

Instance Attribute Summary

Attributes inherited from Brcobranca::Boleto::Base

#aceite, #agencia, #banco, #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, #numero_documento, #quantidade, #sacado, #sacado_documento, #sacado_endereco, #valor, #variacao

Instance Method Summary collapse

Methods inherited from Brcobranca::Boleto::Base

#agencia_dv, #banco_dv, #codigo_barras, #conta_corrente_dv, #data_vencimento, #valor_documento

Constructor Details

#initialize(campos = {}) ⇒ BancoBanespa

Returns a new instance of BancoBanespa.



4
5
6
7
8
# File 'lib/brcobranca/boleto/banco_banespa.rb', line 4

def initialize(campos={})
  padrao = {:carteira => "COB", :banco => "033"}
  campos = padrao.merge!(campos)
  super(campos)
end

Instance Method Details

#agencia_conta_boletoObject



25
26
27
28
# File 'lib/brcobranca/boleto/banco_banespa.rb', line 25

def agencia_conta_boleto
  convenio = self.convenio.zeros_esquerda(:tamanho => 11)
  "#{convenio[0..2]} #{convenio[3..4]} #{convenio[5..9]} #{convenio[10..10]}"
end

#campo_livreObject

CAMPO LIVRE

Código do cedente                                                                            PIC  9  (011)
Nosso número                                                                                 PIC  9  (007)
Filler                                                                                       PIC  9  (002)   = 00
Código do banco cedente                                                                      PIC  9  (003)   = 033
Dígito verificador 1                                                                         PIC  9  (001)
Dígito verificador 2                                                                         PIC  9  (001)


46
47
48
# File 'lib/brcobranca/boleto/banco_banespa.rb', line 46

def campo_livre
  "#{self.convenio.zeros_esquerda(:tamanho => 11)}#{self.numero_documento.zeros_esquerda(:tamanho => 7)}00#{self.banco.zeros_esquerda(:tamanho => 3)}"
end

#campo_livre_com_dv1_e_dv2Object

campo livre com os digitos verificadores como conta na documentação do banco



51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'lib/brcobranca/boleto/banco_banespa.rb', line 51

def campo_livre_com_dv1_e_dv2
  dv1 = self.campo_livre.modulo10 #dv 1 inicial
  dv2 = nil
  multiplicadores = [2,3,4,5,6,7]
  begin
    recalcular_dv2 = false
    valor_inicial = "#{self.campo_livre}#{dv1}"
    total = 0
    multiplicador_posicao = 0

    valor_inicial.split(//).reverse!.each do |caracter|
      multiplicador_posicao = 0 if (multiplicador_posicao == 6)
      total += (caracter.to_i * multiplicadores[multiplicador_posicao])
      multiplicador_posicao += 1
    end

    case total % 11
    when 0 then
      dv2 = 0
    when 1 then
      if dv1 == 9
        dv1 = 0
      else
        dv1 += 1
      end
      recalcular_dv2 = true
    else
      dv2 = 11 - (total % 11)
    end
  end while(recalcular_dv2)

  return "#{self.campo_livre}#{dv1}#{dv2}"
end

#monta_codigo_43_digitosObject

Responsável por montar uma String com 43 caracteres que será usado na criação do código de barras.



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

def monta_codigo_43_digitos
  banco = self.banco.zeros_esquerda(:tamanho => 3)
  fator = self.data_vencimento.fator_vencimento.zeros_esquerda(:tamanho => 4)
  valor_documento = self.valor_documento.limpa_valor_moeda.zeros_esquerda(:tamanho => 10)
  numero = "#{banco}#{self.moeda}#{fator}#{valor_documento}#{self.campo_livre_com_dv1_e_dv2}"
  numero.size == 43 ? numero : nil
end

#nosso_numeroObject

Número sequencial utilizado para distinguir os boletos na agência



11
12
13
# File 'lib/brcobranca/boleto/banco_banespa.rb', line 11

def nosso_numero
  "#{self.agencia.zeros_esquerda(:tamanho => 3)}#{self.numero_documento.zeros_esquerda(:tamanho => 7)}"
end

#nosso_numero_boletoObject

Retorna nosso numero pronto para exibir no boleto



21
22
23
# File 'lib/brcobranca/boleto/banco_banespa.rb', line 21

def nosso_numero_boleto
  "#{self.nosso_numero[0..2]} #{self.nosso_numero[3..9]} #{self.nosso_numero_dv}"
end

#nosso_numero_dvObject

Retorna dígito verificador do nosso número calculado como contas na documentação



16
17
18
# File 'lib/brcobranca/boleto/banco_banespa.rb', line 16

def nosso_numero_dv
  self.nosso_numero.zeros_esquerda(:tamanho => 10).modulo_10_banespa
end