Class: BancoItau
- Inherits:
-
Brcobranca::Boleto::Base
- Object
- Brcobranca::Boleto::Base
- BancoItau
- Defined in:
- lib/brcobranca/boleto/banco_itau.rb
Overview
Banco Itaú
Instance Attribute Summary collapse
-
#seu_numero ⇒ Object
Usado somente em carteiras especiais com registro para complementar o número do cocumento.
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
-
#agencia_conta_boleto ⇒ Object
Campo usado apenas na exibição no boleto Deverá ser sobreescrito para cada banco.
-
#agencia_conta_corrente_dv ⇒ Object
Calcula o dígito verificador para conta corrente do Itau.
-
#initialize(campos = {}) ⇒ BancoItau
constructor
Responsável por definir dados iniciais quando se cria uma nova intancia da classe BancoItau.
-
#monta_codigo_43_digitos ⇒ Object
Responsável por montar uma String com 43 caracteres que será usado na criação do código de barras.
-
#nosso_numero_boleto ⇒ Object
Campo usado apenas na exibição no boleto Deverá ser sobreescrito para cada banco.
-
#nosso_numero_dv ⇒ Object
Retorna dígito verificador do nosso número, calculado com modulo10.
Methods inherited from Brcobranca::Boleto::Base
#agencia_dv, #banco_dv, #codigo_barras, #conta_corrente_dv, #data_vencimento, #nosso_numero, #valor_documento
Constructor Details
#initialize(campos = {}) ⇒ BancoItau
Responsável por definir dados iniciais quando se cria uma nova intancia da classe BancoItau
7 8 9 10 11 |
# File 'lib/brcobranca/boleto/banco_itau.rb', line 7 def initialize(campos={}) padrao={:carteira => "175", :banco => "341"} campos = padrao.merge!(campos) super(campos) end |
Instance Attribute Details
#seu_numero ⇒ Object
Usado somente em carteiras especiais com registro para complementar o número do cocumento
4 5 6 |
# File 'lib/brcobranca/boleto/banco_itau.rb', line 4 def seu_numero @seu_numero end |
Instance Method Details
#agencia_conta_boleto ⇒ Object
Campo usado apenas na exibição no boleto
Deverá ser sobreescrito para cada banco
41 42 43 |
# File 'lib/brcobranca/boleto/banco_itau.rb', line 41 def agencia_conta_boleto "#{self.agencia}-#{self.agencia_dv} / #{self.conta_corrente}-#{self.conta_corrente_dv}" end |
#agencia_conta_corrente_dv ⇒ Object
Calcula o dígito verificador para conta corrente do Itau. Retorna apenas o dígito verificador da conta ou nil caso seja impossível calcular.
29 30 31 |
# File 'lib/brcobranca/boleto/banco_itau.rb', line 29 def agencia_conta_corrente_dv "#{self.agencia}#{self.conta_corrente}".modulo10 end |
#monta_codigo_43_digitos ⇒ Object
Responsável por montar uma String com 43 caracteres que será usado na criação do código de barras.
46 47 48 49 50 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 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 |
# File 'lib/brcobranca/boleto/banco_itau.rb', line 46 def monta_codigo_43_digitos valor_documento_formatado = self.valor_documento.limpa_valor_moeda.zeros_esquerda(:tamanho => 10) fator_vencimento = self.data_vencimento.fator_vencimento numero_documento = self.numero_documento.zeros_esquerda(:tamanho => 8) return nil if numero_documento.size != 8 # Monta a String baseado no tipo de carteira case self.carteira.to_i when 126, 131, 146, 150, 168 # CARTEIRAS 126 131 146 150 168 # 01 a 03 03 9(03) Código do Banco na Câmara de Compensação = '341' # 04 a 04 01 9(01) Código da Moeda = '9' # 05 a 05 01 9(01) DAC código de Barras MOD 11-2a9 # 06 a 09 04 9(04) Fator de Vencimento # 10 a 19 10 9(08)V(2) Valor # 20 a 22 03 9(03) Carteira # 23 a 30 08 9(08) Nosso Número # 31 a 31 01 9(01) DAC [Carteira/Nosso Número] MOD 10 # 32 a 35 04 9(04) N.º da Agência cedente # 36 a 40 05 9(05) N.º da Conta Corrente # 41 a 41 01 9(01) DAC [Agência/Conta Corrente] MOD 10 # 42 a 44 03 9(03) Zeros codigo = "#{self.banco}#{self.moeda}#{fator_vencimento}#{valor_documento_formatado}#{self.carteira}" codigo << "#{numero_documento}#{self.nosso_numero_dv}#{self.agencia}#{self.conta_corrente}#{self.agencia_conta_corrente_dv}000" codigo codigo.size == 43 ? codigo : nil when 198, 106, 107, 122, 142, 143, 195, 196 # CARTEIRAS 198, 106, 107,122, 142, 143, 195 e 196 # 01 a 03 03 9(3) Código do Banco na Câmara de Compensação = ‘341’ # 04 a 04 01 9(1) Código da Moeda = '9' # 05 a 05 01 9(1) DAC do Código de Barras MOD 11-2a9 # 06 a 09 04 9(04) Fator de Vencimento # 10 a 19 10 9(08) V(2) Valor # 20 a 22 03 9(3) Carteira # 23 a 30 08 9(8) Nosso Número # 31 a 37 07 9(7) Seu Número (Número do Documento) # 38 a 42 05 9(5) Código do Cliente (fornecido pelo Banco) # 43 a 43 01 9(1) DAC dos campos acima (posições 20 a 42) MOD 10 # 44 a 44 01 9(1) Zero seu_numero = self.seu_numero.zeros_esquerda(:tamanho => 7) return nil if seu_numero.size != 7 convenio = self.convenio.zeros_esquerda(:tamanho => 5) return nil if convenio.size != 5 dv = "#{self.carteira}#{numero_documento}#{seu_numero}#{convenio}".modulo10 codigo = "#{self.banco}#{self.moeda}#{fator_vencimento}#{valor_documento_formatado}#{self.carteira}" codigo << "#{numero_documento}#{seu_numero}#{convenio}#{dv}0" codigo codigo.size == 43 ? codigo : nil else # DEMAIS CARTEIRAS # 01 a 03 03 9(03) Código do Banco na Câmara de Compensação = '341' # 04 a 04 01 9(01) Código da Moeda = '9' # 05 a 05 01 9(01) DAC código de Barras MOD 11-2a9 # 06 a 09 04 9(04) Fator de Vencimento # 10 a 19 10 9(08)V(2) Valor # 20 a 22 03 9(03) Carteira # 23 a 30 08 9(08) Nosso Número # 31 a 31 01 9(01) DAC [Agência /Conta/Carteira/Nosso Número] MOD 10 # 32 a 35 04 9(04) N.º da Agência cedente # 36 a 40 05 9(05) N.º da Conta Corrente # 41 a 41 01 9(01) DAC [Agência/Conta Corrente] MOD 10 # 42 a 44 03 9(03) Zeros codigo = "#{self.banco}#{self.moeda}#{fator_vencimento}#{valor_documento_formatado}#{self.carteira}" codigo << "#{numero_documento}#{self.nosso_numero_dv}#{self.agencia}#{self.conta_corrente}#{self.agencia_conta_corrente_dv}000" codigo codigo.size == 43 ? codigo : nil end end |
#nosso_numero_boleto ⇒ Object
Campo usado apenas na exibição no boleto
Deverá ser sobreescrito para cada banco
35 36 37 |
# File 'lib/brcobranca/boleto/banco_itau.rb', line 35 def nosso_numero_boleto "#{self.carteira}/#{self.numero_documento}-#{self.nosso_numero_dv}" end |
#nosso_numero_dv ⇒ Object
Retorna dígito verificador do nosso número, calculado com modulo10. Para a grande maioria das carteiras, são considerados para a obtenção do DAC/DV, os dados “AGENCIA(sem DAC/DV)/CONTA(sem DAC/DV)/CARTEIRA/NOSSO NUMERO”, calculado pelo criterio do Modulo 10. A excecao, estão as carteiras 126, 131, 146, 150 e 168 cuja obtenção esta baseada apenas nos dados “CARTEIRA/NOSSO NUMERO”.
18 19 20 21 22 23 24 25 |
# File 'lib/brcobranca/boleto/banco_itau.rb', line 18 def nosso_numero_dv if %w(126 131 146 150 168).include?(self.carteira) "#{self.carteira}#{self.numero_documento}".modulo10 else numero_documento = self.numero_documento.zeros_esquerda(:tamanho => 8) "#{self.agencia}#{self.conta_corrente}#{self.carteira}#{numero_documento}".modulo10 end end |