doc: budget report: update
This commit is contained in:
parent
8650b7042d
commit
21b3a56489
@ -249,14 +249,79 @@ Currently, the [`-V/--value` flag](#market-value) has a limitation in
|
||||
multicolumn reports: it uses the market prices on the report end date
|
||||
for all columns. (Instead of the prices on each column's end date.)
|
||||
|
||||
### Budgets
|
||||
### Custom balance output
|
||||
|
||||
With `--budget` and a [report interval](manual.html#report-intervals),
|
||||
all [periodic transactions](journal.html#periodic-transactions) in your journal
|
||||
with that interval,
|
||||
active during the requested report period,
|
||||
are interpreted as recurring budget goals for the specified accounts (and subaccounts),
|
||||
and the report will show the difference between actual and budgeted balances.
|
||||
You can customise the layout of simple (non-tabular) balance reports with `--format FMT`:
|
||||
|
||||
```shell
|
||||
$ hledger balance --format "%20(account) %12(total)"
|
||||
assets $-1
|
||||
bank:saving $1
|
||||
cash $-2
|
||||
expenses $2
|
||||
food $1
|
||||
supplies $1
|
||||
income $-2
|
||||
gifts $-1
|
||||
salary $-1
|
||||
liabilities:debts $1
|
||||
---------------------------------
|
||||
0
|
||||
```
|
||||
|
||||
The FMT format string (plus a newline) specifies the formatting
|
||||
applied to each account/balance pair. It may contain any suitable
|
||||
text, with data fields interpolated like so:
|
||||
|
||||
`%[MIN][.MAX](FIELDNAME)`
|
||||
|
||||
- MIN pads with spaces to at least this width (optional)
|
||||
- MAX truncates at this width (optional)
|
||||
- FIELDNAME must be enclosed in parentheses, and can be one of:
|
||||
|
||||
- `depth_spacer` - a number of spaces equal to the account's depth, or if MIN is specified, MIN * depth spaces.
|
||||
- `account` - the account's name
|
||||
- `total` - the account's balance/posted total, right justified
|
||||
|
||||
Also, FMT can begin with an optional prefix to control how
|
||||
multi-commodity amounts are rendered:
|
||||
|
||||
- `%_` - render on multiple lines, bottom-aligned (the default)
|
||||
- `%^` - render on multiple lines, top-aligned
|
||||
- `%,` - render on one line, comma-separated
|
||||
|
||||
There are some quirks. Eg in one-line mode, `%(depth_spacer)` has no
|
||||
effect, instead `%(account)` has indentation built in.
|
||||
<!-- XXX retest:
|
||||
Consistent column widths are not well enforced, causing ragged edges unless you set suitable widths.
|
||||
Beware of specifying a maximum width; it will clip account names and amounts that are too wide, with no visible indication.
|
||||
-->
|
||||
Experimentation may be needed to get pleasing results.
|
||||
|
||||
Some example formats:
|
||||
|
||||
- `%(total)` - the account's total
|
||||
- `%-20.20(account)` - the account's name, left justified, padded to 20 characters and clipped at 20 characters
|
||||
- `%,%-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
|
||||
|
||||
This command also supports [output destination](/manual.html#output-destination) and [output format](/manual.html#output-format) selection.
|
||||
|
||||
### Colour support
|
||||
|
||||
The balance command shows negative amounts in red, if:
|
||||
|
||||
- the `TERM` environment variable is not set to `dumb`
|
||||
- the output is not being redirected or piped anywhere
|
||||
|
||||
|
||||
### Budget report
|
||||
|
||||
With `--budget`, extra columns are displayed showing budget goals for each account and period,
|
||||
and how the actual amounts compare with the goals.
|
||||
Budget goals are defined by [periodic transactions](journal.html#periodic-transactions) in the journal.
|
||||
|
||||
--budget is most often combined with a [report interval](manual.html#report-intervals).
|
||||
|
||||
For example, you can take average monthly expenses in the common expense categories to construct a minimal monthly budget:
|
||||
```journal
|
||||
@ -340,74 +405,8 @@ Balance changes in 2017/11/01-2017/12/31:
|
||||
```
|
||||
|
||||
Note --budget first arrived in hledger in 1.5 and is still pretty young;
|
||||
join the discussions on mail list and issue tracker to help us refine it.
|
||||
join the discussions on mail list and issue tracker to help us refine it.
|
||||
Also, the `-S/--sort-amount` flag is not yet supported with --budget.
|
||||
|
||||
For more examples, see [Budgeting and Forecasting](https://github.com/simonmichael/hledger/wiki/Budgeting and forecasting).
|
||||
|
||||
### Custom balance output
|
||||
|
||||
You can customise the layout of simple (non-tabular) balance reports with `--format FMT`:
|
||||
|
||||
```shell
|
||||
$ hledger balance --format "%20(account) %12(total)"
|
||||
assets $-1
|
||||
bank:saving $1
|
||||
cash $-2
|
||||
expenses $2
|
||||
food $1
|
||||
supplies $1
|
||||
income $-2
|
||||
gifts $-1
|
||||
salary $-1
|
||||
liabilities:debts $1
|
||||
---------------------------------
|
||||
0
|
||||
```
|
||||
|
||||
The FMT format string (plus a newline) specifies the formatting
|
||||
applied to each account/balance pair. It may contain any suitable
|
||||
text, with data fields interpolated like so:
|
||||
|
||||
`%[MIN][.MAX](FIELDNAME)`
|
||||
|
||||
- MIN pads with spaces to at least this width (optional)
|
||||
- MAX truncates at this width (optional)
|
||||
- FIELDNAME must be enclosed in parentheses, and can be one of:
|
||||
|
||||
- `depth_spacer` - a number of spaces equal to the account's depth, or if MIN is specified, MIN * depth spaces.
|
||||
- `account` - the account's name
|
||||
- `total` - the account's balance/posted total, right justified
|
||||
|
||||
Also, FMT can begin with an optional prefix to control how
|
||||
multi-commodity amounts are rendered:
|
||||
|
||||
- `%_` - render on multiple lines, bottom-aligned (the default)
|
||||
- `%^` - render on multiple lines, top-aligned
|
||||
- `%,` - render on one line, comma-separated
|
||||
|
||||
There are some quirks. Eg in one-line mode, `%(depth_spacer)` has no
|
||||
effect, instead `%(account)` has indentation built in.
|
||||
<!-- XXX retest:
|
||||
Consistent column widths are not well enforced, causing ragged edges unless you set suitable widths.
|
||||
Beware of specifying a maximum width; it will clip account names and amounts that are too wide, with no visible indication.
|
||||
-->
|
||||
Experimentation may be needed to get pleasing results.
|
||||
|
||||
Some example formats:
|
||||
|
||||
- `%(total)` - the account's total
|
||||
- `%-20.20(account)` - the account's name, left justified, padded to 20 characters and clipped at 20 characters
|
||||
- `%,%-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
|
||||
|
||||
This command also supports [output destination](/manual.html#output-destination) and [output format](/manual.html#output-format) selection.
|
||||
|
||||
### Colour support
|
||||
|
||||
The balance command shows negative amounts in red, if:
|
||||
|
||||
- the `TERM` environment variable is not set to `dumb`
|
||||
- the output is not being redirected or piped anywhere
|
||||
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user