52 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Haskell
		
	
	
	
	
	
			
		
		
	
	
			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
 |