From c195e35572bd8119c0cabfbd0270fc6e00ccfd58 Mon Sep 17 00:00:00 2001 From: Simon Michael Date: Mon, 23 Oct 2023 19:29:32 +0100 Subject: [PATCH] ;bin:report1: cleanups --- bin/hledger-report1.hs | 58 ++++++++++++++++++++---------------------- bin/hledger-report1.sh | 2 +- 2 files changed, 29 insertions(+), 31 deletions(-) diff --git a/bin/hledger-report1.hs b/bin/hledger-report1.hs index 4577e8b29..5c7f66643 100755 --- a/bin/hledger-report1.hs +++ b/bin/hledger-report1.hs @@ -1,12 +1,12 @@ #!/usr/bin/env stack -- stack runghc --verbosity error --package hledger --package hledger-lib --package text --package safe --- ^ use a local source hledger (in case you need the latest) +-- (use the local hledger source) -- -- stack script --compile --resolver nightly-2023-10-13 --verbosity info --package hledger --package text --- -- ^ or use a released hledger from stackage +-- -- (use a released hledger from stackage) --- A custom compound report - like incomestatement but with different --- subheadings/subreports. More verbose and haskelly than --- hledger-report1.sh but also more robust and powerful. +-- A custom compound report - like incomestatement but with different, +-- customisable subheadings/subreports. More verbose and haskelly but +-- also more robust and powerful than hledger-report1.sh. {-# LANGUAGE OverloadedStrings, PackageImports #-} @@ -15,7 +15,6 @@ import qualified "text" Data.Text as T import qualified "text" Data.Text.IO as T cmdmode = hledgerCommandMode (unlines - -- Command name, then --help text, then _FLAGS; empty help lines get stripped: ["report1" ,"A custom compound report - like the incomestatement command but easier to customise." ,"Usage: hledger-report1 [OPTS] [ARGS]" @@ -25,34 +24,33 @@ cmdmode = hledgerCommandMode (unlines main = do opts@CliOpts{reportspec_=rspec} <- getHledgerCliOpts cmdmode withJournalDo opts $ flip compoundBalanceCommand opts $ - -- define the custom report -- see https://hackage.haskell.org/package/hledger/docs/Hledger-Cli-CompoundBalanceCommand.html -- and https://hackage.haskell.org/package/hledger-lib-1.31/docs/Hledger-Query.html CompoundBalanceCommandSpec { - cbcdoc = "report1 help text", - cbctitle = "Report1 Statement", - cbcqueries = [ + cbcdoc = "report1 help text", + cbctitle = "Report1 Statement", + cbcaccum = PerPeriod, + cbcqueries = [ CBCSubreportSpec{ - cbcsubreporttitle="Revenues" - ,cbcsubreportquery=Type [Revenue] - ,cbcsubreportoptions=(\ropts -> ropts{normalbalance_=Just NormallyNegative}) - ,cbcsubreporttransform=fmap maNegate - ,cbcsubreportincreasestotal=True - } + cbcsubreporttitle="Revenues" + ,cbcsubreportquery=Type [Revenue] + ,cbcsubreportoptions=(\ropts -> ropts{normalbalance_=Just NormallyNegative}) + ,cbcsubreporttransform=fmap maNegate + ,cbcsubreportincreasestotal=True + } ,CBCSubreportSpec{ - cbcsubreporttitle="Operating Expenses" - ,cbcsubreportquery=And [Type [Expense], Acct $ toRegex' "Operating"] - ,cbcsubreportoptions=(\ropts -> ropts{normalbalance_=Just NormallyPositive}) - ,cbcsubreporttransform=id - ,cbcsubreportincreasestotal=False - } + cbcsubreporttitle="Operating Expenses" + ,cbcsubreportquery=And [Type [Expense], Acct $ toRegex' "Operating"] + ,cbcsubreportoptions=(\ropts -> ropts{normalbalance_=Just NormallyPositive}) + ,cbcsubreporttransform=id + ,cbcsubreportincreasestotal=False + } ,CBCSubreportSpec{ - cbcsubreporttitle="Other Expenses" - ,cbcsubreportquery=And [Type [Expense], Not $ Acct $ toRegex' "Operating"] - ,cbcsubreportoptions=(\ropts -> ropts{normalbalance_=Just NormallyPositive}) - ,cbcsubreporttransform=id - ,cbcsubreportincreasestotal=False - } - ], - cbcaccum = PerPeriod + cbcsubreporttitle="Other Expenses" + ,cbcsubreportquery=And [Type [Expense], Not $ Acct $ toRegex' "Operating"] + ,cbcsubreportoptions=(\ropts -> ropts{normalbalance_=Just NormallyPositive}) + ,cbcsubreporttransform=id + ,cbcsubreportincreasestotal=False + } + ] } diff --git a/bin/hledger-report1.sh b/bin/hledger-report1.sh index 41dabdab1..4cb192185 100755 --- a/bin/hledger-report1.sh +++ b/bin/hledger-report1.sh @@ -3,7 +3,7 @@ # subheadings/subreports. A bit hacky but quick and short. # See also hledger-report1.hs. -echo "Report1 Statement `date +%Y-%m-%d`" +echo "Report1 Statement $(date +%Y-%m-%d)" printf "\nRevenues\n" hledger bal expr:"type:r and $@" | tail +2 printf "\nOperating Expenses\n"