class KPM::Account

def sanitize_and_import(source_file, skip_payment_methods)

fix_dates; fill_empty_column;
import helpers: sanitize_and_import; import; sanitize; replace_tenant_record_id; replace_account_record_id; replace_boolean;
def sanitize_and_import(source_file, skip_payment_methods)
  tables = {}
  error_importing_data = false
  File.open(source_file, 'r:UTF-8') do |data|
    rows = nil
    table_name = nil
    cols_names = nil
    data.each_line do |line|
      words = line.strip.split(' ')
      if /--/.match(words[0])
        unless table_name.nil?
          cols_names.shift if @generate_record_id
          tables[table_name] = { col_names: cols_names, rows: rows }
        end
        table_name = words[1]
        cols_names = words[2].strip.split(@delimiter)
        rows = []
      elsif !table_name.nil?
        row = process_import_data(line, table_name, cols_names, skip_payment_methods, rows)
        next if row.nil?
        rows.push(row)
      else
        error_importing_data = true
        break
      end
    end
    unless table_name.nil? || error_importing_data
      cols_names.shift if @generate_record_id
      tables[table_name] = { col_names: cols_names, rows: rows }
    end
    error_importing_data = true if tables.empty?
  end
  raise Interrupt, "Data on #{source_file} is invalid" if error_importing_data
  import(tables)
end