Class: BoletoBancario::Core::Caixa
- Defined in:
- lib/boleto_bancario/core/caixa.rb
Overview
Implementação de emissão de boleto bancário pela Caixa Econômica Federal.
Documentação Implementada
A documentação na qual essa implementação foi baseada está localizada na pasta ‘documentacoes_dos_boletos/caixa’ dentro dessa biblioteca.
Carteiras suportadas
Segue abaixo as carteiras suportadas da Caixa Econômica Federal seguindo a documentação:
_________________________________________________________________________
| Carteira | Descrição | Testada/Homologada no banco |
| 14 | Cobrança Simples com registro | Esperando Contribuição |
| 24 | Cobrança Simples sem registro | Esperando Contribuição |
|_________________________________________________________________________|
Instance Attribute Summary
Attributes inherited from Boleto
#aceite, #carteira, #cedente, #codigo_moeda, #conta_corrente, #data_documento, #data_vencimento, #documento_cedente, #documento_sacado, #endereco_cedente, #endereco_sacado, #especie, #especie_documento, #instrucoes1, #instrucoes2, #instrucoes3, #instrucoes4, #instrucoes5, #instrucoes6, #local_pagamento, #logo, #sacado, #valor_documento
Class Method Summary collapse
-
.carteiras_suportadas ⇒ Array
Carteiras suportadas. Método criado para validar se a carteira informada é suportada..
-
.tamanho_maximo_agencia ⇒ Fixnum
Tamanho máximo de uma agência na Caixa Econômica Federal.
-
.tamanho_maximo_codigo_cedente ⇒ Fixnum
Tamanho máximo do código do cedente emitido no Boleto.
-
.tamanho_maximo_numero_documento ⇒ Fixnum
Tamanho máximo do número do documento emitido no Boleto.
-
.valor_documento_tamanho_maximo ⇒ Float
Tamanho maximo do valor do documento do boleto.
Instance Method Summary collapse
-
#agencia ⇒ String
4 caracteres.
-
#agencia_codigo_cedente ⇒ String
Campo Agência / Código do Cedente (Número fornecido pelo Banco).
-
#carteira_formatada ⇒ String
Formata a carteira dependendo se ela é registrada ou não.
-
#carteiras_com_registro ⇒ Array
Retorna as carteiras com registro da Caixa Econômica Federal.
-
#codigo_banco ⇒ String
Código do Banco descrito na documentação.
-
#codigo_cedente ⇒ String
6 caracteres.
- #codigo_cedente_dv ⇒ Object
-
#codigo_de_barras_do_banco ⇒ String
Código de barras do banco.
-
#digito_codigo_banco ⇒ String
Dígito do código do banco descrito na documentação.
- #identificador_de_emissao ⇒ Object
-
#nosso_numero ⇒ String
Mostra o campo nosso número calculando o dígito verificador do nosso número.
- #nosso_numero_de3a5 ⇒ Object
- #nosso_numero_de6a8 ⇒ Object
- #nosso_numero_de9a17 ⇒ Object
- #nosso_numero_dv ⇒ Object
-
#numero_documento ⇒ String
15 caracteres.
- #tipo_cobranca ⇒ Object
Methods inherited from Boleto
#aceite_formatado, #codigo_banco_formatado, #codigo_de_barras, #codigo_de_barras_padrao, #data_vencimento_deve_ser_uma_data, #default_options, #deve_validar_agencia?, #deve_validar_carteira?, #deve_validar_codigo_cedente?, #deve_validar_conta_corrente?, #deve_validar_numero_documento?, #digito_codigo_de_barras, #fator_de_vencimento, #initialize, #linha_digitavel, #persisted?, #to_partial_path, #valor_formatado_para_codigo_de_barras
Constructor Details
This class inherits a constructor from BoletoBancario::Core::Boleto
Class Method Details
.carteiras_suportadas ⇒ Array
Carteiras suportadas. Método criado para validar se a carteira informada é suportada.
44 45 46 |
# File 'lib/boleto_bancario/core/caixa.rb', line 44 def self.carteiras_suportadas %w[14 24] end |
.tamanho_maximo_agencia ⇒ Fixnum
Tamanho máximo de uma agência na Caixa Econômica Federal. Método criado justamente para ficar documentado o tamanho máximo aceito até a data corrente.
26 27 28 |
# File 'lib/boleto_bancario/core/caixa.rb', line 26 def self.tamanho_maximo_agencia 4 end |
.tamanho_maximo_codigo_cedente ⇒ Fixnum
Tamanho máximo do código do cedente emitido no Boleto. Método criado justamente para ficar documentado o tamanho máximo aceito até a data corrente.
35 36 37 |
# File 'lib/boleto_bancario/core/caixa.rb', line 35 def self.tamanho_maximo_codigo_cedente 6 end |
.tamanho_maximo_numero_documento ⇒ Fixnum
Tamanho máximo do número do documento emitido no Boleto. Método criado justamente para ficar documentado o tamanho máximo aceito até a data corrente.
53 54 55 |
# File 'lib/boleto_bancario/core/caixa.rb', line 53 def self.tamanho_maximo_numero_documento 15 end |
.valor_documento_tamanho_maximo ⇒ Float
Tamanho maximo do valor do documento do boleto. O valor maximo descrito na decumentação é de 9999999.99
62 63 64 |
# File 'lib/boleto_bancario/core/caixa.rb', line 62 def self.valor_documento_tamanho_maximo 9999999.99 end |
Instance Method Details
#agencia ⇒ String
Returns 4 caracteres.
108 109 110 |
# File 'lib/boleto_bancario/core/caixa.rb', line 108 def agencia @agencia.to_s.rjust(4, '0') if @agencia.present? end |
#agencia_codigo_cedente ⇒ String
Campo Agência / Código do Cedente (Número fornecido pelo Banco)
173 174 175 |
# File 'lib/boleto_bancario/core/caixa.rb', line 173 def agencia_codigo_cedente "#{agencia} / #{codigo_cedente}-#{codigo_cedente_dv}" end |
#carteira_formatada ⇒ String
Formata a carteira dependendo se ela é registrada ou não.
Para cobrança COM registro usar: RG Para Cobrança SEM registro usar: SR
131 132 133 134 135 136 137 |
# File 'lib/boleto_bancario/core/caixa.rb', line 131 def carteira_formatada if @carteira.to_s.in?(carteiras_com_registro) "RG" else 'SR' end end |
#carteiras_com_registro ⇒ Array
Retorna as carteiras com registro da Caixa Econômica Federal. Você pode sobrescrever esse método na subclasse caso exista mais carteiras com registro na Caixa Econômica Federal.
145 146 147 |
# File 'lib/boleto_bancario/core/caixa.rb', line 145 def carteiras_com_registro %w(14) end |
#codigo_banco ⇒ String
Returns Código do Banco descrito na documentação.
159 160 161 |
# File 'lib/boleto_bancario/core/caixa.rb', line 159 def codigo_banco '104' end |
#codigo_cedente ⇒ String
Returns 6 caracteres.
114 115 116 |
# File 'lib/boleto_bancario/core/caixa.rb', line 114 def codigo_cedente @codigo_cedente.to_s.rjust(6, '0') if @codigo_cedente.present? end |
#codigo_cedente_dv ⇒ Object
177 178 179 |
# File 'lib/boleto_bancario/core/caixa.rb', line 177 def codigo_cedente_dv Modulo11FatorDe2a9RestoZero.new(codigo_cedente) end |
#codigo_de_barras_do_banco ⇒ String
Código de barras do banco
________________________________________________________________________________________
| Posição | Tamanho | Descrição |
|----------|---------|------------------------------------------------------------------|
| 20 - 25 | 06 | Código do Beneficiário |
| 26 - 26 | 01 | DV do Código do Beneficiário |
| 27 – 29 | 03 | Nosso Número - 3ª a 5ª posição do Nosso Número |
| 30 – 30 | 01 | Constante 1, tipo de cobrança (1-Registrada / 2-Sem Registro) |
| 31 – 33 | 03 | Nosso Número - 6ª a 8ª posição do Nosso Número |
| 34 – 34 | 01 | Constante 2, identificador de emissão do boleto (4-Beneficiário) |
| 35 – 43 | 09 | Nosso Número - 9ª a 17ª posição do Nosso Número |
| 44 – 44 | 01 | DV do Campo Livre |
-----------------------------------------------------------------------------------------
223 224 225 226 227 228 229 230 |
# File 'lib/boleto_bancario/core/caixa.rb', line 223 def codigo = "#{codigo_cedente}#{codigo_cedente_dv}#{nosso_numero_de3a5}#{tipo_cobranca}#{nosso_numero_de6a8}" codigo << "#{identificador_de_emissao}#{nosso_numero_de9a17}" codigo_dv = Modulo11FatorDe2a9RestoZero.new(codigo) "#{codigo}#{codigo_dv}" end |
#digito_codigo_banco ⇒ String
Returns Dígito do código do banco descrito na documentação.
165 166 167 |
# File 'lib/boleto_bancario/core/caixa.rb', line 165 def digito_codigo_banco '0' end |
#identificador_de_emissao ⇒ Object
153 154 155 |
# File 'lib/boleto_bancario/core/caixa.rb', line 153 def identificador_de_emissao carteira.last if carteira.present? end |
#nosso_numero ⇒ String
Mostra o campo nosso número calculando o dígito verificador do nosso número.
185 186 187 |
# File 'lib/boleto_bancario/core/caixa.rb', line 185 def nosso_numero "#{carteira}#{numero_documento}-#{nosso_numero_dv}" end |
#nosso_numero_de3a5 ⇒ Object
193 194 195 |
# File 'lib/boleto_bancario/core/caixa.rb', line 193 def nosso_numero_de3a5 nosso_numero[2..4] if nosso_numero.present? end |
#nosso_numero_de6a8 ⇒ Object
197 198 199 |
# File 'lib/boleto_bancario/core/caixa.rb', line 197 def nosso_numero_de6a8 nosso_numero[5..7] if nosso_numero.present? end |
#nosso_numero_de9a17 ⇒ Object
201 202 203 |
# File 'lib/boleto_bancario/core/caixa.rb', line 201 def nosso_numero_de9a17 nosso_numero[8..16] if nosso_numero.present? end |
#nosso_numero_dv ⇒ Object
189 190 191 |
# File 'lib/boleto_bancario/core/caixa.rb', line 189 def nosso_numero_dv Modulo11FatorDe2a9RestoZero.new("#{carteira}#{numero_documento}") end |
#numero_documento ⇒ String
Returns 15 caracteres.
120 121 122 |
# File 'lib/boleto_bancario/core/caixa.rb', line 120 def numero_documento @numero_documento.to_s.rjust(15, '0') if @numero_documento.present? end |
#tipo_cobranca ⇒ Object
149 150 151 |
# File 'lib/boleto_bancario/core/caixa.rb', line 149 def tipo_cobranca carteira.first if carteira.present? end |