packages feed

csv-to-qif-0.3.3: src/QifData.hs

-----------------------------------------------------------------------------
--
-- Module      :  QifData
-- Copyright   :  (c) Ingolf Wagner, (c) Jonathan Kochems
-- License     :  BSD3
--
-- Maintainer  :  Jonathan Kochems <jonathan.kochems@gmail.com>
-- Stability   :  unstable
-- Portability :
--
--
--
-----------------------------------------------------------------------------
module QifData where

data Qif = Qif
  { typeinfo     :: String
  , transactions :: [Transaction]
  } deriving (Eq, Show)

typeinfoToString :: String -> String
typeinfoToString typevalue = "!Type:" ++ typevalue

qifToLines :: Qif -> [String]
qifToLines qif = typeinfoToString tinfo : foo trans
  where
    tinfo = typeinfo qif
    trans = transactions qif
    foo []     = []
    foo (t:ts) = toQif t ++ ["^"] ++ foo ts

qifToString :: Qif -> String
qifToString = unlines . qifToLines

data Transaction = Transaction
  { date        :: String
  , description :: String
  , text        :: String
  , balance     :: String
  } deriving (Eq, Show)

toQif :: Transaction -> [String]
toQif trans = ["P" ++ d, "T" ++ money, "D" ++ time, "M" ++ msg]
  where
    d = description trans
    money = balance trans
    time = date trans
    msg = text trans