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



107
108
109
110
# File 'lib/brcobranca/remessa/cnab400/base.rb', line 107

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



125
126
127
128
# File 'lib/brcobranca/remessa/cnab400/base.rb', line 125

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

Returns:

  • (String)


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

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

#gera_arquivoString

Gera o arquivo com os registros

Returns:

  • (String)

Raises:



65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# File 'lib/brcobranca/remessa/cnab400/base.rb', line 65

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.positive? && respond_to?(:monta_detalhe_multa)
      contador += 1
      ret << monta_detalhe_multa(pagamento, contador)
    end

    # Adiciona registro de desconto adicional
    if pagamento.valor_segundo_desconto.to_f.positive? && respond_to?(:monta_descontos_adicionais)
      contador += 1
      ret << monta_descontos_adicionais(pagamento, contador)
    end
  end
  ret << monta_trailer(contador + 1)

  remittance = ret.join("\n").remove_accents.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



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

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



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

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

Returns:

  • (String)


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

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

Parameters:

  • sequencial

    num. sequencial do registro no arquivo

Returns:

  • (String)


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

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



116
117
118
119
# File 'lib/brcobranca/remessa/cnab400/base.rb', line 116

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