Class: Brcobranca::Remessa::Cnab240::Base

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

Direct Known Subclasses

Ailos, BancoBrasil, Caixa, Santander, Sicoob, Sicredi

Instance Attribute Summary collapse

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

#quantidade_titulos_cobranca, #totaliza_valor_titulos, #valor_titulos_carteira

Methods included from Validations

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

Constructor Details

#initialize(campos = {}) ⇒ Base

Returns a new instance of Base.



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

def initialize(campos = {})
  campos = {
    codigo_carteira: '1',
    forma_cadastramento: '1',
    tipo_documento: ' '
  }.merge!(campos)
  super(campos)
end

Instance Attribute Details

#codigo_baixa(pagamento) ⇒ Object

codigo_baixa (verificar o padrao nas classes referentes aos bancos)



34
35
36
# File 'lib/brcobranca/remessa/cnab240/base.rb', line 34

def codigo_baixa
  @codigo_baixa
end

#codigo_carteiraObject

codigo da carteira

opcoes:
  1 - cobranca simples
  2 - cobranca caucionada
  3 - cobranca descontada
  7 – modalidade Simples quando carteira 17 (apenas Banco do Brasil)


19
20
21
# File 'lib/brcobranca/remessa/cnab240/base.rb', line 19

def codigo_carteira
  @codigo_carteira
end

#convenioObject

convenio do cedente



8
9
10
# File 'lib/brcobranca/remessa/cnab240/base.rb', line 8

def convenio
  @convenio
end

#dias_baixa(pagamento) ⇒ Object

dias_baixa (verificar o padrao nas classes referentes aos bancos)



36
37
38
# File 'lib/brcobranca/remessa/cnab240/base.rb', line 36

def dias_baixa
  @dias_baixa
end

#distribuicao_boletoObject

identificacao da distribuicao do boleto (verificar opcoes nas classes referentes aos bancos)



28
29
30
# File 'lib/brcobranca/remessa/cnab240/base.rb', line 28

def distribuicao_boleto
  @distribuicao_boleto
end

#emissao_boletoObject

identificacao da emissao do boleto (verificar opcoes nas classes referentes aos bancos)



26
27
28
# File 'lib/brcobranca/remessa/cnab240/base.rb', line 26

def emissao_boleto
  @emissao_boleto
end

#especie_tituloObject

especie do titulo (verificar o padrao nas classes referentes aos bancos)



30
31
32
# File 'lib/brcobranca/remessa/cnab240/base.rb', line 30

def especie_titulo
  @especie_titulo
end

#forma_cadastramentoObject

forma de cadastramento dos titulos (campo nao tratado pelo Banco do Brasil)

opcoes:
  1 - com cadastramento (cobrança registrada)
  2 - sem cadastramento (cobrança sem registro)


24
25
26
# File 'lib/brcobranca/remessa/cnab240/base.rb', line 24

def forma_cadastramento
  @forma_cadastramento
end

#mensagem_1Object

mensagem 1



10
11
12
# File 'lib/brcobranca/remessa/cnab240/base.rb', line 10

def mensagem_1
  @mensagem_1
end

#mensagem_2Object

mensagem 2



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

def mensagem_2
  @mensagem_2
end

#tipo_documentoObject

tipo de documento (verificar o padrao nas classes referentes aos bancos)



32
33
34
# File 'lib/brcobranca/remessa/cnab240/base.rb', line 32

def tipo_documento
  @tipo_documento
end

Instance Method Details

#cod_bancoObject

Codigo do banco

Este metodo deve ser sobrescrevido na classe do banco



440
441
442
443
# File 'lib/brcobranca/remessa/cnab240/base.rb', line 440

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

#codigo_convenioObject

Codigo do convenio

Este metodo deve ser sobrescrevido na classe do banco



458
459
460
461
# File 'lib/brcobranca/remessa/cnab240/base.rb', line 458

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

#codigo_desconto(pagamento) ⇒ Object



493
494
495
# File 'lib/brcobranca/remessa/cnab240/base.rb', line 493

def codigo_desconto(pagamento)
  pagamento.cod_desconto
end

#complemento_headerObject

Complemento do registro

Este metodo deve ser sobrescrevido na classe do banco



380
381
382
383
# File 'lib/brcobranca/remessa/cnab240/base.rb', line 380

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

#complemento_rObject

Complemento do Segmento R

Sobreescreva caso necessário



466
467
468
469
470
471
472
473
474
475
476
477
478
479
# File 'lib/brcobranca/remessa/cnab240/base.rb', line 466

def complemento_r
  segmento_r = ''
  segmento_r += ''.rjust(20, ' ')                               # Exclusivo FEBRABAN                   20
  segmento_r << ''.rjust(8, '0')                                # Cod. Ocor do Pagador                 8
  segmento_r << ''.rjust(3, '0')                                # Cod. do Banco conta débito           3
  segmento_r << ''.rjust(5, '0')                                # Cod. da Agencia do débito            5
  segmento_r << ' '                                             # Cod. verificador da agencia          1
  segmento_r << ''.rjust(12, '0')                               # Conta corrente para débito           12
  segmento_r << ' '                                             # Cod. verificador da conta            1
  segmento_r << ' '                                             # Cod. verificador da Ag/Conta         1
  segmento_r << '0'                                             # Aviso débito automático              1
  segmento_r << ''.rjust(9, ' ')                                # Uso FEBRABAN                         9
  segmento_r
end

#convenio_loteObject

Informacoes do convenio para o lote

Este metodo deve ser sobrescrevido na classe do banco



422
423
424
425
# File 'lib/brcobranca/remessa/cnab240/base.rb', line 422

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

#data_geracaoString

Data de geracao do arquivo

Returns:

  • (String)


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

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

#data_mora(pagamento) ⇒ Object



487
488
489
490
491
# File 'lib/brcobranca/remessa/cnab240/base.rb', line 487

def data_mora(pagamento)
  return ''.rjust(8, '0') unless %w[1 2].include? pagamento.tipo_mora

  pagamento.data_vencimento.strftime('%d%m%Y')
end

#data_multa(pagamento) ⇒ Object



481
482
483
484
485
# File 'lib/brcobranca/remessa/cnab240/base.rb', line 481

def data_multa(pagamento)
  return ''.rjust(8, '0') if pagamento.codigo_multa == '0'

  pagamento.data_vencimento.strftime('%d%m%Y')
end

#densidade_gravacaoObject

Densidade de gravacao do arquivo



404
405
406
# File 'lib/brcobranca/remessa/cnab240/base.rb', line 404

def densidade_gravacao
  '00000'
end

#dv_agencia_cobradoraObject



523
524
525
# File 'lib/brcobranca/remessa/cnab240/base.rb', line 523

def dv_agencia_cobradora
  '0'
end

#exclusivo_servicoObject

Campo exclusivo para serviço

Sobreescreva caso necessário



519
520
521
# File 'lib/brcobranca/remessa/cnab240/base.rb', line 519

def exclusivo_servico
  ''.rjust(2, ' ')
end

#gera_arquivoString

Gera o arquivo remessa

Returns:

  • (String)

Raises:



349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
# File 'lib/brcobranca/remessa/cnab240/base.rb', line 349

def gera_arquivo
  raise Brcobranca::RemessaInvalida, self if invalid?

  arquivo = [monta_header_arquivo]

  # contador de do lotes
  contador = 1
  arquivo.push monta_lote(contador)

  total_linhas = (total_segmentos(pagamentos) + (contador * 2) + 2)

  arquivo << monta_trailer_arquivo(contador, total_linhas)

  remittance = arquivo.join("\r\n").remove_accents.upcase
  remittance << "\n"
  remittance.encode(remittance.encoding, universal_newline: true).encode(remittance.encoding,
                                                                         crlf_newline: true)
end

#hora_geracaoString

Hora de geracao do arquivo

Returns:

  • (String)


66
67
68
# File 'lib/brcobranca/remessa/cnab240/base.rb', line 66

def hora_geracao
  Time.current.strftime('%H%M%S')
end

#identificacao_titulo_empresa(pagamento) ⇒ Object



512
513
514
# File 'lib/brcobranca/remessa/cnab240/base.rb', line 512

def identificacao_titulo_empresa(pagamento)
  pagamento.formata_documento_ou_numero
end

#info_contaObject

Informacoes da conta do cedente

Este metodo deve ser sobrescrevido na classe do banco



449
450
451
452
# File 'lib/brcobranca/remessa/cnab240/base.rb', line 449

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

#monta_header_arquivoString

Monta o registro header do arquivo

Returns:

  • (String)


74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
# File 'lib/brcobranca/remessa/cnab240/base.rb', line 74

def monta_header_arquivo
  header_arquivo = ''                                   # CAMPO                         TAMANHO
  header_arquivo += cod_banco                           # codigo do banco               3
  header_arquivo << '0000'                              # lote do servico               4
  header_arquivo << '0'                                 # tipo de registro              1
  header_arquivo << ''.rjust(9, ' ')                    # uso exclusivo FEBRABAN        9
  header_arquivo << Brcobranca::Util::Empresa.new(documento_cedente, false).tipo # tipo inscricao                1
  header_arquivo << documento_cedente.to_s.rjust(14, '0') # numero de inscricao         14
  header_arquivo << codigo_convenio                     # codigo do convenio no banco   20
  header_arquivo << info_conta                          # informacoes da conta          20
  header_arquivo << empresa_mae.format_size(30)         # nome da empresa               30
  header_arquivo << nome_banco.format_size(30)          # nome do banco                 30
  header_arquivo << ''.rjust(10, ' ')                   # uso exclusivo FEBRABAN        10
  header_arquivo << '1'                                 # codigo remessa                1
  header_arquivo << data_geracao                        # data geracao                  8
  header_arquivo << hora_geracao                        # hora geracao                  6
  header_arquivo << sequencial_remessa.to_s.rjust(6, '0') # numero seq. arquivo         6
  header_arquivo << versao_layout_arquivo               # num. versao arquivo           3
  header_arquivo << densidade_gravacao                  # densidade gravacao            5
  header_arquivo << uso_exclusivo_banco                 # uso exclusivo                 20
  header_arquivo << uso_exclusivo_empresa               # uso exclusivo                 20
  header_arquivo << complemento_header                  # complemento do arquivo        29
  header_arquivo
end

#monta_header_lote(nro_lote) ⇒ String

Monta o registro header do lote

Parameters:

  • nro_lote (Integer)

    numero do lote no arquivo (iterar a cada novo lote)

Returns:

  • (String)


106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
# File 'lib/brcobranca/remessa/cnab240/base.rb', line 106

def monta_header_lote(nro_lote)
  header_lote = ''                                      # CAMPO                   TAMANHO
  header_lote += cod_banco                              # codigo banco            3
  header_lote << nro_lote.to_s.rjust(4, '0')            # lote servico            4
  header_lote << '1'                                    # tipo de registro        1
  header_lote << 'R'                                    # tipo de operacao        1
  header_lote << '01'                                   # tipo de servico         2
  header_lote << exclusivo_servico                      # uso exclusivo           2
  header_lote << versao_layout_lote                     # num.versao layout lote  3
  header_lote << ' '                                    # uso exclusivo           1
  header_lote << Brcobranca::Util::Empresa.new(documento_cedente, false).tipo # tipo de inscricao       1
  header_lote << documento_cedente.to_s.rjust(15, '0')  # inscricao cedente       15
  header_lote << convenio_lote                          # codigo do convenio      20
  header_lote << info_conta                             # informacoes conta       20
  header_lote << empresa_mae.format_size(30)            # nome empresa            30
  header_lote << mensagem_1.to_s.format_size(40)        # 1a mensagem             40
  header_lote << mensagem_2.to_s.format_size(40)        # 2a mensagem             40
  header_lote << sequencial_remessa.to_s.rjust(8, '0')  # numero remessa          8
  header_lote << data_geracao                           # data gravacao           8
  header_lote << ''.rjust(8, '0')                       # data do credito         8
  header_lote << ''.rjust(33, ' ')                      # complemento             33
  header_lote
end

#monta_lote(nro_lote) ⇒ Array

Monta um lote para o arquivo

numero do lote no arquivo

Parameters:

Returns:

  • (Array)


316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
# File 'lib/brcobranca/remessa/cnab240/base.rb', line 316

def monta_lote(nro_lote)
  # contador dos registros do lote
  contador = 1 # header

  lote = [monta_header_lote(nro_lote)]

  pagamentos.each do |pagamento|
    raise Brcobranca::RemessaInvalida, pagamento if pagamento.invalid?

    lote << monta_segmento_p(pagamento, nro_lote, contador)
    contador += 1
    lote << monta_segmento_q(pagamento, nro_lote, contador)
    contador += 1
    next unless respond_to?(:monta_segmento_r)

    seg_r = monta_segmento_r(pagamento, nro_lote, contador)

    unless seg_r.blank?
      lote << seg_r
      contador += 1
    end
  end
  contador += 1 # trailer

  lote << monta_trailer_lote(nro_lote, contador)

  lote
end

#monta_segmento_p(pagamento, nro_lote, sequencial) ⇒ String

Monta o registro segmento P do arquivo

Parameters:

  • pagamento (Brcobranca::Remessa::Pagamento)

    objeto contendo os detalhes do boleto (valor, vencimento, sacado, etc)

  • nro_lote (Integer)

    numero do lote que o segmento esta inserido

  • sequencial (Integer)

    numero sequencial do registro no lote

Returns:

  • (String)


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
181
182
183
184
# File 'lib/brcobranca/remessa/cnab240/base.rb', line 141

def monta_segmento_p(pagamento, nro_lote, sequencial)
  segmento_p = ''
  #                                                             # DESCRICAO                             TAMANHO
  segmento_p += cod_banco # codigo banco                          3
  segmento_p << nro_lote.to_s.rjust(4, '0')                     # lote de servico                       4
  segmento_p << '3'                                             # tipo de registro                      1
  segmento_p << sequencial.to_s.rjust(5, '0')                   # num. sequencial do registro no lote   5
  segmento_p << 'P'                                             # cod. segmento                         1
  segmento_p << ' '                                             # uso exclusivo                         1
  segmento_p << pagamento.identificacao_ocorrencia              # cod. movimento remessa                2
  segmento_p << agencia.to_s.rjust(5, '0')                      # agencia                               5
  segmento_p << digito_agencia.to_s                             # dv agencia                            1
  segmento_p << complemento_p(pagamento)                        # informacoes da conta                  34
  segmento_p << codigo_carteira                                 # codigo da carteira                    1
  segmento_p << forma_cadastramento                             # forma de cadastro do titulo           1
  segmento_p << tipo_documento                                  # tipo de documento                     1
  segmento_p << emissao_boleto                                  # identificaco emissao                  1
  segmento_p << distribuicao_boleto                             # indentificacao entrega                1
  segmento_p << numero(pagamento)                               # uso exclusivo                         4
  segmento_p << pagamento.data_vencimento.strftime('%d%m%Y')    # data de venc.                         8
  segmento_p << pagamento.formata_valor(15)                     # valor documento                       15
  segmento_p << ''.rjust(5, '0')                                # agencia cobradora                     5
  segmento_p << dv_agencia_cobradora                            # dv agencia cobradora                  1
  segmento_p << especie_titulo                                  # especie do titulo                     2
  segmento_p << aceite                                          # aceite                                1
  segmento_p << pagamento.data_emissao.strftime('%d%m%Y')       # data de emissao titulo                8
  segmento_p << pagamento.tipo_mora                             # cod. do mora                          1
  segmento_p << data_mora(pagamento)                            # data mora                             8
  segmento_p << pagamento.formata_valor_mora(15)                # valor mora                            15
  segmento_p << codigo_desconto(pagamento)                      # cod. do desconto                      1
  segmento_p << pagamento.formata_data_desconto('%d%m%Y')       # data desconto                         8
  segmento_p << pagamento.formata_valor_desconto(15)            # valor desconto                        15
  segmento_p << pagamento.formata_valor_iof(15)                 # valor IOF                             15
  segmento_p << pagamento.formata_valor_abatimento(15)          # valor abatimento                      15
  segmento_p << identificacao_titulo_empresa(pagamento)         # identificacao titulo empresa          25
  segmento_p << pagamento.codigo_protesto                       # cod. para protesto                    1
  segmento_p << pagamento.dias_protesto.to_s.rjust(2, '0')      # dias para protesto                    2
  segmento_p << codigo_baixa(pagamento)                         # cod. para baixa                       1
  segmento_p << dias_baixa(pagamento)                           # dias para baixa                       2
  segmento_p << '09'                                            # cod. da moeda                         2
  segmento_p << ''.rjust(10, '0')                               # uso exclusivo                         10
  segmento_p << ' '                                             # uso exclusivo                         1
  segmento_p
end

#monta_segmento_q(pagamento, nro_lote, sequencial) ⇒ String

Monta o registro segmento Q do arquivo

Parameters:

  • pagamento (Brcobranca::Remessa::Pagamento)

    objeto contendo os detalhes do boleto (valor, vencimento, sacado, etc)

  • nro_lote (Integer)

    numero do lote que o segmento esta inserido

  • sequencial (Integer)

    numero sequencial do registro no lote

Returns:

  • (String)


197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
# File 'lib/brcobranca/remessa/cnab240/base.rb', line 197

def monta_segmento_q(pagamento, nro_lote, sequencial)
  segmento_q = ''                                               # CAMPO                                TAMANHO
  segmento_q += cod_banco                                       # codigo banco                         3
  segmento_q << nro_lote.to_s.rjust(4, '0')                     # lote de servico                      4
  segmento_q << '3'                                             # tipo de registro                     1
  segmento_q << sequencial.to_s.rjust(5, '0')                   # num. sequencial do registro no lote  5
  segmento_q << 'Q'                                             # cod. segmento                        1
  segmento_q << ' '                                             # uso exclusivo                        1
  segmento_q << pagamento.identificacao_ocorrencia              # cod. movimento remessa               2
  segmento_q << pagamento.identificacao_sacado(false)           # tipo insc. sacado                    1
  segmento_q << pagamento.documento_sacado.to_s.rjust(15, '0')  # documento sacado                     14
  segmento_q << pagamento.nome_sacado.format_size(40)           # nome cliente                         40
  segmento_q << pagamento.endereco_sacado.format_size(40)       # endereco cliente                     40
  segmento_q << pagamento.bairro_sacado.format_size(15)         # bairro                               15
  segmento_q << pagamento.cep_sacado[0..4]                      # cep                                  5
  segmento_q << pagamento.cep_sacado[5..7]                      # sufixo cep                           3
  segmento_q << pagamento.cidade_sacado.format_size(15)         # cidade                               15
  segmento_q << pagamento.uf_sacado                             # uf                                   2
  segmento_q << pagamento.identificacao_avalista(false)         # identificacao do sacador             1
  segmento_q << pagamento.documento_avalista.to_s.rjust(15, '0') # documento sacador                    15
  segmento_q << pagamento.nome_avalista.format_size(40)         # nome avalista                        40
  segmento_q << ''.rjust(3, '0')                                # cod. banco correspondente            3
  segmento_q << ''.rjust(20, ' ')                               # nosso numero banco correspondente    20
  segmento_q << ''.rjust(8, ' ')                                # uso exclusivo                        8
  segmento_q
end

#monta_segmento_r(pagamento, nro_lote, sequencial) ⇒ String

Monta o registro segmento R do arquivo

Parameters:

  • pagamento (Brcobranca::Remessa::Pagamento)

    objeto contendo os detalhes do boleto (valor, vencimento, sacado, etc)

  • nro_lote (Integer)

    numero do lote que o segmento esta inserido

  • sequencial (Integer)

    numero sequencial do registro no lote

Returns:

  • (String)


235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
# File 'lib/brcobranca/remessa/cnab240/base.rb', line 235

def monta_segmento_r(pagamento, nro_lote, sequencial)
  segmento_r = ''                                               # CAMPO                                TAMANHO
  segmento_r += cod_banco                                       # codigo banco                         3
  segmento_r << nro_lote.to_s.rjust(4, '0')                     # lote de servico                      4
  segmento_r << '3'                                             # tipo do registro                     1
  segmento_r << sequencial.to_s.rjust(5, '0')                   # num. sequencial do registro no lote  5
  segmento_r << 'R'                                             # cod. segmento                        1
  segmento_r << ' '                                             # uso exclusivo                        1
  segmento_r << pagamento.identificacao_ocorrencia              # cod. movimento remessa               2
  segmento_r << '0'                                             # cod. desconto 2                      1
  segmento_r << ''.rjust(8, '0')                               # data desconto 2                      8
  segmento_r << ''.rjust(15, '0')                              # valor desconto 2                     15
  segmento_r << '0' # cod. desconto 3                      1
  segmento_r << ''.rjust(8, '0')                               # data desconto 3                      8
  segmento_r << ''.rjust(15, '0')                              # valor desconto 3                     15
  segmento_r << pagamento.codigo_multa                          # codigo multa                         1
  segmento_r << data_multa(pagamento)                           # data multa                           8
  segmento_r << pagamento.formata_percentual_multa(15)          # valor multa                          15
  segmento_r << ''.rjust(10, ' ')                               # info pagador                         10
  segmento_r << ''.rjust(40, ' ')                               # mensagem 3                           40
  segmento_r << ''.rjust(40, ' ')                               # mensagem 4                           40
  segmento_r << complemento_r                                   # complemento de acordo com o banco    61
  segmento_r
end

#monta_trailer_arquivo(nro_lotes, sequencial) ⇒ String

Monta o registro trailer do arquivo

Parameters:

  • nro_lotes (Integer)

    numero de lotes no arquivo

  • sequencial (Integer)

    numero de registros(linhas) no arquivo

Returns:

  • (String)


290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
# File 'lib/brcobranca/remessa/cnab240/base.rb', line 290

def monta_trailer_arquivo(nro_lotes, sequencial)
  # CAMPO                     TAMANHO
  # codigo banco              3
  # lote de servico           4
  # tipo de registro          1
  # uso FEBRABAN              9
  # nro de lotes              6
  # nro de registros(linhas)  6
  # uso FEBRABAN              211
  "#{cod_banco}99999#{''.rjust(9,
                               ' ')}#{nro_lotes.to_s.rjust(6,
                                                           '0')}#{sequencial.to_s.rjust(6,
                                                                                        '0')}#{''.rjust(211,
                                                                                                        ' ')}"
end

#monta_trailer_lote(nro_lote, nro_registros) ⇒ String

Monta o registro trailer do lote

Parameters:

  • nro_lote (Integer)

    numero do lote no arquivo (iterar a cada novo lote)

  • nro_registros (Integer)

    numero de registros(linhas) no lote (contando header e trailer)

Returns:

  • (String)


270
271
272
273
274
275
276
277
278
279
# File 'lib/brcobranca/remessa/cnab240/base.rb', line 270

def monta_trailer_lote(nro_lote, nro_registros)
  trailer_lote = ''                                             # CAMPO                   # TAMANHO
  trailer_lote += cod_banco                                     # codigo banco            3
  trailer_lote << nro_lote.to_s.rjust(4, '0')                   # lote de servico         4
  trailer_lote << '5'                                           # tipo de servico         1
  trailer_lote << ''.rjust(9, ' ')                              # uso exclusivo           9
  trailer_lote << nro_registros.to_s.rjust(6, '0')              # qtde de registros lote  6
  trailer_lote << complemento_trailer                           # uso exclusivo           217
  trailer_lote
end

#nome_bancoObject

Nome do banco

Este metodo deve ser sobrescrevido na classe do banco



431
432
433
434
# File 'lib/brcobranca/remessa/cnab240/base.rb', line 431

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

#numero(pagamento) ⇒ Object

Identificacao do titulo da empresa

Sobreescreva caso necessário



508
509
510
# File 'lib/brcobranca/remessa/cnab240/base.rb', line 508

def numero(pagamento)
  pagamento.formata_documento_ou_numero(15, '0')
end

#total_segmentos(pagamentos) ⇒ Object



368
369
370
371
372
373
374
# File 'lib/brcobranca/remessa/cnab240/base.rb', line 368

def total_segmentos(pagamentos)
  if respond_to?(:monta_segmento_r)
    pagamentos.size * 3
  else
    pagamentos.size * 2
  end
end

#uso_exclusivo_bancoObject

Uso exclusivo do Banco



409
410
411
# File 'lib/brcobranca/remessa/cnab240/base.rb', line 409

def uso_exclusivo_banco
  ''.rjust(20, '0')
end

#uso_exclusivo_empresaObject

Uso exclusivo da Empresa



414
415
416
# File 'lib/brcobranca/remessa/cnab240/base.rb', line 414

def uso_exclusivo_empresa
  ''.rjust(20, '0')
end

#versao_layout_arquivoObject

Numero da versao do layout do arquivo

Este metodo deve ser sobrescrevido na classe do banco



389
390
391
392
# File 'lib/brcobranca/remessa/cnab240/base.rb', line 389

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

#versao_layout_loteObject

Numero da versao do layout do lote

Este metodo deve ser sobrescrevido na classe do banco



398
399
400
401
# File 'lib/brcobranca/remessa/cnab240/base.rb', line 398

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