Class: BrBoleto::Remessa::Cnab400::BancoBrasil

Inherits:
Base show all
Defined in:
lib/br_boleto/remessa/cnab400/banco_brasil.rb

Instance Attribute Summary

Attributes inherited from Base

#data_hora_arquivo, #sequencial_remessa

Instance Method Summary collapse

Methods inherited from Base

#dados_do_arquivo, #dados_do_pagamento, #informacoes_do_banco

Methods included from Helper::Trailer

#monta_trailer, #trailer_arquivo_posicao_001_a_001, #trailer_arquivo_posicao_002_a_394, #trailer_arquivo_posicao_394_a_400

Methods included from Helper::Detalhe

#detalhe_posicao_002_003, #detalhe_posicao_004_017, #detalhe_posicao_018_037, #detalhe_posicao_109_110, #detalhe_posicao_111_120, #detalhe_posicao_121_160, #detalhe_posicao_161_218, #detalhe_posicao_219_394, #detalhe_posicao_395_400, #monta_detalhe

Methods included from Helper::Header

#header_posicao_001_a_001, #header_posicao_003_a_009, #header_posicao_010_a_011, #header_posicao_012_a_026, #header_posicao_027_a_046, #header_posicao_047_a_076, #header_posicao_077_a_094, #header_posicao_095_a_100, #header_posicao_101_a_394, #header_posicao_395_a_400, #monta_header

Methods inherited from Base

#data_geracao, #hora_geracao, #pagamento_valid_cod_desconto_length, #pagamento_valid_distribuicao_boleto_length, #pagamento_valid_emissao_boleto_length, #pagamento_valid_tipo_impressao_required, #persisted?

Methods included from HaveConta

#conta, #conta=

Methods inherited from ActiveModelBase

#assign_attributes, #default_values, #initialize

Constructor Details

This class inherits a constructor from BrBoleto::ActiveModelBase

Instance Method Details

#complemento_registroObject

Complemento do registro Posição: 101 até 394

POSI

101 a 107 007 No Seqüencial de Remessa (deve iniciar de 0000001 e incrementado de + 1 a cada NOVO Arquivo Remessa) 108 a 129 022 Branco 130 a 136 007 Convênio Lider (Opcional) 137 a 394 258 Branco Tamanho total: 294



27
28
29
30
31
32
33
# File 'lib/br_boleto/remessa/cnab400/banco_brasil.rb', line 27

def complemento_registro
  info =  "#{sequencial_remessa}".adjust_size_to(7, '0', :right)
  info << ''.adjust_size_to(22)
  info << "#{conta.convenio}".adjust_size_to(7, '0', :right)
  info << ''.adjust_size_to(258)
  info
end

#conta_classObject



6
7
8
# File 'lib/br_boleto/remessa/cnab400/banco_brasil.rb', line 6

def conta_class
  BrBoleto::Conta::BancoBrasil
end

#detalhe_multas_e_juros_do_pagamento(pagamento, sequencial) ⇒ Object

Informações referente aos juros e multas do pagamento Posição: 161 a 218 POSIÇÂO TAM. Descrição 161 a 173 013 Valor a ser cobrado por Dia de Atraso 174 a 179 006 Data Limite P/Concessão de Desconto 180 a 192 013 Valor do Desconto 193 a 205 013 Valor do IOF 206 a 218 013 Valor do Abatimento a ser concedido ou cancelado Tamanho: 58



185
186
187
188
189
190
191
192
193
# File 'lib/br_boleto/remessa/cnab400/banco_brasil.rb', line 185

def detalhe_multas_e_juros_do_pagamento(pagamento, sequencial)
  detalhe = ''
  detalhe << pagamento.valor_juros_monetario_formatado(13)
  detalhe << "#{pagamento.data_desconto_formatado('%d%m%y')}".adjust_size_to(6,'0', :right )
  detalhe << "#{pagamento.valor_desconto_formatado}".adjust_size_to(13,'0', :right )
  detalhe << "#{pagamento.valor_iof_formatado}".adjust_size_to(13,'0', :right )
  detalhe << "#{pagamento.valor_abatimento_formatado}".adjust_size_to(13,'0', :right )
  detalhe
end

#detalhe_posicao_001_001Object

Identificação do Registro Detalhe



38
39
40
# File 'lib/br_boleto/remessa/cnab400/banco_brasil.rb', line 38

def detalhe_posicao_001_001
  '7'
end

#detalhe_posicao_038_062(pagamento) ⇒ Object

Nosso numero do pagamento e outras informações Posição: 063 até 108 POSIÇÂO TAM. Descrição


039 a 063 025 Cod. Controle da Empresa (Brancos) 064 a 080 017 Nosso Número 081 a 082 002 Número da Prestação (Zeros) 083 a 084 002 Grupo de Valor (Zeros) 085 a 087 003 Complemento do Registro (Brancos) 088 a 088 001 Indicativo de Mensagem ou Sacador/Avalista 089 a 091 003 Prefixo do Título (Brancos) 092 a 094 003 Variação da Carteira 095 a 095 001 Conta Caução (Zero) 096 a 101 006 Número do Borderô (Zeros) 102 a 106 005 Tipo de Cobrança 107 a 108 002 Carteira

Tamanho: 70



94
95
96
# File 'lib/br_boleto/remessa/cnab400/banco_brasil.rb', line 94

def detalhe_posicao_038_062(pagamento)
  detalhe_posicao_039_108(pagamento)
end

#detalhe_posicao_039_108(pagamento) ⇒ Object



103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
# File 'lib/br_boleto/remessa/cnab400/banco_brasil.rb', line 103

def detalhe_posicao_039_108(pagamento)
  detalhe = ''.adjust_size_to(25)
  detalhe << "#{pagamento.nosso_numero}".adjust_size_to(17, '0', :right)
  detalhe << ''.adjust_size_to(2, "0")
  detalhe << ''.adjust_size_to(2, "0")
  detalhe << ''.adjust_size_to(3)
  detalhe << ''.adjust_size_to(1)
  detalhe << ''.adjust_size_to(3)
  detalhe << "#{conta.variacao_carteira}".adjust_size_to(3, '0', :right)
  detalhe << '0'
  detalhe << ''.adjust_size_to(6, "0")
  detalhe << "#{tipo_cobranca}".adjust_size_to(5)
  detalhe << "#{conta.carteira}".adjust_size_to(2, '0', :right)
  detalhe
end

#detalhe_posicao_063_076(pagamento, sequencial) ⇒ Object



97
98
99
# File 'lib/br_boleto/remessa/cnab400/banco_brasil.rb', line 97

def detalhe_posicao_063_076(pagamento, sequencial)
  ''
end

#detalhe_posicao_077_108(pagamento, sequencial) ⇒ Object



100
101
102
# File 'lib/br_boleto/remessa/cnab400/banco_brasil.rb', line 100

def detalhe_posicao_077_108(pagamento, sequencial)
  ''
end

#header_posicao_002_a_002Object

Código da remessa Tipo: Numérico Tamanho: 001



15
16
17
# File 'lib/br_boleto/remessa/cnab400/banco_brasil.rb', line 15

def header_posicao_002_a_002
  '1'
end

#informacoes_da_conta(local) ⇒ Object

Informações da conta <- Específico para cada banco Posição: 018 até 037 (Detalhe) Posição: 027 até 046 (Header) Tamanho: 020



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/br_boleto/remessa/cnab400/banco_brasil.rb', line 46

def informacoes_da_conta(local)

  # POSIÇÂO:
  #  Detalhe  |  Header       TAM.  Descrição
  #  18 a 21     27 a 30      004   Agência
  #  22 a 22     31 a 31      001   Agência DV
  #  23 a 30     32 a 39      008   Conta Corrente
  #  31 a 31     40 a 40      001   Conta Corrente DV

  info = "#{conta.agencia}".adjust_size_to(4, '0', :right)
  info << "#{conta.agencia_dv}".adjust_size_to(1, '0', :right)
  info << "#{conta.conta_corrente}".adjust_size_to(8, '0', :right)
  info << "#{conta.conta_corrente_dv}".adjust_size_to(1, '0', :right)

  if local == :detalhe 
    # POSIÇÂO    TAM.  Descrição
    # -------------------------------
    # 032 a 038  007   Código Convênio
    info << "#{conta.convenio}".adjust_size_to(7, '0', :right)

  elsif local == :header
    # POSIÇÂO    TAM.  Descrição
    # -------------------------------
    # 041 a 046  006   Brancos
    info << ''.adjust_size_to(6, "0")
  end

  info
end

#informacoes_do_pagamento(pagamento, sequencial) ⇒ Object

Informações referente ao pagamento Posição 121 até 160 POSIÇÂO TAM. Descrição 121 a 126 006 Data do Vencimento do Título 127 a 139 013 Valor do Título 140 a 142 003 Banco Encarregado da Cobrança 143 a 147 005 Agência Depositária (preencher com zeros) 148 a 149 002 Espécie de Título 150 a 150 001 Identificação (Sempre ‘N’) 151 a 156 006 Data da emissão do Título 157 a 158 002 1a instrução 159 a 160 002 2a instrução Tamanho: 40



159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
# File 'lib/br_boleto/remessa/cnab400/banco_brasil.rb', line 159

def informacoes_do_pagamento(pagamento, sequencial)
  dados = ''
  dados << pagamento.data_vencimento_formatado('%d%m%y')
  dados << pagamento.valor_documento_formatado(13)
  dados << "#{conta.codigo_banco}".adjust_size_to(3,'0', :right)
  dados << ''.adjust_size_to(5,'0', :right)
  dados << "#{conta.get_especie_titulo(pagamento.especie_titulo, 400)}".adjust_size_to(2, '0', :right)
  dados << 'N'
  dados << pagamento.data_emissao_formatado('%d%m%y')

  # 1a / 2a Instrução, conforme documentação (pag. 11, Nota 09):
  dados << ''.adjust_size_to(2,'0', :right) # 1a Instrução
  dados << ''.adjust_size_to(2,'0', :right) # 2a Instrução
  dados
  
end

#informacoes_do_sacado(pagamento, sequencial) ⇒ Object

Informações referente aos dados do sacado/pagador Posição: 219 a 394 POSIÇÂO TAM. Descrição 219 a 220 002 Identificação do Tipo de Inscrição do Pagador 221 a 234 014 No Inscrição do Pagador 235 a 264 030 Nome do Pagador 265 a 274 010 Complemento Registro (Brancos) 275 a 314 040 Endereço Pagador 315 a 326 012 Bairro Pagador 327 a 331 005 CEP 332 a 334 003 Sufixo do CEP 335 a 349 015 Cidade Pagador 350 a 351 002 UF Pagador 352 a 391 040 Observações/Mensagem ou Sacador/Avalista * 292 a 293 002 Número de Dias Para Protesto 294 a 294 001 Complemento Registro (Branco)

Tamanho: 176



213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
# File 'lib/br_boleto/remessa/cnab400/banco_brasil.rb', line 213

def informacoes_do_sacado(pagamento, sequencial)
  info = ''
  # Tipo de Inscrição do Pagador: "01" = CPF , "02" = CNPJ , "03" = PIS/PASEP , "98" = Não tem , "99" = Outros
  info << "#{pagamento.pagador.tipo_cpf_cnpj}".adjust_size_to(2, '0', :right)
  info << "#{pagamento.pagador.cpf_cnpj}".adjust_size_to(14, '0', :right)
  info << "#{pagamento.pagador.nome}".adjust_size_to(30)
  info << ''.adjust_size_to(10)                                         # Complemento Registro (Brancos)
  info << "#{pagamento.pagador.endereco}".adjust_size_to(40)           
  info << "#{pagamento.pagador.bairro}".adjust_size_to(12)             
  info << "#{pagamento.pagador.cep}".adjust_size_to(8, '0', :right)    # CEP + Sufixo do CEP
  info << "#{pagamento.pagador.cidade}".adjust_size_to(15)             
  info << "#{pagamento.pagador.uf}".adjust_size_to(2)                  
  info << "#{sacador_avalista(pagamento)}".adjust_size_to(40)          # Observações/Mensagem ou Sacador/Avalista *
  info << ''.adjust_size_to(2)                                         # Quantidade de dias para Protesto
  info << ''.adjust_size_to(1)                                         # Complemento Registro (Brancos)
  info                                                
end

#sacador_avalista(pagamento) ⇒ Object

  • Composição dados Sacador/Avalista

Para CNPJ:

Posi

Para CPF:

Posi

Tamanho: 40



245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
# File 'lib/br_boleto/remessa/cnab400/banco_brasil.rb', line 245

def sacador_avalista(pagamento)
  info = ''
  if "#{pagamento.pagador.tipo_documento_avalista}".to_i == 2
    info << "#{pagamento.pagador.nome_avalista}".adjust_size_to(21)      # Sacador/Avalista (Nome)
    info << ''.adjust_size_to(1)                                         # Complemento Registro (Branco)
    info << "CNPJ"                                                       # CNPJ
    info << "#{pagamento.pagador.documento_avalista}".adjust_size_to(14) # Sacador/Avalista (CNPJ)
  elsif "#{pagamento.pagador.tipo_documento_avalista}".to_i == 1
    info << "#{pagamento.pagador.nome_avalista}".adjust_size_to(25)      # Sacador/Avalista (Nome)
    info << ''.adjust_size_to(1)                                         # Complemento Registro (Branco)
    info << "CPF"                                                        # CPF
    info << "#{pagamento.pagador.documento_avalista}".adjust_size_to(11) # Sacador/Avalista (CPF)
  end
  info
end

#tipo_cobrancaObject

TIPO DE COBRANÇA a) Carteiras 11 ou 17: - ‘04DSC’: Solicitação de registro na Modalidade Descontada - ‘08VDR’: Solicitação de registro na Modalidade BBVendor - ‘02VIN’: solicitação de registro na Modalidade Caucionada/Vinculada - BRANCOS: Registro na Modalidade Simples b) Demais Carteiras: - Brancos



127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
# File 'lib/br_boleto/remessa/cnab400/banco_brasil.rb', line 127

def tipo_cobranca
  if conta.carteira.to_i == 11 || conta.carteira.to_i == 17
    case conta.get_tipo_cobranca(conta.codigo_carteira, 400).to_i
    when 3
      '02VIN'
    when 4
      '04DSC'
    when 7
      '08VDR'
    else
      ''.adjust_size_to(5)
    end

  else
    ''.adjust_size_to(5)
  end
end