Class: Brcobranca::Remessa::Cnab400::Base

Inherits:
Base
  • Object
show all
Defined in:
lib/brcobranca/remessa/cnab400/base.rb

Instance Attribute Summary

Attributes inherited from Base

#aceite, #agencia, #carteira, #conta_corrente, #digito_conta, #documento_cedente, #empresa_mae, #pagamentos, #sequencial_remessa

Instance Method Summary collapse

Methods inherited from Base

#initialize, #quantidade_titulos_cobranca, #totaliza_valor_titulos, #valor_titulos_carteira

Methods included from Validations

#errors, included, #invalid?, #valid?

Constructor Details

This class inherits a constructor from Brcobranca::Remessa::Base

Instance Method Details

#cod_bancoObject

Numero do banco na camara de compensacao

Este metodo deve ser sobrescrevido na classe do banco


97
98
99
# File 'lib/brcobranca/remessa/cnab400/base.rb', line 97

def cod_banco
  raise Brcobranca::NaoImplementado, 'Sobreescreva este método na classe referente ao banco que você esta criando'
end

#complementoObject

Complemento do registro header

Este metodo deve ser sobrescrevido na classe do banco


113
114
115
# File 'lib/brcobranca/remessa/cnab400/base.rb', line 113

def complemento
  raise Brcobranca::NaoImplementado, 'Sobreescreva este método na classe referente ao banco que você esta criando'
end

#data_geracaoString

Data da geracao do arquivo seguindo o padrao DDMMAA


12
13
14
# File 'lib/brcobranca/remessa/cnab400/base.rb', line 12

def data_geracao
  Date.current.strftime('%d%m%y')
end

#gera_arquivoString

Gera o arquivo com os registros


63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'lib/brcobranca/remessa/cnab400/base.rb', line 63

def gera_arquivo
  raise Brcobranca::RemessaInvalida, self unless valid?

  # contador de registros no arquivo
  contador = 1
  ret = [monta_header]
  pagamentos.each do |pagamento|
    contador += 1
    ret << monta_detalhe(pagamento, contador)
    if pagamento.codigo_multa.to_i > 0 && self.respond_to?(:monta_detalhe_multa)
      contador += 1
      ret << monta_detalhe_multa(pagamento, contador)
    end
  end
  ret << monta_trailer(contador + 1)

  remittance = ret.join("\n").to_ascii.upcase
  remittance << "\n"

  remittance.encode(remittance.encoding, universal_newline: true).encode(remittance.encoding, crlf_newline: true)
end

#info_contaObject

Informacoes referentes a conta do cedente

Este metodo deve ser sobrescrevido na classe do banco


89
90
91
# File 'lib/brcobranca/remessa/cnab400/base.rb', line 89

def info_conta
  raise Brcobranca::NaoImplementado, 'Sobreescreva este método na classe referente ao banco que você esta criando'
end

#monta_detalhe(_pagamento, _sequencial) ⇒ Object

Registro detalhe do arquivo remessa

Este metodo deve ser sobrescrevido na classe do banco


56
57
58
# File 'lib/brcobranca/remessa/cnab400/base.rb', line 56

def monta_detalhe(_pagamento, _sequencial)
  raise Brcobranca::NaoImplementado, 'Sobreescreva este método na classe referente ao banco que você esta criando'
end

#monta_headerString

Header do arquivo remessa


20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/brcobranca/remessa/cnab400/base.rb', line 20

def monta_header
  # CAMPO                 TAMANHO    VALOR
  # tipo do registro      [1]        0
  # operacao              [1]        1
  # literal remessa       [7]        REMESSA
  # Código do serviço     [2]        01
  # cod. servico          [15]       COBRANCA
  # info. conta           [20]
  # empresa mae           [30]
  # cod. banco            [3]
  # nome banco            [15]
  # data geracao          [6]        formato DDMMAA
  # complemento registro  [294]
  # num. sequencial       [6]        000001
  "01REMESSA01COBRANCA       #{info_conta}#{empresa_mae.format_size(30)}#{cod_banco}#{nome_banco}#{data_geracao}#{complemento}000001"
end

#monta_trailer(sequencial) ⇒ String

Trailer do arquivo remessa


44
45
46
47
48
49
50
# File 'lib/brcobranca/remessa/cnab400/base.rb', line 44

def monta_trailer(sequencial)
  # CAMPO                   TAMANHO  VALOR
  # identificacao registro  [1]      9
  # complemento             [393]
  # num. sequencial         [6]
  "9#{''.rjust(393, ' ')}#{sequencial.to_s.rjust(6, '0')}"
end

#nome_bancoObject

Nome por extenso do banco cobrador

Este metodo deve ser sobrescrevido na classe do banco


105
106
107
# File 'lib/brcobranca/remessa/cnab400/base.rb', line 105

def nome_banco
  raise Brcobranca::NaoImplementado, 'Sobreescreva este método na classe referente ao banco que você esta criando'
end