Class: BoletoBancario::Core::Caixa

Inherits:
Boleto
  • Object
show all
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

Instance Method Summary collapse

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_suportadasArray

Carteiras suportadas. Método criado para validar se a carteira informada é suportada.

Returns:

  • (Array)


44
45
46
# File 'lib/boleto_bancario/core/caixa.rb', line 44

def self.carteiras_suportadas
  %w[14 24]
end

.tamanho_maximo_agenciaFixnum

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.

Returns:

  • (Fixnum)

    4



26
27
28
# File 'lib/boleto_bancario/core/caixa.rb', line 26

def self.tamanho_maximo_agencia
  4
end

.tamanho_maximo_codigo_cedenteFixnum

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.

Returns:

  • (Fixnum)

    6



35
36
37
# File 'lib/boleto_bancario/core/caixa.rb', line 35

def self.tamanho_maximo_codigo_cedente
  6
end

.tamanho_maximo_numero_documentoFixnum

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.

Returns:

  • (Fixnum)

    15



53
54
55
# File 'lib/boleto_bancario/core/caixa.rb', line 53

def self.tamanho_maximo_numero_documento
  15
end

.valor_documento_tamanho_maximoFloat

Tamanho maximo do valor do documento do boleto. O valor maximo descrito na decumentação é de 9999999.99

Returns:

  • (Float)

    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

#agenciaString

Returns 4 caracteres.

Returns:

  • (String)

    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_cedenteString

Campo Agência / Código do Cedente (Número fornecido pelo Banco)

Returns:

  • (String)


173
174
175
# File 'lib/boleto_bancario/core/caixa.rb', line 173

def agencia_codigo_cedente
  "#{agencia} / #{codigo_cedente}-#{codigo_cedente_dv}"
end

#carteira_formatadaString

Formata a carteira dependendo se ela é registrada ou não.

Para cobrança COM registro usar: RG Para Cobrança SEM registro usar: SR

Returns:

  • (String)


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_registroArray

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.

Returns:

  • (Array)


145
146
147
# File 'lib/boleto_bancario/core/caixa.rb', line 145

def carteiras_com_registro
  %w(14)
end

#codigo_bancoString

Returns Código do Banco descrito na documentação.

Returns:

  • (String)

    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_cedenteString

Returns 6 caracteres.

Returns:

  • (String)

    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_dvObject



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_bancoString

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                                                |
-----------------------------------------------------------------------------------------

Returns:

  • (String)


223
224
225
226
227
228
229
230
# File 'lib/boleto_bancario/core/caixa.rb', line 223

def codigo_de_barras_do_banco
  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_bancoString

Returns Dígito do código do banco descrito na documentação.

Returns:

  • (String)

    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_emissaoObject



153
154
155
# File 'lib/boleto_bancario/core/caixa.rb', line 153

def identificador_de_emissao
  carteira.last if carteira.present?
end

#nosso_numeroString

Mostra o campo nosso número calculando o dígito verificador do nosso número.

Returns:

  • (String)


185
186
187
# File 'lib/boleto_bancario/core/caixa.rb', line 185

def nosso_numero
  "#{carteira}#{numero_documento}-#{nosso_numero_dv}"
end

#nosso_numero_de3a5Object



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_de6a8Object



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_de9a17Object



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_dvObject



189
190
191
# File 'lib/boleto_bancario/core/caixa.rb', line 189

def nosso_numero_dv
  Modulo11FatorDe2a9RestoZero.new("#{carteira}#{numero_documento}")
end

#numero_documentoString

Returns 15 caracteres.

Returns:

  • (String)

    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_cobrancaObject



149
150
151
# File 'lib/boleto_bancario/core/caixa.rb', line 149

def tipo_cobranca
  carteira.first if carteira.present?
end