Class: SPED2SQL::Layout::Mapa

Inherits:
Object
  • Object
show all
Defined in:
lib/sped2sql/layout/mapa.rb

Class Method Summary collapse

Class Method Details

.arquivo_template(tipo) ⇒ Object



39
40
41
42
43
44
45
46
# File 'lib/sped2sql/layout/mapa.rb', line 39

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) ⇒ Object

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] }



28
29
30
31
32
33
34
35
36
37
# File 'lib/sped2sql/layout/mapa.rb', line 28

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