class Moneymanager::Parser

Public Class Methods

new(f) click to toggle source
# File lib/moneymanager/parser.rb, line 25
def initialize(f)
  @local_file = f
end

Public Instance Methods

keys() click to toggle source
# File lib/moneymanager/parser.rb, line 5
def keys
  %i[auftragskonto
     buchungstag
     valutadatum
     buchungstext
     verwendungszweck
     glaeubiger_id
     mandatsreferenz
     kundenreferenz_endtoend
     sammlerreferenz
     lastschrift_ursprungsbetrag
     auslagenersatz_ruecklastschrift
     beguenstigterzahlungspflichtiger
     kontonummeriban
     bic_swiftcode
     betrag
     waehrung
     info]
end
parse() click to toggle source
# File lib/moneymanager/parser.rb, line 29
def parse
  options = { headers: true, return_headers: false, header_converters: :symbol, converters: :all, col_sep: ';' }
  entries = []
  invalid = 0
  CSV.foreach(@local_file, options) do |row|
    if row[:info] == 'Umsatz gebucht'
      entry = Entry.new
      entry.date = Date.strptime(row[:buchungstag], '%d.%m.%y')
      entry.reason = row[:verwendungszweck].squeeze(' ')
      entry.amount = row[:betrag].to_s.tr(',', '.').to_f
      entry.company = row[:beguenstigterzahlungspflichtiger].squeeze(' ')
      entry.raw = row.to_csv.gsub(/\s+/, "")
      entries << entry
    else
      invalid += 1
    end
  end
  puts "Invalid: #{invalid}"
  entries
end