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

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

Direct Known Subclasses

BancoBrasil, Caixa, Cecred, 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.


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

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)


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

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)

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

def codigo_carteira
  @codigo_carteira
end

#convenioObject

convenio do cedente


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

def convenio
  @convenio
end

#dias_baixa(pagamento) ⇒ Object

dias_baixa (verificar o padrao nas classes referentes aos bancos)


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

def dias_baixa
  @dias_baixa
end

#distribuicao_boletoObject

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


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

def distribuicao_boleto
  @distribuicao_boleto
end

#emissao_boletoObject

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


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

def emissao_boleto
  @emissao_boleto
end

#especie_tituloObject

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


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

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)

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

def forma_cadastramento
  @forma_cadastramento
end

#mensagem_1Object

mensagem 1


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

def mensagem_1
  @mensagem_1
end

#mensagem_2Object

mensagem 2


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

def mensagem_2
  @mensagem_2
end

#tipo_documentoObject

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


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

def tipo_documento
  @tipo_documento
end

Instance Method Details

#cod_bancoObject

Codigo do banco

Este metodo deve ser sobrescrevido na classe do banco


428
429
430
# File 'lib/brcobranca/remessa/cnab240/base.rb', line 428

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


444
445
446
# File 'lib/brcobranca/remessa/cnab240/base.rb', line 444

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

#codigo_desconto(pagamento) ⇒ Object


476
477
478
# File 'lib/brcobranca/remessa/cnab240/base.rb', line 476

def codigo_desconto(pagamento)
  pagamento.cod_desconto
end

#complemento_headerObject

Complemento do registro

Este metodo deve ser sobrescrevido na classe do banco


373
374
375
# File 'lib/brcobranca/remessa/cnab240/base.rb', line 373

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


451
452
453
454
455
456
457
458
459
460
461
462
463
464
# File 'lib/brcobranca/remessa/cnab240/base.rb', line 451

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


412
413
414
# File 'lib/brcobranca/remessa/cnab240/base.rb', line 412

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)

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

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

#data_mora(pagamento) ⇒ Object


471
472
473
474
# File 'lib/brcobranca/remessa/cnab240/base.rb', line 471

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


466
467
468
469
# File 'lib/brcobranca/remessa/cnab240/base.rb', line 466

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


394
395
396
# File 'lib/brcobranca/remessa/cnab240/base.rb', line 394

def densidade_gravacao
  '00000'
end

#dv_agencia_cobradoraObject


506
507
508
# File 'lib/brcobranca/remessa/cnab240/base.rb', line 506

def dv_agencia_cobradora
  '0'
end

#exclusivo_servicoObject

Campo exclusivo para serviço

Sobreescreva caso necessário


502
503
504
# File 'lib/brcobranca/remessa/cnab240/base.rb', line 502

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

#gera_arquivoString

Gera o arquivo remessa

Returns:

  • (String)

Raises:


343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
# File 'lib/brcobranca/remessa/cnab240/base.rb', line 343

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").to_ascii.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)

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

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

#identificacao_titulo_empresa(pagamento) ⇒ Object


495
496
497
# File 'lib/brcobranca/remessa/cnab240/base.rb', line 495

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


436
437
438
# File 'lib/brcobranca/remessa/cnab240/base.rb', line 436

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)

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

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)

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

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)

310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
# File 'lib/brcobranca/remessa/cnab240/base.rb', line 310

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
    if self.respond_to?(:monta_segmento_r)
      seg_r = monta_segmento_r(pagamento, nro_lote, contador)

      if seg_r.present?
        lote << seg_r
        contador += 1
      end
    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)

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

def monta_segmento_p(pagamento, nro_lote, sequencial)
  #                                                             # 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)

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

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)

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

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)

288
289
290
291
292
293
294
295
296
297
298
# File 'lib/brcobranca/remessa/cnab240/base.rb', line 288

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)

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

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


420
421
422
# File 'lib/brcobranca/remessa/cnab240/base.rb', line 420

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


491
492
493
# File 'lib/brcobranca/remessa/cnab240/base.rb', line 491

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

#total_segmentos(pagamentos) ⇒ Object


361
362
363
364
365
366
367
# File 'lib/brcobranca/remessa/cnab240/base.rb', line 361

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

#uso_exclusivo_bancoObject

Uso exclusivo do Banco


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

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

#uso_exclusivo_empresaObject

Uso exclusivo da Empresa


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

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


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

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


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

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