Class: BrBoleto::Boleto::Caixa

Inherits:
Base show all
Defined in:
lib/br_boleto/boleto/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

Instance Attribute Summary

Attributes inherited from Base

#aceite, #agencia, #carteira, #cedente, #codigo_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, #numero_documento, #sacado, #valor_documento

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Base

#aceite_formatado, #codigo_banco_formatado, #codigo_de_barras, #codigo_de_barras_padrao, #data_vencimento_deve_ser_uma_data, #deve_validar_agencia?, #deve_validar_carteira?, #deve_validar_codigo_cedente?, #deve_validar_conta_corrente?, #deve_validar_numero_documento?, #digito_codigo_de_barras, #documento_cedente_formatado, #documento_cedente_formatado_com_label, #documento_sacado_formatado, #documento_sacado_formatado_com_label, #fator_de_vencimento, #initialize, #linha_digitavel, #persisted?, #tipo_cobranca_formatada, #to_partial_path, valor_documento_tamanho_maximo, #valor_formatado_para_codigo_de_barras

Methods inherited from ActiveModelBase

#assign_attributes, #initialize

Constructor Details

This class inherits a constructor from BrBoleto::Boleto::Base

Class Method Details

.carteiras_suportadasArray

Carteiras suportadas.

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

Returns:

  • (Array)


68
69
70
# File 'lib/br_boleto/boleto/caixa.rb', line 68

def self.carteiras_suportadas
  %w(14 24)
end

.modalidade_cobranca_validasObject

Modalidades de cobranças válidas conforme a documentação



27
28
29
# File 'lib/br_boleto/boleto/caixa.rb', line 27

def self.modalidade_cobranca_validas
  %w(1 2)
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



40
41
42
# File 'lib/br_boleto/boleto/caixa.rb', line 40

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



49
50
51
# File 'lib/br_boleto/boleto/caixa.rb', line 49

def self.tamanho_maximo_codigo_cedente
  6
end

.tamanho_maximo_numero_documentoFixnum

Tamanho máximo do numero do documento no Boleto. Método criado justamente para ficar documentado o tamanho máximo aceito até a data corrente.

Returns:

  • (Fixnum)

    15



58
59
60
# File 'lib/br_boleto/boleto/caixa.rb', line 58

def self.tamanho_maximo_numero_documento
  15
end

Instance Method Details

#agencia_codigo_cedenteString

Campo Agência / Código do Cedente

Returns:

  • (String)


132
133
134
# File 'lib/br_boleto/boleto/caixa.rb', line 132

def agencia_codigo_cedente
  "#{agencia} / #{codigo_cedente}-#{digito_verificador_codigo_cedente}"
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)


202
203
204
205
206
207
208
# File 'lib/br_boleto/boleto/caixa.rb', line 202

def carteira_formatada
  if carteira.in?(carteiras_com_registro)
    'RG'
  else
    'SR'
  end
end

#carteiras_com_registroArray

Você pode sobrescrever esse método na subclasse caso exista mais carteiras com registro na Caixa Econômica Federal.

Returns:

  • (Array)


216
217
218
# File 'lib/br_boleto/boleto/caixa.rb', line 216

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.



118
119
120
# File 'lib/br_boleto/boleto/caixa.rb', line 118

def codigo_banco
  '104'
end

#codigo_de_barras_do_bancoString

Código de barras do banco

 ________________________________________________________________________________________
| Posi

Returns:

  • (String)


238
239
240
241
242
# File 'lib/br_boleto/boleto/caixa.rb', line 238

def codigo_de_barras_do_banco
  @composicao_codigo_barras = nil        
  codigo_dv = Modulo11FatorDe2a9RestoZero.new(composicao_codigo_barras)
  "#{composicao_codigo_barras}#{codigo_dv}"
end

#composicao_codigo_barrasObject



244
245
246
247
248
249
250
251
252
253
254
# File 'lib/br_boleto/boleto/caixa.rb', line 244

def composicao_codigo_barras
  return @composicao_codigo_barras if @composicao_codigo_barras
  @composicao_codigo_barras =  "#{codigo_beneficiario}"
  @composicao_codigo_barras << "#{digito_verificador_codigo_beneficiario}"
  @composicao_codigo_barras << "#{nosso_numero_de_3_a_5}"
  @composicao_codigo_barras << "#{tipo_cobranca}"
  @composicao_codigo_barras << "#{nosso_numero_de_6_a_8}"
  @composicao_codigo_barras << "#{identificador_de_emissao}"
  @composicao_codigo_barras << "#{nosso_numero_de_9_a_17}"
  @composicao_codigo_barras
end

#default_valuesObject

Conforme descrito na documentação, o valor que deve constar em local do pagamento é “PREFERENCIALMENTE NAS CASAS LOTÉRICAS ATÉ O VALOR LIMITE”



75
76
77
78
79
# File 'lib/br_boleto/boleto/caixa.rb', line 75

def default_values
  super.merge({
    :local_pagamento   => 'PREFERENCIALMENTE NAS CASAS LOTÉRICAS ATÉ O VALOR LIMITE'
  })
end

#deve_validar_modalidade_cobranca?Boolean

Returns:

  • (Boolean)


31
32
33
# File 'lib/br_boleto/boleto/caixa.rb', line 31

def deve_validar_modalidade_cobranca?
  true
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.



124
125
126
# File 'lib/br_boleto/boleto/caixa.rb', line 124

def digito_codigo_banco
  '0'
end

#digito_verificador_codigo_beneficiarioObject



139
140
141
# File 'lib/br_boleto/boleto/caixa.rb', line 139

def digito_verificador_codigo_beneficiario
  digito_verificador_codigo_cedente
end

#digito_verificador_codigo_cedenteObject



136
137
138
# File 'lib/br_boleto/boleto/caixa.rb', line 136

def digito_verificador_codigo_cedente
  BrBoleto::Calculos::Modulo11FatorDe2a9RestoZero.new(codigo_cedente)
end

#digito_verificador_nosso_numeroObject



143
144
145
# File 'lib/br_boleto/boleto/caixa.rb', line 143

def digito_verificador_nosso_numero
  BrBoleto::Calculos::Modulo11FatorDe2a9RestoZero.new("#{carteira}#{numero_documento}")
end

#identificador_de_emissaoString

O Identificado de Emissão é o 2° e ultimo caracter da carteira Normalmente é 4 onde significa que o Beneficiário emitiu o boleto.

Returns:

  • (String)


191
192
193
# File 'lib/br_boleto/boleto/caixa.rb', line 191

def identificador_de_emissao
  carteira.last if carteira.present?
end

#modalidade_cobrancaString

Modalidade de cobrança As vezes é chamado de modalidade de cobrança e as vezes é chamado de tipo de cobrança Por isso foi criado o metodo modalidade_cobrança que é a mesma coisa que o tipo_cobranca

Returns:

  • (String)


182
183
184
# File 'lib/br_boleto/boleto/caixa.rb', line 182

def modalidade_cobranca
  tipo_cobranca
end

#nosso_numeroString

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

Returns:

  • (String)


151
152
153
# File 'lib/br_boleto/boleto/caixa.rb', line 151

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

#nosso_numero_de_3_a_5Object



156
157
158
# File 'lib/br_boleto/boleto/caixa.rb', line 156

def nosso_numero_de_3_a_5
  nosso_numero[2..4]
end

#nosso_numero_de_6_a_8Object



160
161
162
# File 'lib/br_boleto/boleto/caixa.rb', line 160

def nosso_numero_de_6_a_8
  nosso_numero[5..7]
end

#nosso_numero_de_9_a_17Object



164
165
166
# File 'lib/br_boleto/boleto/caixa.rb', line 164

def nosso_numero_de_9_a_17
  nosso_numero[8..16]
end

#tipo_cobrancaString

O Tipo de cobrança é o 1° caracter da carteira

Returns:

  • (String)


172
173
174
# File 'lib/br_boleto/boleto/caixa.rb', line 172

def tipo_cobranca
  carteira[0] if carteira.present?
end