hledger/TimeLog.hs
2007-07-04 12:05:54 +00:00

52 lines
1.4 KiB
Haskell

module TimeLog
where
import Utils
import Types
import Currency
import Amount
import LedgerTransaction
import LedgerEntry
import LedgerFile
instance Show TimeLogEntry where
show t = printf "%s %s %s" (show $ tlcode t) (tldatetime t) (tlcomment t)
instance Show TimeLog where
show tl = printf "TimeLog with %d entries" $ length $ timelog_entries tl
ledgerFromTimeLog :: TimeLog -> LedgerFile
ledgerFromTimeLog tl =
LedgerFile [] [] (entriesFromTimeLogEntries $ timelog_entries tl)
entriesFromTimeLogEntries :: [TimeLogEntry] -> [LedgerEntry]
entriesFromTimeLogEntries [clockin] =
entriesFromTimeLogEntries [clockin, clockoutNowEntry]
entriesFromTimeLogEntries [clockin,clockout] =
[
LedgerEntry {
edate = indate,
estatus = True,
ecode = "",
edescription = accountname,
ecomment = "",
etransactions = [
LedgerTransaction accountname amount "",
LedgerTransaction "TIME" (-amount) ""
]}
]
where
accountname = tlcomment clockin
intime = tldatetime clockin
indate = dateFrom $ tldatetime clockin
outtime = tldatetime clockout
amount = hours 0 -- read $ outtime - intime
entriesFromTimeLogEntries many =
(entriesFromTimeLogEntries $ take 2 many) ++
(entriesFromTimeLogEntries $ drop 2 many)
clockoutNowEntry = TimeLogEntry ' ' "" ""
dateFrom = id