a simplistic cashflow statement to complete the trio
This commit is contained in:
parent
483eb09a82
commit
d30cd5847a
10
MANUAL.md
10
MANUAL.md
@ -764,6 +764,16 @@ This is intended to display a standard-looking
|
|||||||
[balance sheet](http://en.wikipedia.org/wiki/Balance_sheet). Currently
|
[balance sheet](http://en.wikipedia.org/wiki/Balance_sheet). Currently
|
||||||
it is similar to doing `hledger balance '^(assets?|liabilit(y|ies)|equity)(:|$)'`.
|
it is similar to doing `hledger balance '^(assets?|liabilit(y|ies)|equity)(:|$)'`.
|
||||||
|
|
||||||
|
#### cashflow
|
||||||
|
|
||||||
|
This command displays a simplified
|
||||||
|
[cashflow statement](http://en.wikipedia.org/wiki/Cash_flow_statement),
|
||||||
|
showing the change in all "cash" accounts for the period (without the
|
||||||
|
traditional segmentation into operating, investing, and financing cash
|
||||||
|
flows.) It currently assumes that cash accounts are under a top-level
|
||||||
|
account named `asset` and do not contain `receivable` or `A/R` (plural
|
||||||
|
forms also allowed.)
|
||||||
|
|
||||||
#### stats
|
#### stats
|
||||||
|
|
||||||
The stats command displays summary information for the whole journal, or
|
The stats command displays summary information for the whole journal, or
|
||||||
|
|||||||
@ -41,6 +41,7 @@ module Hledger.Data.Journal (
|
|||||||
journalAssetAccountQuery,
|
journalAssetAccountQuery,
|
||||||
journalLiabilityAccountQuery,
|
journalLiabilityAccountQuery,
|
||||||
journalEquityAccountQuery,
|
journalEquityAccountQuery,
|
||||||
|
journalCashAccountQuery,
|
||||||
-- * Misc
|
-- * Misc
|
||||||
groupPostings,
|
groupPostings,
|
||||||
matchpats,
|
matchpats,
|
||||||
@ -193,6 +194,13 @@ journalLiabilityAccountQuery _ = Acct "^liabilit(y|ies)(:|$)"
|
|||||||
journalEquityAccountQuery :: Journal -> Query
|
journalEquityAccountQuery :: Journal -> Query
|
||||||
journalEquityAccountQuery _ = Acct "^equity(:|$)"
|
journalEquityAccountQuery _ = Acct "^equity(:|$)"
|
||||||
|
|
||||||
|
-- | A query for Cash (-equivalent) accounts in this journal (ie,
|
||||||
|
-- accounts which appear on the cashflow statement.) This is currently
|
||||||
|
-- hard-coded to be all the Asset accounts except for those containing the
|
||||||
|
-- case-insensitive regex @(receivable|A/R)@.
|
||||||
|
journalCashAccountQuery :: Journal -> Query
|
||||||
|
journalCashAccountQuery j = And [journalAssetAccountQuery j, Not $ Acct "(receivable|A/R)"]
|
||||||
|
|
||||||
-- Various kinds of filtering on journals. We do it differently depending
|
-- Various kinds of filtering on journals. We do it differently depending
|
||||||
-- on the command.
|
-- on the command.
|
||||||
|
|
||||||
|
|||||||
@ -11,6 +11,7 @@ module Hledger.Cli (
|
|||||||
module Hledger.Cli.Add,
|
module Hledger.Cli.Add,
|
||||||
module Hledger.Cli.Balance,
|
module Hledger.Cli.Balance,
|
||||||
module Hledger.Cli.Balancesheet,
|
module Hledger.Cli.Balancesheet,
|
||||||
|
module Hledger.Cli.Cashflow,
|
||||||
module Hledger.Cli.Histogram,
|
module Hledger.Cli.Histogram,
|
||||||
module Hledger.Cli.Incomestatement,
|
module Hledger.Cli.Incomestatement,
|
||||||
module Hledger.Cli.Print,
|
module Hledger.Cli.Print,
|
||||||
@ -31,6 +32,7 @@ import Hledger
|
|||||||
import Hledger.Cli.Add
|
import Hledger.Cli.Add
|
||||||
import Hledger.Cli.Balance
|
import Hledger.Cli.Balance
|
||||||
import Hledger.Cli.Balancesheet
|
import Hledger.Cli.Balancesheet
|
||||||
|
import Hledger.Cli.Cashflow
|
||||||
import Hledger.Cli.Histogram
|
import Hledger.Cli.Histogram
|
||||||
import Hledger.Cli.Incomestatement
|
import Hledger.Cli.Incomestatement
|
||||||
import Hledger.Cli.Print
|
import Hledger.Cli.Print
|
||||||
@ -48,6 +50,7 @@ tests_Hledger_Cli = TestList
|
|||||||
-- ,tests_Hledger_Cli_Add
|
-- ,tests_Hledger_Cli_Add
|
||||||
-- ,tests_Hledger_Cli_Balance
|
-- ,tests_Hledger_Cli_Balance
|
||||||
,tests_Hledger_Cli_Balancesheet
|
,tests_Hledger_Cli_Balancesheet
|
||||||
|
,tests_Hledger_Cli_Cashflow
|
||||||
-- ,tests_Hledger_Cli_Histogram
|
-- ,tests_Hledger_Cli_Histogram
|
||||||
,tests_Hledger_Cli_Incomestatement
|
,tests_Hledger_Cli_Incomestatement
|
||||||
,tests_Hledger_Cli_Options
|
,tests_Hledger_Cli_Options
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
{-# LANGUAGE QuasiQuotes, RecordWildCards #-}
|
{-# LANGUAGE QuasiQuotes, RecordWildCards #-}
|
||||||
{-|
|
{-|
|
||||||
|
|
||||||
The @balancesheet@ command prints a fairly standard balance sheet.
|
The @balancesheet@ command prints a simple balance sheet.
|
||||||
|
|
||||||
-}
|
-}
|
||||||
|
|
||||||
@ -21,7 +21,7 @@ import Hledger.Cli.Options
|
|||||||
import Hledger.Cli.Balance
|
import Hledger.Cli.Balance
|
||||||
|
|
||||||
|
|
||||||
-- | Print a standard balancesheet.
|
-- | Print a simple balance sheet.
|
||||||
balancesheet :: CliOpts -> Journal -> IO ()
|
balancesheet :: CliOpts -> Journal -> IO ()
|
||||||
balancesheet CliOpts{reportopts_=ropts} j = do
|
balancesheet CliOpts{reportopts_=ropts} j = do
|
||||||
-- let lines = case formatFromOpts ropts of Left err, Right ...
|
-- let lines = case formatFromOpts ropts of Left err, Right ...
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
{-# LANGUAGE QuasiQuotes, TemplateHaskell, OverloadedStrings #-}
|
{-# LANGUAGE QuasiQuotes, TemplateHaskell, OverloadedStrings #-}
|
||||||
{-|
|
{-|
|
||||||
|
|
||||||
The @incomestatement@ command prints a fairly standard income statement (profit & loss) report.
|
The @incomestatement@ command prints a simple income statement (profit & loss) report.
|
||||||
|
|
||||||
-}
|
-}
|
||||||
|
|
||||||
@ -18,7 +18,7 @@ import Hledger
|
|||||||
import Hledger.Cli.Options
|
import Hledger.Cli.Options
|
||||||
import Hledger.Cli.Balance
|
import Hledger.Cli.Balance
|
||||||
|
|
||||||
-- | Print a standard income statement.
|
-- | Print a simple income statement.
|
||||||
incomestatement :: CliOpts -> Journal -> IO ()
|
incomestatement :: CliOpts -> Journal -> IO ()
|
||||||
incomestatement CliOpts{reportopts_=ropts} j = do
|
incomestatement CliOpts{reportopts_=ropts} j = do
|
||||||
d <- getCurrentDay
|
d <- getCurrentDay
|
||||||
|
|||||||
@ -50,6 +50,7 @@ import Hledger (ensureJournalFileExists)
|
|||||||
import Hledger.Cli.Add
|
import Hledger.Cli.Add
|
||||||
import Hledger.Cli.Balance
|
import Hledger.Cli.Balance
|
||||||
import Hledger.Cli.Balancesheet
|
import Hledger.Cli.Balancesheet
|
||||||
|
import Hledger.Cli.Cashflow
|
||||||
import Hledger.Cli.Histogram
|
import Hledger.Cli.Histogram
|
||||||
import Hledger.Cli.Incomestatement
|
import Hledger.Cli.Incomestatement
|
||||||
import Hledger.Cli.Print
|
import Hledger.Cli.Print
|
||||||
@ -88,8 +89,9 @@ main = do
|
|||||||
| any (cmd `isPrefixOf`) ["entries","print"] = showModeHelpOr entriesmode $ withJournalDo opts print'
|
| any (cmd `isPrefixOf`) ["entries","print"] = showModeHelpOr entriesmode $ withJournalDo opts print'
|
||||||
| any (cmd `isPrefixOf`) ["postings","register"] = showModeHelpOr postingsmode $ withJournalDo opts register
|
| any (cmd `isPrefixOf`) ["postings","register"] = showModeHelpOr postingsmode $ withJournalDo opts register
|
||||||
| any (cmd `isPrefixOf`) ["activity","histogram"] = showModeHelpOr activitymode $ withJournalDo opts histogram
|
| any (cmd `isPrefixOf`) ["activity","histogram"] = showModeHelpOr activitymode $ withJournalDo opts histogram
|
||||||
| cmd `isPrefixOf` "incomestatement" = showModeHelpOr incomestatementmode $ withJournalDo opts incomestatement
|
| any (cmd `isPrefixOf`) ["incomestatement","is"] = showModeHelpOr incomestatementmode $ withJournalDo opts incomestatement
|
||||||
| any (cmd `isPrefixOf`) ["balancesheet","bs"] = showModeHelpOr balancesheetmode $ withJournalDo opts balancesheet
|
| any (cmd `isPrefixOf`) ["balancesheet","bs"] = showModeHelpOr balancesheetmode $ withJournalDo opts balancesheet
|
||||||
|
| any (cmd `isPrefixOf`) ["cashflow","cf"] = showModeHelpOr cashflowmode $ withJournalDo opts cashflow
|
||||||
| cmd `isPrefixOf` "stats" = showModeHelpOr statsmode $ withJournalDo opts stats
|
| cmd `isPrefixOf` "stats" = showModeHelpOr statsmode $ withJournalDo opts stats
|
||||||
| not (null matchedaddon) = do
|
| not (null matchedaddon) = do
|
||||||
when (debug_ opts) $ printf "running %s\n" shellcmd
|
when (debug_ opts) $ printf "running %s\n" shellcmd
|
||||||
|
|||||||
@ -74,6 +74,7 @@ mainmode addons = defmode {
|
|||||||
,activitymode
|
,activitymode
|
||||||
,incomestatementmode
|
,incomestatementmode
|
||||||
,balancesheetmode
|
,balancesheetmode
|
||||||
|
,cashflowmode
|
||||||
,statsmode
|
,statsmode
|
||||||
])
|
])
|
||||||
]
|
]
|
||||||
@ -237,7 +238,7 @@ activitymode = (commandmode ["activity","histogram"]) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
incomestatementmode = (commandmode ["incomestatement"]) {
|
incomestatementmode = (commandmode ["incomestatement","is"]) {
|
||||||
modeHelp = "show a standard income statement"
|
modeHelp = "show a standard income statement"
|
||||||
,modeArgs = ([], Just commandargsflag)
|
,modeArgs = ([], Just commandargsflag)
|
||||||
,modeGroupFlags = Group {
|
,modeGroupFlags = Group {
|
||||||
@ -257,6 +258,16 @@ balancesheetmode = (commandmode ["balancesheet","bs"]) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cashflowmode = (commandmode ["cashflow","cf"]) {
|
||||||
|
modeHelp = "show a simple cashflow statement"
|
||||||
|
,modeArgs = ([], Just commandargsflag)
|
||||||
|
,modeGroupFlags = Group {
|
||||||
|
groupUnnamed = []
|
||||||
|
,groupHidden = []
|
||||||
|
,groupNamed = [(generalflagstitle, generalflags1)]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
statsmode = (commandmode ["stats"]) {
|
statsmode = (commandmode ["stats"]) {
|
||||||
modeHelp = "show quick statistics for a journal (or part of it)"
|
modeHelp = "show quick statistics for a journal (or part of it)"
|
||||||
,modeArgs = ([], Just commandargsflag)
|
,modeArgs = ([], Just commandargsflag)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user