Class: BrBoleto::Boleto::Itau

Inherits:
Base show all
Defined in:
lib/br_boleto/boleto/itau.rb

Overview

Implementação de emissão de boleto bancário pelo Banco Itau.

Documentação Implementada

A documentação na qual essa implementação foi baseada está localizada na pasta ‘documentacoes_dos_boletos/itau’ dentro dessa biblioteca.

Instance Attribute Summary

Attributes inherited from Base

#aceite, #codigo_moeda, #data_documento, #data_vencimento, #especie, #especie_documento, #instrucoes1, #instrucoes2, #instrucoes3, #instrucoes4, #instrucoes5, #instrucoes6, #local_pagamento, #logo, #numero_documento, #parcelas, #valor_documento

Instance Method Summary collapse

Methods inherited from Base

#aceite_formatado, #codigo_de_barras, #codigo_de_barras_padrao, #data_vencimento_deve_ser_uma_data, #digito_codigo_de_barras, #fator_de_vencimento, #linha_digitavel, #persisted?, #to_partial_path, #valid_valor_documento_tamanho_maximo, #valor_formatado_para_codigo_de_barras

Methods included from HavePagador

#pagador, #pagador=

Methods included from HaveConta

#conta, #conta=

Methods inherited from ActiveModelBase

#assign_attributes, #initialize

Constructor Details

This class inherits a constructor from BrBoleto::ActiveModelBase

Instance Method Details

#codigo_de_barras_do_bancoObject

As carteiras de cobrança 107, 122, 142, 143, 196 e 198 são carteiras especiais, sem registro, na qual são utilizadas 15 posições numéricas para identificação do título liquidado (8 do Nosso Número e 7 do Seu Número).

=== Código de barras do banco (Carteiras 107, 122, 142, 143, 196 e 198)

Para essas carteiras o formato do código de barras é o seguinte:

 ___________________________________________________________________________________________________
| Posição  | Tamanho | Descrição                                                                   |
|----------|---------|-----------------------------------------------------------------------------|
| 20-22    |   03    | Carteira                                                                    |
| 23-30    |   08    | Nosso Número (Sem o digito verificador)                                     |
| 31-37    |   07    | Seu Número (Número do Documento)                                            |
| 38-42    |   05    | Códgigo Cedente (Convênio)                                                  |
| 43-43    |   01    | DAC dos campos acima (posições 20 a 42) MOD 10                                                  |
| 44-44    |   01    | Zero                                                                        |
----------------------------------------------------------------------------------------------------

Demais Carteiras

Para as demais carteiras o formato do código de barras é o seguinte:

 _________________________________________________________________________________________
| Posição  | Tamanho | Descrição                                                         |
|----------|---------|-------------------------------------------------------------------|
| 20-22    |  03     | Carteira                                                          |
| 23-30    |  08     | Número do documento                                               |
| 31-31    |  01     | Digito verificador nosso numero                                   |
| 32-35    |  04     | Agência                                                           |
| 36-40    |  05     | Número da conta corrente                                          |
| 41-41    |  01     | Digito verificador conta corrente                                 |
| 42-44    |  03     | Zeros                                                             |
------------------------------------------------------------------------------------------


108
109
110
111
112
113
114
115
116
117
# File 'lib/br_boleto/boleto/itau.rb', line 108

def codigo_de_barras_do_banco
	 if conta.carteira.in?(conta.carteiras_especiais_codigo_barras)
	 	seu_numero = numero_documento.adjust_size_to(7)
		codigo = "#{conta.carteira}#{numero_documento}#{seu_numero}#{conta.codigo_cedente}"
		mod_10 = BrBoleto::Calculos::Modulo10.new(codigo)
		"#{codigo}#{mod_10}0"
	else
		"#{conta.carteira}#{numero_documento}#{digito_verificador_nosso_numero}#{conta.agencia}#{conta.conta_corrente}#{conta.conta_corrente_dv}000"
	end
end

#conta_classObject



11
12
13
# File 'lib/br_boleto/boleto/itau.rb', line 11

def conta_class
	BrBoleto::Conta::Itau
end

#default_valuesObject

Conforme descrito na documentação, o valor que deve constar em local do pagamento é “PAGÁVEL EM QUALQUER BANCO OU CORRESPONDENTE ATÉ O VENCIMENTO.”



42
43
44
45
46
# File 'lib/br_boleto/boleto/itau.rb', line 42

def default_values
	super.merge({
		:local_pagamento   => "PAGÁVEL EM QUALQUER BANCO OU CORRESPONDENTE ATÉ O VENCIMENTO."
	})
end

#digito_verificador_nosso_numeroObject

Para a grande maioria das carteiras, são considerados para a obtenção do dígito do nosso número, os dados “AGÊNCIA / CONTA (sem dígito) / CARTEIRA / NOSSO NÚMERO”, calculado pelo critério do Módulo 10.

À exceção, estão as carteiras 126 - 131 - 146 - 150 e 168 cuja obtenção está baseada apenas nos dados “CARTEIRA/NOSSO NÚMERO” da operação.



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

def digito_verificador_nosso_numero
	if conta.carteira.in?(conta.carteiras_especiais_nosso_numero_dv)
		BrBoleto::Calculos::Modulo10.new("#{conta.carteira}#{numero_documento}")
	else
		BrBoleto::Calculos::Modulo10.new("#{conta.agencia}#{conta.conta_corrente}#{conta.carteira}#{numero_documento}")
	end
end

#nosso_numeroObject

Nosso Número descrito na documentação (Pag. 50). Carteira com 3 caracteres / N.Número com 8 caracteres + digito. Exemplo: 999 / 99999999-D



51
52
53
# File 'lib/br_boleto/boleto/itau.rb', line 51

def nosso_numero
	"#{conta.carteira}/#{numero_documento}-#{digito_verificador_nosso_numero}"
end

#nosso_numero_retornoObject

No arquivo de retorno a carteira não vem junto com o nosso núemro



57
58
59
# File 'lib/br_boleto/boleto/itau.rb', line 57

def nosso_numero_retorno
	"#{nosso_numero}".gsub(/[^\w\d]/i, '')[3..-1]
end

#valid_carteira_inclusionObject



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

def valid_carteira_inclusion
	%w[104 105 107 108 109 112 113 116 117 119 121 122 126 131 134 135 136 142 143 146 147 150 168 169 174 175 180 191 196 198]
end

#valid_conta_corrente_maximumObject

Tamanho máximo de uma conta corrente no Banco Itau



30
31
32
# File 'lib/br_boleto/boleto/itau.rb', line 30

def valid_conta_corrente_maximum 
	5
end

#valid_convenio_maximumObject

Tamanho máximo para o codigo_cedente/Convênio



25
26
27
# File 'lib/br_boleto/boleto/itau.rb', line 25

def valid_convenio_maximum 
	5
end

#valid_convenio_requiredObject

codigo_cedente/Convênio deve ser obrigatório



35
36
37
# File 'lib/br_boleto/boleto/itau.rb', line 35

def valid_convenio_required
	true
end

#valid_numero_documento_maximumObject

VALIDAÇÕES DINÂMICAS #################



16
17
18
# File 'lib/br_boleto/boleto/itau.rb', line 16

def valid_numero_documento_maximum
	8
end