datespan utils
This commit is contained in:
		
							parent
							
								
									ca3f55933b
								
							
						
					
					
						commit
						622db5f25d
					
				@ -132,8 +132,9 @@ ledgerAccountTree depth l = treemap (ledgerAccount l) $ treeprune depth $ accoun
 | 
			
		||||
ledgerAccountTreeAt :: Ledger -> Account -> Maybe (Tree Account)
 | 
			
		||||
ledgerAccountTreeAt l acct = subtreeat acct $ ledgerAccountTree 9999 l
 | 
			
		||||
 | 
			
		||||
-- | The (explicit) date span containing all the ledger's transactions,
 | 
			
		||||
-- or DateSpan Nothing Nothing if there are no transactions.
 | 
			
		||||
-- | The date span containing all the ledger's (filtered) transactions,
 | 
			
		||||
-- or DateSpan Nothing Nothing if there are none.
 | 
			
		||||
ledgerDateSpan :: Ledger -> DateSpan
 | 
			
		||||
ledgerDateSpan l
 | 
			
		||||
    | null ts = DateSpan Nothing Nothing
 | 
			
		||||
    | otherwise = DateSpan (Just $ date $ head ts) (Just $ addDays 1 $ date $ last ts)
 | 
			
		||||
 | 
			
		||||
@ -163,3 +163,12 @@ rawLedgerConvertTimeLog t l0 = l0 { ledger_txns = convertedTimeLog ++ ledger_txn
 | 
			
		||||
                                  }
 | 
			
		||||
    where convertedTimeLog = entriesFromTimeLogEntries t $ open_timelog_entries l0
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
-- | The date span containing all the raw ledger's transactions,
 | 
			
		||||
-- or DateSpan Nothing Nothing if there are none.
 | 
			
		||||
rawLedgerDateSpan :: RawLedger -> DateSpan
 | 
			
		||||
rawLedgerDateSpan rl
 | 
			
		||||
    | null ts = DateSpan Nothing Nothing
 | 
			
		||||
    | otherwise = DateSpan (Just $ ltdate $ head ts) (Just $ addDays 1 $ ltdate $ last ts)
 | 
			
		||||
    where
 | 
			
		||||
      ts = sortBy (comparing ltdate) $ ledger_txns rl
 | 
			
		||||
 | 
			
		||||
@ -9,6 +9,7 @@ ingrained.
 | 
			
		||||
 | 
			
		||||
module Ledger.Transaction
 | 
			
		||||
where
 | 
			
		||||
import Ledger.Dates
 | 
			
		||||
import Ledger.Utils
 | 
			
		||||
import Ledger.Types
 | 
			
		||||
import Ledger.Dates
 | 
			
		||||
@ -39,3 +40,11 @@ sumTransactions = sum . map amount
 | 
			
		||||
 | 
			
		||||
nulltxn :: Transaction
 | 
			
		||||
nulltxn = Transaction 0 False (parsedate "1900/1/1") "" "" nullmixedamt RegularPosting
 | 
			
		||||
 | 
			
		||||
-- | Does the given transaction fall within the given date span ?
 | 
			
		||||
isTransactionInDateSpan :: DateSpan -> Transaction -> Bool
 | 
			
		||||
isTransactionInDateSpan (DateSpan Nothing Nothing)   _ = True
 | 
			
		||||
isTransactionInDateSpan (DateSpan Nothing (Just e))  (Transaction{date=d}) = d<e
 | 
			
		||||
isTransactionInDateSpan (DateSpan (Just b) Nothing)  (Transaction{date=d}) = d>=b
 | 
			
		||||
isTransactionInDateSpan (DateSpan (Just b) (Just e)) (Transaction{date=d}) = d>=b && d<e
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -35,8 +35,7 @@ showRegisterReport opts args l
 | 
			
		||||
    | otherwise = showtxns summaryts nulltxn startbal
 | 
			
		||||
    where
 | 
			
		||||
      interval = intervalFromOpts opts
 | 
			
		||||
      ts = sort $ filterempties $ filter matchapats $ filterdepth $ ledgerTransactions l
 | 
			
		||||
           where sort = sortBy (\a b -> compare (date a) (date b))
 | 
			
		||||
      ts = sortBy (comparing date) $ filterempties $ filter matchapats $ filterdepth $ ledgerTransactions l
 | 
			
		||||
      filterdepth | interval == NoInterval = filter (\t -> (accountNameLevel $ account t) <= depth)
 | 
			
		||||
                  | otherwise = id
 | 
			
		||||
      filterempties
 | 
			
		||||
@ -97,13 +96,6 @@ clipAccountNames :: Int -> [AccountName] -> [AccountName]
 | 
			
		||||
clipAccountNames d as = nub $ map (clip d) as 
 | 
			
		||||
    where clip d = accountNameFromComponents . take d . accountNameComponents
 | 
			
		||||
 | 
			
		||||
-- | Does the given transaction fall within the given date span ?
 | 
			
		||||
isTransactionInDateSpan :: DateSpan -> Transaction -> Bool
 | 
			
		||||
isTransactionInDateSpan (DateSpan Nothing Nothing)   _ = True
 | 
			
		||||
isTransactionInDateSpan (DateSpan Nothing (Just e))  (Transaction{date=d}) = d<e
 | 
			
		||||
isTransactionInDateSpan (DateSpan (Just b) Nothing)  (Transaction{date=d}) = d>=b
 | 
			
		||||
isTransactionInDateSpan (DateSpan (Just b) (Just e)) (Transaction{date=d}) = d>=b && d<e
 | 
			
		||||
 | 
			
		||||
-- | Show transactions one per line, with each date/description appearing
 | 
			
		||||
-- only once, and a running balance.
 | 
			
		||||
showtxns [] _ _ = ""
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user