Class: Brcobranca::Boleto::Itau

Inherits:
Base
  • Object
show all
Defined in:
lib/brcobranca/boleto/itau.rb

Overview

Banco Itaú

Instance Attribute Summary collapse

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, #nosso_numero, #quantidade, #sacado, #sacado_documento, #sacado_endereco, #valor, #variacao

Instance Method Summary collapse

Methods inherited from Base

#agencia_dv, #banco_dv, #codigo_barras, #conta_corrente_dv, #fator_vencimento, #logotipo, #valor_documento

Methods included from Template::Base

#define_template

Methods included from Validations

#errors, included, #invalid?, #valid?

Constructor Details

#initialize(campos = {}) ⇒ Itau

Nova instancia do Itau

Parameters:

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

19
20
21
22
# File 'lib/brcobranca/boleto/itau.rb', line 19

def initialize(campos = {})
  campos = { carteira: '175' }.merge!(campos)
  super(campos)
end

Instance Attribute Details

#seu_numeroObject

Usado somente em carteiras especiais com registro para complementar o número do cocumento


8
9
10
# File 'lib/brcobranca/boleto/itau.rb', line 8

def seu_numero
  @seu_numero
end

Instance Method Details

#agencia_conta_boletoString

Agência + conta corrente do cliente para exibir no boleto.

Examples:

boleto.agencia_conta_boleto #=> "0811 / 53678-8"

Returns:

  • (String)

93
94
95
# File 'lib/brcobranca/boleto/itau.rb', line 93

def agencia_conta_boleto
  "#{agencia} / #{conta_corrente}-#{agencia_conta_corrente_dv}"
end

#agencia_conta_corrente_dvObject

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.


77
78
79
# File 'lib/brcobranca/boleto/itau.rb', line 77

def agencia_conta_corrente_dv
  "#{agencia}#{conta_corrente}".modulo10
end

#bancoString

Codigo do banco emissor (3 dígitos sempre)

Returns:

  • (String)

    3 caracteres numéricos.


27
28
29
# File 'lib/brcobranca/boleto/itau.rb', line 27

def banco
  '341'
end

#codigo_barras_segunda_parteString

Segunda parte do código de barras.

CARTEIRAS 198, 106, 107,122, 142, 143, 195 e 196<br/> 01 a 03 | 03 | 9(3) | Código do Banco na Câmara de Compensação = ‘341’<br/> 04 a 04 | 01 | 9(1) | Código da Moeda = '9'<br/> 05 a 05 | 01 | 9(1) | DAC do Código de Barras MOD 11-2a9<br/> 06 a 09 | 04 | 9(04) | Fator de Vencimento<br/> 10 a 19 | 10 | 9(08) | V(2) Valor<br/> 20 a 22 | 03 | 9(3) | Carteira<br/> 23 a 30 | 08 | 9(8) | Nosso Número<br/> 31 a 37 | 07 | 9(7) | Seu Número (Número do Documento)<br/> 38 a 42 | 05 | 9(5) | Código do Cliente (fornecido pelo Banco)<br/> 43 a 43 | 01 | 9(1) | DAC dos campos acima (posições 20 a 42) MOD 10<br/> 44 a 44 | 01 | 9(1) | Zero<br/>

DEMAIS CARTEIRAS<br/> 01 a 03 | 03 | 9(03) | Código do Banco na Câmara de Compensação = '341'<br/> 04 a 04 | 01 | 9(01) | Código da Moeda = '9'<br/> 05 a 05 | 01 | 9(01) | DAC código de Barras MOD 11-2a9<br/> 06 a 09 | 04 | 9(04) | Fator de Vencimento<br/> 10 a 19 | 10 | 9(08)V(2) | Valor<br/> 20 a 22 | 03 | 9(03) | Carteira<br/> 23 a 30 | 08 | 9(08) | Nosso Número<br/> 31 a 31 | 01 | 9(01) | DAC [Agência /Conta/Carteira/Nosso Número] MOD 10<br/> 32 a 35 | 04 | 9(04) | N.º da Agência cedente<br/> 36 a 40 | 05 | 9(05) | N.º da Conta Corrente<br/> 41 a 41 | 01 | 9(01) | DAC [Agência/Conta Corrente] MOD 10<br/> 42 a 44 | 03 | 9(03) | Zeros<br/>

Returns:

  • (String)

    25 caracteres numéricos.


127
128
129
130
131
132
133
134
135
# File 'lib/brcobranca/boleto/itau.rb', line 127

def codigo_barras_segunda_parte
  case carteira.to_i
  when 198, 106, 107, 122, 142, 143, 195, 196
    dv = "#{carteira}#{nosso_numero}#{seu_numero}#{convenio}".modulo10
    "#{carteira}#{nosso_numero}#{seu_numero}#{convenio}#{dv}0"
  else
    "#{carteira}#{nosso_numero}#{nosso_numero_dv}#{agencia}#{conta_corrente}#{agencia_conta_corrente_dv}000"
  end
end

#conta_corrente=(valor) ⇒ String

Conta corrente

Returns:

  • (String)

    5 caracteres numéricos.


39
40
41
# File 'lib/brcobranca/boleto/itau.rb', line 39

def conta_corrente=(valor)
  @conta_corrente = valor.to_s.rjust(5, '0') if valor
end

#convenio=(valor) ⇒ String

Número do convênio/contrato do cliente junto ao banco.

Returns:

  • (String)

    5 caracteres numéricos.


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

def convenio=(valor)
  @convenio = valor.to_s.rjust(5, '0') if valor
end

#nosso_numero=(valor) ⇒ String

Número seqüencial utilizado para identificar o boleto.

Returns:

  • (String)

    8 caracteres numéricos.


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

def nosso_numero=(valor)
  @nosso_numero = valor.to_s.rjust(8, '0') if valor
end

#nosso_numero_boletoString

Nosso número para exibir no boleto.

Examples:

boleto.nosso_numero_boleto #=> "175/12345678-4"

Returns:

  • (String)

85
86
87
# File 'lib/brcobranca/boleto/itau.rb', line 85

def nosso_numero_boleto
  "#{carteira}/#{nosso_numero}-#{nosso_numero_dv}"
end

#nosso_numero_dvString

Dígito verificador do nosso número.

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.<br/> A excecao, estão as carteiras 112, 126, 131, 146, 150 e 168 cuja obtenção esta baseada apenas nos dados “CARTEIRA/NOSSO NUMERO”.

Returns:

  • (String)

    1 caracteres numéricos.


67
68
69
70
71
72
73
# File 'lib/brcobranca/boleto/itau.rb', line 67

def nosso_numero_dv
  if %w(112 126 131 146 150 168).include?(carteira)
    "#{carteira}#{nosso_numero}".modulo10
  else
    "#{agencia}#{conta_corrente}#{carteira}#{nosso_numero}".modulo10
  end
end

#usa_seu_numero?Boolean

Returns:

  • (Boolean)

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

def usa_seu_numero?
  %w(198 106 107 122 142 143 195 196).include?(carteira.to_s)
end