    {-# LANGUAGE QuasiQuotes, RecordWildCards, NoCPP #-}
    {-|

    The @cashflow@ command prints a simplified cashflow statement.  It just
    shows the change in all "cash" accounts for the period (without the
    traditional segmentation into operating, investing, and financing
    cash flows.)

    -}

    module Hledger.Cli.Cashflow (
      cashflowmode
     ,cashflow
     ,tests_Hledger_Cli_Cashflow
    ) where

    import Data.String.Here
    import System.Console.CmdArgs.Explicit
    import Test.HUnit

    import Hledger
    import Hledger.Cli.CliOptions
    import Hledger.Cli.BalanceView

    cfBV = BalanceView {
             bvmode     = "cashflow",
             bvaliases  = ["cf"],
             bvhelp     = [here|This command displays a simple cashflow statement, showing changes
    in "cash" accounts. It assumes that these accounts are under a top-level
    `asset` account and do not contain `receivable` or `A/R` in their name
    (plural forms also allowed).
              |],
             bvtitle    = "Cashflow Statement",
             bvqueries  = [("Cash flows", journalCashAccountQuery)],
             bvtype     = PeriodChange
          }

    cashflowmode :: Mode RawOpts
    cashflowmode = balanceviewmode cfBV

    cashflow :: CliOpts -> Journal -> IO ()
    cashflow = balanceviewReport cfBV

    tests_Hledger_Cli_Cashflow :: Test
    tests_Hledger_Cli_Cashflow = TestList
     [
     ]