Class: BrBoleto::Conta::Caixa

Inherits:
Base show all
Defined in:
lib/br_boleto/conta/caixa.rb

Instance Attribute Summary collapse

Attributes inherited from Base

#agencia, #carteira, #codigo_carteira, #conta_corrente, #convenio, #cpf_cnpj, #endereco, #modalidade, #razao_social, #valid_agencia_length, #valid_carteira_inclusion, #valid_carteira_length, #valid_carteira_maximum, #valid_carteira_minimum, #valid_carteira_required, #valid_codigo_carteira_length, #valid_codigo_carteira_required, #valid_conta_corrente_length, #valid_conta_corrente_maximum, #valid_conta_corrente_minimum, #valid_conta_corrente_required, #valid_convenio_inclusion, #valid_convenio_length, #valid_convenio_maximum, #valid_convenio_minimum, #valid_convenio_required, #valid_endereco_required, #valid_modalidade_inclusion, #valid_modalidade_length, #valid_modalidade_maximum, #valid_modalidade_minimum, #valid_modalidade_required

Instance Method Summary collapse

Methods inherited from Base

#codigo_banco_formatado, #cpf_cnpj_formatado, #cpf_cnpj_formatado_com_label, #tipo_cobranca, #tipo_cpf_cnpj

Methods included from Helper::DefaultCodes

#codigos_movimento_retorno_para_ocorrencia_A_240, #codigos_movimento_retorno_para_ocorrencia_A_400, #codigos_movimento_retorno_para_ocorrencia_B_240, #codigos_movimento_retorno_para_ocorrencia_B_400, #codigos_movimento_retorno_para_ocorrencia_D_240, #codigos_movimento_retorno_para_ocorrencia_D_400, #default_codigo_juros, #default_codigo_multa, #equivalent_codigo_desconto, #equivalent_codigo_juros, #equivalent_codigo_moeda_240, #equivalent_codigo_motivo_ocorrencia_B_400, #equivalent_codigo_motivo_ocorrencia_D_240, #equivalent_codigo_motivo_ocorrencia_D_400, #equivalent_codigo_movimento_remessa_240, #equivalent_codigo_movimento_remessa_400, #equivalent_codigo_multa, #equivalent_codigo_ocorrencia_pagador_240, #equivalent_codigo_ocorrencia_pagador_400, #equivalent_codigo_protesto_240, #equivalent_especie_titulo_240, #equivalent_especie_titulo_400, #equivalent_identificacao_emissao_240, #equivalent_identificacao_emissao_400, #equivalent_tipo_cobranca_240, #equivalent_tipo_cobranca_400, #equivalent_tipo_impressao_240, #equivalent_tipo_impressao_400, #get_codigo_desconto, #get_codigo_juros, #get_codigo_moeda, #get_codigo_motivo_ocorrencia, #get_codigo_movimento_remessa, #get_codigo_movimento_retorno, #get_codigo_multa, #get_codigo_ocorrencia_pagador, #get_codigo_protesto, #get_distribuicao_boleto, #get_especie_titulo, #get_identificacao_emissao, #get_tipo_cobranca, #get_tipo_impressao

Methods inherited from ActiveModelBase

#assign_attributes, #initialize

Constructor Details

This class inherits a constructor from BrBoleto::ActiveModelBase

Instance Attribute Details

#valid_versao_aplicativo_requiredObject

Versão do aplicativo



20
21
22
# File 'lib/br_boleto/conta/caixa.rb', line 20

def valid_versao_aplicativo_required
  @valid_versao_aplicativo_required
end

#versao_aplicativoObject

versão do aplicativo da caixa



16
17
18
# File 'lib/br_boleto/conta/caixa.rb', line 16

def versao_aplicativo
  @versao_aplicativo
end

Instance Method Details

#agencia_codigo_cedenteString

Campo Agência / Código do Cedente

Returns:

  • (String)


108
109
110
# File 'lib/br_boleto/conta/caixa.rb', line 108

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

#agencia_dvObject



61
62
63
64
65
# File 'lib/br_boleto/conta/caixa.rb', line 61

def agencia_dv
	# utilizando a agencia com 4 digitos
	# para calcular o digito
	@agencia_dv ||= BrBoleto::Calculos::Modulo11FatorDe2a9RestoZero.new(agencia).to_s
end

#carteira_formatadaString

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

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

Returns:

  • (String)


86
87
88
89
90
91
92
# File 'lib/br_boleto/conta/caixa.rb', line 86

def carteira_formatada
	if carteira.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)


100
101
102
# File 'lib/br_boleto/conta/caixa.rb', line 100

def carteiras_com_registro
	%w(14)
end

#codigo_bancoObject



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

def codigo_banco
	'104'
end

#codigo_banco_dvObject

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



45
46
47
# File 'lib/br_boleto/conta/caixa.rb', line 45

def codigo_banco_dv
	'0'
end

#codigos_movimento_retorno_para_ocorrencia_C_240Object



197
198
199
# File 'lib/br_boleto/conta/caixa.rb', line 197

def codigos_movimento_retorno_para_ocorrencia_C_240
	%w[06 08 09 17]
end

#codigos_movimento_retorno_para_ocorrencia_C_400Object



251
252
253
# File 'lib/br_boleto/conta/caixa.rb', line 251

def codigos_movimento_retorno_para_ocorrencia_C_400
	%w[06 09 101 151 152]
end

#conta_corrente_dvObject



67
68
69
# File 'lib/br_boleto/conta/caixa.rb', line 67

def conta_corrente_dv
	@conta_corrente_dv ||= BrBoleto::Calculos::Modulo11FatorDe2a9RestoZero.new(conta_corrente).to_s
end

#convenio_dvObject



71
72
73
# File 'lib/br_boleto/conta/caixa.rb', line 71

def convenio_dv
	@convenio_dv ||= BrBoleto::Calculos::Modulo11FatorDe2a9RestoZero.new(convenio).to_s
end

#default_valuesObject



26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/br_boleto/conta/caixa.rb', line 26

def default_values
	super.merge({
		carteira:                     '14',      # Com registro
		valid_carteira_required:      true,      # <- Validação dinâmica que a carteira é obrigatória
		valid_carteira_length:        2,         # <- Validação dinâmica que a carteira deve ter 2 digitos
		valid_carteira_inclusion:     %w[14 24], # <- Validação dinâmica de valores aceitos para a modalidade
		codigo_carteira:              '1',  # Cobrança Simples
		valid_codigo_carteira_length: 1,         # <- Validação dinâmica que a carteira deve ter 1 digito
		valid_convenio_required:      true, # <- Validação que a convenio deve ter obrigatório
		valid_convenio_maximum:       6,    # <- Validação que a convenio deve ter no máximo 6 digitos
		versao_aplicativo:            '0',
	})
end

#equivalent_codigo_moeda_400Object

Código da Moeda



313
314
315
316
317
318
319
# File 'lib/br_boleto/conta/caixa.rb', line 313

def equivalent_codigo_moeda_400
	super.merge(
		#  Padrão    Código para  
		{# da GEM     o Banco
			'09'   =>   '1',  # Real
		})
end

#equivalent_codigo_motivo_ocorrencia_A_240(codigo_movimento_gem) ⇒ Object

Código do Motivo da Ocorrência Retorno



138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
# File 'lib/br_boleto/conta/caixa.rb', line 138

def equivalent_codigo_motivo_ocorrencia_A_240 codigo_movimento_gem
	super.merge(
	#  Padrão    Código para  
	{# do Banco    a GEM
		'11'   =>   'A115', # Data de Geração Inválida 
		'64'   =>   'A116', # Entrada Inválida para Cobrança Caucionada
		'65'   =>   'A117', # CEP do Pagador não encontrado
		'66'   =>   'A118', # Agencia Cobradora não encontrada
		'67'   =>   'A119', # Agencia Beneficiário não encontrada
		'68'   =>   'A120', # Movimentação inválida para título
		'69'   =>   'A121', # Alteração de dados inválida
		'70'   =>   'A122', # Apelido do cliente não cadastrado
		'71'   =>   'A123', # Erro na composição do arquivo
		'73'   =>   'A105', # Código do Beneficiário inválido
		'72'   =>   'A124', # Lote de serviço inválido
		'74'   =>   'A125', # Beneficiário não pertencente a Cobrança Eletrônica
		'75'   =>   'A126', # Nome da Empresa inválido
		'76'   =>   'A127', # Nome do Banco inválido
		'77'   =>   'A128', # Código da Remessa inválido
		'78'   =>   'A129', # Data/Hora Geração do arquivo inválida
		'79'   =>   'A130', # Número Sequencial do arquivo inválido
		'80'   =>   'A131', # Versão do Lay out do arquivo inválido
		'81'   =>   'A132', # Literal REMESSA-TESTE - Válido só p/ fase testes
		'82'   =>   'A133', # Literal REMESSA-TESTE - Obrigatório p/ fase testes
		'83'   =>   'A134', # Tp Número Inscrição Empresa inválido
		'84'   =>   'A135', # Tipo de Operação inválido
		'85'   =>   'A136', # Tipo de serviço inválido
		'86'   =>   'A137', # Forma de lançamento inválido
		'87'   =>   'A138', # Número da remessa inválido
		'88'   =>   'A139', # Número da remessa menor/igual remessa anterior
		'89'   =>   'A140', # Lote de serviço divergente
		'90'   =>   'A141', # Número sequencial do registro inválido
		'91'   =>   'A142', # Erro seq de segmento do registro detalhe
		'92'   =>   'A143', # Cod movto divergente entre grupo de segm
		'93'   =>   'A144', # Qtde registros no lote inválido
		'94'   =>   'A145', # Qtde registros no lote divergente
		'95'   =>   'A146', # Qtde lotes no arquivo inválido
		'96'   =>   'A147', # Qtde lotes no arquivo divergente
		'97'   =>   'A148', # Qtde registros no arquivo inválido
		'98'   =>   'A149', # Qtde registros no arquivo divergente
		'99'   =>   'A150', # Código de DDD inválido
	})
end

#equivalent_codigo_motivo_ocorrencia_A_400(codigo_movimento_gem) ⇒ Object



219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
# File 'lib/br_boleto/conta/caixa.rb', line 219

def equivalent_codigo_motivo_ocorrencia_A_400 codigo_movimento_gem
	super.merge(
		#  Padrão    Código para  
		{# do Banco    a GEM
			'01'   =>   'A220',  # Movimento sem Beneficiário Correspondente
			'02'   =>   'A221',  # Movimento sem Título Correspondente
			'08'   =>   'A222',  # Movimento para título já com movimentação no dia
			'09'   =>   'A223',  # Nosso Número não pertence ao Beneficiário
			'10'   =>   'A224',  # Inclusão de título já existente na base
			'12'   =>   'A225',  # Movimento duplicado
			'13'   =>   'A116',  # Entrada Inválida para Cobrança Caucionada (Beneficiário não possui conta Caução)
			'20'   =>   'A117',  # CEP do Pagador não encontrado (não foi possível a determinação da Agência Cobradora para o título)
			'21'   =>   'A118',  # Agência cobradora não encontrada (agência designada para cobradora não cadastrada no sistema)
			'22'   =>   'A119',  # Agência Beneficiário não encontrada (Agência do Beneficiário não cadastrada no sistema)
			'45'   =>   'A226',  # Data de Vencimento com prazo superior ao limite
			'49'   =>   'A227',  # Movimento inválido para título Baixado/Liquidado
			'50'   =>   'A228',  # Movimento inválido para título enviado a Cartório
			'54'   =>   'A229',  # Faixa de CEP da Agência Cobradora não abrange CEP do Pagador
			'55'   =>   'A230',  # Título já com opção de Devolução
			'56'   =>   'A231',  # Processo de Protesto em andamento
			'57'   =>   'A232',  # Título já com opção de Protesto
			'58'   =>   'A233',  # Processo de devolução em andamento
			'59'   =>   'A234',  # Novo prazo p/ Protesto/Devolução inválido
			'76'   =>   'A235',  # Alteração do prazo de protesto inválida
			'77'   =>   'A236',  # Alteração do prazo de devolução inválida
			'81'   =>   'A237',  # CEP do Pagador inválido
			'82'   =>   'A238',  # CNPJ/CPF do Pagador inválido (dígito não confere)
			'83'   =>   'A86' ,  # Número do Documento (seu número) inválido
			'84'   =>   'A239',  # Protesto inválido para título sem Número do documento (seu número)
	})
end

#equivalent_codigo_motivo_ocorrencia_B_240(codigo_movimento_gem) ⇒ Object



181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
# File 'lib/br_boleto/conta/caixa.rb', line 181

def equivalent_codigo_motivo_ocorrencia_B_240 codigo_movimento_gem
	super.merge(
	#  Padrão    Código para  
	{# do Banco    a GEM
		'12'	 =>   'B21', # Redisponibilização de Arquivo Retorno Eletrônico
		'15'	 =>   'B22', # Banco de Pagadores
		'17'	 =>   'B23', # Entrega Aviso Disp Boleto via e-amail ao pagador (s/ emissão Boleto)
		'18'	 =>   'B24', # Emissão de Boleto Pré-impresso CAIXA matricial
		'19'	 =>   'B25', # Emissão de Boleto Pré-impresso CAIXA A4
		'20'	 =>   'B26', # Emissão de Boleto Padrão CAIXA
		'21'	 =>   'B27', # Emissão de Boleto/Carnê
		'31'	 =>   'B28', # Emissão de Aviso de Vencido
		'42'	 =>   'B29', # Alteração cadastral de dados do título - sem emissão de aviso
		'45'	 =>   'B30', # Emissão de 2a via de Boleto Cobrança Registrada
	})
end

#equivalent_codigo_motivo_ocorrencia_C_240(codigo_movimento_gem) ⇒ Object



200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
# File 'lib/br_boleto/conta/caixa.rb', line 200

def equivalent_codigo_motivo_ocorrencia_C_240 codigo_movimento_gem
	if codigo_movimento_gem == '08'
		super.merge(
			#  Padrão    Código para  
			{# do Banco    a GEM
			'01'     =>    'C35',  # Liquidação em Dinheiro
			'02'     =>    'C36',  # Liquidação em Cheque
		})
	else
		super.merge(
			#  Padrão    Código para  
			{# do Banco    a GEM
			'02'     =>    'C100', # Casa Lotérica
			'03'     =>    'C101', # Agências CAIXA
			'07'     =>    'C102', # Correspondente Bancário
		})
	end
end

#equivalent_codigo_motivo_ocorrencia_C_400(codigo_movimento_gem) ⇒ Object



254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
# File 'lib/br_boleto/conta/caixa.rb', line 254

def equivalent_codigo_motivo_ocorrencia_C_400 codigo_movimento_gem
	super.merge(
		#  Padrão    Código para  
		{# do Banco    a GEM
			'002'  =>  'C100', # Unidade Lotérica
			'003'  =>  'C101', # Agências CAIXA
			'004'  =>  'C04',  # Compensação Eletrônica
			'006'  =>  'C06',  # Internet Banking
			'007'  =>  'C102', # Correspondente CAIXA aqui
			'008'  =>  'C08',  # Em Cartório
			'009'  =>  'C09',  # Comandada Banco
			'010'  =>  'C10',  # Comandada Cliente via Arquivo
			'011'  =>  'C11',  # Comandada Cliente On-line
	})
end

#equivalent_codigo_movimento_retorno_240Object

Código de Movimento Retorno



121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
# File 'lib/br_boleto/conta/caixa.rb', line 121

def equivalent_codigo_movimento_retorno_240
	super.merge(
		#  Padrão    Código para  
		{# do Banco    a GEM
			'35'   =>   '135',     # Confirmação de Inclusão Banco de Sacado
			'36'   =>   '136',     # Confirmação de Alteração Banco de Sacado
			'37'   =>   '137',     # Confirmação de Exclusão Banco de Sacado
			'38'   =>   '138',     # Emissão de Bloquetos de Banco de Sacado
			'39'   =>   '139',     # Manutenção de Sacado Rejeitada
			'40'   =>   '140',     # Entrada de Título via Banco de Sacado Rejeitada
			'41'   =>   '141',     # Manutenção de Banco de Sacado Rejeitada
			'44'   =>   '144',     # Estorno de Baixa / Liquidação
			'45'   =>   '145',     # Alteração de Dados
		})
end

#equivalent_codigo_movimento_retorno_400Object

Identificações de Ocorrência / Código de ocorrência:



271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
# File 'lib/br_boleto/conta/caixa.rb', line 271

def equivalent_codigo_movimento_retorno_400
	super.merge(
		#  Padrão    Código para  
		{# do Banco    a GEM
			'01'   =>   '02',	  # Entrada Confirmada
			'02'   =>   '09',	  # Baixa Manual Confirmada
			'03'   =>   '12',	  # Abatimento Concedido
			'04'   =>   '13',	  # Abatimento Cancelado
			'05'   =>   '14',	  # Vencimento Alterado
			'06'   =>   '146',  # Uso da Empresa Alterado
			'08'   =>   '147',  # Prazo de Devolução Alterado
			'09'   =>   '27',	  # Alteração Confirmada
			'10'   =>   '148',  # Alteração com reemissão de Boleto Confirmada
			'11'   =>   '149',  # Alteração da opção de Protesto para Devolução Confirmada
			'12'   =>   '150',  # Alteração da opção de Devolução para Protesto Confirmada
			'20'   =>   '11',	  # Em Ser
			'21'   =>   '06',	  # Liquidação 
			'22'   =>   '101',  # Liquidação em Cartório 
			'23'   =>   '151',  # Baixa por Devolução 
			'25'   =>   '152',  # Baixa por Protesto 
			'26'   =>   '23',   # Título enviado para Cartório 
			'27'   =>   '20',	  # Sustação de Protesto 
			'28'   =>   '153',  # Estorno de Protesto 
			'29'   =>   '154',  # Estorno de Sustação de Protesto 
			'30'   =>   '61',	  # Alteração de Título 
			'31'   =>   '108',  # Tarifa sobre Título Vencido 
			'32'   =>   '155',  # Outras Tarifas de Alteração 
			'33'   =>   '144',  # Estorno de Baixa / Liquidação 
			'34'   =>   '156',  # Tarifas Diversas 
		})
end

#equivalent_codigo_protesto_400Object

Código para Protesto



304
305
306
307
308
309
310
# File 'lib/br_boleto/conta/caixa.rb', line 304

def equivalent_codigo_protesto_400
	super.merge(
		#  Padrão    Código para  
		{# da GEM     o Banco
			'3'   =>   '2',  # Devolver (Não Protestar)
		})
end

#equivalent_distribuicao_boletoObject

Identificação da Distribuição exclusiva da CAIXA



116
117
118
# File 'lib/br_boleto/conta/caixa.rb', line 116

def equivalent_distribuicao_boleto
	super.merge({'0' => '0' }) # 0 = Postagem pelo Beneficiário
end

#nome_bancoObject



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

def nome_banco
	@nome_banco ||= 'CAIXA ECONOMICA FEDERAL'
end

#versao_layout_arquivo_cnab_240Object



53
54
55
# File 'lib/br_boleto/conta/caixa.rb', line 53

def versao_layout_arquivo_cnab_240
	'050'
end

#versao_layout_lote_cnab_240Object



57
58
59
# File 'lib/br_boleto/conta/caixa.rb', line 57

def versao_layout_lote_cnab_240
	'030'
end