class SPED2SQL::Layout::Mapa

Public Class Methods

arquivo_template(tipo) click to toggle source
# File lib/sped2sql/layout/mapa.rb, line 38
def self.arquivo_template(tipo)
  case tipo
  when :efd_icms_ipi
    File.join(TEMPLATE_PATH, 'efd_icms_ipi.txt')
  else
    fail(ArgumentError, "Template inexistente: #{tipo}")
  end
end
carrega!(fonte) click to toggle source

Carrega um mapa (arquivo csv) para um hash

Esse mapa define o tipo de dado em cada campo de um registro do SPED e eh utilizado para fazer a normalizacao do dado vindo do arquivo SPED na hora de inserir no banco de dados

Exemplo de um mapa:

  • Para um arquivo SPED: |0001|Dados aleatorios|Dados aleatorios| |0001|Dados do Fornecedor|01012014|1150,00|

  • O mapa deveria ser: |0001|string|string|string| |0175|string|string|date|decimal|

O hash final sera: { “0001” => [:string, :string], “0175” => [:string, :date, :decimal] }

# File lib/sped2sql/layout/mapa.rb, line 27
def self.carrega!(fonte)
  mapa = {}

  CSV.foreach(fonte, col_sep: '|') do |row|
    linha = row.clone.compact
    mapa[linha[0]] = linha[1..-1].map(&:to_sym)
  end

  mapa
end