Class: Febraban150A

Inherits:
FormatSection
  • Object
show all
Defined in:
lib/formatos/febraban150/febraban_150_a.rb

Overview



Header - Empresa e Banco

Constant Summary collapse

ID_SERVICO =
"DÉBITO AUTOMÁTICO"

Instance Method Summary collapse

Constructor Details

#initialize(master, versao = Febraban150::VERSAO) ⇒ Febraban150A

Returns a new instance of Febraban150A.



10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/formatos/febraban150/febraban_150_a.rb', line 10

def initialize(master, versao = Febraban150::VERSAO)
  super(master, true, true, false)

  @versao = versao

  case @versao
    when '04'
      self.monta_versao_04
    when '05'
      self.monta_versao_05
    else
      raise "Seção A: Versão não suportada: #{@versao}"
  end
end

Instance Method Details

#get_codigo_bancoObject



153
154
155
# File 'lib/formatos/febraban150/febraban_150_a.rb', line 153

def get_codigo_banco
  self.get_section_value(4).to_i
end

#get_codigo_convenioObject



145
146
147
# File 'lib/formatos/febraban150/febraban_150_a.rb', line 145

def get_codigo_convenio
  self.get_section_value(2)
end

#get_codigo_remessaObject



141
142
143
# File 'lib/formatos/febraban150/febraban_150_a.rb', line 141

def get_codigo_remessa
  self.get_section_value(1).to_i
end

#get_data_geracaoObject



161
162
163
164
# File 'lib/formatos/febraban150/febraban_150_a.rb', line 161

def get_data_geracao
  data = self.get_section_value(6)
  Date.new(data[0..3].to_i, data[4..5].to_i, data[6..7].to_i)
end

#get_identificacao_servicoObject



174
175
176
# File 'lib/formatos/febraban150/febraban_150_a.rb', line 174

def get_identificacao_servico
  data = self.get_section_value(9)
end

#get_nome_bancoObject



157
158
159
# File 'lib/formatos/febraban150/febraban_150_a.rb', line 157

def get_nome_banco
  self.get_section_value(5)
end

#get_nome_empresaObject



149
150
151
# File 'lib/formatos/febraban150/febraban_150_a.rb', line 149

def get_nome_empresa
  self.get_section_value(3)
end

#get_numero_sequencialObject



166
167
168
# File 'lib/formatos/febraban150/febraban_150_a.rb', line 166

def get_numero_sequencial
  data = self.get_section_value(7).to_i
end

#get_versao_layoutObject



170
171
172
# File 'lib/formatos/febraban150/febraban_150_a.rb', line 170

def get_versao_layout
  data = self.get_section_value(8).to_i
end

#is_valid?Boolean

Returns:

  • (Boolean)


102
103
104
105
106
107
108
109
# File 'lib/formatos/febraban150/febraban_150_a.rb', line 102

def is_valid?
  case @versao
    when '04'
      self.is_valid_04?
    when '05'
      self.is_valid_05?
  end
end

#process_section(file) ⇒ Object



62
63
64
65
66
67
68
69
# File 'lib/formatos/febraban150/febraban_150_a.rb', line 62

def process_section(file)
  case @versao
    when '04'
      self.processa_arquivo_04(file)
    when '05'
      self.processa_arquivo_05(file)
  end
end

#set_codigo_banco(codigo) ⇒ Object



219
220
221
222
223
224
225
226
227
# File 'lib/formatos/febraban150/febraban_150_a.rb', line 219

def set_codigo_banco codigo
  codigo = codigo.to_i

  if codigo > 0
    self.set_section_value(4, codigo)
  else
    raise "#{get_id}: Código do Banco não pode estar vazio"
  end
end

#set_codigo_convenio(code) ⇒ Object



194
195
196
197
198
199
200
201
202
203
204
205
206
207
# File 'lib/formatos/febraban150/febraban_150_a.rb', line 194

def set_codigo_convenio code
  code = code.to_s

  if !code.nil? and
    (code.length > 0 and code.length <= 20)

    self.set_section_value(2, code)
  else
    raise "#{get_id}: Código atribuído pelo Banco, para seu controle interno.
            Este código será informado à Empresa, pelo Banco, antes
            da implantação do serviço de débito automático.
            Valor: #{code}"
  end
end

#set_codigo_remessa(code) ⇒ Object



182
183
184
185
186
187
188
189
190
191
192
# File 'lib/formatos/febraban150/febraban_150_a.rb', line 182

def set_codigo_remessa code
  code = code.to_i

  if code == 1 or code == 2
    self.set_section_value(1, code)
  else
    raise "#{get_id}: 1 = Remessa - Enviado pela Empresa para o Banco
            2 = Retorno - Enviado pelo Banco para a Empresa
            Valor: #{code}"
  end
end

#set_data_geracao(data) ⇒ Object



239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
# File 'lib/formatos/febraban150/febraban_150_a.rb', line 239

def set_data_geracao data
  begin
    data = Date.strptime(data, "%Y%m%d") if data.is_a?(String)
    real_data = data.strftime("%Y%m%d")

    if real_data.length == 8
      self.set_section_value(6, real_data)
    else
      raise
    end

  rescue
    raise "#{get_id}: Data de Geração Inválida
            Valor: #{data}"
  end
end

#set_identificacao_servico(identificacao) ⇒ Object



278
279
280
281
282
283
284
285
286
287
# File 'lib/formatos/febraban150/febraban_150_a.rb', line 278

def set_identificacao_servico identificacao
  identificacao = identificacao.to_s

  if identificacao.length > 0
    self.set_section_value(9, identificacao)
  else
    raise "#{get_id}: Deve ser Débito Automático
            Valor: #{identificacao}"
  end
end

#set_nome_banco(nome) ⇒ Object



229
230
231
232
233
234
235
236
237
# File 'lib/formatos/febraban150/febraban_150_a.rb', line 229

def set_nome_banco nome
  nome = nome.to_s

  if nome.to_s.length > 0
    self.set_section_value(5, nome)
  else
    raise "#{get_id}: Nome do Banco não pode estar vazio"
  end
end

#set_nome_empresa(nome) ⇒ Object



209
210
211
212
213
214
215
216
217
# File 'lib/formatos/febraban150/febraban_150_a.rb', line 209

def set_nome_empresa nome
  nome = nome.to_s

  if nome.to_s.length > 0
    self.set_section_value(3, nome)
  else
    raise "#{get_id}: Nome da Empresa não pode estar vazio"
  end
end

#set_numero_sequencial(numero) ⇒ Object



256
257
258
259
260
261
262
263
264
265
# File 'lib/formatos/febraban150/febraban_150_a.rb', line 256

def set_numero_sequencial numero
  numero = numero.to_i

  if numero > 0
    self.set_section_value(7, numero)
  else
    raise "#{get_id}: Número Sequencial deve ser positivo e maior que 0
            Valor: #{numero}"
  end
end

#set_reservado(reservado) ⇒ Object



289
290
291
292
# File 'lib/formatos/febraban150/febraban_150_a.rb', line 289

def set_reservado reservado
  reservado = reservado.to_s
  self.set_section_value(10, reservado)
end

#set_versao_layout(versao) ⇒ Object



267
268
269
270
271
272
273
274
275
276
# File 'lib/formatos/febraban150/febraban_150_a.rb', line 267

def set_versao_layout versao
  versao = versao.to_i

  if versao > 0
    self.set_section_value(8, versao)
  else
    raise "#{get_id}: Versão deve ser 05 (a partir de 05.05.2008)
            Valor: #{versao}"
  end
end