From 0d418fc86e6e35d4b3b92028d4418935bfdc7928 Mon Sep 17 00:00:00 2001 From: Simon Michael Date: Sun, 10 Jan 2021 15:35:01 -0800 Subject: [PATCH] ;bal: update command docs (#1441) --- hledger/Hledger/Cli/Commands/Balance.md | 201 +++++++++++++----------- 1 file changed, 107 insertions(+), 94 deletions(-) diff --git a/hledger/Hledger/Cli/Commands/Balance.md b/hledger/Hledger/Cli/Commands/Balance.md index cf8c92a2b..285287cf0 100644 --- a/hledger/Hledger/Cli/Commands/Balance.md +++ b/hledger/Hledger/Cli/Commands/Balance.md @@ -29,9 +29,38 @@ The output formats supported are (in most modes): The balance command can produce several styles of report: -### Classic balance report + -This is the original balance report, as found in Ledger. It usually looks like this: +### Single-period flat balance report + +This is the default for hledger's balance command: +a flat list of all (or with a query, matched) accounts, showing full account names. + +Accounts are sorted by [declaration order](https://hledger.org/hledger.html#declaring-accounts) +if any, and then by account name. +Accounts which have zero balance are not shown unless `-E/--empty` is used. +The reported balances' total is shown as the last line, unless disabled by `-N`/`--no-total`. + +```shell +$ hledger bal + $1 assets:bank:saving + $-2 assets:cash + $1 expenses:food + $1 expenses:supplies + $-1 income:gifts + $-1 income:salary + $1 liabilities:debts +-------------------- + 0 +``` + + + +### Single-period tree-mode balance report + +With the `-t/--tree` flag, accounts are displayed hierarchically, +showing subaccounts as short names indented below their parent. +(This is the default style in Ledger and in older hledger versions.) ```shell $ hledger balance @@ -49,31 +78,28 @@ $ hledger balance 0 ``` -By default, accounts are displayed hierarchically, -with subaccounts indented below their parent, -with accounts at each level of the tree sorted by [declaration order](https://hledger.org/hledger.html#declaring-accounts) if declared, then by account name. +For more compact output, "boring" accounts containing a single +interesting subaccount and no balance of their own (`assets:bank` and +`liabilities` here) are elided into the following line, unless +`--no-elide` is used. And accounts which have zero balance and no +non-zero subaccounts are omitted, unless `-E/--empty` is used. -"Boring" accounts, which contain a single interesting subaccount and -no balance of their own, are elided into the following line for more compact output. -(Eg above, the "liabilities" account.) Use `--no-elide` to prevent this. +Account balances in tree mode are "inclusive" - they include the +balances of any subaccounts. Eg, the `assets` `$-1` balance here +includes the `$1` from `assets:bank:saving` and the `$-2` from +`assets:cash`. (And it would include balance posted to the `assets` +account itself, if there was any). Note this causes some repetition, +and the final total (`0`) is the sum of the top-level balances, not of +all the balances shown. -Account balances are "inclusive" - they include the balances of any subaccounts. +Each group of sibling accounts is sorted separately, +by [declaration order](https://hledger.org/hledger.html#declaring-accounts) +and then by account name. -Accounts which have zero balance (and no non-zero subaccounts) are -omitted. Use `-E/--empty` to show them. +### Customising single-period balance reports -A final total is displayed by default; use `-N/--no-total` to suppress it, eg: - -```shell -$ hledger balance -p 2008/6 expenses --no-total - $2 expenses - $1 food - $1 supplies -``` - -### Customising the classic balance report - -You can customise the layout of classic balance reports with `--format FMT`: +You can customise the layout of single-period balance reports with `--format FMT`, +which sets the format of each line. Eg: ```shell $ hledger balance --format "%20(account) %12(total)" @@ -127,27 +153,12 @@ Some example formats: - `%,%-50(account) %25(total)` - account name padded to 50 characters, total padded to 20 characters, with multiple commodities rendered on one line - `%20(total) %2(depth_spacer)%-(account)` - the default format for the single-column balance report -### Colour support +### Depth limiting -In terminal output, when colour is enabled, -the balance command shows negative amounts in red. - -### Flat mode - -To see a flat list instead of the default hierarchical display, use `--flat`. -In this mode, accounts (unless depth-clipped) show their full names and "exclusive" balance, excluding any subaccount balances. -In this mode, you can also use `--drop N` to omit the first few account name components. - -```shell -$ hledger balance -p 2008/6 expenses -N --flat --drop 1 - $1 food - $1 supplies -``` - -### Depth limited balance reports - -With `--depth N` or `depth:N` or just `-N`, balance reports show accounts only to the specified numeric depth. -This is very useful to summarise a complex set of accounts and get an overview. +With a `depth:N` query, or `--depth N` option, or just `-N`, +balance reports will show accounts only to the specified depth. +This is very useful to hide low-level accounts and get an overview. +Eg, limiting to depth 1 shows the top-level accounts: ```shell $ hledger balance -N -1 $-1 assets @@ -156,9 +167,25 @@ $ hledger balance -N -1 $1 liabilities ``` -Flat-mode balance reports, which normally show exclusive balances, show inclusive balances at the depth limit. +Accounts at the depth limit will include the balances of any hidden subaccounts +(even in flat mode, which normally shows exclusive balances). - +You can also drop account name components from the start of account names, +using `--drop N`. This can be useful to hide unwanted top-level detail. + +### Colour support + +In terminal output, when colour is enabled, the balance command shows negative amounts in red. + +### Sorting by amount + +With `-S`/`--sort-amount`, accounts with the largest (most positive) balances are shown first. +For example, `hledger bal expenses -MAS` shows your biggest averaged monthly expenses first. + +Revenues and liability balances are typically negative, however, so `-S` shows these in reverse order. +To work around this, you can add `--invert` to flip the signs. +Or, use one of the sign-flipping reports like `balancesheet` or `incomestatement`, +which also support `-S`. Eg: `hledger is -MAS`. ### Percentages @@ -190,56 +217,44 @@ This flag does not work if the report contains any mixed commodity accounts. If there are mixed commodity accounts in the report be sure to use `-V` or `-B` to coerce the report into using a single commodity. -### Sorting by amount -With `-S`/`--sort-amount`, accounts with the largest (most positive) balances are shown first. -For example, `hledger bal expenses -MAS` shows your biggest averaged monthly expenses first. + -Revenues and liability balances are typically negative, however, so `-S` shows these in reverse order. -To work around this, you can add `--invert` to flip the signs. -Or, use one of the sign-flipping reports like `balancesheet` or `incomestatement`, -which also support `-S`. Eg: `hledger is -MAS`. +### Multi-period balance report -### Multicolumn balance report +Multi-period balance reports are a very useful hledger feature, activated +if you provide one of the +[reporting interval](#reporting-interval) flags, such as `-M`/`--monthly`. +They are similar to single-period balance reports, but they show the +report as a table, with columns representing one or more successive +time periods. +This is the usually the preferred style of balance report in hledger +(even for a single period). -Multicolumn or tabular balance reports are a very useful hledger feature, -and usually the preferred style. They share many of the above features, -but they show the report as a table, with columns representing time periods. -This mode is activated by providing a [reporting interval](#reporting-interval). +Multi-period balance reports come in several types, showing different information: -There are three types of multicolumn balance report, showing different information: +1. A balance change report: by default, each column shows the sum of +postings in that period, ie the account's change of balance in that +period. This is useful eg for a monthly income statement: -1. By default: each column shows the sum of postings in that period, -ie the account's change of balance in that period. This is useful eg -for a monthly income statement: - - - ```shell - $ hledger balance --quarterly income expenses -E - Balance changes in 2008: - - || 2008q1 2008q2 2008q3 2008q4 - ===================++================================= - expenses:food || 0 $1 0 0 - expenses:supplies || 0 $1 0 0 - income:gifts || 0 $-1 0 0 - income:salary || $-1 0 0 0 - -------------------++--------------------------------- - || $-1 $1 0 0 - - ``` - -2. With `--cumulative`: each column shows the ending balance for that -period, accumulating the changes across periods, starting from 0 at -the report start date: +2. A cumulative end balance report: with `--cumulative`, each column +shows the end balance for that period, accumulating the changes across +periods, starting from 0 at the report start date: ```shell $ hledger balance --quarterly income expenses -E --cumulative @@ -256,11 +271,12 @@ the report start date: ``` -3. With `--historical/-H`: each column shows the actual historical -ending balance for that period, accumulating the changes across -periods, starting from the actual balance at the report start date. -This is useful eg for a multi-period balance sheet, and when -you are showing only the data after a certain start date: +3. A historical end balance report: with `--historical/-H`, each +column shows the actual historical end balance for that period, +accumulating the changes across periods, and including the balance +from any postings before the report start date. This is useful eg for +a multi-period balance sheet, and when you want to see balances only +after a certain date: ```shell $ hledger balance ^assets ^liabilities --quarterly --historical --begin 2008/4/1 @@ -280,9 +296,6 @@ you are showing only the data after a certain start date: Note that `--cumulative` or `--historical/-H` disable `--row-total/-T`, since summing end balances generally does not make sense. -Multicolumn balance reports display accounts in flat mode by default; -to see the hierarchy, use `--tree`. - With a reporting interval (like `--quarterly` above), the report start/end dates will be adjusted if necessary so that they encompass the displayed report periods. This is so that the first and last