Class: BancoReal

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

Overview

Banco REAL

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, #nosso_numero, #nosso_numero_dv, #valor_documento

Constructor Details

#initialize(campos = {}) ⇒ BancoReal

Responsável por definir dados iniciais quando se cria uma nova intancia da classe BancoReal



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

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

Instance Method Details

#agencia_conta_boletoObject

Campo usado apenas na exibição no boleto

Deverá ser sobreescrito para cada banco


18
19
20
# File 'lib/brcobranca/boleto/banco_real.rb', line 18

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

#agencia_conta_corrente_nosso_numero_dvObject

CALCULO DO DIGITO:

APLICA-SE OS PESOS 2,1,2,1,.... AOS ALGARISMOS DO NUMERO COMPOSTO POR:
NUMERO DO BANCO : COM 7 DIGITOS P/ COBRANCA REGISTRADA
                   ATE 15 DIGITOS P/ COBRANCA SEM REGISTRO
CODIGO DA AGENCIA: 4 DIGITOS
NUMERO DA CONTA : 7 DIGITOS


28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/brcobranca/boleto/banco_real.rb', line 28

def agencia_conta_corrente_nosso_numero_dv
  case self.carteira.to_i
  when 57
    #agencia é 4 digitos
    agencia = self.agencia.zeros_esquerda(:tamanho => 4)
    #conta é 7 digitos
    conta = self.conta_corrente.zeros_esquerda(:tamanho => 7)
    #nosso número com maximo de 13 digitos
    numero_documento = self.numero_documento.zeros_esquerda(:tamanho => 13)
    "#{numero_documento}#{agencia}#{conta}".modulo10
  else
    #agencia é 4 digitos
    agencia = self.agencia.zeros_esquerda(:tamanho => 4)
    #conta é 7 digitos
    conta = self.conta_corrente.zeros_esquerda(:tamanho => 7)
    #nosso número com maximo de 13 digitos
    numero_documento = self.numero_documento.zeros_esquerda(:tamanho => 7)
    "#{numero_documento}#{agencia}#{conta}".modulo10
  end
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



50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/brcobranca/boleto/banco_real.rb', line 50

def monta_codigo_43_digitos
  banco = self.banco.zeros_esquerda(:tamanho => 3)
  valor_documento = self.valor_documento.limpa_valor_moeda.zeros_esquerda(:tamanho => 10)
  conta = self.conta_corrente.zeros_esquerda(:tamanho => 7)
  agencia = self.agencia.zeros_esquerda(:tamanho => 4)
  fator = self.data_vencimento.fator_vencimento
  # Montagem é baseada no tipo de carteira, com registro e sem registro
  case self.carteira.to_i
    # Carteira sem registro
  when 57
    numero_documento = self.numero_documento.zeros_esquerda(:tamanho => 13)
    codigo = "#{banco}#{self.moeda}#{fator}#{valor_documento}#{agencia}#{conta}#{self.agencia_conta_corrente_nosso_numero_dv}#{numero_documento}"
    codigo.size == 43 ? codigo : nil
  else
    # TODO verificar com o banco, pois não consta na documentação
    numero_documento = self.numero_documento.zeros_esquerda(:tamanho => 7)
    codigo = "#{banco}#{self.moeda}#{fator}#{valor_documento}000000#{agencia}#{conta}#{self.agencia_conta_corrente_nosso_numero_dv}#{numero_documento}"
    codigo.size == 43 ? codigo : nil
  end
end

#nosso_numero_boletoObject

Campo usado apenas na exibição no boleto

Deverá ser sobreescrito para cada banco


12
13
14
# File 'lib/brcobranca/boleto/banco_real.rb', line 12

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