class Febraban150A
Constants
- ID_SERVICO
Public Class Methods
new(master, versao = Febraban150::VERSAO)
click to toggle source
Calls superclass method
# 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
Public Instance Methods
get_codigo_banco()
click to toggle source
# File lib/formatos/febraban150/febraban_150_a.rb, line 153 def get_codigo_banco self.get_section_value(4).to_i end
get_codigo_convenio()
click to toggle source
# File lib/formatos/febraban150/febraban_150_a.rb, line 145 def get_codigo_convenio self.get_section_value(2) end
get_codigo_remessa()
click to toggle source
# File lib/formatos/febraban150/febraban_150_a.rb, line 141 def get_codigo_remessa self.get_section_value(1).to_i end
get_data_geracao()
click to toggle source
# 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_servico()
click to toggle source
# File lib/formatos/febraban150/febraban_150_a.rb, line 174 def get_identificacao_servico data = self.get_section_value(9) end
get_nome_banco()
click to toggle source
# File lib/formatos/febraban150/febraban_150_a.rb, line 157 def get_nome_banco self.get_section_value(5) end
get_nome_empresa()
click to toggle source
# File lib/formatos/febraban150/febraban_150_a.rb, line 149 def get_nome_empresa self.get_section_value(3) end
get_numero_sequencial()
click to toggle source
# 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_layout()
click to toggle source
# 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?()
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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
Protected Instance Methods
is_valid_04?()
click to toggle source
# File lib/formatos/febraban150/febraban_150_a.rb, line 112 def is_valid_04? result = (self.get_codigo_remessa > 0 and self.get_codigo_convenio.length > 0 and self.get_nome_empresa.length > 0 and self.get_codigo_banco > 0 and self.get_nome_banco.length > 0 and !self.get_data_geracao.nil? and self.get_numero_sequencial > 0 and self.get_versao_layout > 0 and self.get_identificacao_servico.length > 0) end
is_valid_05?()
click to toggle source
# File lib/formatos/febraban150/febraban_150_a.rb, line 124 def is_valid_05? result = (self.get_codigo_remessa > 0 and self.get_codigo_convenio.length > 0 and self.get_nome_empresa.length > 0 and self.get_codigo_banco > 0 and self.get_nome_banco.length > 0 and !self.get_data_geracao.nil? and self.get_numero_sequencial > 0 and self.get_versao_layout > 0 and self.get_identificacao_servico.length > 0) end
monta_versao_04()
click to toggle source
# File lib/formatos/febraban150/febraban_150_a.rb, line 26 def monta_versao_04 @section = Section.new({ 0 => Position.new(1, 1, false, 'A', true), # Código do Registro 1 => Position.new(2, 1, true), # Código Remessa (1-Remessa, 2-Retorno) 2 => Position.new(3, 20, false), # Código de ID enviado pelo Banco 3 => Position.new(4, 20, false), # Nome da Empresa 4 => Position.new(5, 3, true), # Código do Banco 5 => Position.new(6, 20, false), # Nome do Banco 6 => Position.new(7, 8, true), # Data de Geração de Arquivo 7 => Position.new(8, 6, true), # Número Sequencial do Arquivo 8 => Position.new(9, 2, true, @versao), # Versão do Layout (5, desde 05.05.2008) 9 => Position.new(10, 17, false, Febraban150A::ID_SERVICO), # Identificação ("DÉBITO AUTOMÁTICO") 10 => Position.new(11, 52, false), # Reservado pelo Sistema }) end
monta_versao_05()
click to toggle source
# File lib/formatos/febraban150/febraban_150_a.rb, line 42 def monta_versao_05 @section = Section.new({ 0 => Position.new(1, 1, false,'A', true), # Código do Registro 1 => Position.new(2, 1, true), # Código Remessa (1-Remessa, 2-Retorno) 2 => Position.new(3, 20, false), # Código de ID enviado pelo Banco 3 => Position.new(4, 20, false), # Nome da Empresa 4 => Position.new(5, 3, true), # Código do Banco 5 => Position.new(6, 20, false), # Nome do Banco 6 => Position.new(7, 8, true), # Data de Geração de Arquivo 7 => Position.new(8, 6, true), # Número Sequencial do Arquivo 8 => Position.new(9, 2, true, @versao), # Versão do Layout (5, desde 05.05.2008) 9 => Position.new(10, 17, false, Febraban150A::ID_SERVICO), # Identificação ("DÉBITO AUTOMÁTICO") 10 => Position.new(11, 52, false), # Reservado pelo Sistema }) end
processa_arquivo_04(file)
click to toggle source
# File lib/formatos/febraban150/febraban_150_a.rb, line 72 def processa_arquivo_04(file) self.set_codigo_remessa file[1..1] self.set_codigo_convenio file[2..21] self.set_nome_empresa file[22..41] self.set_codigo_banco file[42..44] self.set_nome_banco file[45..64] self.set_data_geracao file[65..72] self.set_numero_sequencial file[73..78] self.set_versao_layout file[79..80] self.set_identificacao_servico file[81..99] self.set_reservado file[98..149] end
processa_arquivo_05(file)
click to toggle source
# File lib/formatos/febraban150/febraban_150_a.rb, line 85 def processa_arquivo_05(file) self.set_codigo_remessa file[1..1] self.set_codigo_convenio file[2..21] self.set_nome_empresa file[22..41] self.set_codigo_banco file[42..44] self.set_nome_banco file[45..64] self.set_data_geracao file[65..72] self.set_numero_sequencial file[73..78] self.set_versao_layout file[79..80] self.set_identificacao_servico file[81..99] self.set_reservado file[98..149] end