penny-lib-0.2.0.0: Penny/Lincoln/Queries.hs
module Penny.Lincoln.Queries where
import qualified Penny.Lincoln.Bits as B
import qualified Penny.Lincoln.Meta as M
import Penny.Lincoln.Family.Child (child, parent)
import qualified Penny.Lincoln.Transaction as T
import Penny.Lincoln.Balance (Balance, entryToBalance)
best ::
(T.Posting -> Maybe a)
-> (T.TopLine -> Maybe a)
-> T.PostFam
-> Maybe a
best fp ft c = case fp . child . T.unPostFam $ c of
Just r -> Just r
Nothing -> ft . parent . T.unPostFam $ c
payee :: T.PostFam -> Maybe B.Payee
payee = best T.pPayee T.tPayee
number :: T.PostFam -> Maybe B.Number
number = best T.pNumber T.tNumber
flag :: T.PostFam -> Maybe B.Flag
flag = best T.pFlag T.tFlag
postingMemo :: T.PostFam -> B.Memo
postingMemo = T.pMemo . child . T.unPostFam
transactionMemo :: T.PostFam -> B.Memo
transactionMemo = T.tMemo . parent . T.unPostFam
dateTime :: T.PostFam -> B.DateTime
dateTime = T.tDateTime . parent . T.unPostFam
account :: T.PostFam -> B.Account
account = T.pAccount . child . T.unPostFam
tags :: T.PostFam -> B.Tags
tags = T.pTags . child . T.unPostFam
entry :: T.PostFam -> B.Entry
entry = T.pEntry . child . T.unPostFam
balance :: T.PostFam -> Balance
balance = entryToBalance . entry
drCr :: T.PostFam -> B.DrCr
drCr = B.drCr . entry
amount :: T.PostFam -> B.Amount
amount = B.amount . entry
qty :: T.PostFam -> B.Qty
qty = B.qty . amount
commodity :: T.PostFam -> B.Commodity
commodity = B.commodity . amount
postingMeta :: T.PostFam -> M.PostingMeta
postingMeta = T.pMeta . child . T.unPostFam
topLineMeta :: T.PostFam -> M.TopLineMeta
topLineMeta = T.tMeta . parent . T.unPostFam
topMemoLine :: T.PostFam -> Maybe M.TopMemoLine
topMemoLine = M.topMemoLine . topLineMeta
topLineLine :: T.PostFam -> Maybe M.TopLineLine
topLineLine = M.topLineLine . topLineMeta
filename :: T.PostFam -> Maybe M.Filename
filename = M.filename . topLineMeta
globalTransaction :: T.PostFam -> Maybe M.GlobalTransaction
globalTransaction = M.globalTransaction . topLineMeta
fileTransaction :: T.PostFam -> Maybe M.FileTransaction
fileTransaction = M.fileTransaction . topLineMeta
postingLine :: T.PostFam -> Maybe M.PostingLine
postingLine = M.postingLine . postingMeta
postingFormat :: T.PostFam -> Maybe M.Format
postingFormat = M.postingFormat . postingMeta
globalPosting :: T.PostFam -> Maybe M.GlobalPosting
globalPosting = M.globalPosting . postingMeta
filePosting :: T.PostFam -> Maybe M.FilePosting
filePosting = M.filePosting . postingMeta