# -*- encoding: utf-8 -*- module Brcobranca module Remessa module Cnab240 class Caixa < Brcobranca::Remessa::Cnab240::Base # digito da agencia attr_accessor :digito_agencia # versao do aplicativo da CAIXA attr_accessor :versao_aplicativo # modalidade da carteira # opcoes: # 11: título Registrado emissão CAIXA # 14: título Registrado emissão Cedente # 21: título Sem Registro emissão CAIXA attr_accessor :modalidade_carteira # identificacao da emissao do boleto (attr na classe base) # opcoes: # ‘1’ = Banco Emite # ‘2’ = Cliente Emite ou para Bloqueto Pré-Impresso Registrado (entrega do bloqueto pelo Cedente) # ‘4’ = Banco Reemite # ‘5’ = Banco Não Reemite # # identificacao da distribuicao do boleto (attr na classe base) # opcoes: # ‘0’ = Postagem pelo Cedente # ‘1’ = Sacado via Correios # ‘2’ = Cedente via Agência CAIXA # ‘3’ = Sacado via e-mail # ‘4’ = Sacado via SMS validates_presence_of :versao_aplicativo, :digito_agencia, message: 'não pode estar em branco.' validates_length_of :convenio, maximum: 6, message: 'não deve ter mais de 6 dígitos.' validates_length_of :versao_aplicativo, maximum: 4, message: 'não deve ter mais de 4 dígitos.' validates_length_of :digito_agencia, is: 1, message: 'deve ter 1 dígito.' validates_length_of :modalidade_carteira, is: 2, message: 'deve ter 2 dígitos.' def initialize(campos = {}) # Modalidade carteira: 14 (título Registrado emissão Cedente) campos = { modalidade_carteira: '14', emissao_boleto: '2', distribuicao_boleto: '0', especie_titulo: '99' }.merge!(campos) super(campos) end def convenio=(valor) @convenio = valor.to_s.rjust(6, '0') if valor end def versao_aplicativo=(valor) @versao_aplicativo = valor.to_s.rjust(4, '0') if valor end def cod_banco '104' end def nome_banco 'CAIXA ECONOMICA FEDERAL'.ljust(30, ' ') end def versao_layout '050' end def codigo_convenio ''.rjust(20, '0') end def convenio_lote "#{convenio.rjust(6, '0')}#{''.rjust(14, ' ')}" end def info_conta # CAMPO # TAMANHO # agencia 5 # digito agencia 1 # cod. convenio 6 # uso CAIXA 7 # uso CAIXA 1 "#{agencia.to_s.rjust(5, '0')}#{digito_agencia}#{convenio}#{''.rjust(7, '0')}0" end def complemento_header "#{versao_aplicativo.rjust(4, '0')}#{''.rjust(25, ' ')}" end def complemento_trailer "#{''.rjust(69, '0')}#{''.rjust(148, ' ')}" end def complemento_p(pagamento) # CAMPO TAMANHO # convenio 6 # uso CAIXA 11 # modalidade carteira 2 # ident. titulo 15 "#{convenio.rjust(6, '0')}#{''.rjust(11, '0')}#{modalidade_carteira}#{pagamento.nosso_numero.to_s.rjust(15, '0')}" end end end end end