    {-# LANGUAGE QuasiQuotes, TemplateHaskell, OverloadedStrings, NoCPP #-}
    {-|

    The @incomestatement@ command prints a simple income statement (profit & loss) report.

    -}

    module Hledger.Cli.Incomestatement (
      incomestatementmode
     ,incomestatement
     ,tests_Hledger_Cli_Incomestatement
    ) where

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

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

    isBV = BalanceView {
             bvmode     = "incomestatement",
             bvaliases  = ["is"],
             bvhelp     = [here|This command displays a simple income statement, showing revenues
    and expenses during a period. It assumes that these accounts are under a
    top-level `revenue` or `income` or `expense` account (plural forms
    also allowed).

              |],
             bvtitle    = "Income Statement",
             bvqueries  = [ ("Revenues", journalIncomeAccountQuery),
                            ("Expenses", journalExpenseAccountQuery)
                          ],
             bvtype     = PeriodChange
          }

    incomestatementmode :: Mode RawOpts
    incomestatementmode = balanceviewmode isBV

    incomestatement :: CliOpts -> Journal -> IO ()
    incomestatement = balanceviewReport isBV

    tests_Hledger_Cli_Incomestatement :: Test
    tests_Hledger_Cli_Incomestatement = TestList
     [
     ]