{-# LANGUAGE OverloadedStrings, QuasiQuotes, NamedFieldPuns #-} -- | /journal handlers. module Handler.JournalR where import Import import Handler.Common (accountQuery, hledgerLayout, mixedAmountAsHtml, numberTransactionsReportItems) import Hledger.Cli.CliOptions import Hledger.Data import Hledger.Query import Hledger.Reports import Hledger.Utils import Hledger.Web.WebOptions -- | The formatted journal view, with sidebar. getJournalR :: Handler Html getJournalR = do vd@VD{j, m, opts, qopts} <- getViewData -- XXX like registerReportAsHtml let title = case inAccount qopts of Nothing -> "General Journal" Just (a, inclsubs) -> "Transactions in " <> a <> if inclsubs then "" else " (excluding subaccounts)" title' = title <> if m /= Any then ", filtered" else "" maincontent = transactionsReportAsHtml $ journalTransactionsReport (reportopts_ $ cliopts_ opts) j m hledgerLayout vd "journal" [hamlet|
| Date | Description | Account | Amount $forall i <- numberTransactionsReportItems items ^{transactionReportItem i} |] transactionReportItem :: (Int, Bool, Bool, Bool, TransactionsReportItem) -> HtmlUrl AppRoute transactionReportItem (_, _, _, _, (torig, _, split, _, amt, _)) = [hamlet| | 
|---|---|---|---|
| #{date} | #{textElideRight 60 desc} | $if showamt \#{mixedAmountAsHtml amt} $forall p' <- tpostings torig | |
| #{elideAccountName 40 $ paccount p'} | #{mixedAmountAsHtml $ pamount p'} |] where acctlink a = (RegisterR, [("q", accountQuery a)]) (date, desc) = (show $ tdate torig, tdescription torig) showamt = not split || not (isZeroMixedAmount amt) | ||