;doc: update manuals
This commit is contained in:
parent
ddec2cedf3
commit
7a249cffe9
@ -1,2 +1,2 @@
|
||||
m4_dnl Date to show in man pages. Updated by "Shake manuals"
|
||||
m4_define({{_monthyear_}}, {{August 2021}})m4_dnl
|
||||
m4_define({{_monthyear_}}, {{September 2021}})m4_dnl
|
||||
|
||||
@ -1,2 +1,2 @@
|
||||
m4_dnl Date to show in man pages. Updated by "Shake manuals"
|
||||
m4_define({{_monthyear_}}, {{August 2021}})m4_dnl
|
||||
m4_define({{_monthyear_}}, {{September 2021}})m4_dnl
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
|
||||
.TH "HLEDGER-UI" "1" "August 2021" "hledger-ui-1.22.99 " "hledger User Manuals"
|
||||
.TH "HLEDGER-UI" "1" "September 2021" "hledger-ui-1.22.99 " "hledger User Manuals"
|
||||
|
||||
|
||||
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
This is hledger-ui.info, produced by makeinfo version 6.8 from stdin.
|
||||
This is hledger-ui/hledger-ui.info, produced by makeinfo version 4.8
|
||||
from stdin.
|
||||
|
||||
INFO-DIR-SECTION User Applications
|
||||
START-INFO-DIR-ENTRY
|
||||
@ -6,7 +7,7 @@ START-INFO-DIR-ENTRY
|
||||
END-INFO-DIR-ENTRY
|
||||
|
||||
|
||||
File: hledger-ui.info, Node: Top, Next: OPTIONS, Up: (dir)
|
||||
File: hledger-ui.info, Node: Top, Up: (dir)
|
||||
|
||||
hledger-ui(1)
|
||||
*************
|
||||
@ -14,8 +15,8 @@ hledger-ui(1)
|
||||
hledger-ui is a terminal interface (TUI) for the hledger accounting
|
||||
tool. This manual is for hledger-ui 1.22.99.
|
||||
|
||||
'hledger-ui [OPTIONS] [QUERYARGS]'
|
||||
'hledger ui -- [OPTIONS] [QUERYARGS]'
|
||||
`hledger-ui [OPTIONS] [QUERYARGS]'
|
||||
`hledger ui -- [OPTIONS] [QUERYARGS]'
|
||||
|
||||
hledger is a reliable, cross-platform set of programs for tracking
|
||||
money, time, or any other commodity, using double-entry accounting and a
|
||||
@ -29,9 +30,9 @@ interface, and sometimes quicker and more convenient than the web
|
||||
interface.
|
||||
|
||||
Like hledger, it reads data from one or more files in hledger
|
||||
journal, timeclock, timedot, or CSV format specified with '-f', or
|
||||
'$LEDGER_FILE', or '$HOME/.hledger.journal' (on windows, perhaps
|
||||
'C:/Users/USER/.hledger.journal'). For more about this see hledger(1),
|
||||
journal, timeclock, timedot, or CSV format specified with `-f', or
|
||||
`$LEDGER_FILE', or `$HOME/.hledger.journal' (on windows, perhaps
|
||||
`C:/Users/USER/.hledger.journal'). For more about this see hledger(1),
|
||||
hledger_journal(5) etc.
|
||||
|
||||
Unlike hledger, hledger-ui hides all future-dated transactions by
|
||||
@ -55,142 +56,139 @@ File: hledger-ui.info, Node: OPTIONS, Next: KEYS, Prev: Top, Up: Top
|
||||
1 OPTIONS
|
||||
*********
|
||||
|
||||
Note: if invoking hledger-ui as a hledger subcommand, write '--' before
|
||||
Note: if invoking hledger-ui as a hledger subcommand, write `--' before
|
||||
options as shown above.
|
||||
|
||||
Any QUERYARGS are interpreted as a hledger search query which filters
|
||||
the data.
|
||||
|
||||
'--watch'
|
||||
|
||||
`--watch'
|
||||
watch for data and date changes and reload automatically
|
||||
'--theme=default|terminal|greenterm'
|
||||
|
||||
`--theme=default|terminal|greenterm'
|
||||
use this custom display theme
|
||||
'--register=ACCTREGEX'
|
||||
|
||||
`--register=ACCTREGEX'
|
||||
start in the (first) matched account's register screen
|
||||
'--change'
|
||||
|
||||
`--change'
|
||||
show period balances (changes) at startup instead of historical
|
||||
balances
|
||||
'-l --flat'
|
||||
|
||||
`-l --flat'
|
||||
show accounts as a flat list (default)
|
||||
'-t --tree'
|
||||
|
||||
`-t --tree'
|
||||
show accounts as a tree
|
||||
|
||||
hledger input options:
|
||||
|
||||
'-f FILE --file=FILE'
|
||||
|
||||
`-f FILE --file=FILE'
|
||||
use a different input file. For stdin, use - (default:
|
||||
'$LEDGER_FILE' or '$HOME/.hledger.journal')
|
||||
'--rules-file=RULESFILE'
|
||||
`$LEDGER_FILE' or `$HOME/.hledger.journal')
|
||||
|
||||
`--rules-file=RULESFILE'
|
||||
Conversion rules file to use when reading CSV (default: FILE.rules)
|
||||
'--separator=CHAR'
|
||||
|
||||
`--separator=CHAR'
|
||||
Field separator to expect when reading CSV (default: ',')
|
||||
'--alias=OLD=NEW'
|
||||
|
||||
`--alias=OLD=NEW'
|
||||
rename accounts named OLD to NEW
|
||||
'--anon'
|
||||
|
||||
`--anon'
|
||||
anonymize accounts and payees
|
||||
'--pivot FIELDNAME'
|
||||
|
||||
`--pivot FIELDNAME'
|
||||
use some other field or tag for the account name
|
||||
'-I --ignore-assertions'
|
||||
|
||||
`-I --ignore-assertions'
|
||||
disable balance assertion checks (note: does not disable balance
|
||||
assignments)
|
||||
'-s --strict'
|
||||
|
||||
`-s --strict'
|
||||
do extra error checking (check that all posted accounts are
|
||||
declared)
|
||||
|
||||
hledger reporting options:
|
||||
|
||||
'-b --begin=DATE'
|
||||
|
||||
`-b --begin=DATE'
|
||||
include postings/txns on or after this date (will be adjusted to
|
||||
preceding subperiod start when using a report interval)
|
||||
'-e --end=DATE'
|
||||
|
||||
`-e --end=DATE'
|
||||
include postings/txns before this date (will be adjusted to
|
||||
following subperiod end when using a report interval)
|
||||
'-D --daily'
|
||||
|
||||
`-D --daily'
|
||||
multiperiod/multicolumn report by day
|
||||
'-W --weekly'
|
||||
|
||||
`-W --weekly'
|
||||
multiperiod/multicolumn report by week
|
||||
'-M --monthly'
|
||||
|
||||
`-M --monthly'
|
||||
multiperiod/multicolumn report by month
|
||||
'-Q --quarterly'
|
||||
|
||||
`-Q --quarterly'
|
||||
multiperiod/multicolumn report by quarter
|
||||
'-Y --yearly'
|
||||
|
||||
`-Y --yearly'
|
||||
multiperiod/multicolumn report by year
|
||||
'-p --period=PERIODEXP'
|
||||
|
||||
`-p --period=PERIODEXP'
|
||||
set start date, end date, and/or reporting interval all at once
|
||||
using period expressions syntax
|
||||
'--date2'
|
||||
|
||||
`--date2'
|
||||
match the secondary date instead (see command help for other
|
||||
effects)
|
||||
'-U --unmarked'
|
||||
|
||||
`-U --unmarked'
|
||||
include only unmarked postings/txns (can combine with -P or -C)
|
||||
'-P --pending'
|
||||
|
||||
`-P --pending'
|
||||
include only pending postings/txns
|
||||
'-C --cleared'
|
||||
|
||||
`-C --cleared'
|
||||
include only cleared postings/txns
|
||||
'-R --real'
|
||||
|
||||
`-R --real'
|
||||
include only non-virtual postings
|
||||
'-NUM --depth=NUM'
|
||||
|
||||
`-NUM --depth=NUM'
|
||||
hide/aggregate accounts or postings more than NUM levels deep
|
||||
'-E --empty'
|
||||
|
||||
`-E --empty'
|
||||
show items with zero amount, normally hidden (and vice-versa in
|
||||
hledger-ui/hledger-web)
|
||||
'-B --cost'
|
||||
|
||||
`-B --cost'
|
||||
convert amounts to their cost/selling amount at transaction time
|
||||
'-V --market'
|
||||
|
||||
`-V --market'
|
||||
convert amounts to their market value in default valuation
|
||||
commodities
|
||||
'-X --exchange=COMM'
|
||||
|
||||
`-X --exchange=COMM'
|
||||
convert amounts to their market value in commodity COMM
|
||||
'--value'
|
||||
|
||||
`--value'
|
||||
convert amounts to cost or market value, more flexibly than
|
||||
-B/-V/-X
|
||||
'--infer-market-prices'
|
||||
|
||||
`--infer-market-prices'
|
||||
use transaction prices (recorded with @ or @@) as additional market
|
||||
prices, as if they were P directives
|
||||
'--auto'
|
||||
|
||||
`--auto'
|
||||
apply automated posting rules to modify transactions.
|
||||
'--forecast'
|
||||
|
||||
`--forecast'
|
||||
generate future transactions from periodic transaction rules, for
|
||||
the next 6 months or till report end date. In hledger-ui, also
|
||||
make ordinary future transactions visible.
|
||||
'--color=WHEN (or --colour=WHEN)'
|
||||
|
||||
`--color=WHEN (or --colour=WHEN)'
|
||||
Should color-supporting commands use ANSI color codes in text
|
||||
output. 'auto' (default): whenever stdout seems to be a
|
||||
color-supporting terminal. 'always' or 'yes': always, useful eg
|
||||
@ -204,25 +202,24 @@ the last one takes precedence.
|
||||
|
||||
hledger help options:
|
||||
|
||||
'-h --help'
|
||||
|
||||
`-h --help'
|
||||
show general or COMMAND help
|
||||
'--man'
|
||||
|
||||
`--man'
|
||||
show general or COMMAND user manual with man
|
||||
'--info'
|
||||
|
||||
`--info'
|
||||
show general or COMMAND user manual with info
|
||||
'--version'
|
||||
|
||||
`--version'
|
||||
show general or ADDONCMD version
|
||||
'--debug[=N]'
|
||||
|
||||
`--debug[=N]'
|
||||
show debug output (levels 1-9, default: 1)
|
||||
|
||||
A @FILE argument will be expanded to the contents of FILE, which
|
||||
should contain one command line option/argument per line. (To prevent
|
||||
this, insert a '--' argument before.)
|
||||
this, insert a `--' argument before.)
|
||||
|
||||
|
||||
File: hledger-ui.info, Node: KEYS, Next: SCREENS, Prev: OPTIONS, Up: Top
|
||||
@ -230,15 +227,15 @@ File: hledger-ui.info, Node: KEYS, Next: SCREENS, Prev: OPTIONS, Up: Top
|
||||
2 KEYS
|
||||
******
|
||||
|
||||
'?' shows a help dialog listing all keys. (Some of these also appear in
|
||||
the quick help at the bottom of each screen.) Press '?' again (or
|
||||
'ESCAPE', or 'LEFT', or 'q') to close it. The following keys work on
|
||||
`?' shows a help dialog listing all keys. (Some of these also appear in
|
||||
the quick help at the bottom of each screen.) Press `?' again (or
|
||||
`ESCAPE', or `LEFT', or `q') to close it. The following keys work on
|
||||
most screens:
|
||||
|
||||
The cursor keys navigate: 'right' (or 'enter') goes deeper, 'left'
|
||||
returns to the previous screen, 'up'/'down'/'page up'/'page
|
||||
down'/'home'/'end' move up and down through lists. Emacs-style
|
||||
('ctrl-p'/'ctrl-n'/'ctrl-f'/'ctrl-b') movement keys are also supported
|
||||
The cursor keys navigate: `right' (or `enter') goes deeper, `left'
|
||||
returns to the previous screen, `up'/`down'/`page up'/`page
|
||||
down'/`home'/`end' move up and down through lists. Emacs-style
|
||||
(`ctrl-p'/`ctrl-n'/`ctrl-f'/`ctrl-b') movement keys are also supported
|
||||
(but not vi-style keys, since hledger-1.19, sorry!). A tip: movement
|
||||
speed is limited by your keyboard repeat rate, to move faster you may
|
||||
want to adjust it. (If you're on a mac, the karabiner app is one way to
|
||||
@ -246,73 +243,73 @@ do that.)
|
||||
|
||||
With shift pressed, the cursor keys adjust the report period,
|
||||
limiting the transactions to be shown (by default, all are shown).
|
||||
'shift-down/up' steps downward and upward through these standard report
|
||||
`shift-down/up' steps downward and upward through these standard report
|
||||
period durations: year, quarter, month, week, day. Then,
|
||||
'shift-left/right' moves to the previous/next period. 'T' sets the
|
||||
report period to today. With the '--watch' option, when viewing a
|
||||
`shift-left/right' moves to the previous/next period. `T' sets the
|
||||
report period to today. With the `--watch' option, when viewing a
|
||||
"current" period (the current day, week, month, quarter, or year), the
|
||||
period will move automatically to track the current date. To set a
|
||||
non-standard period, you can use '/' and a 'date:' query.
|
||||
non-standard period, you can use `/' and a `date:' query.
|
||||
|
||||
'/' lets you set a general filter query limiting the data shown,
|
||||
`/' lets you set a general filter query limiting the data shown,
|
||||
using the same query terms as in hledger and hledger-web. While editing
|
||||
the query, you can use CTRL-a/e/d/k, BS, cursor keys; press 'ENTER' to
|
||||
set it, or 'ESCAPE'to cancel. There are also keys for quickly adjusting
|
||||
the query, you can use CTRL-a/e/d/k, BS, cursor keys; press `ENTER' to
|
||||
set it, or `ESCAPE'to cancel. There are also keys for quickly adjusting
|
||||
some common filters like account depth and transaction status (see
|
||||
below). 'BACKSPACE' or 'DELETE' removes all filters, showing all
|
||||
below). `BACKSPACE' or `DELETE' removes all filters, showing all
|
||||
transactions.
|
||||
|
||||
As mentioned above, by default hledger-ui hides future transactions -
|
||||
both ordinary transactions recorded in the journal, and periodic
|
||||
transactions generated by rule. 'F' toggles forecast mode, in which
|
||||
transactions generated by rule. `F' toggles forecast mode, in which
|
||||
future/forecasted transactions are shown.
|
||||
|
||||
'ESCAPE' resets the UI state and jumps back to the top screen,
|
||||
`ESCAPE' resets the UI state and jumps back to the top screen,
|
||||
restoring the app's initial state at startup. Or, it cancels minibuffer
|
||||
data entry or the help dialog.
|
||||
|
||||
'CTRL-l' redraws the screen and centers the selection if possible
|
||||
`CTRL-l' redraws the screen and centers the selection if possible
|
||||
(selections near the top won't be centered, since we don't scroll above
|
||||
the top).
|
||||
|
||||
'g' reloads from the data file(s) and updates the current screen and
|
||||
`g' reloads from the data file(s) and updates the current screen and
|
||||
any previous screens. (With large files, this could cause a noticeable
|
||||
pause.)
|
||||
|
||||
'I' toggles balance assertion checking. Disabling balance assertions
|
||||
`I' toggles balance assertion checking. Disabling balance assertions
|
||||
temporarily can be useful for troubleshooting.
|
||||
|
||||
'a' runs command-line hledger's add command, and reloads the updated
|
||||
`a' runs command-line hledger's add command, and reloads the updated
|
||||
file. This allows some basic data entry.
|
||||
|
||||
'A' is like 'a', but runs the hledger-iadd tool, which provides a
|
||||
terminal interface. This key will be available if 'hledger-iadd' is
|
||||
`A' is like `a', but runs the hledger-iadd tool, which provides a
|
||||
terminal interface. This key will be available if `hledger-iadd' is
|
||||
installed in $path.
|
||||
|
||||
'E' runs $HLEDGER_UI_EDITOR, or $EDITOR, or a default ('emacsclient
|
||||
`E' runs $HLEDGER_UI_EDITOR, or $EDITOR, or a default (`emacsclient
|
||||
-a "" -nw') on the journal file. With some editors (emacs, vi), the
|
||||
cursor will be positioned at the current transaction when invoked from
|
||||
the register and transaction screens, and at the error location (if
|
||||
possible) when invoked from the error screen.
|
||||
|
||||
'B' toggles cost mode, showing amounts in their transaction price's
|
||||
commodity (like toggling the '-B/--cost' flag).
|
||||
`B' toggles cost mode, showing amounts in their transaction price's
|
||||
commodity (like toggling the `-B/--cost' flag).
|
||||
|
||||
'V' toggles value mode, showing amounts' current market value in
|
||||
their default valuation commodity (like toggling the '-V/--market'
|
||||
`V' toggles value mode, showing amounts' current market value in
|
||||
their default valuation commodity (like toggling the `-V/--market'
|
||||
flag). Note, "current market value" means the value on the report end
|
||||
date if specified, otherwise today. To see the value on another date,
|
||||
you can temporarily set that as the report end date. Eg: to see a
|
||||
transaction as it was valued on july 30, go to the accounts or register
|
||||
screen, press '/', and add 'date:-7/30' to the query.
|
||||
screen, press `/', and add `date:-7/30' to the query.
|
||||
|
||||
At most one of cost or value mode can be active at once.
|
||||
|
||||
There's not yet any visual reminder when cost or value mode is
|
||||
active; for now pressing 'b' 'b' 'v' should reliably reset to normal
|
||||
active; for now pressing `b' `b' `v' should reliably reset to normal
|
||||
mode.
|
||||
|
||||
'q' quits the application.
|
||||
`q' quits the application.
|
||||
|
||||
Additional screen-specific keys are described below.
|
||||
|
||||
@ -335,48 +332,47 @@ File: hledger-ui.info, Node: Accounts screen, Next: Register screen, Up: SCRE
|
||||
3.1 Accounts screen
|
||||
===================
|
||||
|
||||
This is normally the first screen displayed. It lists accounts and
|
||||
their balances, like hledger's balance command. By default, it shows
|
||||
all accounts and their latest ending balances (including the balances of
|
||||
This is normally the first screen displayed. It lists accounts and their
|
||||
balances, like hledger's balance command. By default, it shows all
|
||||
accounts and their latest ending balances (including the balances of
|
||||
subaccounts). If you specify a query on the command line, it shows just
|
||||
the matched accounts and the balances from matched transactions.
|
||||
|
||||
Account names are shown as a flat list by default; press 't' to
|
||||
Account names are shown as a flat list by default; press `t' to
|
||||
toggle tree mode. In list mode, account balances are exclusive of
|
||||
subaccounts, except where subaccounts are hidden by a depth limit (see
|
||||
below). In tree mode, all account balances are inclusive of
|
||||
subaccounts.
|
||||
below). In tree mode, all account balances are inclusive of subaccounts.
|
||||
|
||||
To see less detail, press a number key, '1' to '9', to set a depth
|
||||
limit. Or use '-' to decrease and '+'/'=' to increase the depth limit.
|
||||
'0' shows even less detail, collapsing all accounts to a single total.
|
||||
To remove the depth limit, set it higher than the maximum account depth,
|
||||
or press 'ESCAPE'.
|
||||
To see less detail, press a number key, `1' to `9', to set a depth
|
||||
limit. Or use `-' to decrease and `+'/`=' to increase the depth limit.
|
||||
`0' shows even less detail, collapsing all accounts to a single total.
|
||||
To remove the depth limit, set it higher than the maximum account
|
||||
depth, or press `ESCAPE'.
|
||||
|
||||
'H' toggles between showing historical balances or period balances.
|
||||
`H' toggles between showing historical balances or period balances.
|
||||
Historical balances (the default) are ending balances at the end of the
|
||||
report period, taking into account all transactions before that date
|
||||
(filtered by the filter query if any), including transactions before the
|
||||
start of the report period. In other words, historical balances are
|
||||
what you would see on a bank statement for that account (unless
|
||||
disturbed by a filter query). Period balances ignore transactions
|
||||
before the report start date, so they show the change in balance during
|
||||
the report period. They are more useful eg when viewing a time log.
|
||||
start of the report period. In other words, historical balances are what
|
||||
you would see on a bank statement for that account (unless disturbed by
|
||||
a filter query). Period balances ignore transactions before the report
|
||||
start date, so they show the change in balance during the report period.
|
||||
They are more useful eg when viewing a time log.
|
||||
|
||||
'U' toggles filtering by unmarked status, including or excluding
|
||||
unmarked postings in the balances. Similarly, 'P' toggles pending
|
||||
postings, and 'C' toggles cleared postings. (By default, balances
|
||||
`U' toggles filtering by unmarked status, including or excluding
|
||||
unmarked postings in the balances. Similarly, `P' toggles pending
|
||||
postings, and `C' toggles cleared postings. (By default, balances
|
||||
include all postings; if you activate one or two status filters, only
|
||||
those postings are included; and if you activate all three, the filter
|
||||
is removed.)
|
||||
|
||||
'R' toggles real mode, in which virtual postings are ignored.
|
||||
`R' toggles real mode, in which virtual postings are ignored.
|
||||
|
||||
'Z' toggles nonzero mode, in which only accounts with nonzero
|
||||
`Z' toggles nonzero mode, in which only accounts with nonzero
|
||||
balances are shown (hledger-ui shows zero items by default, unlike
|
||||
command-line hledger).
|
||||
|
||||
Press 'right' or 'enter' to view an account's transactions register.
|
||||
Press `right' or `enter' to view an account's transactions register.
|
||||
|
||||
|
||||
File: hledger-ui.info, Node: Register screen, Next: Transaction screen, Prev: Accounts screen, Up: SCREENS
|
||||
@ -388,41 +384,43 @@ This screen shows the transactions affecting a particular account, like
|
||||
a check register. Each line represents one transaction and shows:
|
||||
|
||||
* the other account(s) involved, in abbreviated form. (If there are
|
||||
both real and virtual postings, it shows only the accounts affected
|
||||
by real postings.)
|
||||
both real and virtual postings, it shows only the accounts
|
||||
affected by real postings.)
|
||||
|
||||
* the overall change to the current account's balance; positive for
|
||||
an inflow to this account, negative for an outflow.
|
||||
|
||||
* the running historical total or period total for the current
|
||||
account, after the transaction. This can be toggled with 'H'.
|
||||
Similar to the accounts screen, the historical total is affected by
|
||||
transactions (filtered by the filter query) before the report start
|
||||
date, while the period total is not. If the historical total is
|
||||
not disturbed by a filter query, it will be the running historical
|
||||
balance you would see on a bank register for the current account.
|
||||
account, after the transaction. This can be toggled with `H'.
|
||||
Similar to the accounts screen, the historical total is affected
|
||||
by transactions (filtered by the filter query) before the report
|
||||
start date, while the period total is not. If the historical total
|
||||
is not disturbed by a filter query, it will be the running
|
||||
historical balance you would see on a bank register for the
|
||||
current account.
|
||||
|
||||
|
||||
Transactions affecting this account's subaccounts will be included in
|
||||
the register if the accounts screen is in tree mode, or if it's in list
|
||||
mode but this account has subaccounts which are not shown due to a depth
|
||||
limit. In other words, the register always shows the transactions
|
||||
contributing to the balance shown on the accounts screen. Tree
|
||||
mode/list mode can be toggled with 't' here also.
|
||||
contributing to the balance shown on the accounts screen. Tree mode/list
|
||||
mode can be toggled with `t' here also.
|
||||
|
||||
'U' toggles filtering by unmarked status, showing or hiding unmarked
|
||||
transactions. Similarly, 'P' toggles pending transactions, and 'C'
|
||||
`U' toggles filtering by unmarked status, showing or hiding unmarked
|
||||
transactions. Similarly, `P' toggles pending transactions, and `C'
|
||||
toggles cleared transactions. (By default, transactions with all
|
||||
statuses are shown; if you activate one or two status filters, only
|
||||
those transactions are shown; and if you activate all three, the filter
|
||||
is removed.)
|
||||
|
||||
'R' toggles real mode, in which virtual postings are ignored.
|
||||
`R' toggles real mode, in which virtual postings are ignored.
|
||||
|
||||
'Z' toggles nonzero mode, in which only transactions posting a
|
||||
`Z' toggles nonzero mode, in which only transactions posting a
|
||||
nonzero change are shown (hledger-ui shows zero items by default, unlike
|
||||
command-line hledger).
|
||||
|
||||
Press 'right' (or 'enter') to view the selected transaction in
|
||||
Press `right' (or `enter') to view the selected transaction in
|
||||
detail.
|
||||
|
||||
|
||||
@ -440,7 +438,7 @@ description, comments, along with all of its account postings are shown.
|
||||
Simple transactions have two postings, but there can be more (or in
|
||||
certain cases, fewer).
|
||||
|
||||
'up' and 'down' will step through all transactions listed in the
|
||||
`up' and `down' will step through all transactions listed in the
|
||||
previous account register screen. In the title bar, the numbers in
|
||||
parentheses show your position within that account register. They will
|
||||
vary depending on which account register you came from (remember most
|
||||
@ -477,15 +475,16 @@ File: hledger-ui.info, Node: Watch mode, Next: Watch mode limitations, Up: TI
|
||||
4.1 Watch mode
|
||||
==============
|
||||
|
||||
One of hledger-ui's best features is the auto-reloading '--watch' mode.
|
||||
One of hledger-ui's best features is the auto-reloading `--watch' mode.
|
||||
With this flag, it will update the display automatically whenever
|
||||
changes are saved to the data files.
|
||||
|
||||
This is very useful when reconciling. A good workflow is to have
|
||||
your bank's online register open in a browser window, for reference; the
|
||||
This is very useful when reconciling. A good workflow is to have your
|
||||
bank's online register open in a browser window, for reference; the
|
||||
journal file open in an editor window; and hledger-ui in watch mode in a
|
||||
terminal window, eg:
|
||||
|
||||
|
||||
$ hledger-ui --watch --register checking -C
|
||||
|
||||
As you mark things cleared in the editor, you can see the effect
|
||||
@ -501,28 +500,29 @@ File: hledger-ui.info, Node: Watch mode limitations, Prev: Watch mode, Up: TI
|
||||
==========================
|
||||
|
||||
There are situations in which it won't work, ie the display will not
|
||||
update when you save a change (because the underlying 'inotify' library
|
||||
update when you save a change (because the underlying `inotify' library
|
||||
does not support it). Here are some that we know of:
|
||||
|
||||
* Certain editors: saving with 'gedit', and perhaps any Gnome
|
||||
* Certain editors: saving with `gedit', and perhaps any Gnome
|
||||
application, won't be detected (#1617). Jetbrains IDEs, such as
|
||||
IDEA, also may not work (#911).
|
||||
|
||||
* Certain unusual filesystems might not be supported. (All the usual
|
||||
ones on unix, mac and windows are supported.)
|
||||
|
||||
|
||||
In such cases, the workaround is to switch to the hledger-ui window
|
||||
and press 'g' each time you want it to reload. (Actually, see #1617 for
|
||||
and press `g' each time you want it to reload. (Actually, see #1617 for
|
||||
another workaround, and let us know if it works for you.)
|
||||
|
||||
If you leave 'hledger-ui --watch' running for days, on certain
|
||||
If you leave `hledger-ui --watch' running for days, on certain
|
||||
platforms (?), perhaps with many transactions in your journal (?),
|
||||
perhaps with large numbers of other files present (?), you may see it
|
||||
gradually using more and more memory and CPU over time, as seen in 'top'
|
||||
or Activity Monitor or Task Manager.
|
||||
gradually using more and more memory and CPU over time, as seen in
|
||||
`top' or Activity Monitor or Task Manager.
|
||||
|
||||
A workaround is to 'q'uit and restart it, or to suspend it ('CTRL-z')
|
||||
and restart it ('fg') if your shell supports that.
|
||||
A workaround is to `q'uit and restart it, or to suspend it
|
||||
(`CTRL-z') and restart it (`fg') if your shell supports that.
|
||||
|
||||
|
||||
File: hledger-ui.info, Node: ENVIRONMENT, Next: FILES, Prev: TIPS, Up: Top
|
||||
@ -532,25 +532,26 @@ File: hledger-ui.info, Node: ENVIRONMENT, Next: FILES, Prev: TIPS, Up: Top
|
||||
|
||||
*COLUMNS* The screen width to use. Default: the full terminal width.
|
||||
|
||||
*LEDGER_FILE* The journal file path when not specified with '-f'.
|
||||
Default: '~/.hledger.journal' (on windows, perhaps
|
||||
'C:/Users/USER/.hledger.journal').
|
||||
*LEDGER_FILE* The journal file path when not specified with `-f'.
|
||||
Default: `~/.hledger.journal' (on windows, perhaps
|
||||
`C:/Users/USER/.hledger.journal').
|
||||
|
||||
A typical value is '~/DIR/YYYY.journal', where DIR is a
|
||||
A typical value is `~/DIR/YYYY.journal', where DIR is a
|
||||
version-controlled finance directory and YYYY is the current year. Or
|
||||
'~/DIR/current.journal', where current.journal is a symbolic link to
|
||||
`~/DIR/current.journal', where current.journal is a symbolic link to
|
||||
YYYY.journal.
|
||||
|
||||
On Mac computers, you can set this and other environment variables in
|
||||
a more thorough way that also affects applications started from the GUI
|
||||
(say, an Emacs dock icon). Eg on MacOS Catalina I have a
|
||||
'~/.MacOSX/environment.plist' file containing
|
||||
On Mac computers, you can set this and other environment variables
|
||||
in a more thorough way that also affects applications started from the
|
||||
GUI (say, an Emacs dock icon). Eg on MacOS Catalina I have a
|
||||
`~/.MacOSX/environment.plist' file containing
|
||||
|
||||
|
||||
{
|
||||
"LEDGER_FILE" : "~/finance/current.journal"
|
||||
}
|
||||
|
||||
To see the effect you may need to 'killall Dock', or reboot.
|
||||
To see the effect you may need to `killall Dock', or reboot.
|
||||
|
||||
|
||||
File: hledger-ui.info, Node: FILES, Next: BUGS, Prev: ENVIRONMENT, Up: Top
|
||||
@ -559,9 +560,9 @@ File: hledger-ui.info, Node: FILES, Next: BUGS, Prev: ENVIRONMENT, Up: Top
|
||||
*******
|
||||
|
||||
Reads data from one or more files in hledger journal, timeclock,
|
||||
timedot, or CSV format specified with '-f', or '$LEDGER_FILE', or
|
||||
'$HOME/.hledger.journal' (on windows, perhaps
|
||||
'C:/Users/USER/.hledger.journal').
|
||||
timedot, or CSV format specified with `-f', or `$LEDGER_FILE', or
|
||||
`$HOME/.hledger.journal' (on windows, perhaps
|
||||
`C:/Users/USER/.hledger.journal').
|
||||
|
||||
|
||||
File: hledger-ui.info, Node: BUGS, Prev: FILES, Up: Top
|
||||
@ -569,18 +570,18 @@ File: hledger-ui.info, Node: BUGS, Prev: FILES, Up: Top
|
||||
7 BUGS
|
||||
******
|
||||
|
||||
The need to precede options with '--' when invoked from hledger is
|
||||
The need to precede options with `--' when invoked from hledger is
|
||||
awkward.
|
||||
|
||||
'-f-' doesn't work (hledger-ui can't read from stdin).
|
||||
`-f-' doesn't work (hledger-ui can't read from stdin).
|
||||
|
||||
'-V' affects only the accounts screen.
|
||||
`-V' affects only the accounts screen.
|
||||
|
||||
When you press 'g', the current and all previous screens are
|
||||
When you press `g', the current and all previous screens are
|
||||
regenerated, which may cause a noticeable pause with large files. Also
|
||||
there is no visual indication that this is in progress.
|
||||
|
||||
'--watch' is not yet fully robust. It works well for normal usage,
|
||||
`--watch' is not yet fully robust. It works well for normal usage,
|
||||
but many file changes in a short time (eg saving the file thousands of
|
||||
times with an editor macro) can cause problems at least on OSX. Symptoms
|
||||
include: unresponsive UI, periodic resetting of the cursor position,
|
||||
@ -589,41 +590,37 @@ and possibly a small but persistent build-up of CPU usage until the
|
||||
program is restarted.
|
||||
|
||||
Also, if you are viewing files mounted from another machine,
|
||||
'--watch' requires that both machine clocks are roughly in step.
|
||||
`--watch' requires that both machine clocks are roughly in step.
|
||||
|
||||
|
||||
|
||||
Tag Table:
|
||||
Node: Top221
|
||||
Node: OPTIONS1647
|
||||
Ref: #options1744
|
||||
Node: KEYS6145
|
||||
Ref: #keys6240
|
||||
Node: SCREENS10311
|
||||
Ref: #screens10409
|
||||
Node: Accounts screen10499
|
||||
Ref: #accounts-screen10627
|
||||
Node: Register screen12842
|
||||
Ref: #register-screen12997
|
||||
Node: Transaction screen14994
|
||||
Ref: #transaction-screen15152
|
||||
Node: Error screen16022
|
||||
Ref: #error-screen16144
|
||||
Node: TIPS16388
|
||||
Ref: #tips16487
|
||||
Node: Watch mode16539
|
||||
Ref: #watch-mode16656
|
||||
Node: Watch mode limitations17402
|
||||
Ref: #watch-mode-limitations17543
|
||||
Node: ENVIRONMENT18679
|
||||
Ref: #environment18790
|
||||
Node: FILES19597
|
||||
Ref: #files19696
|
||||
Node: BUGS19909
|
||||
Ref: #bugs19986
|
||||
Node: Top232
|
||||
Node: OPTIONS1637
|
||||
Ref: #options1734
|
||||
Node: KEYS6129
|
||||
Ref: #keys6224
|
||||
Node: SCREENS10273
|
||||
Ref: #screens10371
|
||||
Node: Accounts screen10461
|
||||
Ref: #accounts-screen10589
|
||||
Node: Register screen12793
|
||||
Ref: #register-screen12948
|
||||
Node: Transaction screen14943
|
||||
Ref: #transaction-screen15101
|
||||
Node: Error screen15968
|
||||
Ref: #error-screen16090
|
||||
Node: TIPS16332
|
||||
Ref: #tips16431
|
||||
Node: Watch mode16483
|
||||
Ref: #watch-mode16600
|
||||
Node: Watch mode limitations17344
|
||||
Ref: #watch-mode-limitations17485
|
||||
Node: ENVIRONMENT18618
|
||||
Ref: #environment18729
|
||||
Node: FILES19534
|
||||
Ref: #files19633
|
||||
Node: BUGS19846
|
||||
Ref: #bugs19923
|
||||
|
||||
End Tag Table
|
||||
|
||||
|
||||
Local Variables:
|
||||
coding: utf-8
|
||||
End:
|
||||
|
||||
@ -504,4 +504,4 @@ SEE ALSO
|
||||
|
||||
|
||||
|
||||
hledger-ui-1.22.99 August 2021 HLEDGER-UI(1)
|
||||
hledger-ui-1.22.99 September 2021 HLEDGER-UI(1)
|
||||
|
||||
@ -1,2 +1,2 @@
|
||||
m4_dnl Date to show in man pages. Updated by "Shake manuals"
|
||||
m4_define({{_monthyear_}}, {{August 2021}})m4_dnl
|
||||
m4_define({{_monthyear_}}, {{September 2021}})m4_dnl
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
|
||||
.TH "HLEDGER-WEB" "1" "August 2021" "hledger-web-1.22.99 " "hledger User Manuals"
|
||||
.TH "HLEDGER-WEB" "1" "September 2021" "hledger-web-1.22.99 " "hledger User Manuals"
|
||||
|
||||
|
||||
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
This is hledger-web.info, produced by makeinfo version 6.8 from stdin.
|
||||
This is hledger-web/hledger-web.info, produced by makeinfo version 4.8
|
||||
from stdin.
|
||||
|
||||
INFO-DIR-SECTION User Applications
|
||||
START-INFO-DIR-ENTRY
|
||||
@ -6,7 +7,7 @@ START-INFO-DIR-ENTRY
|
||||
END-INFO-DIR-ENTRY
|
||||
|
||||
|
||||
File: hledger-web.info, Node: Top, Next: OPTIONS, Up: (dir)
|
||||
File: hledger-web.info, Node: Top, Up: (dir)
|
||||
|
||||
hledger-web(1)
|
||||
**************
|
||||
@ -14,8 +15,8 @@ hledger-web(1)
|
||||
hledger-web is a web interface (WUI) for the hledger accounting tool.
|
||||
This manual is for hledger-web 1.22.99.
|
||||
|
||||
'hledger-web [OPTIONS]'
|
||||
'hledger web -- [OPTIONS]'
|
||||
`hledger-web [OPTIONS]'
|
||||
`hledger web -- [OPTIONS]'
|
||||
|
||||
hledger is a reliable, cross-platform set of programs for tracking
|
||||
money, time, or any other commodity, using double-entry accounting and a
|
||||
@ -24,22 +25,21 @@ compatible with ledger(1).
|
||||
|
||||
hledger-web is hledger's web interface. It starts a simple web
|
||||
application for browsing and adding transactions, and optionally opens
|
||||
it in a web browser window if possible. It provides a more
|
||||
user-friendly UI than the hledger CLI or hledger-ui interface, showing
|
||||
more at once (accounts, the current account register, balance charts)
|
||||
and allowing history-aware data entry, interactive searching, and
|
||||
bookmarking.
|
||||
it in a web browser window if possible. It provides a more user-friendly
|
||||
UI than the hledger CLI or hledger-ui interface, showing more at once
|
||||
(accounts, the current account register, balance charts) and allowing
|
||||
history-aware data entry, interactive searching, and bookmarking.
|
||||
|
||||
hledger-web also lets you share a ledger with multiple users, or even
|
||||
the public web. There is no access control, so if you need that you
|
||||
should put it behind a suitable web proxy. As a small protection
|
||||
against data loss when running an unprotected instance, it writes a
|
||||
numbered backup of the main journal file (only ?) on every edit.
|
||||
should put it behind a suitable web proxy. As a small protection against
|
||||
data loss when running an unprotected instance, it writes a numbered
|
||||
backup of the main journal file (only ?) on every edit.
|
||||
|
||||
Like hledger, it reads data from one or more files in hledger
|
||||
journal, timeclock, timedot, or CSV format specified with '-f', or
|
||||
'$LEDGER_FILE', or '$HOME/.hledger.journal' (on windows, perhaps
|
||||
'C:/Users/USER/.hledger.journal'). For more about this see hledger(1).
|
||||
journal, timeclock, timedot, or CSV format specified with `-f', or
|
||||
`$LEDGER_FILE', or `$HOME/.hledger.journal' (on windows, perhaps
|
||||
`C:/Users/USER/.hledger.journal'). For more about this see hledger(1).
|
||||
|
||||
* Menu:
|
||||
|
||||
@ -62,161 +62,158 @@ Command-line options and arguments may be used to set an initial filter
|
||||
on the data. These filter options are not shown in the web UI, but it
|
||||
will be applied in addition to any search query entered there.
|
||||
|
||||
Note: if invoking hledger-web as a hledger subcommand, write '--'
|
||||
Note: if invoking hledger-web as a hledger subcommand, write `--'
|
||||
before options, as shown in the synopsis above.
|
||||
|
||||
'--serve'
|
||||
|
||||
`--serve'
|
||||
serve and log requests, don't browse or auto-exit
|
||||
'--serve-api'
|
||||
|
||||
`--serve-api'
|
||||
like -serve, but serve only the JSON web API, without the
|
||||
server-side web UI
|
||||
'--host=IPADDR'
|
||||
|
||||
`--host=IPADDR'
|
||||
listen on this IP address (default: 127.0.0.1)
|
||||
'--port=PORT'
|
||||
|
||||
`--port=PORT'
|
||||
listen on this TCP port (default: 5000)
|
||||
'--socket=SOCKETFILE'
|
||||
|
||||
`--socket=SOCKETFILE'
|
||||
use a unix domain socket file to listen for requests instead of a
|
||||
TCP socket. Implies '--serve'. It can only be used if the
|
||||
operating system can provide this type of socket.
|
||||
'--base-url=URL'
|
||||
TCP socket. Implies `--serve'. It can only be used if the operating
|
||||
system can provide this type of socket.
|
||||
|
||||
`--base-url=URL'
|
||||
set the base url (default: http://IPADDR:PORT). You would change
|
||||
this when sharing over the network, or integrating within a larger
|
||||
website.
|
||||
'--file-url=URL'
|
||||
|
||||
`--file-url=URL'
|
||||
set the static files url (default: BASEURL/static). hledger-web
|
||||
normally serves static files itself, but if you wanted to serve
|
||||
them from another server for efficiency, you would set the url with
|
||||
this.
|
||||
'--capabilities=CAP[,CAP..]'
|
||||
them from another server for efficiency, you would set the url
|
||||
with this.
|
||||
|
||||
`--capabilities=CAP[,CAP..]'
|
||||
enable the view, add, and/or manage capabilities (default:
|
||||
view,add)
|
||||
'--capabilities-header=HTTPHEADER'
|
||||
|
||||
`--capabilities-header=HTTPHEADER'
|
||||
read capabilities to enable from a HTTP header, like
|
||||
X-Sandstorm-Permissions (default: disabled)
|
||||
'--test'
|
||||
|
||||
`--test'
|
||||
run hledger-web's tests and exit. hspec test runner args may
|
||||
follow a -, eg: hledger-web -test - -help
|
||||
|
||||
hledger input options:
|
||||
|
||||
'-f FILE --file=FILE'
|
||||
|
||||
`-f FILE --file=FILE'
|
||||
use a different input file. For stdin, use - (default:
|
||||
'$LEDGER_FILE' or '$HOME/.hledger.journal')
|
||||
'--rules-file=RULESFILE'
|
||||
`$LEDGER_FILE' or `$HOME/.hledger.journal')
|
||||
|
||||
`--rules-file=RULESFILE'
|
||||
Conversion rules file to use when reading CSV (default: FILE.rules)
|
||||
'--separator=CHAR'
|
||||
|
||||
`--separator=CHAR'
|
||||
Field separator to expect when reading CSV (default: ',')
|
||||
'--alias=OLD=NEW'
|
||||
|
||||
`--alias=OLD=NEW'
|
||||
rename accounts named OLD to NEW
|
||||
'--anon'
|
||||
|
||||
`--anon'
|
||||
anonymize accounts and payees
|
||||
'--pivot FIELDNAME'
|
||||
|
||||
`--pivot FIELDNAME'
|
||||
use some other field or tag for the account name
|
||||
'-I --ignore-assertions'
|
||||
|
||||
`-I --ignore-assertions'
|
||||
disable balance assertion checks (note: does not disable balance
|
||||
assignments)
|
||||
'-s --strict'
|
||||
|
||||
`-s --strict'
|
||||
do extra error checking (check that all posted accounts are
|
||||
declared)
|
||||
|
||||
hledger reporting options:
|
||||
|
||||
'-b --begin=DATE'
|
||||
|
||||
`-b --begin=DATE'
|
||||
include postings/txns on or after this date (will be adjusted to
|
||||
preceding subperiod start when using a report interval)
|
||||
'-e --end=DATE'
|
||||
|
||||
`-e --end=DATE'
|
||||
include postings/txns before this date (will be adjusted to
|
||||
following subperiod end when using a report interval)
|
||||
'-D --daily'
|
||||
|
||||
`-D --daily'
|
||||
multiperiod/multicolumn report by day
|
||||
'-W --weekly'
|
||||
|
||||
`-W --weekly'
|
||||
multiperiod/multicolumn report by week
|
||||
'-M --monthly'
|
||||
|
||||
`-M --monthly'
|
||||
multiperiod/multicolumn report by month
|
||||
'-Q --quarterly'
|
||||
|
||||
`-Q --quarterly'
|
||||
multiperiod/multicolumn report by quarter
|
||||
'-Y --yearly'
|
||||
|
||||
`-Y --yearly'
|
||||
multiperiod/multicolumn report by year
|
||||
'-p --period=PERIODEXP'
|
||||
|
||||
`-p --period=PERIODEXP'
|
||||
set start date, end date, and/or reporting interval all at once
|
||||
using period expressions syntax
|
||||
'--date2'
|
||||
|
||||
`--date2'
|
||||
match the secondary date instead (see command help for other
|
||||
effects)
|
||||
'-U --unmarked'
|
||||
|
||||
`-U --unmarked'
|
||||
include only unmarked postings/txns (can combine with -P or -C)
|
||||
'-P --pending'
|
||||
|
||||
`-P --pending'
|
||||
include only pending postings/txns
|
||||
'-C --cleared'
|
||||
|
||||
`-C --cleared'
|
||||
include only cleared postings/txns
|
||||
'-R --real'
|
||||
|
||||
`-R --real'
|
||||
include only non-virtual postings
|
||||
'-NUM --depth=NUM'
|
||||
|
||||
`-NUM --depth=NUM'
|
||||
hide/aggregate accounts or postings more than NUM levels deep
|
||||
'-E --empty'
|
||||
|
||||
`-E --empty'
|
||||
show items with zero amount, normally hidden (and vice-versa in
|
||||
hledger-ui/hledger-web)
|
||||
'-B --cost'
|
||||
|
||||
`-B --cost'
|
||||
convert amounts to their cost/selling amount at transaction time
|
||||
'-V --market'
|
||||
|
||||
`-V --market'
|
||||
convert amounts to their market value in default valuation
|
||||
commodities
|
||||
'-X --exchange=COMM'
|
||||
|
||||
`-X --exchange=COMM'
|
||||
convert amounts to their market value in commodity COMM
|
||||
'--value'
|
||||
|
||||
`--value'
|
||||
convert amounts to cost or market value, more flexibly than
|
||||
-B/-V/-X
|
||||
'--infer-market-prices'
|
||||
|
||||
`--infer-market-prices'
|
||||
use transaction prices (recorded with @ or @@) as additional market
|
||||
prices, as if they were P directives
|
||||
'--auto'
|
||||
|
||||
`--auto'
|
||||
apply automated posting rules to modify transactions.
|
||||
'--forecast'
|
||||
|
||||
`--forecast'
|
||||
generate future transactions from periodic transaction rules, for
|
||||
the next 6 months or till report end date. In hledger-ui, also
|
||||
make ordinary future transactions visible.
|
||||
'--color=WHEN (or --colour=WHEN)'
|
||||
|
||||
`--color=WHEN (or --colour=WHEN)'
|
||||
Should color-supporting commands use ANSI color codes in text
|
||||
output. 'auto' (default): whenever stdout seems to be a
|
||||
color-supporting terminal. 'always' or 'yes': always, useful eg
|
||||
@ -230,62 +227,62 @@ the last one takes precedence.
|
||||
|
||||
hledger help options:
|
||||
|
||||
'-h --help'
|
||||
|
||||
`-h --help'
|
||||
show general or COMMAND help
|
||||
'--man'
|
||||
|
||||
`--man'
|
||||
show general or COMMAND user manual with man
|
||||
'--info'
|
||||
|
||||
`--info'
|
||||
show general or COMMAND user manual with info
|
||||
'--version'
|
||||
|
||||
`--version'
|
||||
show general or ADDONCMD version
|
||||
'--debug[=N]'
|
||||
|
||||
`--debug[=N]'
|
||||
show debug output (levels 1-9, default: 1)
|
||||
|
||||
A @FILE argument will be expanded to the contents of FILE, which
|
||||
should contain one command line option/argument per line. (To prevent
|
||||
this, insert a '--' argument before.)
|
||||
this, insert a `--' argument before.)
|
||||
|
||||
By default, hledger-web starts the web app in "transient mode" and
|
||||
also opens it in your default web browser if possible. In this mode the
|
||||
web app will keep running for as long as you have it open in a browser
|
||||
window, and will exit after two minutes of inactivity (no requests and
|
||||
no browser windows viewing it). With '--serve', it just runs the web
|
||||
no browser windows viewing it). With `--serve', it just runs the web
|
||||
app without exiting, and logs requests to the console. With
|
||||
'--serve-api', only the JSON web api (see below) is served, with the
|
||||
`--serve-api', only the JSON web api (see below) is served, with the
|
||||
usual HTML server-side web UI disabled.
|
||||
|
||||
By default the server listens on IP address 127.0.0.1, accessible
|
||||
only to local requests. You can use '--host' to change this, eg '--host
|
||||
only to local requests. You can use `--host' to change this, eg `--host
|
||||
0.0.0.0' to listen on all configured addresses.
|
||||
|
||||
Similarly, use '--port' to set a TCP port other than 5000, eg if you
|
||||
Similarly, use `--port' to set a TCP port other than 5000, eg if you
|
||||
are running multiple hledger-web instances.
|
||||
|
||||
Both of these options are ignored when '--socket' is used. In this
|
||||
case, it creates an 'AF_UNIX' socket file at the supplied path and uses
|
||||
Both of these options are ignored when `--socket' is used. In this
|
||||
case, it creates an `AF_UNIX' socket file at the supplied path and uses
|
||||
that for communication. This is an alternative way of running multiple
|
||||
hledger-web instances behind a reverse proxy that handles authentication
|
||||
for different users. The path can be derived in a predictable way, eg
|
||||
by using the username within the path. As an example, 'nginx' as
|
||||
reverse proxy can use the variable '$remote_user' to derive a path from
|
||||
the username used in a HTTP basic authentication. The following
|
||||
'proxy_pass' directive allows access to all 'hledger-web' instances that
|
||||
created a socket in '/tmp/hledger/':
|
||||
hledger-web instances behind a reverse proxy that handles
|
||||
authentication for different users. The path can be derived in a
|
||||
predictable way, eg by using the username within the path. As an
|
||||
example, `nginx' as reverse proxy can use the variable `$remote_user'
|
||||
to derive a path from the username used in a HTTP basic authentication.
|
||||
The following `proxy_pass' directive allows access to all `hledger-web'
|
||||
instances that created a socket in `/tmp/hledger/':
|
||||
|
||||
|
||||
proxy_pass http://unix:/tmp/hledger/${remote_user}.socket;
|
||||
|
||||
You can use '--base-url' to change the protocol, hostname, port and
|
||||
You can use `--base-url' to change the protocol, hostname, port and
|
||||
path that appear in hyperlinks, useful eg for integrating hledger-web
|
||||
within a larger website. The default is 'http://HOST:PORT/' using the
|
||||
server's configured host address and TCP port (or 'http://HOST' if PORT
|
||||
within a larger website. The default is `http://HOST:PORT/' using the
|
||||
server's configured host address and TCP port (or `http://HOST' if PORT
|
||||
is 80).
|
||||
|
||||
With '--file-url' you can set a different base url for static files,
|
||||
With `--file-url' you can set a different base url for static files,
|
||||
eg for better caching or cookie-less serving on high performance
|
||||
websites.
|
||||
|
||||
@ -300,25 +297,29 @@ journal and to add new transactions, but not to change existing data.
|
||||
|
||||
You can restrict who can reach it by
|
||||
|
||||
* setting the IP address it listens on (see '--host' above). By
|
||||
* setting the IP address it listens on (see `--host' above). By
|
||||
default it listens on 127.0.0.1, accessible to all users on the
|
||||
local machine.
|
||||
|
||||
* putting it behind an authenticating proxy, using eg apache or nginx
|
||||
|
||||
* custom firewall rules
|
||||
|
||||
You can restrict what the users who reach it can do, by
|
||||
|
||||
* using the '--capabilities=CAP[,CAP..]' flag when you start it,
|
||||
* using the `--capabilities=CAP[,CAP..]' flag when you start it,
|
||||
enabling one or more of the following capabilities. The default
|
||||
value is 'view,add':
|
||||
* 'view' - allows viewing the journal file and all included
|
||||
value is `view,add':
|
||||
* `view' - allows viewing the journal file and all included
|
||||
files
|
||||
* 'add' - allows adding new transactions to the main journal
|
||||
|
||||
* `add' - allows adding new transactions to the main journal
|
||||
file
|
||||
* 'manage' - allows editing, uploading or downloading the main
|
||||
|
||||
* `manage' - allows editing, uploading or downloading the main
|
||||
or included files
|
||||
|
||||
* using the '--capabilities-header=HTTPHEADER' flag to specify a HTTP
|
||||
* using the `--capabilities-header=HTTPHEADER' flag to specify a HTTP
|
||||
header from which it will read capabilities to enable. hledger-web
|
||||
on Sandstorm uses the X-Sandstorm-Permissions header to integrate
|
||||
with Sandstorm's permissions. This is disabled by default.
|
||||
@ -329,7 +330,7 @@ File: hledger-web.info, Node: EDITING UPLOADING DOWNLOADING, Next: RELOADING,
|
||||
3 EDITING, UPLOADING, DOWNLOADING
|
||||
*********************************
|
||||
|
||||
If you enable the 'manage' capability mentioned above, you'll see a new
|
||||
If you enable the `manage' capability mentioned above, you'll see a new
|
||||
"spanner" button to the right of the search form. Clicking this will
|
||||
let you edit, upload, or download the journal file or any files it
|
||||
includes.
|
||||
@ -370,13 +371,15 @@ File: hledger-web.info, Node: JSON API, Next: ENVIRONMENT, Prev: RELOADING,
|
||||
|
||||
In addition to the web UI, hledger-web also serves a JSON API that can
|
||||
be used to get data or add new transactions. If you want the JSON API
|
||||
only, you can use the '--serve-api' flag. Eg:
|
||||
only, you can use the `--serve-api' flag. Eg:
|
||||
|
||||
|
||||
$ hledger-web -f examples/sample.journal --serve-api
|
||||
...
|
||||
|
||||
You can get JSON data from these routes:
|
||||
|
||||
|
||||
/version
|
||||
/accountnames
|
||||
/transactions
|
||||
@ -389,6 +392,7 @@ $ hledger-web -f examples/sample.journal --serve-api
|
||||
command). (hledger-web's JSON does not include newlines, here we use
|
||||
python to prettify it):
|
||||
|
||||
|
||||
$ curl -s http://127.0.0.1:5000/accountnames | python -m json.tool
|
||||
[
|
||||
"assets",
|
||||
@ -408,6 +412,7 @@ $ curl -s http://127.0.0.1:5000/accountnames | python -m json.tool
|
||||
|
||||
Or all transactions:
|
||||
|
||||
|
||||
$ curl -s http://127.0.0.1:5000/transactions | python -m json.tool
|
||||
[
|
||||
{
|
||||
@ -433,20 +438,21 @@ on the various data types, eg Transaction. And for a higher level
|
||||
understanding, see the journal manual.
|
||||
|
||||
In some cases there is outer JSON corresponding to a "Report" type.
|
||||
To understand that, go to the Hledger.Web.Handler.MiscR haddock and look
|
||||
at the source for the appropriate handler to see what it returns. Eg
|
||||
for '/accounttransactions' it's getAccounttransactionsR, returning a
|
||||
"'accountTransactionsReport ...'". Looking up the haddock for that we
|
||||
To understand that, go to the Hledger.Web.Handler.MiscR haddock and
|
||||
look at the source for the appropriate handler to see what it returns.
|
||||
Eg for `/accounttransactions' it's getAccounttransactionsR, returning a
|
||||
"`accountTransactionsReport ...'". Looking up the haddock for that we
|
||||
can see that /accounttransactions returns an AccountTransactionsReport,
|
||||
which consists of a report title and a list of
|
||||
AccountTransactionsReportItem (etc).
|
||||
|
||||
You can add a new transaction to the journal with a PUT request to
|
||||
'/add', if hledger-web was started with the 'add' capability (enabled by
|
||||
default). The payload must be the full, exact JSON representation of a
|
||||
hledger transaction (partial data won't do). You can get sample JSON
|
||||
from hledger-web's '/transactions' or '/accounttransactions', or you can
|
||||
export it with hledger-lib, eg like so:
|
||||
`/add', if hledger-web was started with the `add' capability (enabled
|
||||
by default). The payload must be the full, exact JSON representation of
|
||||
a hledger transaction (partial data won't do). You can get sample JSON
|
||||
from hledger-web's `/transactions' or `/accounttransactions', or you
|
||||
can export it with hledger-lib, eg like so:
|
||||
|
||||
|
||||
.../hledger$ stack ghci hledger-lib
|
||||
>>> writeJsonFile "txn.json" (head $ jtxns samplejournal)
|
||||
@ -455,6 +461,7 @@ export it with hledger-lib, eg like so:
|
||||
Here's how it looks as of hledger-1.17 (remember, this JSON
|
||||
corresponds to hledger's Transaction and related data types):
|
||||
|
||||
|
||||
{
|
||||
"tcomment": "",
|
||||
"tpostings": [
|
||||
@ -544,6 +551,7 @@ corresponds to hledger's Transaction and related data types):
|
||||
And here's how to test adding it with curl. This should add a new
|
||||
entry to your journal:
|
||||
|
||||
|
||||
$ curl http://127.0.0.1:5000/add -X PUT -H 'Content-Type: application/json' --data-binary @txn.json
|
||||
|
||||
|
||||
@ -552,25 +560,26 @@ File: hledger-web.info, Node: ENVIRONMENT, Next: FILES, Prev: JSON API, Up:
|
||||
6 ENVIRONMENT
|
||||
*************
|
||||
|
||||
*LEDGER_FILE* The journal file path when not specified with '-f'.
|
||||
Default: '~/.hledger.journal' (on windows, perhaps
|
||||
'C:/Users/USER/.hledger.journal').
|
||||
*LEDGER_FILE* The journal file path when not specified with `-f'.
|
||||
Default: `~/.hledger.journal' (on windows, perhaps
|
||||
`C:/Users/USER/.hledger.journal').
|
||||
|
||||
A typical value is '~/DIR/YYYY.journal', where DIR is a
|
||||
A typical value is `~/DIR/YYYY.journal', where DIR is a
|
||||
version-controlled finance directory and YYYY is the current year. Or
|
||||
'~/DIR/current.journal', where current.journal is a symbolic link to
|
||||
`~/DIR/current.journal', where current.journal is a symbolic link to
|
||||
YYYY.journal.
|
||||
|
||||
On Mac computers, you can set this and other environment variables in
|
||||
a more thorough way that also affects applications started from the GUI
|
||||
(say, an Emacs dock icon). Eg on MacOS Catalina I have a
|
||||
'~/.MacOSX/environment.plist' file containing
|
||||
On Mac computers, you can set this and other environment variables
|
||||
in a more thorough way that also affects applications started from the
|
||||
GUI (say, an Emacs dock icon). Eg on MacOS Catalina I have a
|
||||
`~/.MacOSX/environment.plist' file containing
|
||||
|
||||
|
||||
{
|
||||
"LEDGER_FILE" : "~/finance/current.journal"
|
||||
}
|
||||
|
||||
To see the effect you may need to 'killall Dock', or reboot.
|
||||
To see the effect you may need to `killall Dock', or reboot.
|
||||
|
||||
|
||||
File: hledger-web.info, Node: FILES, Next: BUGS, Prev: ENVIRONMENT, Up: Top
|
||||
@ -579,9 +588,9 @@ File: hledger-web.info, Node: FILES, Next: BUGS, Prev: ENVIRONMENT, Up: Top
|
||||
*******
|
||||
|
||||
Reads data from one or more files in hledger journal, timeclock,
|
||||
timedot, or CSV format specified with '-f', or '$LEDGER_FILE', or
|
||||
'$HOME/.hledger.journal' (on windows, perhaps
|
||||
'C:/Users/USER/.hledger.journal').
|
||||
timedot, or CSV format specified with `-f', or `$LEDGER_FILE', or
|
||||
`$HOME/.hledger.journal' (on windows, perhaps
|
||||
`C:/Users/USER/.hledger.journal').
|
||||
|
||||
|
||||
File: hledger-web.info, Node: BUGS, Prev: FILES, Up: Top
|
||||
@ -589,10 +598,10 @@ File: hledger-web.info, Node: BUGS, Prev: FILES, Up: Top
|
||||
8 BUGS
|
||||
******
|
||||
|
||||
The need to precede options with '--' when invoked from hledger is
|
||||
The need to precede options with `--' when invoked from hledger is
|
||||
awkward.
|
||||
|
||||
'-f-' doesn't work (hledger-web can't read from stdin).
|
||||
`-f-' doesn't work (hledger-web can't read from stdin).
|
||||
|
||||
Query arguments and some hledger options are ignored.
|
||||
|
||||
@ -600,29 +609,25 @@ awkward.
|
||||
|
||||
Does not work well on small screens.
|
||||
|
||||
|
||||
Tag Table:
|
||||
Node: Top223
|
||||
Node: OPTIONS1889
|
||||
Ref: #options1994
|
||||
Node: PERMISSIONS9427
|
||||
Ref: #permissions9566
|
||||
Node: EDITING UPLOADING DOWNLOADING10778
|
||||
Ref: #editing-uploading-downloading10959
|
||||
Node: RELOADING11793
|
||||
Ref: #reloading11927
|
||||
Node: JSON API12360
|
||||
Ref: #json-api12474
|
||||
Node: ENVIRONMENT17964
|
||||
Ref: #environment18080
|
||||
Node: FILES18813
|
||||
Ref: #files18913
|
||||
Node: BUGS19126
|
||||
Ref: #bugs19204
|
||||
|
||||
End Tag Table
|
||||
|
||||
|
||||
Local Variables:
|
||||
coding: utf-8
|
||||
End:
|
||||
Tag Table:
|
||||
Node: Top235
|
||||
Node: OPTIONS1878
|
||||
Ref: #options1983
|
||||
Node: PERMISSIONS9396
|
||||
Ref: #permissions9535
|
||||
Node: EDITING UPLOADING DOWNLOADING10747
|
||||
Ref: #editing-uploading-downloading10928
|
||||
Node: RELOADING11759
|
||||
Ref: #reloading11893
|
||||
Node: JSON API12325
|
||||
Ref: #json-api12439
|
||||
Node: ENVIRONMENT17928
|
||||
Ref: #environment18044
|
||||
Node: FILES18776
|
||||
Ref: #files18876
|
||||
Node: BUGS19089
|
||||
Ref: #bugs19167
|
||||
|
||||
End Tag Table
|
||||
|
||||
@ -556,4 +556,4 @@ SEE ALSO
|
||||
|
||||
|
||||
|
||||
hledger-web-1.22.99 August 2021 HLEDGER-WEB(1)
|
||||
hledger-web-1.22.99 September 2021 HLEDGER-WEB(1)
|
||||
|
||||
@ -1,2 +1,2 @@
|
||||
m4_dnl Date to show in man pages. Updated by "Shake manuals"
|
||||
m4_define({{_monthyear_}}, {{August 2021}})m4_dnl
|
||||
m4_define({{_monthyear_}}, {{September 2021}})m4_dnl
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
.\"t
|
||||
|
||||
.TH "HLEDGER" "1" "August 2021" "hledger-1.22.99 " "hledger User Manuals"
|
||||
.TH "HLEDGER" "1" "September 2021" "hledger-1.22.99 " "hledger User Manuals"
|
||||
|
||||
|
||||
|
||||
@ -762,6 +762,12 @@ T}@T{
|
||||
T}
|
||||
.TE
|
||||
.PP
|
||||
Note \[dq]today\[aq]s date\[dq] can be overridden with the
|
||||
\f[C]--today\f[R] option, in case it\[aq]s needed for testing or for
|
||||
recreating old reports.
|
||||
(Except for periodic transaction rules; those are not affected by
|
||||
\f[C]--today\f[R].)
|
||||
.PP
|
||||
.SS Report start & end date
|
||||
.PP
|
||||
By default, most hledger reports will show the full span of time
|
||||
@ -779,8 +785,8 @@ All of these accept the smart date syntax.
|
||||
.PP
|
||||
Some notes:
|
||||
.IP \[bu] 2
|
||||
As in Ledger, end dates are exclusive, so you need to write the date
|
||||
\f[I]after\f[R] the last day you want to include.
|
||||
End dates are exclusive, as in Ledger, so you should write the date
|
||||
\f[I]after\f[R] the last day you want to see in the report.
|
||||
.IP \[bu] 2
|
||||
As noted in reporting options: among start/end dates specified with
|
||||
\f[I]options\f[R], the last (i.e.
|
||||
@ -847,9 +853,16 @@ separate row or column.
|
||||
.PP
|
||||
The following \[dq]standard\[dq] report intervals can be enabled by
|
||||
using their corresponding flag:
|
||||
.PP
|
||||
\f[C]-D/--daily\f[R], \f[C]-W/--weekly\f[R], \f[C]-M/--monthly\f[R],
|
||||
\f[C]-Q/--quarterly\f[R], \f[C]-Y/--yearly\f[R].
|
||||
.IP \[bu] 2
|
||||
\f[C]-D/--daily\f[R]
|
||||
.IP \[bu] 2
|
||||
\f[C]-W/--weekly\f[R]
|
||||
.IP \[bu] 2
|
||||
\f[C]-M/--monthly\f[R]
|
||||
.IP \[bu] 2
|
||||
\f[C]-Q/--quarterly\f[R]
|
||||
.IP \[bu] 2
|
||||
\f[C]-Y/--yearly\f[R]
|
||||
.PP
|
||||
These standard intervals always start on natural interval boundaries: eg
|
||||
\f[C]--weekly\f[R] starts on mondays, \f[C]--monthly\f[R] starts on the
|
||||
@ -871,6 +884,20 @@ overridden (ie, the report starts earlier than your requested start
|
||||
date, or ends later than your requested end date).
|
||||
This is done to ensure \[dq]full\[dq] first and last subperiods, so that
|
||||
all subperiods\[aq] numbers are comparable.
|
||||
.PP
|
||||
To summarise:
|
||||
.IP \[bu] 2
|
||||
In multiperiod reports, all subperiods are forced to be the same length,
|
||||
to simplify reporting.
|
||||
.IP \[bu] 2
|
||||
Reports with the standard
|
||||
\f[C]--weekly\f[R]/\f[C]--monthly\f[R]/\f[C]--quarterly\f[R]/\f[C]--yearly\f[R]
|
||||
intervals are required to start on the first day of a
|
||||
week/month/quarter/year.
|
||||
We\[aq]d like more flexibility here but it isn\[aq]t supported yet.
|
||||
.IP \[bu] 2
|
||||
\f[C]--period\f[R] (below) can specify more complex intervals, starting
|
||||
on any date.
|
||||
.SS Period expressions
|
||||
.PP
|
||||
The \f[C]-p/--period\f[R] option accepts period expressions, a shorthand
|
||||
@ -882,7 +909,13 @@ Here\[aq]s a basic period expression specifying the first quarter of
|
||||
Note, hledger always treats start dates as inclusive and end dates as
|
||||
exclusive:
|
||||
.PP
|
||||
.TS
|
||||
tab(@);
|
||||
l.
|
||||
T{
|
||||
\f[C]-p \[dq]from 2009/1/1 to 2009/4/1\[dq]\f[R]
|
||||
T}
|
||||
.TE
|
||||
.PP
|
||||
Keywords like \[dq]from\[dq] and \[dq]to\[dq] are optional, and so are
|
||||
the spaces, as long as you don\[aq]t run two dates together.
|
||||
@ -987,17 +1020,16 @@ T}@T{
|
||||
fourth quarter of the current year
|
||||
T}
|
||||
.TE
|
||||
.SS Period expressions with a report interval
|
||||
.PP
|
||||
The argument of \f[C]-p\f[R] can also begin with, or be, a report
|
||||
interval expression.
|
||||
The basic report intervals are \f[C]daily\f[R], \f[C]weekly\f[R],
|
||||
\f[C]monthly\f[R], \f[C]quarterly\f[R], or \f[C]yearly\f[R], which have
|
||||
the same effect as the
|
||||
\f[C]-D\f[R],\f[C]-W\f[R],\f[C]-M\f[R],\f[C]-Q\f[R], or \f[C]-Y\f[R]
|
||||
flags.
|
||||
Between report interval and start/end dates (if any), the word
|
||||
\f[C]in\f[R] is optional.
|
||||
Examples:
|
||||
\f[C]-p/--period\f[R]\[aq]s argument can also begin with, or entirely
|
||||
consist of, a report interval.
|
||||
This should be separated from the start/end dates (if any) by a space,
|
||||
or the word \f[C]in\f[R].
|
||||
The basic intervals (which can also be written as command line flags)
|
||||
are \f[C]daily\f[R], \f[C]weekly\f[R], \f[C]monthly\f[R],
|
||||
\f[C]quarterly\f[R], and \f[C]yearly\f[R].
|
||||
Some examples:
|
||||
.PP
|
||||
.TS
|
||||
tab(@);
|
||||
@ -1013,11 +1045,11 @@ T{
|
||||
T}
|
||||
.TE
|
||||
.PP
|
||||
Note that \f[C]weekly\f[R], \f[C]monthly\f[R], \f[C]quarterly\f[R] and
|
||||
\f[C]yearly\f[R] intervals will always start on the first day on week,
|
||||
month, quarter or year accordingly, and will end on the last day of same
|
||||
period, even if associated period expression specifies different
|
||||
explicit start and end date.
|
||||
As mentioned above, the \f[C]weekly\f[R], \f[C]monthly\f[R],
|
||||
\f[C]quarterly\f[R] and \f[C]yearly\f[R] intervals require a report
|
||||
start date that is the first day of a week, month, quarter or year.
|
||||
And, report start/end dates will be expanded if needed to span a whole
|
||||
number of intervals.
|
||||
.PP
|
||||
For example:
|
||||
.PP
|
||||
@ -1046,15 +1078,23 @@ T}@T{
|
||||
starts on 2009/01/01, first day of 2009
|
||||
T}
|
||||
.TE
|
||||
.SS More complex report intervals
|
||||
.PP
|
||||
The following more complex report intervals are also supported:
|
||||
\f[C]biweekly\f[R], \f[C]fortnightly\f[R], \f[C]bimonthly\f[R],
|
||||
\f[C]every day|week|month|quarter|year\f[R],
|
||||
\f[C]every N days|weeks|months|quarters|years\f[R].
|
||||
.PP
|
||||
All of these will start on the first day of the requested period and end
|
||||
on the last one, as described above.
|
||||
Some more complex kinds of interval are also supported in period
|
||||
expressions:
|
||||
.IP \[bu] 2
|
||||
\f[C]biweekly\f[R]
|
||||
.IP \[bu] 2
|
||||
\f[C]fortnightly\f[R]
|
||||
.IP \[bu] 2
|
||||
\f[C]bimonthly\f[R]
|
||||
.IP \[bu] 2
|
||||
\f[C]every day|week|month|quarter|year\f[R]
|
||||
.IP \[bu] 2
|
||||
\f[C]every N days|weeks|months|quarters|years\f[R]
|
||||
.PP
|
||||
These too will cause report start/end dates to be expanded, if needed,
|
||||
to span a whole number of intervals.
|
||||
Examples:
|
||||
.PP
|
||||
.TS
|
||||
@ -1076,16 +1116,33 @@ T}@T{
|
||||
periods will have boundaries on 2009/03/01, 2009/08/01, ...
|
||||
T}
|
||||
.TE
|
||||
.SS Intervals with custom start date
|
||||
.PP
|
||||
If you want intervals that start on arbitrary day of your choosing and
|
||||
span a week, month or year, you need to use any of the following:
|
||||
All intervals mentioned above are required to start on their natural
|
||||
calendar boundaries, but the following intervals can start on any date:
|
||||
.PP
|
||||
\f[C]every Nth day of week\f[R], \f[C]every WEEKDAYNAME\f[R] (eg
|
||||
\f[C]mon|tue|wed|thu|fri|sat|sun\f[R]),
|
||||
\f[C]every Nth day [of month]\f[R],
|
||||
\f[C]every Nth WEEKDAYNAME [of month]\f[R],
|
||||
\f[C]every MM/DD [of year]\f[R], \f[C]every Nth MMM [of year]\f[R],
|
||||
\f[C]every MMM Nth [of year]\f[R].
|
||||
Weekly on custom day:
|
||||
.IP \[bu] 2
|
||||
\f[C]every Nth day of week\f[R] (\f[C]th\f[R], \f[C]nd\f[R],
|
||||
\f[C]rd\f[R], or \f[C]st\f[R] are all accepted after the number)
|
||||
.IP \[bu] 2
|
||||
\f[C]every WEEKDAYNAME\f[R] (full or three-letter english weekday name,
|
||||
case insensitive)
|
||||
.PP
|
||||
Monthly on custom day:
|
||||
.IP \[bu] 2
|
||||
\f[C]every Nth day [of month]\f[R]
|
||||
.IP \[bu] 2
|
||||
\f[C]every Nth WEEKDAYNAME [of month]\f[R]
|
||||
.PP
|
||||
Yearly on custom day:
|
||||
.IP \[bu] 2
|
||||
\f[C]every MM/DD [of year]\f[R] (month number and day of month number)
|
||||
.IP \[bu] 2
|
||||
\f[C]every MONTHNAME DDth [of year]\f[R] (full or three-letter english
|
||||
month name, case insensitive, and day of month number)
|
||||
.IP \[bu] 2
|
||||
\f[C]every DDth MONTHNAME [of year]\f[R] (equivalent to the above)
|
||||
.PP
|
||||
Examples:
|
||||
.PP
|
||||
@ -1115,10 +1172,10 @@ T}
|
||||
T{
|
||||
\f[C]-p \[dq]every 11/05\[dq]\f[R]
|
||||
T}@T{
|
||||
yearly periods with boundaries on 5th of Nov
|
||||
yearly periods with boundaries on 5th of November
|
||||
T}
|
||||
T{
|
||||
\f[C]-p \[dq]every 5th Nov\[dq]\f[R]
|
||||
\f[C]-p \[dq]every 5th November\[dq]\f[R]
|
||||
T}@T{
|
||||
same
|
||||
T}
|
||||
@ -1129,23 +1186,79 @@ same
|
||||
T}
|
||||
.TE
|
||||
.PP
|
||||
Show historical balances at end of 15th each month (N is exclusive end
|
||||
date):
|
||||
Show historical balances at end of the 15th day of each month (N is an
|
||||
end date, exclusive as always):
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
$ hledger balance -H -p \[dq]every 16th day\[dq]
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
\f[C]hledger balance -H -p \[dq]every 16th day\[dq]\f[R]
|
||||
Group postings from the start of wednesday to end of the following
|
||||
tuesday (N is both (inclusive) start date and (exclusive) end date):
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
$ hledger register checking -p \[dq]every 3rd day of week\[dq]
|
||||
\f[R]
|
||||
.fi
|
||||
.SS Periods or dates ?
|
||||
.PP
|
||||
Group postings from start of wednesday to end of next tuesday (N is
|
||||
start date and exclusive end date):
|
||||
Report intervals like the above are most often used with
|
||||
\f[C]-p|--period\f[R], to divide reports into multiple subperiods - each
|
||||
generated date marks a subperiod boundary.
|
||||
Here, the periods between the dates are what\[aq]s important.
|
||||
.PP
|
||||
\f[C]hledger register checking -p \[dq]every 3rd day of week\[dq]\f[R]
|
||||
But report intervals can also be used with \f[C]--forecast\f[R] to
|
||||
generate future transactions, or with \f[C]balance --budget\f[R] to
|
||||
generate budget goal-setting transactions.
|
||||
For these, the dates themselves are what matters.
|
||||
.SS Events on multiple weekdays
|
||||
.PP
|
||||
The \f[C]every WEEKDAYNAME\f[R] form has a special variant with multiple
|
||||
day names, comma-separated.
|
||||
Eg: \f[C]every mon,thu,sat\f[R].
|
||||
Also, \f[C]weekday\f[R] and \f[C]weekendday\f[R] are shorthand for
|
||||
\f[C]mon,tue,wed,thu,fri\f[R] and \f[C]sat,sun\f[R] respectively.
|
||||
.PP
|
||||
This form is mainly intended for use with \f[C]--forecast\f[R], to
|
||||
generate periodic transactions on arbitrary days of the week.
|
||||
It may be less useful with \f[C]-p\f[R], since it divides each week into
|
||||
subperiods of unequal length.
|
||||
(Because gaps between periods are not allowed; if you\[aq]d like to
|
||||
change this, see #1632.)
|
||||
.PP
|
||||
Examples:
|
||||
.PP
|
||||
.TS
|
||||
tab(@);
|
||||
lw(17.8n) lw(52.2n).
|
||||
T{
|
||||
\f[C]-p \[dq]every mon,wed,fri\[dq]\f[R]
|
||||
T}@T{
|
||||
dates will be Mon, Wed, Fri; periods will be Mon-Tue, Wed-Thu, Fri-Sun
|
||||
T}
|
||||
T{
|
||||
\f[C]-p \[dq]every weekday\[dq]\f[R]
|
||||
T}@T{
|
||||
dates will be Mon, Tue, Wed, Thu, Fri; periods will be Mon, Tue, Wed,
|
||||
Thu, Fri-Sun
|
||||
T}
|
||||
T{
|
||||
\f[C]-p \[dq]every weekendday\[dq]\f[R]
|
||||
T}@T{
|
||||
dates will be Sat, Sun; periods will be Sat, Sun-Fri
|
||||
T}
|
||||
.TE
|
||||
.SH DEPTH
|
||||
.PP
|
||||
With the \f[C]--depth N\f[R] option (short form: \f[C]-N\f[R]), commands
|
||||
like account, balance and register will show only the uppermost accounts
|
||||
in the account tree, down to level N.
|
||||
With the \f[C]--depth NUM\f[R] option (short form: \f[C]-NUM\f[R]),
|
||||
commands like account, balance and register will show only the uppermost
|
||||
accounts in the account tree, down to level NUM.
|
||||
Use this when you want a summary with less detail.
|
||||
This flag has the same effect as a \f[C]depth:\f[R] query argument (so
|
||||
\f[C]-2\f[R], \f[C]--depth=2\f[R] or \f[C]depth:2\f[R] are equivalent).
|
||||
This flag has the same effect as a \f[C]depth:\f[R] query argument:
|
||||
\f[C]depth:2\f[R], \f[C]--depth=2\f[R] or \f[C]-2\f[R] are equivalent.
|
||||
.SH QUERIES
|
||||
.PP
|
||||
One of hledger\[aq]s strengths is being able to quickly report on a
|
||||
@ -2256,6 +2369,24 @@ If you already have tables created via SQL output of hledger, you would
|
||||
probably want to either clear tables of existing data (via
|
||||
\f[C]delete\f[R] or \f[C]truncate\f[R] SQL statements) or drop tables
|
||||
completely as otherwise your postings will be duped.
|
||||
.SS Commodity styles
|
||||
.PP
|
||||
The display style of a commodity/currence is inferred according to the
|
||||
rules described in Commodity display style.
|
||||
The inferred display style can be overriden by an optional
|
||||
\f[C]-c/--commodity-style\f[R] option.
|
||||
For example, the following will override the display style for dollars.
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
$ hledger print -c \[aq]$1.000,0\[aq]
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
The format specification of the style is identical to the commodity
|
||||
display style specification for the commodity directive.
|
||||
The command line option can be supplied repeatedly to override the
|
||||
display style for multiple commodity/currency symbols.
|
||||
.SH COMMANDS
|
||||
.PP
|
||||
hledger provides a number of commands for producing reports and managing
|
||||
@ -2628,6 +2759,8 @@ or actual and planned balance changes (\f[C]--budget\f[R])
|
||||
or value of balance changes (\f[C]-V\f[R])
|
||||
.IP \[bu] 2
|
||||
or change of balance values (\f[C]--valuechange\f[R])
|
||||
.IP \[bu] 2
|
||||
or unrealised capital gain/loss (\f[C]--gain\f[R])
|
||||
.PP
|
||||
\&..in..
|
||||
.IP \[bu] 2
|
||||
@ -2686,11 +2819,11 @@ end of the journal period (more on this below).
|
||||
.PP
|
||||
Accounts are sorted by declaration order if any, and then alphabetically
|
||||
by account name.
|
||||
For instance, using examples/sample.journal:
|
||||
For instance (using examples/sample.journal):
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
$ hledger bal
|
||||
$ hledger -f examples/sample.journal bal
|
||||
$1 assets:bank:saving
|
||||
$-2 assets:cash
|
||||
$1 expenses:food
|
||||
@ -2735,7 +2868,7 @@ Eg:
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
$ hledger bal --cleared assets date:200806
|
||||
$ hledger -f examples/sample.journal bal --cleared assets date:200806
|
||||
$-2 assets:cash
|
||||
--------------------
|
||||
$-2
|
||||
@ -2751,7 +2884,7 @@ subaccounts\[aq] \[dq]leaf\[dq] names indented below their parent:
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
$ hledger balance
|
||||
$ hledger -f examples/sample.journal balance
|
||||
$-1 assets
|
||||
$1 bank:saving
|
||||
$-2 cash
|
||||
@ -2785,31 +2918,35 @@ Each group of sibling accounts (ie, under a common parent) is sorted
|
||||
separately.
|
||||
.SS Depth limiting
|
||||
.PP
|
||||
With a \f[C]depth:N\f[R] query, or \f[C]--depth N\f[R] option, or just
|
||||
\f[C]-N\f[R], balance reports will show accounts only to the specified
|
||||
depth, hiding the deeper subaccounts.
|
||||
With a \f[C]depth:NUM\f[R] query, or \f[C]--depth NUM\f[R] option, or
|
||||
just \f[C]-NUM\f[R] (eg: \f[C]-3\f[R]) balance reports will show
|
||||
accounts only to the specified depth, hiding the deeper subaccounts.
|
||||
This can be useful for getting an overview without too much detail.
|
||||
.PP
|
||||
Account balances at the depth limit always include the balances from any
|
||||
hidden subaccounts (even in list mode).
|
||||
This can be useful for getting an overview.
|
||||
deeper subaccounts (even in list mode).
|
||||
Eg, limiting to depth 1:
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
$ hledger balance -N -1
|
||||
$ hledger -f examples/sample.journal balance -1
|
||||
$-1 assets
|
||||
$2 expenses
|
||||
$-2 income
|
||||
$1 liabilities
|
||||
--------------------
|
||||
0
|
||||
\f[R]
|
||||
.fi
|
||||
.SS Dropping top-level accounts
|
||||
.PP
|
||||
You can also hide top-level account name parts, using
|
||||
\f[C]--drop N\f[R].
|
||||
You can also hide one or more top-level account name parts, using
|
||||
\f[C]--drop NUM\f[R].
|
||||
This can be useful for hiding repetitive top-level account names:
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
$ hledger bal expenses --drop 1
|
||||
$ hledger -f examples/sample.journal bal expenses --drop 1
|
||||
$1 food
|
||||
$1 supplies
|
||||
--------------------
|
||||
@ -2827,7 +2964,7 @@ periods (and a title):
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
$ hledger balance --quarterly income expenses -E
|
||||
$ hledger -f examples/sample.journal bal --quarterly income expenses -E
|
||||
Balance changes in 2008:
|
||||
|
||||
|| 2008q1 2008q2 2008q3 2008q4
|
||||
@ -2974,7 +3111,7 @@ value expressed as a percentage of the (column) total:
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
$ hledger bal expenses -Q -%
|
||||
$ hledger -f examples/sample.journal bal expenses -Q -%
|
||||
Balance changes in 2008:
|
||||
|
||||
|| 2008Q1 2008Q2 2008Q3 2008Q4
|
||||
@ -3070,7 +3207,11 @@ It is one of:
|
||||
\f[C]--budget\f[R] : like --sum but also show a goal amount
|
||||
.IP \[bu] 2
|
||||
\f[C]--valuechange\f[R] : show the change in period-end historical
|
||||
balance values
|
||||
balance values (caused by deposits, withdrawals, and/or market price
|
||||
fluctuations)
|
||||
.IP \[bu] 2
|
||||
\f[C]--gain\f[R] : show the unrealised capital gain/loss, (the current
|
||||
valued balance minus each amount\[aq]s original cost)
|
||||
.PP
|
||||
\f[B]Accumulation type:\f[R]
|
||||
.PD 0
|
||||
@ -3112,7 +3253,7 @@ cost
|
||||
\f[C]--value=then[,COMM]\f[R] : show value at transaction dates
|
||||
.IP \[bu] 2
|
||||
\f[C]--value=end[,COMM]\f[R] : show value at period end date(s)
|
||||
(\f[B]default with \f[CB]--valuechange\f[B]\f[R])
|
||||
(\f[B]default with \f[CB]--valuechange\f[B], \f[CB]--gain\f[B]\f[R])
|
||||
.IP \[bu] 2
|
||||
\f[C]--value=now[,COMM]\f[R] : show value at today\[aq]s date
|
||||
.IP \[bu] 2
|
||||
@ -3570,7 +3711,7 @@ Eg:
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
$ hledger balance --format \[dq]%20(account) %12(total)\[dq]
|
||||
$ hledger -f examples/sample.journal balance --format \[dq]%20(account) %12(total)\[dq]
|
||||
assets $-1
|
||||
bank:saving $1
|
||||
cash $-2
|
||||
@ -3938,19 +4079,42 @@ whichever is later.
|
||||
.PP
|
||||
Unless you are running \f[C]close\f[R] on exactly the first day of the
|
||||
new period, you\[aq]ll want to override the closing date.
|
||||
This is done by specifying a report period, where \[dq]last day of the
|
||||
This is done by specifying a report end date, where \[dq]last day of the
|
||||
report period\[dq] will be the closing date.
|
||||
The opening date is always the following day.
|
||||
So to close on 2020-12-31 and open on 2021-01-01, any of these work
|
||||
.IP \[bu] 2
|
||||
\f[C]-p 2020\f[R]
|
||||
.IP \[bu] 2
|
||||
\f[C]date:2020\f[R]
|
||||
.IP \[bu] 2
|
||||
\f[C]-e 2021-01-01\f[R] (remember \f[C]-e\f[R] specifies an exclusive
|
||||
end date)
|
||||
.IP \[bu] 2
|
||||
So to close on (end of) 2020-12-31 and open on (start of) 2021-01-01,
|
||||
any of these will work:
|
||||
.PP
|
||||
.TS
|
||||
tab(@);
|
||||
l l.
|
||||
T{
|
||||
end date argument
|
||||
T}@T{
|
||||
explanation
|
||||
T}
|
||||
_
|
||||
T{
|
||||
\f[C]-e 2021-01-01\f[R]
|
||||
T}@T{
|
||||
end dates are exclusive
|
||||
T}
|
||||
T{
|
||||
\f[C]-e 2021\f[R]
|
||||
T}@T{
|
||||
equivalent, per smart dates
|
||||
T}
|
||||
T{
|
||||
\f[C]-p 2020\f[R]
|
||||
T}@T{
|
||||
equivalent, the period\[aq]s begin date is ignored
|
||||
T}
|
||||
T{
|
||||
\f[C]date:2020\f[R]
|
||||
T}@T{
|
||||
equivalent query
|
||||
T}
|
||||
.TE
|
||||
.SS Example: close asset/liability accounts for file transition
|
||||
.PP
|
||||
Carrying asset/liability balances from 2020.journal into a new file for
|
||||
@ -4010,7 +4174,7 @@ like this:
|
||||
; 2019.journal
|
||||
2019-01-01 opening balances ; earliest opening txn, no tag here
|
||||
\&...
|
||||
2019-12-31 closing balances ; close:2019
|
||||
2019-12-31 closing balances ; clopen:2020
|
||||
\&...
|
||||
\f[R]
|
||||
.fi
|
||||
@ -4018,9 +4182,9 @@ like this:
|
||||
.nf
|
||||
\f[C]
|
||||
; 2020.journal
|
||||
2020-01-01 opening balances ; open:2020
|
||||
2020-01-01 opening balances ; clopen:2020
|
||||
\&...
|
||||
2020-12-31 closing balances ; close:2020
|
||||
2020-12-31 closing balances ; clopen:2021
|
||||
\&...
|
||||
\f[R]
|
||||
.fi
|
||||
@ -4028,7 +4192,7 @@ like this:
|
||||
.nf
|
||||
\f[C]
|
||||
; 2021.journal
|
||||
2021-01-01 opening balances ; open:2021
|
||||
2021-01-01 opening balances ; clopen:2021
|
||||
\&...
|
||||
\f[R]
|
||||
.fi
|
||||
@ -4048,14 +4212,11 @@ you could do eg:
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
$ hledger -f all.journal reg -H checking not:tag:\[aq]open|close\[aq]
|
||||
$ hledger -f all.journal reg -H checking not:tag:clopen
|
||||
# all years checking register, hiding non-essential opening/closing txns
|
||||
|
||||
$ hledger -f all.journal bs -p 2020 not:tag:close=2020
|
||||
$ hledger -f all.journal bs -p 2020 not:tag:clopen=2020
|
||||
# 2020 year end balances, suppressing 2020 closing txn
|
||||
|
||||
$ hledger -f 2020.journal bs not:tag:close
|
||||
# 2020 year end balances, easier case
|
||||
\f[R]
|
||||
.fi
|
||||
.SS close and balance assertions
|
||||
@ -4104,35 +4265,45 @@ single-day transactions):
|
||||
.fi
|
||||
.SS Example: close revenue/expense accounts to retained earnings
|
||||
.PP
|
||||
Here, the opening transaction is supressed with \f[C]--close\f[R], as
|
||||
it\[aq]s probably not needed.
|
||||
Also you\[aq]ll want to use a different equity account name:
|
||||
For this, use \f[C]--close\f[R] to suppress the opening transaction, as
|
||||
it\[aq]s not needed.
|
||||
Also you\[aq]ll want to change the equity account name to your
|
||||
equivalent of \[dq]equity:retained earnings\[dq].
|
||||
.PP
|
||||
Closing 2021\[aq]s first quarter revenues/expenses:
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
$ hledger close -f 2021.journal -p 2021Q1 --close --close-acct=\[aq]equity:retained earnings\[aq] revenues expenses >> 2021.journal
|
||||
# close 2021 first quarter revenues/expenses
|
||||
$ hledger close -f 2021.journal --close revenues expenses -p 2021Q1 \[rs]
|
||||
--close-acct=\[aq]equity:retained earnings\[aq] >> 2021.journal
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
Or, operating on the default journal:
|
||||
The same, using the default journal and current year:
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
$ hledger close -p Q1 --close --close-acct=\[aq]equity:retained earnings\[aq] revenues expenses >> $LEDGER_FILE
|
||||
# close current year\[aq]s first quarter revenues/expenses
|
||||
$ hledger close --close revenues expenses -p Q1 \[rs]
|
||||
--close-acct=\[aq]equity:retained earnings\[aq] >> $LEDGER_FILE
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
Now, eg:
|
||||
Now, the first quarter\[aq]s balance sheet should show a zero (unless
|
||||
you are using \[at]/\[at]\[at] notation without equity postings):
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
$ hledger bse -p Q1
|
||||
# Q1 full balance sheet, total should be zero
|
||||
|
||||
$ hledger is -p Q1 not:\[aq]retained earnings\[aq]
|
||||
# Q1 income statement, must suppress the closing txn
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
And we must suppress the closing transaction to see the first
|
||||
quarter\[aq]s income statement (using the description;
|
||||
\f[C]not:\[aq]retained earnings\[aq]\f[R] won\[aq]t work here):
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
$ hledger is -p Q1 not:desc:\[aq]closing balances\[aq]
|
||||
\f[R]
|
||||
.fi
|
||||
.SS codes
|
||||
@ -4275,8 +4446,13 @@ help
|
||||
.PD
|
||||
Show the hledger user manual in one of several formats, optionally
|
||||
positioned at a given TOPIC (if possible).
|
||||
TOPIC is any heading, or heading prefix, in the manual.
|
||||
Some examples: commands, print, \[aq]auto postings\[aq], periodic.
|
||||
.PP
|
||||
TOPIC is any heading in the manual, or the start of any heading (but not
|
||||
the middle).
|
||||
It is case insensitive.
|
||||
.PP
|
||||
Some examples: \f[C]commands\f[R], \f[C]print\f[R], \f[C]forecast\f[R],
|
||||
\f[C]\[dq]auto postings\[dq]\f[R], \f[C]\[dq]commodity column\[dq]\f[R].
|
||||
.PP
|
||||
This command shows the user manual built in to this hledger version.
|
||||
It can be useful if the correct version of the hledger manual, or the
|
||||
@ -6036,6 +6212,9 @@ commodity 1000.00000000 BTC
|
||||
commodity 1 000.
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
The inferred commodity style can be overridden by supplying a command
|
||||
line option.
|
||||
.SS Rounding
|
||||
.PP
|
||||
Amounts are stored internally as decimal numbers with up to 255 decimal
|
||||
@ -6714,6 +6893,9 @@ commodity 1 000 000.
|
||||
Note hledger normally uses banker\[aq]s rounding, so 0.5 displayed with
|
||||
zero decimal digits is \[dq]0\[dq].
|
||||
(More at Commodity display style.)
|
||||
.PP
|
||||
Even in the presence of commodity directives, the commodity display
|
||||
style can still be overridden by supplying a command line option.
|
||||
.SS Commodity error checking
|
||||
.PP
|
||||
In strict mode, enabled with the \f[C]-s\f[R]/\f[C]--strict\f[R] flag,
|
||||
@ -6910,17 +7092,18 @@ report.
|
||||
not investments or receivables.)
|
||||
.SS Declaring account types
|
||||
.PP
|
||||
Generally, to make these reports work you should declare your top-level
|
||||
accounts and their types, using account directives with \f[C]type:\f[R]
|
||||
tags.
|
||||
.PP
|
||||
The tag\[aq]s value should be one of: \f[C]Asset\f[R],
|
||||
\f[C]Liability\f[R], \f[C]Equity\f[R], \f[C]Revenue\f[R],
|
||||
\f[C]Expense\f[R], \f[C]Cash\f[R], \f[C]A\f[R], \f[C]L\f[R],
|
||||
\f[C]E\f[R], \f[C]R\f[R], \f[C]X\f[R], \f[C]C\f[R] (all case
|
||||
insensitive).
|
||||
The type is inherited by all subaccounts except where they override it.
|
||||
Here\[aq]s a complete example:
|
||||
To make the balancesheet/balancesheetequity/cashflow/incomestatement
|
||||
reports work, generally you should declare your top-level accounts, and
|
||||
their types.
|
||||
For each top-level account, write an account directive, with a
|
||||
\f[C]type:\f[R] tag.
|
||||
The tag\[aq]s value can be any of \f[C]Asset\f[R], \f[C]Liability\f[R],
|
||||
\f[C]Equity\f[R], \f[C]Revenue\f[R], \f[C]Expense\f[R], \f[C]Cash\f[R],
|
||||
or (for short) \f[C]A\f[R], \f[C]L\f[R], \f[C]E\f[R], \f[C]R\f[R],
|
||||
\f[C]X\f[R], \f[C]C\f[R] (case insensitive).
|
||||
An account\[aq]s type is inherited by its subaccounts, unless they
|
||||
declare a different type.
|
||||
Here\[aq]s an example, declaring all six account types:
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
@ -6933,15 +7116,30 @@ account revenues ; type: Revenue
|
||||
account expenses ; type: Expense
|
||||
\f[R]
|
||||
.fi
|
||||
.SS Auto-detected account types
|
||||
.PP
|
||||
If you happen to use common english top-level account names, you may not
|
||||
need to declare account types, as they will be detected automatically
|
||||
using the following rules:
|
||||
There is also an older syntax, which is deprecated and will be dropped
|
||||
soon (A, L, E, R or X separated from the account name by two or more
|
||||
spaces):
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
If account\[aq]s name matches this regular expression: | its type is:
|
||||
account assets A
|
||||
account liabilities L
|
||||
account equity E
|
||||
account revenues R
|
||||
account expenses X
|
||||
\f[R]
|
||||
.fi
|
||||
.SS Auto-detected account types
|
||||
.PP
|
||||
hledger tries to find at least one top level account in each of the six
|
||||
account types (Asset, Liability, Equity, Revenue, Expense, Cash).
|
||||
When no accounts have been declared for a particular type, hledger tries
|
||||
to auto-detect some accounts by name, using regular expressions:
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
If account\[aq]s name matches this case insensitive regular expression:| its type is:
|
||||
------------------------------------------------------------------- | ------------
|
||||
\[ha]assets?(:|$) |
|
||||
and does not contain regexp (investment|receivable|:A/R|:fixed) | Cash
|
||||
@ -6953,17 +7151,27 @@ using the following rules:
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
Even so, explicit declarations may be a good idea, for clarity and
|
||||
predictability.
|
||||
.SS Interference from auto-detected account types
|
||||
For people using standard english account names, this feature helps
|
||||
hledger\[aq]s high-level reports work out of the box with minimal
|
||||
configuration.
|
||||
.PP
|
||||
If you assign any account type, it\[aq]s a good idea to assign all of
|
||||
them, to prevent any confusion from mixing declared and auto-detected
|
||||
types.
|
||||
Although it\[aq]s unlikely to happen in real life, here\[aq]s an
|
||||
example: with the following journal, \f[C]balancesheetequity\f[R] shows
|
||||
\[dq]liabilities\[dq] in both Liabilities and Equity sections.
|
||||
Declaring another account as \f[C]type:Liability\f[R] would fix it:
|
||||
If you use non-english account names, you should declare account types
|
||||
to make these reports work.
|
||||
And more generally, declaring accounts and types is usually a good idea,
|
||||
for increased clarity and predictability (and for the other benefits of
|
||||
account directives: error checking, display order, etc).
|
||||
.PP
|
||||
Notes:
|
||||
.IP \[bu] 2
|
||||
When any account is declared as some type, this disables auto-detection
|
||||
for that particular type.
|
||||
.IP \[bu] 2
|
||||
If you declare any account\[aq]s type, it\[aq]s a good idea to declare
|
||||
an account for all six types, since a mix of declared and auto-detected
|
||||
types can cause confusion.
|
||||
For example, here liabilities is declared to be Equity, but would also
|
||||
be auto-detected as Liability, since no Liability account is declared:
|
||||
.RS 2
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
@ -6975,21 +7183,7 @@ account liabilities ; type:Equity
|
||||
equity -2
|
||||
\f[R]
|
||||
.fi
|
||||
.SS Old account type syntax
|
||||
.PP
|
||||
In some hledger journals you might instead see this old syntax (the
|
||||
letters ALERX, separated from the account name by two or more spaces);
|
||||
this is deprecated and may be removed soon:
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
account assets A
|
||||
account liabilities L
|
||||
account equity E
|
||||
account revenues R
|
||||
account expenses X
|
||||
\f[R]
|
||||
.fi
|
||||
.RE
|
||||
.SS Account display order
|
||||
.PP
|
||||
Account directives also set the order in which accounts are displayed,
|
||||
@ -7356,53 +7550,83 @@ expression.
|
||||
.PP
|
||||
The \f[C]--forecast\f[R] flag activates any periodic transaction rules
|
||||
in the journal.
|
||||
They will generate temporary recurring transactions, which are not saved
|
||||
in the journal, but will appear in all reports (eg print).
|
||||
This can be useful for estimating balances into the future, or
|
||||
These will generate temporary additional transactions, usually recurring
|
||||
and in the future, which will appear in all reports.
|
||||
\f[C]hledger print --forecast\f[R] is a good way to see them.
|
||||
.PP
|
||||
This can be useful for estimating balances into the future, perhaps
|
||||
experimenting with different scenarios.
|
||||
Or, it can be used as a data entry aid: describe recurring transactions,
|
||||
and every so often copy the output of \f[C]print --forecast\f[R] into
|
||||
the journal.
|
||||
.PP
|
||||
These transactions will have an extra tag indicating which periodic rule
|
||||
generated them: \f[C]generated-transaction:\[ti] PERIODICEXPR\f[R].
|
||||
And a similar, hidden tag (beginning with an underscore) which, because
|
||||
it\[aq]s never displayed by print, can be used to match transactions
|
||||
generated \[dq]just now\[dq]:
|
||||
\f[C]_generated-transaction:\[ti] PERIODICEXPR\f[R].
|
||||
It could also be useful for scripted data entry: you could describe
|
||||
recurring transactions, and every so often copy the output of
|
||||
\f[C]print --forecast\f[R] into the journal.
|
||||
.PP
|
||||
Periodic transactions are generated within some forecast period.
|
||||
By default, this
|
||||
The generated transactions will have an extra tag, like
|
||||
\f[C]generated-transaction:\[ti] PERIODICEXPR\f[R], indicating which
|
||||
periodic rule generated them.
|
||||
There is also a similar, hidden tag, named
|
||||
\f[C]_generated-transaction:\f[R], which you can use to reliably match
|
||||
transactions generated \[dq]just now\[dq] (rather than \f[C]print\f[R]ed
|
||||
in the past).
|
||||
.PP
|
||||
The forecast transactions are generated within a \f[I]forecast
|
||||
period\f[R], which is independent of the report period.
|
||||
(Forecast period sets the bounds for generated transactions, report
|
||||
period controls which transactions are reported.) The forecast period
|
||||
begins on:
|
||||
.IP \[bu] 2
|
||||
begins on the later of
|
||||
the start date provided within \f[C]--forecast\f[R]\[aq]s argument, if
|
||||
any
|
||||
.IP \[bu] 2
|
||||
otherwise, the later of
|
||||
.RS 2
|
||||
.IP \[bu] 2
|
||||
the report start date if specified with -b/-p/date:
|
||||
the report start date, if specified (with
|
||||
\f[C]-b\f[R]/\f[C]-p\f[R]/\f[C]date:\f[R])
|
||||
.IP \[bu] 2
|
||||
the day after the latest normal (non-periodic) transaction in the
|
||||
journal, or today if there are no normal transactions.
|
||||
the day after the latest ordinary transaction in the journal, if any
|
||||
.RE
|
||||
.IP \[bu] 2
|
||||
ends on the report end date if specified with -e/-p/date:, or 6 months
|
||||
(180 days) from today.
|
||||
otherwise today.
|
||||
.PP
|
||||
This means that periodic transactions will begin only after the latest
|
||||
recorded transaction.
|
||||
And a recorded transaction dated in the future can prevent generation of
|
||||
periodic transactions.
|
||||
(You can avoid that by writing the future transaction as a one-time
|
||||
periodic rule instead - put tilde before the date, eg
|
||||
\f[C]\[ti] YYYY-MM-DD ...\f[R]).
|
||||
It ends on:
|
||||
.IP \[bu] 2
|
||||
the end date provided within \f[C]--forecast\f[R]\[aq]s argument, if any
|
||||
.IP \[bu] 2
|
||||
otherwise, the report end date, if specified (with
|
||||
\f[C]-e\f[R]/\f[C]-p\f[R]/\f[C]date:\f[R])
|
||||
.IP \[bu] 2
|
||||
otherwise 180 days (6 months) from today.
|
||||
.PP
|
||||
Note, this means that ordinary transactions will suppress periodic
|
||||
transactions, by default; the periodic transactions will not start until
|
||||
after the last ordinary transaction.
|
||||
This is usually convenient, but you can get around it in two ways:
|
||||
.IP \[bu] 2
|
||||
If you need to record some transactions in the future, make them
|
||||
periodic transactions (with a single occurrence, eg:
|
||||
\f[C]\[ti] YYYY-MM-DD\f[R]) rather than ordinary transactions.
|
||||
That way they won\[aq]t suppress other periodic transactions.
|
||||
.IP \[bu] 2
|
||||
Or give \f[C]--forecast\f[R] a period expression argument.
|
||||
A forecast period specified this way can overlap ordinary transactions,
|
||||
and need not be in the future.
|
||||
Some things to note:
|
||||
.RS 2
|
||||
.IP \[bu] 2
|
||||
You must use \f[C]=\f[R] between flag and argument; a space won\[aq]t
|
||||
work.
|
||||
.IP \[bu] 2
|
||||
The period expression can specify the forecast period\[aq]s start date,
|
||||
end date, or both.
|
||||
See also Report start & end date.
|
||||
.IP \[bu] 2
|
||||
The period expression should not specify a report interval.
|
||||
(Each periodic transaction rule specifies its own interval.)
|
||||
.RE
|
||||
.PP
|
||||
Or, you can set your own arbitrary \[dq]forecast period\[dq], which can
|
||||
overlap recorded transactions, and need not be in the future, by
|
||||
providing an option argument, like \f[C]--forecast=PERIODEXPR\f[R].
|
||||
Note the equals sign is required, a space won\[aq]t work.
|
||||
PERIODEXPR is a period expression, which can specify the start date, end
|
||||
date, or both, like in a \f[C]date:\f[R] query.
|
||||
(See also hledger.1 -> Report start & end date).
|
||||
Some examples: \f[C]--forecast=202001-202004\f[R],
|
||||
\f[C]--forecast=jan-\f[R], \f[C]--forecast=2020\f[R].
|
||||
\f[C]--forecast=jan-\f[R], \f[C]--forecast=2021\f[R].
|
||||
.SS Budgeting with periodic transactions
|
||||
.PP
|
||||
With the \f[C]--budget\f[R] flag, currently supported by the balance
|
||||
@ -8088,7 +8312,9 @@ Tips:
|
||||
Interpolation strips outer whitespace (so a CSV value like
|
||||
\f[C]\[dq] 1 \[dq]\f[R] becomes \f[C]1\f[R] when interpolated) (#1051).
|
||||
.IP \[bu] 2
|
||||
See also Tips below.
|
||||
Interpolations always refer to a CSV field - you can\[aq]t interpolate a
|
||||
hledger field.
|
||||
(See Referencing other fields below).
|
||||
.SS Field names
|
||||
.PP
|
||||
Here are the standard hledger field (and pseudo-field) names, which you
|
||||
|
||||
4491
hledger/hledger.info
4491
hledger/hledger.info
File diff suppressed because it is too large
Load Diff
@ -543,6 +543,10 @@ TIME PERIODS
|
||||
20181232 8 digits with an invalid day gives an error
|
||||
201801012 9+ digits beginning with a valid YYYYMMDD gives an error
|
||||
|
||||
Note "today's date" can be overridden with the --today option, in case
|
||||
it's needed for testing or for recreating old reports. (Except for
|
||||
periodic transaction rules; those are not affected by --today.)
|
||||
|
||||
|
||||
Report start & end date
|
||||
By default, most hledger reports will show the full span of time repre-
|
||||
@ -557,8 +561,8 @@ TIME PERIODS
|
||||
|
||||
Some notes:
|
||||
|
||||
o As in Ledger, end dates are exclusive, so you need to write the date
|
||||
after the last day you want to include.
|
||||
o End dates are exclusive, as in Ledger, so you should write the date
|
||||
after the last day you want to see in the report.
|
||||
|
||||
o As noted in reporting options: among start/end dates specified with
|
||||
options, the last (i.e. right-most) option takes precedence.
|
||||
@ -593,7 +597,15 @@ TIME PERIODS
|
||||
The following "standard" report intervals can be enabled by using their
|
||||
corresponding flag:
|
||||
|
||||
-D/--daily, -W/--weekly, -M/--monthly, -Q/--quarterly, -Y/--yearly.
|
||||
o -D/--daily
|
||||
|
||||
o -W/--weekly
|
||||
|
||||
o -M/--monthly
|
||||
|
||||
o -Q/--quarterly
|
||||
|
||||
o -Y/--yearly
|
||||
|
||||
These standard intervals always start on natural interval boundaries:
|
||||
eg --weekly starts on mondays, --monthly starts on the first of the
|
||||
@ -614,6 +626,19 @@ TIME PERIODS
|
||||
requested end date). This is done to ensure "full" first and last sub-
|
||||
periods, so that all subperiods' numbers are comparable.
|
||||
|
||||
To summarise:
|
||||
|
||||
o In multiperiod reports, all subperiods are forced to be the same
|
||||
length, to simplify reporting.
|
||||
|
||||
o Reports with the standard --weekly/--monthly/--quarterly/--yearly
|
||||
intervals are required to start on the first day of a
|
||||
week/month/quarter/year. We'd like more flexibility here but it
|
||||
isn't supported yet.
|
||||
|
||||
o --period (below) can specify more complex intervals, starting on any
|
||||
date.
|
||||
|
||||
Period expressions
|
||||
The -p/--period option accepts period expressions, a shorthand way of
|
||||
expressing a start date, end date, and/or report interval all at once.
|
||||
@ -622,6 +647,7 @@ TIME PERIODS
|
||||
Note, hledger always treats start dates as inclusive and end dates as
|
||||
exclusive:
|
||||
|
||||
|
||||
-p "from 2009/1/1 to 2009/4/1"
|
||||
|
||||
Keywords like "from" and "to" are optional, and so are the spaces, as
|
||||
@ -638,7 +664,6 @@ TIME PERIODS
|
||||
|
||||
|
||||
-p "1/1 4/1"
|
||||
|
||||
-p "january-apr"
|
||||
-p "this year to 4/1"
|
||||
|
||||
@ -674,21 +699,22 @@ TIME PERIODS
|
||||
-p "q4" fourth quarter of the cur-
|
||||
rent year
|
||||
|
||||
The argument of -p can also begin with, or be, a report interval
|
||||
expression. The basic report intervals are daily, weekly, monthly,
|
||||
quarterly, or yearly, which have the same effect as the -D,-W,-M,-Q, or
|
||||
-Y flags. Between report interval and start/end dates (if any), the
|
||||
word in is optional. Examples:
|
||||
Period expressions with a report interval
|
||||
-p/--period's argument can also begin with, or entirely consist of, a
|
||||
report interval. This should be separated from the start/end dates (if
|
||||
any) by a space, or the word in. The basic intervals (which can also
|
||||
be written as command line flags) are daily, weekly, monthly, quar-
|
||||
terly, and yearly. Some examples:
|
||||
|
||||
|
||||
-p "weekly from 2009/1/1 to 2009/4/1"
|
||||
-p "monthly in 2008"
|
||||
-p "quarterly"
|
||||
|
||||
Note that weekly, monthly, quarterly and yearly intervals will always
|
||||
start on the first day on week, month, quarter or year accordingly, and
|
||||
will end on the last day of same period, even if associated period
|
||||
expression specifies different explicit start and end date.
|
||||
As mentioned above, the weekly, monthly, quarterly and yearly intervals
|
||||
require a report start date that is the first day of a week, month,
|
||||
quarter or year. And, report start/end dates will be expanded if
|
||||
needed to span a whole number of intervals.
|
||||
|
||||
For example:
|
||||
|
||||
@ -702,14 +728,22 @@ TIME PERIODS
|
||||
-p "yearly from starts on 2009/01/01, first day of 2009
|
||||
2009-12-29"
|
||||
|
||||
The following more complex report intervals are also supported:
|
||||
biweekly, fortnightly, bimonthly, every day|week|month|quarter|year,
|
||||
every N days|weeks|months|quarters|years.
|
||||
More complex report intervals
|
||||
Some more complex kinds of interval are also supported in period
|
||||
expressions:
|
||||
|
||||
All of these will start on the first day of the requested period and
|
||||
end on the last one, as described above.
|
||||
o biweekly
|
||||
|
||||
Examples:
|
||||
o fortnightly
|
||||
|
||||
o bimonthly
|
||||
|
||||
o every day|week|month|quarter|year
|
||||
|
||||
o every N days|weeks|months|quarters|years
|
||||
|
||||
These too will cause report start/end dates to be expanded, if needed,
|
||||
to span a whole number of intervals. Examples:
|
||||
|
||||
|
||||
-p "bimonthly from 2008" periods will have boundaries on 2008/01/01,
|
||||
@ -718,44 +752,98 @@ TIME PERIODS
|
||||
-p "every 5 month from periods will have boundaries on 2009/03/01,
|
||||
2009/03" 2009/08/01, ...
|
||||
|
||||
If you want intervals that start on arbitrary day of your choosing and
|
||||
span a week, month or year, you need to use any of the following:
|
||||
Intervals with custom start date
|
||||
All intervals mentioned above are required to start on their natural
|
||||
calendar boundaries, but the following intervals can start on any date:
|
||||
|
||||
every Nth day of week, every WEEKDAYNAME (eg
|
||||
mon|tue|wed|thu|fri|sat|sun), every Nth day [of month], every Nth WEEK-
|
||||
DAYNAME [of month], every MM/DD [of year], every Nth MMM [of year],
|
||||
every MMM Nth [of year].
|
||||
Weekly on custom day:
|
||||
|
||||
o every Nth day of week (th, nd, rd, or st are all accepted after the
|
||||
number)
|
||||
|
||||
o every WEEKDAYNAME (full or three-letter english weekday name, case
|
||||
insensitive)
|
||||
|
||||
Monthly on custom day:
|
||||
|
||||
o every Nth day [of month]
|
||||
|
||||
o every Nth WEEKDAYNAME [of month]
|
||||
|
||||
Yearly on custom day:
|
||||
|
||||
o every MM/DD [of year] (month number and day of month number)
|
||||
|
||||
o every MONTHNAME DDth [of year] (full or three-letter english month
|
||||
name, case insensitive, and day of month number)
|
||||
|
||||
o every DDth MONTHNAME [of year] (equivalent to the above)
|
||||
|
||||
Examples:
|
||||
|
||||
|
||||
-p "every 2nd day of periods will go from Tue to Tue
|
||||
week"
|
||||
|
||||
-p "every Tue" same
|
||||
-p "every 15th day" period boundaries will be on 15th of each
|
||||
month
|
||||
-p "every 2nd Monday" period boundaries will be on second Monday of
|
||||
each month
|
||||
-p "every 11/05" yearly periods with boundaries on 5th of Nov
|
||||
-p "every 5th Nov" same
|
||||
-p "every 11/05" yearly periods with boundaries on 5th of
|
||||
November
|
||||
-p "every 5th November" same
|
||||
-p "every Nov 5th" same
|
||||
|
||||
Show historical balances at end of 15th each month (N is exclusive end
|
||||
date):
|
||||
Show historical balances at end of the 15th day of each month (N is an
|
||||
end date, exclusive as always):
|
||||
|
||||
hledger balance -H -p "every 16th day"
|
||||
$ hledger balance -H -p "every 16th day"
|
||||
|
||||
Group postings from start of wednesday to end of next tuesday (N is
|
||||
start date and exclusive end date):
|
||||
Group postings from the start of wednesday to end of the following
|
||||
tuesday (N is both (inclusive) start date and (exclusive) end date):
|
||||
|
||||
hledger register checking -p "every 3rd day of week"
|
||||
$ hledger register checking -p "every 3rd day of week"
|
||||
|
||||
Periods or dates ?
|
||||
Report intervals like the above are most often used with -p|--period,
|
||||
to divide reports into multiple subperiods - each generated date marks
|
||||
a subperiod boundary. Here, the periods between the dates are what's
|
||||
important.
|
||||
|
||||
But report intervals can also be used with --forecast to generate
|
||||
future transactions, or with balance --budget to generate budget goal-
|
||||
setting transactions. For these, the dates themselves are what mat-
|
||||
ters.
|
||||
|
||||
Events on multiple weekdays
|
||||
The every WEEKDAYNAME form has a special variant with multiple day
|
||||
names, comma-separated. Eg: every mon,thu,sat. Also, weekday and
|
||||
weekendday are shorthand for mon,tue,wed,thu,fri and sat,sun respec-
|
||||
tively.
|
||||
|
||||
This form is mainly intended for use with --forecast, to generate peri-
|
||||
odic transactions on arbitrary days of the week. It may be less useful
|
||||
with -p, since it divides each week into subperiods of unequal length.
|
||||
(Because gaps between periods are not allowed; if you'd like to change
|
||||
this, see #1632.)
|
||||
|
||||
Examples:
|
||||
|
||||
|
||||
-p "every dates will be Mon, Wed, Fri; periods will be Mon-
|
||||
mon,wed,fri" Tue, Wed-Thu, Fri-Sun
|
||||
-p "every weekday" dates will be Mon, Tue, Wed, Thu, Fri; periods will
|
||||
be Mon, Tue, Wed, Thu, Fri-Sun
|
||||
-p "every weekend- dates will be Sat, Sun; periods will be Sat, Sun-Fri
|
||||
day"
|
||||
|
||||
DEPTH
|
||||
With the --depth N option (short form: -N), commands like account, bal-
|
||||
ance and register will show only the uppermost accounts in the account
|
||||
tree, down to level N. Use this when you want a summary with less
|
||||
detail. This flag has the same effect as a depth: query argument (so
|
||||
-2, --depth=2 or depth:2 are equivalent).
|
||||
With the --depth NUM option (short form: -NUM), commands like account,
|
||||
balance and register will show only the uppermost accounts in the
|
||||
account tree, down to level NUM. Use this when you want a summary with
|
||||
less detail. This flag has the same effect as a depth: query argument:
|
||||
depth:2, --depth=2 or -2 are equivalent.
|
||||
|
||||
QUERIES
|
||||
One of hledger's strengths is being able to quickly report on a precise
|
||||
@ -1249,8 +1337,6 @@ VALUATION
|
||||
total/average of displayed of displayed displayed values of displayed of displayed
|
||||
values values values values
|
||||
|
||||
|
||||
|
||||
balance (bs,
|
||||
bse, cf, is)
|
||||
balance sums of value at value at posting value at value at
|
||||
@ -1280,6 +1366,11 @@ VALUATION
|
||||
is, bs postings in period at respec- each period, sums of post-
|
||||
--change, cf period tive posting valued at ings
|
||||
--change) dates period ends
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
end balances sums of same as sums of values of period end value at
|
||||
(bal -H, is costs of --value=end postings from balances, DATE/today of
|
||||
--H, bs, cf) postings before period valued at sums of post-
|
||||
@ -1455,6 +1546,19 @@ OUTPUT
|
||||
clear tables of existing data (via delete or truncate SQL statements)
|
||||
or drop tables completely as otherwise your postings will be duped.
|
||||
|
||||
Commodity styles
|
||||
The display style of a commodity/currence is inferred according to the
|
||||
rules described in Commodity display style. The inferred display style
|
||||
can be overriden by an optional -c/--commodity-style option. For exam-
|
||||
ple, the following will override the display style for dollars.
|
||||
|
||||
$ hledger print -c '$1.000,0'
|
||||
|
||||
The format specification of the style is identical to the commodity
|
||||
display style specification for the commodity directive. The command
|
||||
line option can be supplied repeatedly to override the display style
|
||||
for multiple commodity/currency symbols.
|
||||
|
||||
COMMANDS
|
||||
hledger provides a number of commands for producing reports and manag-
|
||||
ing your data. Run hledger with no arguments to list the commands
|
||||
@ -1776,6 +1880,8 @@ COMMANDS
|
||||
|
||||
o or change of balance values (--valuechange)
|
||||
|
||||
o or unrealised capital gain/loss (--gain)
|
||||
|
||||
..in..
|
||||
|
||||
o one time period (the whole journal period by default)
|
||||
@ -1829,9 +1935,9 @@ COMMANDS
|
||||
journal period (more on this below).
|
||||
|
||||
Accounts are sorted by declaration order if any, and then alphabeti-
|
||||
cally by account name. For instance, using examples/sample.journal:
|
||||
cally by account name. For instance (using examples/sample.journal):
|
||||
|
||||
$ hledger bal
|
||||
$ hledger -f examples/sample.journal bal
|
||||
$1 assets:bank:saving
|
||||
$-2 assets:cash
|
||||
$1 expenses:food
|
||||
@ -1866,7 +1972,7 @@ COMMANDS
|
||||
cleared transactions only, etc. by using query arguments or options to
|
||||
limit the postings being matched. Eg:
|
||||
|
||||
$ hledger bal --cleared assets date:200806
|
||||
$ hledger -f examples/sample.journal bal --cleared assets date:200806
|
||||
$-2 assets:cash
|
||||
--------------------
|
||||
$-2
|
||||
@ -1878,7 +1984,7 @@ COMMANDS
|
||||
With -t/--tree, the account hierarchy is shown, with subaccounts'
|
||||
"leaf" names indented below their parent:
|
||||
|
||||
$ hledger balance
|
||||
$ hledger -f examples/sample.journal balance
|
||||
$-1 assets
|
||||
$1 bank:saving
|
||||
$-2 cash
|
||||
@ -1909,22 +2015,28 @@ COMMANDS
|
||||
separately.
|
||||
|
||||
Depth limiting
|
||||
With a depth:N query, or --depth N option, or just -N, balance reports
|
||||
will show accounts only to the specified depth, hiding the deeper sub-
|
||||
accounts. Account balances at the depth limit always include the bal-
|
||||
ances from any hidden subaccounts (even in list mode). This can be
|
||||
useful for getting an overview. Eg, limiting to depth 1:
|
||||
With a depth:NUM query, or --depth NUM option, or just -NUM (eg: -3)
|
||||
balance reports will show accounts only to the specified depth, hiding
|
||||
the deeper subaccounts. This can be useful for getting an overview
|
||||
without too much detail.
|
||||
|
||||
$ hledger balance -N -1
|
||||
Account balances at the depth limit always include the balances from
|
||||
any deeper subaccounts (even in list mode). Eg, limiting to depth 1:
|
||||
|
||||
$ hledger -f examples/sample.journal balance -1
|
||||
$-1 assets
|
||||
$2 expenses
|
||||
$-2 income
|
||||
$1 liabilities
|
||||
--------------------
|
||||
0
|
||||
|
||||
You can also hide top-level account name parts, using --drop N. This
|
||||
can be useful for hiding repetitive top-level account names:
|
||||
Dropping top-level accounts
|
||||
You can also hide one or more top-level account name parts, using
|
||||
--drop NUM. This can be useful for hiding repetitive top-level account
|
||||
names:
|
||||
|
||||
$ hledger bal expenses --drop 1
|
||||
$ hledger -f examples/sample.journal bal expenses --drop 1
|
||||
$1 food
|
||||
$1 supplies
|
||||
--------------------
|
||||
@ -1937,7 +2049,7 @@ COMMANDS
|
||||
ance shows a tabular report, with columns representing successive time
|
||||
periods (and a title):
|
||||
|
||||
$ hledger balance --quarterly income expenses -E
|
||||
$ hledger -f examples/sample.journal bal --quarterly income expenses -E
|
||||
Balance changes in 2008:
|
||||
|
||||
|| 2008q1 2008q2 2008q3 2008q4
|
||||
@ -2065,7 +2177,7 @@ COMMANDS
|
||||
With -%/--percent, balance reports show each account's value expressed
|
||||
as a percentage of the (column) total:
|
||||
|
||||
$ hledger bal expenses -Q -%
|
||||
$ hledger -f examples/sample.journal bal expenses -Q -%
|
||||
Balance changes in 2008:
|
||||
|
||||
|| 2008Q1 2008Q2 2008Q3 2008Q4
|
||||
@ -2142,7 +2254,11 @@ COMMANDS
|
||||
o --budget : like --sum but also show a goal amount
|
||||
|
||||
o --valuechange : show the change in period-end historical balance val-
|
||||
ues
|
||||
ues (caused by deposits, withdrawals, and/or market price fluctua-
|
||||
tions)
|
||||
|
||||
o --gain : show the unrealised capital gain/loss, (the current valued
|
||||
balance minus each amount's original cost)
|
||||
|
||||
Accumulation type:
|
||||
Which postings should be included in each cell's calculation. It is
|
||||
@ -2172,7 +2288,7 @@ COMMANDS
|
||||
o --value=then[,COMM] : show value at transaction dates
|
||||
|
||||
o --value=end[,COMM] : show value at period end date(s) (default with
|
||||
--valuechange)
|
||||
--valuechange, --gain)
|
||||
|
||||
o --value=now[,COMM] : show value at today's date
|
||||
|
||||
@ -2511,7 +2627,7 @@ COMMANDS
|
||||
can use --format FMT to customise the format and content of each line.
|
||||
Eg:
|
||||
|
||||
$ hledger balance --format "%20(account) %12(total)"
|
||||
$ hledger -f examples/sample.journal balance --format "%20(account) %12(total)"
|
||||
assets $-1
|
||||
bank:saving $1
|
||||
cash $-2
|
||||
@ -2818,17 +2934,20 @@ COMMANDS
|
||||
|
||||
Unless you are running close on exactly the first day of the new
|
||||
period, you'll want to override the closing date. This is done by
|
||||
specifying a report period, where "last day of the report period" will
|
||||
be the closing date. The opening date is always the following day. So
|
||||
to close on 2020-12-31 and open on 2021-01-01, any of these work
|
||||
specifying a report end date, where "last day of the report period"
|
||||
will be the closing date. The opening date is always the following
|
||||
day. So to close on (end of) 2020-12-31 and open on (start of)
|
||||
2021-01-01, any of these will work:
|
||||
|
||||
o -p 2020
|
||||
|
||||
o date:2020
|
||||
|
||||
o -e 2021-01-01 (remember -e specifies an exclusive end date)
|
||||
|
||||
o -e 2021
|
||||
end date argument explanation
|
||||
-----------------------------------------------
|
||||
-e 2021-01-01 end dates are exclusive
|
||||
-e 2021 equivalent, per smart
|
||||
dates
|
||||
-p 2020 equivalent, the period's
|
||||
begin date is ignored
|
||||
date:2020 equivalent query
|
||||
|
||||
Example: close asset/liability accounts for file transition
|
||||
Carrying asset/liability balances from 2020.journal into a new file for
|
||||
@ -2868,17 +2987,17 @@ COMMANDS
|
||||
; 2019.journal
|
||||
2019-01-01 opening balances ; earliest opening txn, no tag here
|
||||
...
|
||||
2019-12-31 closing balances ; close:2019
|
||||
2019-12-31 closing balances ; clopen:2020
|
||||
...
|
||||
|
||||
; 2020.journal
|
||||
2020-01-01 opening balances ; open:2020
|
||||
2020-01-01 opening balances ; clopen:2020
|
||||
...
|
||||
2020-12-31 closing balances ; close:2020
|
||||
2020-12-31 closing balances ; clopen:2021
|
||||
...
|
||||
|
||||
; 2021.journal
|
||||
2021-01-01 opening balances ; open:2021
|
||||
2021-01-01 opening balances ; clopen:2021
|
||||
...
|
||||
|
||||
Now with
|
||||
@ -2890,15 +3009,12 @@ COMMANDS
|
||||
|
||||
you could do eg:
|
||||
|
||||
$ hledger -f all.journal reg -H checking not:tag:'open|close'
|
||||
$ hledger -f all.journal reg -H checking not:tag:clopen
|
||||
# all years checking register, hiding non-essential opening/closing txns
|
||||
|
||||
$ hledger -f all.journal bs -p 2020 not:tag:close=2020
|
||||
$ hledger -f all.journal bs -p 2020 not:tag:clopen=2020
|
||||
# 2020 year end balances, suppressing 2020 closing txn
|
||||
|
||||
$ hledger -f 2020.journal bs not:tag:close
|
||||
# 2020 year end balances, easier case
|
||||
|
||||
close and balance assertions
|
||||
The closing and opening transactions will include balance assertions,
|
||||
verifying that the accounts have first been reset to zero and then
|
||||
@ -2934,25 +3050,30 @@ COMMANDS
|
||||
assets:bank:checking
|
||||
|
||||
Example: close revenue/expense accounts to retained earnings
|
||||
Here, the opening transaction is supressed with --close, as it's proba-
|
||||
bly not needed. Also you'll want to use a different equity account
|
||||
name:
|
||||
For this, use --close to suppress the opening transaction, as it's not
|
||||
needed. Also you'll want to change the equity account name to your
|
||||
equivalent of "equity:retained earnings".
|
||||
|
||||
$ hledger close -f 2021.journal -p 2021Q1 --close --close-acct='equity:retained earnings' revenues expenses >> 2021.journal
|
||||
# close 2021 first quarter revenues/expenses
|
||||
Closing 2021's first quarter revenues/expenses:
|
||||
|
||||
Or, operating on the default journal:
|
||||
$ hledger close -f 2021.journal --close revenues expenses -p 2021Q1 \
|
||||
--close-acct='equity:retained earnings' >> 2021.journal
|
||||
|
||||
$ hledger close -p Q1 --close --close-acct='equity:retained earnings' revenues expenses >> $LEDGER_FILE
|
||||
# close current year's first quarter revenues/expenses
|
||||
The same, using the default journal and current year:
|
||||
|
||||
Now, eg:
|
||||
$ hledger close --close revenues expenses -p Q1 \
|
||||
--close-acct='equity:retained earnings' >> $LEDGER_FILE
|
||||
|
||||
Now, the first quarter's balance sheet should show a zero (unless you
|
||||
are using @/@@ notation without equity postings):
|
||||
|
||||
$ hledger bse -p Q1
|
||||
# Q1 full balance sheet, total should be zero
|
||||
|
||||
$ hledger is -p Q1 not:'retained earnings'
|
||||
# Q1 income statement, must suppress the closing txn
|
||||
And we must suppress the closing transaction to see the first quarter's
|
||||
income statement (using the description; not:'retained earnings' won't
|
||||
work here):
|
||||
|
||||
$ hledger is -p Q1 not:desc:'closing balances'
|
||||
|
||||
codes
|
||||
codes
|
||||
@ -3051,9 +3172,13 @@ COMMANDS
|
||||
help
|
||||
help
|
||||
Show the hledger user manual in one of several formats, optionally
|
||||
positioned at a given TOPIC (if possible). TOPIC is any heading, or
|
||||
heading prefix, in the manual. Some examples: commands, print, 'auto
|
||||
postings', periodic.
|
||||
positioned at a given TOPIC (if possible).
|
||||
|
||||
TOPIC is any heading in the manual, or the start of any heading (but
|
||||
not the middle). It is case insensitive.
|
||||
|
||||
Some examples: commands, print, forecast, "auto postings", "commodity
|
||||
column".
|
||||
|
||||
This command shows the user manual built in to this hledger version.
|
||||
It can be useful if the correct version of the hledger manual, or the
|
||||
@ -4377,6 +4502,9 @@ JOURNAL FORMAT
|
||||
commodity 1000.00000000 BTC
|
||||
commodity 1 000.
|
||||
|
||||
The inferred commodity style can be overridden by supplying a command
|
||||
line option.
|
||||
|
||||
Rounding
|
||||
Amounts are stored internally as decimal numbers with up to 255 decimal
|
||||
places, and displayed with the number of decimal places specified by
|
||||
@ -4628,6 +4756,8 @@ JOURNAL FORMAT
|
||||
links to more detailed docs.
|
||||
|
||||
|
||||
|
||||
|
||||
direc- end subdi- purpose can affect (as of
|
||||
tive directive rec- 2018/06)
|
||||
tives
|
||||
@ -4844,6 +4974,9 @@ JOURNAL FORMAT
|
||||
Note hledger normally uses banker's rounding, so 0.5 displayed with
|
||||
zero decimal digits is "0". (More at Commodity display style.)
|
||||
|
||||
Even in the presence of commodity directives, the commodity display
|
||||
style can still be overridden by supplying a command line option.
|
||||
|
||||
Commodity error checking
|
||||
In strict mode, enabled with the -s/--strict flag, hledger will report
|
||||
an error if a commodity symbol is used that has not been declared by a
|
||||
@ -4999,13 +5132,14 @@ JOURNAL FORMAT
|
||||
receivables.)
|
||||
|
||||
Declaring account types
|
||||
Generally, to make these reports work you should declare your top-level
|
||||
accounts and their types, using account directives with type: tags.
|
||||
|
||||
The tag's value should be one of: Asset, Liability, Equity, Revenue,
|
||||
Expense, Cash, A, L, E, R, X, C (all case insensitive). The type is
|
||||
inherited by all subaccounts except where they override it. Here's a
|
||||
complete example:
|
||||
To make the balancesheet/balancesheetequity/cashflow/incomestatement
|
||||
reports work, generally you should declare your top-level accounts, and
|
||||
their types. For each top-level account, write an account directive,
|
||||
with a type: tag. The tag's value can be any of Asset, Liability,
|
||||
Equity, Revenue, Expense, Cash, or (for short) A, L, E, R, X, C (case
|
||||
insensitive). An account's type is inherited by its subaccounts,
|
||||
unless they declare a different type. Here's an example, declaring all
|
||||
six account types:
|
||||
|
||||
account assets ; type: Asset
|
||||
account assets:bank ; type: Cash
|
||||
@ -5015,12 +5149,23 @@ JOURNAL FORMAT
|
||||
account revenues ; type: Revenue
|
||||
account expenses ; type: Expense
|
||||
|
||||
Auto-detected account types
|
||||
If you happen to use common english top-level account names, you may
|
||||
not need to declare account types, as they will be detected automati-
|
||||
cally using the following rules:
|
||||
There is also an older syntax, which is deprecated and will be dropped
|
||||
soon (A, L, E, R or X separated from the account name by two or more
|
||||
spaces):
|
||||
|
||||
If account's name matches this regular expression: | its type is:
|
||||
account assets A
|
||||
account liabilities L
|
||||
account equity E
|
||||
account revenues R
|
||||
account expenses X
|
||||
|
||||
Auto-detected account types
|
||||
hledger tries to find at least one top level account in each of the six
|
||||
account types (Asset, Liability, Equity, Revenue, Expense, Cash). When
|
||||
no accounts have been declared for a particular type, hledger tries to
|
||||
auto-detect some accounts by name, using regular expressions:
|
||||
|
||||
If account's name matches this case insensitive regular expression:| its type is:
|
||||
------------------------------------------------------------------- | ------------
|
||||
^assets?(:|$) |
|
||||
and does not contain regexp (investment|receivable|:A/R|:fixed) | Cash
|
||||
@ -5030,16 +5175,26 @@ JOURNAL FORMAT
|
||||
^(income|revenue)s?(:|$) | Revenue
|
||||
^expenses?(:|$) | Expense
|
||||
|
||||
Even so, explicit declarations may be a good idea, for clarity and pre-
|
||||
dictability.
|
||||
For people using standard english account names, this feature helps
|
||||
hledger's high-level reports work out of the box with minimal configu-
|
||||
ration.
|
||||
|
||||
Interference from auto-detected account types
|
||||
If you assign any account type, it's a good idea to assign all of them,
|
||||
to prevent any confusion from mixing declared and auto-detected types.
|
||||
Although it's unlikely to happen in real life, here's an example: with
|
||||
the following journal, balancesheetequity shows "liabilities" in both
|
||||
Liabilities and Equity sections. Declaring another account as
|
||||
type:Liability would fix it:
|
||||
If you use non-english account names, you should declare account types
|
||||
to make these reports work. And more generally, declaring accounts and
|
||||
types is usually a good idea, for increased clarity and predictability
|
||||
(and for the other benefits of account directives: error checking, dis-
|
||||
play order, etc).
|
||||
|
||||
Notes:
|
||||
|
||||
o When any account is declared as some type, this disables auto-detec-
|
||||
tion for that particular type.
|
||||
|
||||
o If you declare any account's type, it's a good idea to declare an
|
||||
account for all six types, since a mix of declared and auto-detected
|
||||
types can cause confusion. For example, here liabilities is declared
|
||||
to be Equity, but would also be auto-detected as Liability, since no
|
||||
Liability account is declared:
|
||||
|
||||
account liabilities ; type:Equity
|
||||
|
||||
@ -5048,17 +5203,6 @@ JOURNAL FORMAT
|
||||
liabilities 1
|
||||
equity -2
|
||||
|
||||
Old account type syntax
|
||||
In some hledger journals you might instead see this old syntax (the
|
||||
letters ALERX, separated from the account name by two or more spaces);
|
||||
this is deprecated and may be removed soon:
|
||||
|
||||
account assets A
|
||||
account liabilities L
|
||||
account equity E
|
||||
account revenues R
|
||||
account expenses X
|
||||
|
||||
Account display order
|
||||
Account directives also set the order in which accounts are displayed,
|
||||
eg in reports, the hledger-ui accounts screen, and the hledger-web
|
||||
@ -5340,45 +5484,71 @@ JOURNAL FORMAT
|
||||
|
||||
Forecasting with periodic transactions
|
||||
The --forecast flag activates any periodic transaction rules in the
|
||||
journal. They will generate temporary recurring transactions, which
|
||||
are not saved in the journal, but will appear in all reports (eg
|
||||
print). This can be useful for estimating balances into the future, or
|
||||
experimenting with different scenarios. Or, it can be used as a data
|
||||
entry aid: describe recurring transactions, and every so often copy the
|
||||
output of print --forecast into the journal.
|
||||
journal. These will generate temporary additional transactions, usu-
|
||||
ally recurring and in the future, which will appear in all reports.
|
||||
hledger print --forecast is a good way to see them.
|
||||
|
||||
These transactions will have an extra tag indicating which periodic
|
||||
rule generated them: generated-transaction:~ PERIODICEXPR. And a simi-
|
||||
lar, hidden tag (beginning with an underscore) which, because it's
|
||||
never displayed by print, can be used to match transactions generated
|
||||
"just now": _generated-transaction:~ PERIODICEXPR.
|
||||
This can be useful for estimating balances into the future, perhaps
|
||||
experimenting with different scenarios.
|
||||
|
||||
Periodic transactions are generated within some forecast period. By
|
||||
default, this
|
||||
It could also be useful for scripted data entry: you could describe
|
||||
recurring transactions, and every so often copy the output of print
|
||||
--forecast into the journal.
|
||||
|
||||
o begins on the later of
|
||||
The generated transactions will have an extra tag, like generated-
|
||||
transaction:~ PERIODICEXPR, indicating which periodic rule generated
|
||||
them. There is also a similar, hidden tag, named _generated-transac-
|
||||
tion:, which you can use to reliably match transactions generated "just
|
||||
now" (rather than printed in the past).
|
||||
|
||||
o the report start date if specified with -b/-p/date:
|
||||
The forecast transactions are generated within a forecast period, which
|
||||
is independent of the report period. (Forecast period sets the bounds
|
||||
for generated transactions, report period controls which transactions
|
||||
are reported.) The forecast period begins on:
|
||||
|
||||
o the day after the latest normal (non-periodic) transaction in the
|
||||
journal, or today if there are no normal transactions.
|
||||
o the start date provided within --forecast's argument, if any
|
||||
|
||||
o ends on the report end date if specified with -e/-p/date:, or 6
|
||||
months (180 days) from today.
|
||||
o otherwise, the later of
|
||||
|
||||
This means that periodic transactions will begin only after the latest
|
||||
recorded transaction. And a recorded transaction dated in the future
|
||||
can prevent generation of periodic transactions. (You can avoid that
|
||||
by writing the future transaction as a one-time periodic rule instead -
|
||||
put tilde before the date, eg ~ YYYY-MM-DD ...).
|
||||
o the report start date, if specified (with -b/-p/date:)
|
||||
|
||||
Or, you can set your own arbitrary "forecast period", which can overlap
|
||||
recorded transactions, and need not be in the future, by providing an
|
||||
option argument, like --forecast=PERIODEXPR. Note the equals sign is
|
||||
required, a space won't work. PERIODEXPR is a period expression, which
|
||||
can specify the start date, end date, or both, like in a date: query.
|
||||
(See also hledger.1 -> Report start & end date). Some examples:
|
||||
--forecast=202001-202004, --forecast=jan-, --forecast=2020.
|
||||
o the day after the latest ordinary transaction in the journal, if
|
||||
any
|
||||
|
||||
o otherwise today.
|
||||
|
||||
It ends on:
|
||||
|
||||
o the end date provided within --forecast's argument, if any
|
||||
|
||||
o otherwise, the report end date, if specified (with -e/-p/date:)
|
||||
|
||||
o otherwise 180 days (6 months) from today.
|
||||
|
||||
Note, this means that ordinary transactions will suppress periodic
|
||||
transactions, by default; the periodic transactions will not start
|
||||
until after the last ordinary transaction. This is usually convenient,
|
||||
but you can get around it in two ways:
|
||||
|
||||
o If you need to record some transactions in the future, make them
|
||||
periodic transactions (with a single occurrence, eg: ~ YYYY-MM-DD)
|
||||
rather than ordinary transactions. That way they won't suppress
|
||||
other periodic transactions.
|
||||
|
||||
o Or give --forecast a period expression argument. A forecast period
|
||||
specified this way can overlap ordinary transactions, and need not be
|
||||
in the future. Some things to note:
|
||||
|
||||
o You must use = between flag and argument; a space won't work.
|
||||
|
||||
o The period expression can specify the forecast period's start date,
|
||||
end date, or both. See also Report start & end date.
|
||||
|
||||
o The period expression should not specify a report interval. (Each
|
||||
periodic transaction rule specifies its own interval.)
|
||||
|
||||
Some examples: --forecast=202001-202004, --forecast=jan-, --fore-
|
||||
cast=2021.
|
||||
|
||||
Budgeting with periodic transactions
|
||||
With the --budget flag, currently supported by the balance command,
|
||||
@ -5527,6 +5697,8 @@ CSV FORMAT
|
||||
|
||||
skip skip one or more header lines or matched CSV
|
||||
records
|
||||
|
||||
|
||||
fields list name CSV fields, assign them to hledger
|
||||
fields
|
||||
field assignment assign a value to one hledger field, with
|
||||
@ -5542,8 +5714,6 @@ CSV FORMAT
|
||||
date-format how to parse dates in CSV records
|
||||
decimal-mark the decimal mark used in CSV amounts, if
|
||||
ambiguous
|
||||
|
||||
|
||||
newest-first disambiguate record order when there's only
|
||||
one date
|
||||
include inline another CSV rules file
|
||||
@ -5914,7 +6084,8 @@ CSV FORMAT
|
||||
o Interpolation strips outer whitespace (so a CSV value like " 1 "
|
||||
becomes 1 when interpolated) (#1051).
|
||||
|
||||
o See also Tips below.
|
||||
o Interpolations always refer to a CSV field - you can't interpolate a
|
||||
hledger field. (See Referencing other fields below).
|
||||
|
||||
Field names
|
||||
Here are the standard hledger field (and pseudo-field) names, which you
|
||||
@ -7241,4 +7412,4 @@ SEE ALSO
|
||||
|
||||
|
||||
|
||||
hledger-1.22.99 August 2021 HLEDGER(1)
|
||||
hledger-1.22.99 September 2021 HLEDGER(1)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user