;bin:report1: cleanups

This commit is contained in:
Simon Michael 2023-10-23 19:29:32 +01:00
parent 15e76488e3
commit c195e35572
2 changed files with 29 additions and 31 deletions

View File

@ -1,12 +1,12 @@
#!/usr/bin/env stack #!/usr/bin/env stack
-- stack runghc --verbosity error --package hledger --package hledger-lib --package text --package safe -- 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 -- -- 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 -- A custom compound report - like incomestatement but with different,
-- subheadings/subreports. More verbose and haskelly than -- customisable subheadings/subreports. More verbose and haskelly but
-- hledger-report1.sh but also more robust and powerful. -- also more robust and powerful than hledger-report1.sh.
{-# LANGUAGE OverloadedStrings, PackageImports #-} {-# LANGUAGE OverloadedStrings, PackageImports #-}
@ -15,7 +15,6 @@ import qualified "text" Data.Text as T
import qualified "text" Data.Text.IO as T import qualified "text" Data.Text.IO as T
cmdmode = hledgerCommandMode (unlines cmdmode = hledgerCommandMode (unlines
-- Command name, then --help text, then _FLAGS; empty help lines get stripped:
["report1" ["report1"
,"A custom compound report - like the incomestatement command but easier to customise." ,"A custom compound report - like the incomestatement command but easier to customise."
,"Usage: hledger-report1 [OPTS] [ARGS]" ,"Usage: hledger-report1 [OPTS] [ARGS]"
@ -25,34 +24,33 @@ cmdmode = hledgerCommandMode (unlines
main = do main = do
opts@CliOpts{reportspec_=rspec} <- getHledgerCliOpts cmdmode opts@CliOpts{reportspec_=rspec} <- getHledgerCliOpts cmdmode
withJournalDo opts $ flip compoundBalanceCommand opts $ withJournalDo opts $ flip compoundBalanceCommand opts $
-- define the custom report
-- see https://hackage.haskell.org/package/hledger/docs/Hledger-Cli-CompoundBalanceCommand.html -- 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 -- and https://hackage.haskell.org/package/hledger-lib-1.31/docs/Hledger-Query.html
CompoundBalanceCommandSpec { CompoundBalanceCommandSpec {
cbcdoc = "report1 help text", cbcdoc = "report1 help text",
cbctitle = "Report1 Statement", cbctitle = "Report1 Statement",
cbcqueries = [ cbcaccum = PerPeriod,
cbcqueries = [
CBCSubreportSpec{ CBCSubreportSpec{
cbcsubreporttitle="Revenues" cbcsubreporttitle="Revenues"
,cbcsubreportquery=Type [Revenue] ,cbcsubreportquery=Type [Revenue]
,cbcsubreportoptions=(\ropts -> ropts{normalbalance_=Just NormallyNegative}) ,cbcsubreportoptions=(\ropts -> ropts{normalbalance_=Just NormallyNegative})
,cbcsubreporttransform=fmap maNegate ,cbcsubreporttransform=fmap maNegate
,cbcsubreportincreasestotal=True ,cbcsubreportincreasestotal=True
} }
,CBCSubreportSpec{ ,CBCSubreportSpec{
cbcsubreporttitle="Operating Expenses" cbcsubreporttitle="Operating Expenses"
,cbcsubreportquery=And [Type [Expense], Acct $ toRegex' "Operating"] ,cbcsubreportquery=And [Type [Expense], Acct $ toRegex' "Operating"]
,cbcsubreportoptions=(\ropts -> ropts{normalbalance_=Just NormallyPositive}) ,cbcsubreportoptions=(\ropts -> ropts{normalbalance_=Just NormallyPositive})
,cbcsubreporttransform=id ,cbcsubreporttransform=id
,cbcsubreportincreasestotal=False ,cbcsubreportincreasestotal=False
} }
,CBCSubreportSpec{ ,CBCSubreportSpec{
cbcsubreporttitle="Other Expenses" cbcsubreporttitle="Other Expenses"
,cbcsubreportquery=And [Type [Expense], Not $ Acct $ toRegex' "Operating"] ,cbcsubreportquery=And [Type [Expense], Not $ Acct $ toRegex' "Operating"]
,cbcsubreportoptions=(\ropts -> ropts{normalbalance_=Just NormallyPositive}) ,cbcsubreportoptions=(\ropts -> ropts{normalbalance_=Just NormallyPositive})
,cbcsubreporttransform=id ,cbcsubreporttransform=id
,cbcsubreportincreasestotal=False ,cbcsubreportincreasestotal=False
} }
], ]
cbcaccum = PerPeriod
} }

View File

@ -3,7 +3,7 @@
# subheadings/subreports. A bit hacky but quick and short. # subheadings/subreports. A bit hacky but quick and short.
# See also hledger-report1.hs. # See also hledger-report1.hs.
echo "Report1 Statement `date +%Y-%m-%d`" echo "Report1 Statement $(date +%Y-%m-%d)"
printf "\nRevenues\n" printf "\nRevenues\n"
hledger bal expr:"type:r and $@" | tail +2 hledger bal expr:"type:r and $@" | tail +2
printf "\nOperating Expenses\n" printf "\nOperating Expenses\n"