;doc: update manuals

This commit is contained in:
Simon Michael 2023-12-01 17:25:00 -10:00
parent 6cfeb65d7b
commit e90483a75a
11 changed files with 3685 additions and 4515 deletions

View File

@ -1,2 +1,2 @@
m4_dnl Date to show in man pages. Updated by "Shake manuals"
m4_define({{_monthyear_}}, {{November 2023}})m4_dnl
m4_define({{_monthyear_}}, {{December 2023}})m4_dnl

View File

@ -1,2 +1,2 @@
m4_dnl Date to show in man pages. Updated by "Shake manuals"
m4_define({{_monthyear_}}, {{November 2023}})m4_dnl
m4_define({{_monthyear_}}, {{December 2023}})m4_dnl

View File

@ -1,20 +1,17 @@
.TH "HLEDGER-UI" "1" "November 2023" "hledger-ui-1.31.99 " "hledger User Manuals"
.TH "HLEDGER-UI" "1" "December 2023" "hledger-ui-1.31.99 " "hledger User Manuals"
.SH NAME
.PP
hledger-ui - robust, friendly plain text accounting (TUI version)
.SH SYNOPSIS
.PP
\f[V]hledger-ui [OPTS] [QUERYARGS]\f[R]
\f[CR]hledger-ui [OPTS] [QUERYARGS]\f[R]
.PD 0
.P
.PD
\f[V]hledger ui -- [OPTS] [QUERYARGS]\f[R]
\f[CR]hledger ui -- [OPTS] [QUERYARGS]\f[R]
.SH DESCRIPTION
.PP
This manual is for hledger\[aq]s terminal interface, version 1.31.99.
See also the hledger manual for common concepts and file formats.
.PP
@ -31,9 +28,9 @@ It is easier than hledger\[aq]s command-line interface, and sometimes
quicker and more convenient than the web interface.
.PP
Like hledger, it reads from (and appends to) a journal file specified by
the \f[V]LEDGER_FILE\f[R] environment variable (defaulting to
\f[V]$HOME/.hledger.journal\f[R]); or you can specify files with
\f[V]-f\f[R] options.
the \f[CR]LEDGER_FILE\f[R] environment variable (defaulting to
\f[CR]$HOME/.hledger.journal\f[R]); or you can specify files with
\f[CR]-f\f[R] options.
It can also read timeclock files, timedot files, or any CSV/SSV/TSV file
with a date field.
(See hledger(1) -> Input for details.)
@ -44,187 +41,186 @@ They can be revealed, along with any rule-generated periodic
transactions, by pressing the F key (or starting with --forecast) to
enable \[dq]forecast mode\[dq].
.SH OPTIONS
.PP
Any QUERYARGS are interpreted as a hledger search query which filters
the data.
.PP
hledger-ui provides the following options:
.TP
\f[V]-w --watch\f[R]
\f[CR]-w --watch\f[R]
watch for data and date changes and reload automatically
.TP
\f[V]--theme=default|terminal|greenterm\f[R]
\f[CR]--theme=default|terminal|greenterm\f[R]
use this custom display theme
.TP
\f[V]--menu\f[R]
\f[CR]--menu\f[R]
start in the menu screen
.TP
\f[V]--cash\f[R]
\f[CR]--cash\f[R]
start in the cash accounts screen
.TP
\f[V]--bs\f[R]
\f[CR]--bs\f[R]
start in the balance sheet accounts screen
.TP
\f[V]--is\f[R]
\f[CR]--is\f[R]
start in the income statement accounts screen
.TP
\f[V]--all\f[R]
\f[CR]--all\f[R]
start in the all accounts screen
.TP
\f[V]--register=ACCTREGEX\f[R]
\f[CR]--register=ACCTREGEX\f[R]
start in the (first) matched account\[aq]s register screen
.TP
\f[V]--change\f[R]
\f[CR]--change\f[R]
show period balances (changes) at startup instead of historical balances
.TP
\f[V]-l --flat\f[R]
\f[CR]-l --flat\f[R]
show accounts as a flat list (default)
.TP
\f[V]-t --tree\f[R]
\f[CR]-t --tree\f[R]
show accounts as a tree
.PP
hledger-ui also supports many of hledger\[aq]s general options (and the
hledger manual\[aq]s command line tips also apply here):
.SS General help options
.TP
\f[V]-h --help\f[R]
\f[CR]-h --help\f[R]
show general or COMMAND help
.TP
\f[V]--man\f[R]
\f[CR]--man\f[R]
show general or COMMAND user manual with man
.TP
\f[V]--info\f[R]
\f[CR]--info\f[R]
show general or COMMAND user manual with info
.TP
\f[V]--version\f[R]
\f[CR]--version\f[R]
show general or ADDONCMD version
.TP
\f[V]--debug[=N]\f[R]
\f[CR]--debug[=N]\f[R]
show debug output (levels 1-9, default: 1)
.SS General input options
.TP
\f[V]-f FILE --file=FILE\f[R]
\f[CR]-f FILE --file=FILE\f[R]
use a different input file.
For stdin, use - (default: \f[V]$LEDGER_FILE\f[R] or
\f[V]$HOME/.hledger.journal\f[R])
For stdin, use - (default: \f[CR]$LEDGER_FILE\f[R] or
\f[CR]$HOME/.hledger.journal\f[R])
.TP
\f[V]--rules-file=RULESFILE\f[R]
\f[CR]--rules-file=RULESFILE\f[R]
Conversion rules file to use when reading CSV (default: FILE.rules)
.TP
\f[V]--separator=CHAR\f[R]
\f[CR]--separator=CHAR\f[R]
Field separator to expect when reading CSV (default: \[aq],\[aq])
.TP
\f[V]--alias=OLD=NEW\f[R]
\f[CR]--alias=OLD=NEW\f[R]
rename accounts named OLD to NEW
.TP
\f[V]--anon\f[R]
\f[CR]--anon\f[R]
anonymize accounts and payees
.TP
\f[V]--pivot FIELDNAME\f[R]
\f[CR]--pivot FIELDNAME\f[R]
use some other field or tag for the account name
.TP
\f[V]-I --ignore-assertions\f[R]
\f[CR]-I --ignore-assertions\f[R]
disable balance assertion checks (note: does not disable balance
assignments)
.TP
\f[V]-s --strict\f[R]
\f[CR]-s --strict\f[R]
do extra error checking (check that all posted accounts are declared)
.SS General reporting options
.TP
\f[V]-b --begin=DATE\f[R]
\f[CR]-b --begin=DATE\f[R]
include postings/txns on or after this date (will be adjusted to
preceding subperiod start when using a report interval)
.TP
\f[V]-e --end=DATE\f[R]
\f[CR]-e --end=DATE\f[R]
include postings/txns before this date (will be adjusted to following
subperiod end when using a report interval)
.TP
\f[V]-D --daily\f[R]
\f[CR]-D --daily\f[R]
multiperiod/multicolumn report by day
.TP
\f[V]-W --weekly\f[R]
\f[CR]-W --weekly\f[R]
multiperiod/multicolumn report by week
.TP
\f[V]-M --monthly\f[R]
\f[CR]-M --monthly\f[R]
multiperiod/multicolumn report by month
.TP
\f[V]-Q --quarterly\f[R]
\f[CR]-Q --quarterly\f[R]
multiperiod/multicolumn report by quarter
.TP
\f[V]-Y --yearly\f[R]
\f[CR]-Y --yearly\f[R]
multiperiod/multicolumn report by year
.TP
\f[V]-p --period=PERIODEXP\f[R]
\f[CR]-p --period=PERIODEXP\f[R]
set start date, end date, and/or reporting interval all at once using
period expressions syntax
.TP
\f[V]--date2\f[R]
\f[CR]--date2\f[R]
match the secondary date instead (see command help for other effects)
.TP
\f[V]--today=DATE\f[R]
\f[CR]--today=DATE\f[R]
override today\[aq]s date (affects relative smart dates, for
tests/examples)
.TP
\f[V]-U --unmarked\f[R]
\f[CR]-U --unmarked\f[R]
include only unmarked postings/txns (can combine with -P or -C)
.TP
\f[V]-P --pending\f[R]
\f[CR]-P --pending\f[R]
include only pending postings/txns
.TP
\f[V]-C --cleared\f[R]
\f[CR]-C --cleared\f[R]
include only cleared postings/txns
.TP
\f[V]-R --real\f[R]
\f[CR]-R --real\f[R]
include only non-virtual postings
.TP
\f[V]-NUM --depth=NUM\f[R]
\f[CR]-NUM --depth=NUM\f[R]
hide/aggregate accounts or postings more than NUM levels deep
.TP
\f[V]-E --empty\f[R]
\f[CR]-E --empty\f[R]
show items with zero amount, normally hidden (and vice-versa in
hledger-ui/hledger-web)
.TP
\f[V]-B --cost\f[R]
\f[CR]-B --cost\f[R]
convert amounts to their cost/selling amount at transaction time
.TP
\f[V]-V --market\f[R]
\f[CR]-V --market\f[R]
convert amounts to their market value in default valuation commodities
.TP
\f[V]-X --exchange=COMM\f[R]
\f[CR]-X --exchange=COMM\f[R]
convert amounts to their market value in commodity COMM
.TP
\f[V]--value\f[R]
\f[CR]--value\f[R]
convert amounts to cost or market value, more flexibly than -B/-V/-X
.TP
\f[V]--infer-equity\f[R]
\f[CR]--infer-equity\f[R]
infer conversion equity postings from costs
.TP
\f[V]--infer-costs\f[R]
\f[CR]--infer-costs\f[R]
infer costs from conversion equity postings
.TP
\f[V]--infer-market-prices\f[R]
\f[CR]--infer-market-prices\f[R]
use costs as additional market prices, as if they were P directives
.TP
\f[V]--forecast\f[R]
\f[CR]--forecast\f[R]
generate transactions from periodic rules,
between the latest recorded txn and 6 months from today,
or during the specified PERIOD (= is required).
Auto posting rules will be applied to these transactions as well.
Also, in hledger-ui make future-dated transactions visible.
.TP
\f[V]--auto\f[R]
\f[CR]--auto\f[R]
generate extra postings by applying auto posting rules to all txns (not
just forecast txns)
.TP
\f[V]--verbose-tags\f[R]
\f[CR]--verbose-tags\f[R]
add visible tags indicating transactions or postings which have been
generated/modified
.TP
\f[V]--commodity-style\f[R]
\f[CR]--commodity-style\f[R]
Override the commodity style in the output for the specified commodity.
For example \[aq]EUR1.000,00\[aq].
.TP
\f[V]--color=WHEN (or --colour=WHEN)\f[R]
\f[CR]--color=WHEN (or --colour=WHEN)\f[R]
Should color-supporting commands use ANSI color codes in text output.
\[aq]auto\[aq] (default): whenever stdout seems to be a color-supporting
terminal.
@ -233,7 +229,7 @@ into \[aq]less -R\[aq].
\[aq]never\[aq] or \[aq]no\[aq]: never.
A NO_COLOR environment variable overrides this.
.TP
\f[V]--pretty[=WHEN]\f[R]
\f[CR]--pretty[=WHEN]\f[R]
Show prettier output, e.g.
using unicode box-drawing characters.
Accepts \[aq]yes\[aq] (the default) or \[aq]no\[aq] (\[aq]y\[aq],
@ -246,7 +242,6 @@ last one takes precedence.
.PP
Some reporting options can also be written as query arguments.
.SH MOUSE
.PP
In most modern terminals, you can navigate through the screens with a
mouse or touchpad:
.IP \[bu] 2
@ -256,166 +251,159 @@ Click on list items to go deeper
.IP \[bu] 2
Click on the left margin (column 0) to go back.
.SH KEYS
.PP
Keyboard gives more control.
.PP
\f[V]?\f[R] shows a help dialog listing all keys.
\f[CR]?\f[R] shows a help dialog listing all keys.
(Some of these also appear in the quick help at the bottom of each
screen.)
Press \f[V]?\f[R] again (or \f[V]ESCAPE\f[R], or \f[V]LEFT\f[R], or
\f[V]q\f[R]) to close it.
Press \f[CR]?\f[R] again (or \f[CR]ESCAPE\f[R], or \f[CR]LEFT\f[R], or
\f[CR]q\f[R]) to close it.
The following keys work on most screens:
.PP
The cursor keys navigate: \f[V]RIGHT\f[R] or \f[V]ENTER\f[R] goes
deeper, \f[V]LEFT\f[R] returns to the previous screen,
\f[V]UP\f[R]/\f[V]DOWN\f[R]/\f[V]PGUP\f[R]/\f[V]PGDN\f[R]/\f[V]HOME\f[R]/\f[V]END\f[R]
The cursor keys navigate: \f[CR]RIGHT\f[R] or \f[CR]ENTER\f[R] goes
deeper, \f[CR]LEFT\f[R] returns to the previous screen,
\f[CR]UP\f[R]/\f[CR]DOWN\f[R]/\f[CR]PGUP\f[R]/\f[CR]PGDN\f[R]/\f[CR]HOME\f[R]/\f[CR]END\f[R]
move up and down through lists.
Emacs-style
(\f[V]CTRL-p\f[R]/\f[V]CTRL-n\f[R]/\f[V]CTRL-f\f[R]/\f[V]CTRL-b\f[R])
and VI-style (\f[V]k\f[R],\f[V]j\f[R],\f[V]l\f[R],\f[V]h\f[R]) movement
keys are also supported.
(\f[CR]CTRL-p\f[R]/\f[CR]CTRL-n\f[R]/\f[CR]CTRL-f\f[R]/\f[CR]CTRL-b\f[R])
and VI-style (\f[CR]k\f[R],\f[CR]j\f[R],\f[CR]l\f[R],\f[CR]h\f[R])
movement keys are also supported.
A tip: movement speed is limited by your keyboard repeat rate, to move
faster you may want to adjust it.
(If you\[aq]re on a mac, the karabiner app is one way to do that.)
.PP
With shift pressed, the cursor keys adjust the report period, limiting
the transactions to be shown (by default, all are shown).
\f[V]SHIFT-DOWN/UP\f[R] steps downward and upward through these standard
report period durations: year, quarter, month, week, day.
Then, \f[V]SHIFT-LEFT/RIGHT\f[R] moves to the previous/next period.
\f[V]T\f[R] sets the report period to today.
With the \f[V]-w/--watch\f[R] option, when viewing a \[dq]current\[dq]
\f[CR]SHIFT-DOWN/UP\f[R] steps downward and upward through these
standard report period durations: year, quarter, month, week, day.
Then, \f[CR]SHIFT-LEFT/RIGHT\f[R] moves to the previous/next period.
\f[CR]T\f[R] sets the report period to today.
With the \f[CR]-w/--watch\f[R] option, when viewing a \[dq]current\[dq]
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 \f[V]/\f[R] and a
\f[V]date:\f[R] query.
To set a non-standard period, you can use \f[CR]/\f[R] and a
\f[CR]date:\f[R] query.
.PP
(Mac users: SHIFT-DOWN/UP keys do not work by default in Terminal, as of
MacOS Monterey.
You can configure them as follows: open Terminal, press CMD-comma to
open preferences, click Profiles, select your current terminal profile
on the left, click Keyboard on the right, click + and add this for
Shift-Down: \f[V]\[rs]033[1;2B\f[R], click + and add this for Shift-Up:
\f[V]\[rs]033[1;2A\f[R].
Press the Escape key to enter the \f[V]\[rs]033\f[R] part, you can\[aq]t
type it directly.)
Shift-Down: \f[CR]\[rs]033[1;2B\f[R], click + and add this for Shift-Up:
\f[CR]\[rs]033[1;2A\f[R].
Press the Escape key to enter the \f[CR]\[rs]033\f[R] part, you
can\[aq]t type it directly.)
.PP
\f[V]/\f[R] lets you set a general filter query limiting the data shown,
using the same query terms as in hledger and hledger-web.
\f[CR]/\f[R] 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 \f[V]ENTER\f[R] to set it, or \f[V]ESCAPE\f[R]to cancel.
press \f[CR]ENTER\f[R] to set it, or \f[CR]ESCAPE\f[R]to cancel.
There are also keys for quickly adjusting some common filters like
account depth and transaction status (see below).
\f[V]BACKSPACE\f[R] or \f[V]DELETE\f[R] removes all filters, showing all
transactions.
\f[CR]BACKSPACE\f[R] or \f[CR]DELETE\f[R] removes all filters, showing
all transactions.
.PP
As mentioned above, by default hledger-ui hides future transactions -
both ordinary transactions recorded in the journal, and periodic
transactions generated by rule.
\f[V]F\f[R] toggles forecast mode, in which future/forecasted
\f[CR]F\f[R] toggles forecast mode, in which future/forecasted
transactions are shown.
.PP
\f[V]ESCAPE\f[R] resets the UI state and jumps back to the top screen,
\f[CR]ESCAPE\f[R] resets the UI state and jumps back to the top screen,
restoring the app\[aq]s initial state at startup.
Or, it cancels minibuffer data entry or the help dialog.
.PP
\f[V]CTRL-l\f[R] redraws the screen and centers the selection if
\f[CR]CTRL-l\f[R] redraws the screen and centers the selection if
possible (selections near the top won\[aq]t be centered, since we
don\[aq]t scroll above the top).
.PP
\f[V]g\f[R] reloads from the data file(s) and updates the current screen
and any previous screens.
\f[CR]g\f[R] reloads from the data file(s) and updates the current
screen and any previous screens.
(With large files, this could cause a noticeable pause.)
.PP
\f[V]I\f[R] toggles balance assertion checking.
\f[CR]I\f[R] toggles balance assertion checking.
Disabling balance assertions temporarily can be useful for
troubleshooting.
.PP
\f[V]a\f[R] runs command-line hledger\[aq]s add command, and reloads the
updated file.
\f[CR]a\f[R] runs command-line hledger\[aq]s add command, and reloads
the updated file.
This allows some basic data entry.
.PP
\f[V]A\f[R] is like \f[V]a\f[R], but runs the hledger-iadd tool, which
\f[CR]A\f[R] is like \f[CR]a\f[R], but runs the hledger-iadd tool, which
provides a terminal interface.
This key will be available if \f[V]hledger-iadd\f[R] is installed in
This key will be available if \f[CR]hledger-iadd\f[R] is installed in
$path.
.PP
\f[V]E\f[R] runs $HLEDGER_UI_EDITOR, or $EDITOR, or a default
(\f[V]emacsclient -a \[dq]\[dq] -nw\f[R]) on the journal file.
\f[CR]E\f[R] runs $HLEDGER_UI_EDITOR, or $EDITOR, or a default
(\f[CR]emacsclient -a \[dq]\[dq] -nw\f[R]) 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.
.PP
\f[V]B\f[R] toggles cost mode, showing amounts converted to their
\f[CR]B\f[R] toggles cost mode, showing amounts converted to their
cost\[aq]s commodity (see hledger manual > Cost reporting.
.PP
\f[V]V\f[R] toggles value mode, showing amounts converted to their
\f[CR]V\f[R] toggles value mode, showing amounts converted to their
market value (see hledger manual > Valuation flag).
More specifically,
.IP "1." 3
By default, the \f[V]V\f[R] key toggles showing end value
(\f[V]--value=end\f[R]) on or off.
By default, the \f[CR]V\f[R] key toggles showing end value
(\f[CR]--value=end\f[R]) on or off.
The valuation date will be the report end date if specified, otherwise
today.
.IP "2." 3
If you started hledger-ui with some other valuation (such as
\f[V]--value=then,EUR\f[R]), the \f[V]V\f[R] key toggles that off or on.
\f[CR]--value=then,EUR\f[R]), the \f[CR]V\f[R] key toggles that off or
on.
.PP
Cost/value tips: - When showing end value, you can change the report end
date without restarting, by pressing \f[V]/\f[R] and adding a query like
\f[V]date:..YYYY-MM-DD\f[R].
date without restarting, by pressing \f[CR]/\f[R] and adding a query
like \f[CR]date:..YYYY-MM-DD\f[R].
- Either cost mode, or value mode, can be active, but not both at once.
Cost mode takes precedence.
- There\[aq]s not yet any visual indicator that cost or value mode is
active, other than the amount values.
.PP
\f[V]q\f[R] quits the application.
\f[CR]q\f[R] quits the application.
.PP
Additional screen-specific keys are described below.
.SH SCREENS
.PP
At startup, hledger-ui shows a menu screen by default.
From here you can navigate to other screens using the cursor keys:
\f[V]UP\f[R]/\f[V]DOWN\f[R] to select, \f[V]RIGHT\f[R] to move to the
selected screen, \f[V]LEFT\f[R] to return to the previous screen.
Or you can use \f[V]ESC\f[R] to return directly to the top menu screen.
\f[CR]UP\f[R]/\f[CR]DOWN\f[R] to select, \f[CR]RIGHT\f[R] to move to the
selected screen, \f[CR]LEFT\f[R] to return to the previous screen.
Or you can use \f[CR]ESC\f[R] to return directly to the top menu screen.
.PP
You can also use a command line flag to specific a different startup
screen (\f[V]--cs\f[R], \f[V]--bs\f[R], \f[V]--is\f[R], \f[V]--all\f[R],
or \f[V]--register=ACCT\f[R]).
screen (\f[CR]--cs\f[R], \f[CR]--bs\f[R], \f[CR]--is\f[R],
\f[CR]--all\f[R], or \f[CR]--register=ACCT\f[R]).
.SS Menu
.PP
This is the top-most screen.
From here you can navigate to several screens listing accounts of
various types.
Note some of these may not show anything until you have configured
account types.
.SS Cash accounts
.PP
This screen shows \[dq]cash\[dq] (ie, liquid asset) accounts (like
\f[V]hledger balancesheet type:c\f[R]).
\f[CR]hledger balancesheet type:c\f[R]).
It always shows balances (historical ending balances on the date shown
in the title line).
.SS Balance sheet accounts
.PP
This screen shows asset, liability and equity accounts (like
\f[V]hledger balancesheetequity\f[R]).
\f[CR]hledger balancesheetequity\f[R]).
It always shows balances.
.SS Income statement accounts
.PP
This screen shows revenue and expense accounts (like
\f[V]hledger incomestatement\f[R]).
\f[CR]hledger incomestatement\f[R]).
It always shows changes (balance changes in the period shown in the
title line).
.SS All accounts
.PP
This screen shows all accounts in your journal (unless filtered by a
query; like \f[V]hledger balance\f[R]).
query; like \f[CR]hledger balance\f[R]).
It shows balances by default; you can toggle showing changes with the
\f[V]H\f[R] key.
\f[CR]H\f[R] key.
.SS Register
.PP
This screen shows the transactions affecting a particular account.
Each line represents one transaction, and shows:
.IP \[bu] 2
@ -427,7 +415,7 @@ the overall change to the current account\[aq]s balance; positive for an
inflow to this account, negative for an outflow.
.IP \[bu] 2
the running total after the transaction.
With the \f[V]H\f[R] key you can toggle between
With the \f[CR]H\f[R] key you can toggle between
.RS 2
.IP \[bu] 2
the period total, which is from just the transactions displayed
@ -441,7 +429,7 @@ bank\[aq]s website, eg) if not disturbed by a query.
.PP
Note, this screen combines each transaction\[aq]s in-period postings to
a single line item, dated with the earliest in-period transaction or
posting date (like hledger\[aq]s \f[V]aregister\f[R]).
posting date (like hledger\[aq]s \f[CR]aregister\f[R]).
So custom posting dates can cause the running balance to be temporarily
inaccurate.
(See hledger manual > aregister and posting dates.)
@ -452,25 +440,24 @@ 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 \f[V]t\f[R] here also.
Tree mode/list mode can be toggled with \f[CR]t\f[R] here also.
.PP
\f[V]U\f[R] toggles filtering by unmarked status, showing or hiding
\f[CR]U\f[R] toggles filtering by unmarked status, showing or hiding
unmarked transactions.
Similarly, \f[V]P\f[R] toggles pending transactions, and \f[V]C\f[R]
Similarly, \f[CR]P\f[R] toggles pending transactions, and \f[CR]C\f[R]
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.)
.PP
\f[V]R\f[R] toggles real mode, in which virtual postings are ignored.
\f[CR]R\f[R] toggles real mode, in which virtual postings are ignored.
.PP
\f[V]z\f[R] toggles nonzero mode, in which only transactions posting a
\f[CR]z\f[R] toggles nonzero mode, in which only transactions posting a
nonzero change are shown (hledger-ui shows zero items by default, unlike
command-line hledger).
.PP
Press \f[V]RIGHT\f[R] to view the selected transaction in detail.
Press \f[CR]RIGHT\f[R] to view the selected transaction in detail.
.SS Transaction
.PP
This screen shows a single transaction, as a general journal entry,
similar to hledger\[aq]s print command and journal format
(hledger_journal(5)).
@ -480,7 +467,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).
.PP
\f[V]UP\f[R] and \f[V]DOWN\f[R] will step through all transactions
\f[CR]UP\f[R] and \f[CR]DOWN\f[R] 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.
@ -490,19 +477,18 @@ The #N number preceding them is the transaction\[aq]s position within
the complete unfiltered journal, which is a more stable id (at least
until the next reload).
.PP
On this screen (and the register screen), the \f[V]E\f[R] key will open
On this screen (and the register screen), the \f[CR]E\f[R] key will open
your text editor with the cursor positioned at the current transaction
if possible.
.PP
This screen has a limitation with showing file updates: it will not show
them until you exit and re-enter it.
So eg to see the effect of using the \f[V]E\f[R] key, currently you
must: - press \f[V]E\f[R], edit and save the file, then exit the editor,
returning to hledger-ui - press \f[V]g\f[R] to reload the file (or use
\f[V]-w/--watch\f[R] mode) - press \f[V]LEFT\f[R] then \f[V]RIGHT\f[R]
to exit and re-enter the transaction screen.
So eg to see the effect of using the \f[CR]E\f[R] key, currently you
must: - press \f[CR]E\f[R], edit and save the file, then exit the
editor, returning to hledger-ui - press \f[CR]g\f[R] to reload the file
(or use \f[CR]-w/--watch\f[R] mode) - press \f[CR]LEFT\f[R] then
\f[CR]RIGHT\f[R] to exit and re-enter the transaction screen.
.SS Error
.PP
This screen will appear if there is a problem, such as a parse error,
when you press g to reload.
Once you have fixed the problem, press g again to reload and resume
@ -510,9 +496,8 @@ normal operation.
(Or, you can press escape to cancel the reload attempt.)
.SH TIPS
.SS Watch mode
.PP
One of hledger-ui\[aq]s best features is the auto-reloading
\f[V]-w/--watch\f[R] mode.
\f[CR]-w/--watch\f[R] mode.
With this flag, it will update the display automatically whenever
changes are saved to the data files.
.PP
@ -521,11 +506,9 @@ A good workflow is to have your bank\[aq]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:
.IP
.nf
\f[C]
.EX
$ hledger-ui --watch --register checking -C
\f[R]
.fi
.EE
.PP
As you mark things cleared in the editor, you can see the effect
immediately without having to context switch.
@ -533,7 +516,7 @@ This leaves more mental bandwidth for your accounting.
Of course you can still interact with hledger-ui when needed, eg to
toggle cleared mode, or to explore the history.
.PP
There are currently some limitations with \f[V]--watch\f[R]:
There are currently some limitations with \f[CR]--watch\f[R]:
.PP
It may not work correctly for you, depending on platform or system
configuration.
@ -541,49 +524,46 @@ configuration.
.PP
At least on mac, there can be a slow build-up of CPU usage over time,
until the program is restarted (or, suspending and restarting with
\f[V]CTRL-z\f[R] \f[V]fg\f[R] may be enough).
\f[CR]CTRL-z\f[R] \f[CR]fg\f[R] may be enough).
.PP
It will not detect file changes made by certain editors, such as
Jetbrains IDEs or \f[V]gedit\f[R], or on certain less common
Jetbrains IDEs or \f[CR]gedit\f[R], or on certain less common
filesystems.
(To work around, press \f[V]g\f[R] to reload manually, or try
#1617\[aq]s \f[V]fs.inotify.max_user_watches\f[R] workaround and let us
(To work around, press \f[CR]g\f[R] to reload manually, or try
#1617\[aq]s \f[CR]fs.inotify.max_user_watches\f[R] workaround and let us
know.)
.PP
If you are viewing files mounted from another machine, the system clocks
on both machines should be roughly in agreement.
.SS Debug output
.PP
You can add \f[V]--debug[=N]\f[R] to the command line to log debug
You can add \f[CR]--debug[=N]\f[R] to the command line to log debug
output.
This will be logged to the file \f[V]hledger-ui.log\f[R] in the current
This will be logged to the file \f[CR]hledger-ui.log\f[R] in the current
directory.
N ranges from 1 (least output, the default) to 9 (maximum output).
.SH ENVIRONMENT
.PP
\f[B]COLUMNS\f[R] The screen width to use.
Default: the full terminal width.
.PP
\f[B]LEDGER_FILE\f[R] The main journal file to use when not specified
with \f[V]-f/--file\f[R].
Default: \f[V]$HOME/.hledger.journal\f[R].
with \f[CR]-f/--file\f[R].
Default: \f[CR]$HOME/.hledger.journal\f[R].
.SH BUGS
.PP
We welcome bug reports in the hledger issue tracker (shortcut:
http://bugs.hledger.org), or on the #hledger chat or hledger mail list
(https://hledger.org/support).
.PP
Some known issues:
.PP
\f[V]-f-\f[R] doesn\[aq]t work (hledger-ui can\[aq]t read from stdin).
\f[CR]-f-\f[R] doesn\[aq]t work (hledger-ui can\[aq]t read from stdin).
.PP
If you press \f[V]g\f[R] with large files, there could be a noticeable
If you press \f[CR]g\f[R] with large files, there could be a noticeable
pause.
.PP
The Transaction screen does not update from file changes until you exit
and re-endter it (see SCREENS > Transaction above).
.PP
\f[V]--watch\f[R] is not yet fully robust on all platforms (see Watch
\f[CR]--watch\f[R] is not yet fully robust on all platforms (see Watch
mode above).

View File

@ -537,4 +537,4 @@ LICENSE
SEE ALSO
hledger(1), hledger-ui(1), hledger-web(1), ledger(1)
hledger-ui-1.31.99 November 2023 HLEDGER-UI(1)
hledger-ui-1.31.99 December 2023 HLEDGER-UI(1)

View File

@ -1,2 +1,2 @@
m4_dnl Date to show in man pages. Updated by "Shake manuals"
m4_define({{_monthyear_}}, {{November 2023}})m4_dnl
m4_define({{_monthyear_}}, {{December 2023}})m4_dnl

View File

@ -1,20 +1,17 @@
.TH "HLEDGER-WEB" "1" "November 2023" "hledger-web-1.31.99 " "hledger User Manuals"
.TH "HLEDGER-WEB" "1" "December 2023" "hledger-web-1.31.99 " "hledger User Manuals"
.SH NAME
.PP
hledger-web - robust, friendly plain text accounting (Web version)
.SH SYNOPSIS
.PP
\f[V]hledger-web [--serve|--serve-api] [OPTS] [ARGS]\f[R]
\f[CR]hledger-web [--serve|--serve-api] [OPTS] [ARGS]\f[R]
.PD 0
.P
.PD
\f[V]hledger web -- [--serve|--serve-api] [OPTS] [ARGS]\f[R]
\f[CR]hledger web -- [--serve|--serve-api] [OPTS] [ARGS]\f[R]
.SH DESCRIPTION
.PP
This manual is for hledger\[aq]s web interface, version 1.31.99.
See also the hledger manual for common concepts and file formats.
.PP
@ -40,9 +37,9 @@ instance, it writes a numbered backup of the main journal file (only) on
every edit.
.PP
Like hledger, it reads from (and appends to) a journal file specified by
the \f[V]LEDGER_FILE\f[R] environment variable (defaulting to
\f[V]$HOME/.hledger.journal\f[R]); or you can specify files with
\f[V]-f\f[R] options.
the \f[CR]LEDGER_FILE\f[R] environment variable (defaulting to
\f[CR]$HOME/.hledger.journal\f[R]); or you can specify files with
\f[CR]-f\f[R] options.
It can also read timeclock files, timedot files, or any CSV/SSV/TSV file
with a date field.
(See hledger(1) -> Input for details.)
@ -54,15 +51,14 @@ show the app if possible, and the app exits automatically after two
minutes of inactivity (no requests received and no open browser windows
viewing it).
.IP \[bu] 2
With \f[V]--serve\f[R]: the app runs without stopping, and without
With \f[CR]--serve\f[R]: the app runs without stopping, and without
opening a browser.
.IP \[bu] 2
With \f[V]--serve-api\f[R]: only the JSON API is served.
With \f[CR]--serve-api\f[R]: only the JSON API is served.
.PP
In all cases hledger-web runs as a foreground process, logging requests
to stdout.
.SH OPTIONS
.PP
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
@ -70,84 +66,82 @@ in addition to any search query entered there.
.PP
hledger-web provides the following options:
.TP
\f[V]--serve\f[R]
\f[CR]--serve\f[R]
serve and log requests, don\[aq]t browse or auto-exit after timeout
.TP
\f[V]--serve-api\f[R]
\f[CR]--serve-api\f[R]
like --serve, but serve only the JSON web API, without the server-side
web UI
.TP
\f[V]--host=IPADDR\f[R]
\f[CR]--host=IPADDR\f[R]
listen on this IP address (default: 127.0.0.1)
.TP
\f[V]--port=PORT\f[R]
\f[CR]--port=PORT\f[R]
listen on this TCP port (default: 5000)
.TP
\f[V]--socket=SOCKETFILE\f[R]
\f[CR]--socket=SOCKETFILE\f[R]
use a unix domain socket file to listen for requests instead of a TCP
socket.
Implies \f[V]--serve\f[R].
Implies \f[CR]--serve\f[R].
It can only be used if the operating system can provide this type of
socket.
.TP
\f[V]--base-url=URL\f[R]
\f[CR]--base-url=URL\f[R]
set the base url (default: http://IPADDR:PORT).
Note: affects url generation but not route parsing.
Can be useful if running behind a reverse web proxy that does path
rewriting.
.TP
\f[V]--file-url=URL\f[R]
\f[CR]--file-url=URL\f[R]
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.
.TP
\f[V]--allow=view|add|edit\f[R]
\f[CR]--allow=view|add|edit\f[R]
set the user\[aq]s access level for changing data (default:
\f[V]add\f[R]).
It also accepts \f[V]sandstorm\f[R] for use on that platform (reads
permissions from the \f[V]X-Sandstorm-Permissions\f[R] request header).
\f[CR]add\f[R]).
It also accepts \f[CR]sandstorm\f[R] for use on that platform (reads
permissions from the \f[CR]X-Sandstorm-Permissions\f[R] request header).
.TP
\f[V]--test\f[R]
\f[CR]--test\f[R]
run hledger-web\[aq]s tests and exit.
hspec test runner args may follow a --, eg: hledger-web --test -- --help
.PP
By default the server listens on IP address 127.0.0.1, accessible only
to local requests.
You can use \f[V]--host\f[R] to change this, eg \f[V]--host 0.0.0.0\f[R]
to listen on all configured addresses.
You can use \f[CR]--host\f[R] to change this, eg
\f[CR]--host 0.0.0.0\f[R] to listen on all configured addresses.
.PP
Similarly, use \f[V]--port\f[R] to set a TCP port other than 5000, eg if
you are running multiple hledger-web instances.
Similarly, use \f[CR]--port\f[R] to set a TCP port other than 5000, eg
if you are running multiple hledger-web instances.
.PP
Both of these options are ignored when \f[V]--socket\f[R] is used.
In this case, it creates an \f[V]AF_UNIX\f[R] socket file at the
Both of these options are ignored when \f[CR]--socket\f[R] is used.
In this case, it creates an \f[CR]AF_UNIX\f[R] 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, \f[V]nginx\f[R] as reverse proxy can use the variable
\f[V]$remote_user\f[R] to derive a path from the username used in a HTTP
basic authentication.
The following \f[V]proxy_pass\f[R] directive allows access to all
\f[V]hledger-web\f[R] instances that created a socket in
\f[V]/tmp/hledger/\f[R]:
As an example, \f[CR]nginx\f[R] as reverse proxy can use the variable
\f[CR]$remote_user\f[R] to derive a path from the username used in a
HTTP basic authentication.
The following \f[CR]proxy_pass\f[R] directive allows access to all
\f[CR]hledger-web\f[R] instances that created a socket in
\f[CR]/tmp/hledger/\f[R]:
.IP
.nf
\f[C]
.EX
proxy_pass http://unix:/tmp/hledger/${remote_user}.socket;
\f[R]
.fi
.EE
.PP
You can use \f[V]--base-url\f[R] to change the protocol, hostname, port
You can use \f[CR]--base-url\f[R] 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 \f[V]http://HOST:PORT/\f[R] using the server\[aq]s
configured host address and TCP port (or \f[V]http://HOST\f[R] if PORT
The default is \f[CR]http://HOST:PORT/\f[R] using the server\[aq]s
configured host address and TCP port (or \f[CR]http://HOST\f[R] if PORT
is 80).
.PP
With \f[V]--file-url\f[R] you can set a different base url for static
With \f[CR]--file-url\f[R] you can set a different base url for static
files, eg for better caching or cookie-less serving on high performance
websites.
.PP
@ -155,144 +149,144 @@ hledger-web also supports many of hledger\[aq]s general options (and the
hledger manual\[aq]s command line tips also apply here):
.SS General help options
.TP
\f[V]-h --help\f[R]
\f[CR]-h --help\f[R]
show general or COMMAND help
.TP
\f[V]--man\f[R]
\f[CR]--man\f[R]
show general or COMMAND user manual with man
.TP
\f[V]--info\f[R]
\f[CR]--info\f[R]
show general or COMMAND user manual with info
.TP
\f[V]--version\f[R]
\f[CR]--version\f[R]
show general or ADDONCMD version
.TP
\f[V]--debug[=N]\f[R]
\f[CR]--debug[=N]\f[R]
show debug output (levels 1-9, default: 1)
.SS General input options
.TP
\f[V]-f FILE --file=FILE\f[R]
\f[CR]-f FILE --file=FILE\f[R]
use a different input file.
For stdin, use - (default: \f[V]$LEDGER_FILE\f[R] or
\f[V]$HOME/.hledger.journal\f[R])
For stdin, use - (default: \f[CR]$LEDGER_FILE\f[R] or
\f[CR]$HOME/.hledger.journal\f[R])
.TP
\f[V]--rules-file=RULESFILE\f[R]
\f[CR]--rules-file=RULESFILE\f[R]
Conversion rules file to use when reading CSV (default: FILE.rules)
.TP
\f[V]--separator=CHAR\f[R]
\f[CR]--separator=CHAR\f[R]
Field separator to expect when reading CSV (default: \[aq],\[aq])
.TP
\f[V]--alias=OLD=NEW\f[R]
\f[CR]--alias=OLD=NEW\f[R]
rename accounts named OLD to NEW
.TP
\f[V]--anon\f[R]
\f[CR]--anon\f[R]
anonymize accounts and payees
.TP
\f[V]--pivot FIELDNAME\f[R]
\f[CR]--pivot FIELDNAME\f[R]
use some other field or tag for the account name
.TP
\f[V]-I --ignore-assertions\f[R]
\f[CR]-I --ignore-assertions\f[R]
disable balance assertion checks (note: does not disable balance
assignments)
.TP
\f[V]-s --strict\f[R]
\f[CR]-s --strict\f[R]
do extra error checking (check that all posted accounts are declared)
.SS General reporting options
.TP
\f[V]-b --begin=DATE\f[R]
\f[CR]-b --begin=DATE\f[R]
include postings/txns on or after this date (will be adjusted to
preceding subperiod start when using a report interval)
.TP
\f[V]-e --end=DATE\f[R]
\f[CR]-e --end=DATE\f[R]
include postings/txns before this date (will be adjusted to following
subperiod end when using a report interval)
.TP
\f[V]-D --daily\f[R]
\f[CR]-D --daily\f[R]
multiperiod/multicolumn report by day
.TP
\f[V]-W --weekly\f[R]
\f[CR]-W --weekly\f[R]
multiperiod/multicolumn report by week
.TP
\f[V]-M --monthly\f[R]
\f[CR]-M --monthly\f[R]
multiperiod/multicolumn report by month
.TP
\f[V]-Q --quarterly\f[R]
\f[CR]-Q --quarterly\f[R]
multiperiod/multicolumn report by quarter
.TP
\f[V]-Y --yearly\f[R]
\f[CR]-Y --yearly\f[R]
multiperiod/multicolumn report by year
.TP
\f[V]-p --period=PERIODEXP\f[R]
\f[CR]-p --period=PERIODEXP\f[R]
set start date, end date, and/or reporting interval all at once using
period expressions syntax
.TP
\f[V]--date2\f[R]
\f[CR]--date2\f[R]
match the secondary date instead (see command help for other effects)
.TP
\f[V]--today=DATE\f[R]
\f[CR]--today=DATE\f[R]
override today\[aq]s date (affects relative smart dates, for
tests/examples)
.TP
\f[V]-U --unmarked\f[R]
\f[CR]-U --unmarked\f[R]
include only unmarked postings/txns (can combine with -P or -C)
.TP
\f[V]-P --pending\f[R]
\f[CR]-P --pending\f[R]
include only pending postings/txns
.TP
\f[V]-C --cleared\f[R]
\f[CR]-C --cleared\f[R]
include only cleared postings/txns
.TP
\f[V]-R --real\f[R]
\f[CR]-R --real\f[R]
include only non-virtual postings
.TP
\f[V]-NUM --depth=NUM\f[R]
\f[CR]-NUM --depth=NUM\f[R]
hide/aggregate accounts or postings more than NUM levels deep
.TP
\f[V]-E --empty\f[R]
\f[CR]-E --empty\f[R]
show items with zero amount, normally hidden (and vice-versa in
hledger-ui/hledger-web)
.TP
\f[V]-B --cost\f[R]
\f[CR]-B --cost\f[R]
convert amounts to their cost/selling amount at transaction time
.TP
\f[V]-V --market\f[R]
\f[CR]-V --market\f[R]
convert amounts to their market value in default valuation commodities
.TP
\f[V]-X --exchange=COMM\f[R]
\f[CR]-X --exchange=COMM\f[R]
convert amounts to their market value in commodity COMM
.TP
\f[V]--value\f[R]
\f[CR]--value\f[R]
convert amounts to cost or market value, more flexibly than -B/-V/-X
.TP
\f[V]--infer-equity\f[R]
\f[CR]--infer-equity\f[R]
infer conversion equity postings from costs
.TP
\f[V]--infer-costs\f[R]
\f[CR]--infer-costs\f[R]
infer costs from conversion equity postings
.TP
\f[V]--infer-market-prices\f[R]
\f[CR]--infer-market-prices\f[R]
use costs as additional market prices, as if they were P directives
.TP
\f[V]--forecast\f[R]
\f[CR]--forecast\f[R]
generate transactions from periodic rules,
between the latest recorded txn and 6 months from today,
or during the specified PERIOD (= is required).
Auto posting rules will be applied to these transactions as well.
Also, in hledger-ui make future-dated transactions visible.
.TP
\f[V]--auto\f[R]
\f[CR]--auto\f[R]
generate extra postings by applying auto posting rules to all txns (not
just forecast txns)
.TP
\f[V]--verbose-tags\f[R]
\f[CR]--verbose-tags\f[R]
add visible tags indicating transactions or postings which have been
generated/modified
.TP
\f[V]--commodity-style\f[R]
\f[CR]--commodity-style\f[R]
Override the commodity style in the output for the specified commodity.
For example \[aq]EUR1.000,00\[aq].
.TP
\f[V]--color=WHEN (or --colour=WHEN)\f[R]
\f[CR]--color=WHEN (or --colour=WHEN)\f[R]
Should color-supporting commands use ANSI color codes in text output.
\[aq]auto\[aq] (default): whenever stdout seems to be a color-supporting
terminal.
@ -301,7 +295,7 @@ into \[aq]less -R\[aq].
\[aq]never\[aq] or \[aq]no\[aq]: never.
A NO_COLOR environment variable overrides this.
.TP
\f[V]--pretty[=WHEN]\f[R]
\f[CR]--pretty[=WHEN]\f[R]
Show prettier output, e.g.
using unicode box-drawing characters.
Accepts \[aq]yes\[aq] (the default) or \[aq]no\[aq] (\[aq]y\[aq],
@ -314,13 +308,12 @@ last one takes precedence.
.PP
Some reporting options can also be written as query arguments.
.SH PERMISSIONS
.PP
By default, hledger-web allows anyone who can reach it to view the
journal and to add new transactions, but not to change existing data.
.PP
You can restrict who can reach it by
.IP \[bu] 2
setting the IP address it listens on (see \f[V]--host\f[R] above).
setting the IP address it listens on (see \f[CR]--host\f[R] above).
By default it listens on 127.0.0.1, accessible to all users on the local
machine.
.IP \[bu] 2
@ -330,27 +323,26 @@ custom firewall rules
.PP
You can restrict what the users who reach it can do, by
.IP \[bu] 2
using the \f[V]--capabilities=CAP[,CAP..]\f[R] flag when you start it,
using the \f[CR]--capabilities=CAP[,CAP..]\f[R] flag when you start it,
enabling one or more of the following capabilities.
The default value is \f[V]view,add\f[R]:
The default value is \f[CR]view,add\f[R]:
.RS 2
.IP \[bu] 2
\f[V]view\f[R] - allows viewing the journal file and all included files
\f[CR]view\f[R] - allows viewing the journal file and all included files
.IP \[bu] 2
\f[V]add\f[R] - allows adding new transactions to the main journal file
\f[CR]add\f[R] - allows adding new transactions to the main journal file
.IP \[bu] 2
\f[V]manage\f[R] - allows editing, uploading or downloading the main or
\f[CR]manage\f[R] - allows editing, uploading or downloading the main or
included files
.RE
.IP \[bu] 2
using the \f[V]--capabilities-header=HTTPHEADER\f[R] flag to specify a
using the \f[CR]--capabilities-header=HTTPHEADER\f[R] 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\[aq]s permissions.
This is disabled by default.
.SH EDITING, UPLOADING, DOWNLOADING
.PP
If you enable the \f[V]manage\f[R] capability mentioned above,
If you enable the \f[CR]manage\f[R] capability mentioned above,
you\[aq]ll see a new \[dq]spanner\[dq] button to the right of the search
form.
Clicking this will let you edit, upload, or download the journal file or
@ -371,7 +363,6 @@ Changes which would leave the journal file(s) unparseable or non-valid
(Probably.
This needs re-testing.)
.SH RELOADING
.PP
hledger-web detects changes made to the files by other means (eg if you
edit it directly, outside of hledger-web), and it will show the new data
when you reload the page or navigate to a new page.
@ -381,24 +372,20 @@ message until the file has been fixed.
(Note: if you are viewing files mounted from another machine, make sure
that both machine clocks are roughly in step.)
.SH JSON API
.PP
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 \f[V]--serve-api\f[R]
If you want the JSON API only, you can use the \f[CR]--serve-api\f[R]
flag.
Eg:
.IP
.nf
\f[C]
.EX
$ hledger-web -f examples/sample.journal --serve-api
\&...
\f[R]
.fi
.EE
.PP
You can get JSON data from these routes:
.IP
.nf
\f[C]
.EX
/version
/accountnames
/transactions
@ -406,15 +393,13 @@ You can get JSON data from these routes:
/commodities
/accounts
/accounttransactions/ACCOUNTNAME
\f[R]
.fi
.EE
.PP
Eg, all account names in the journal (similar to the accounts command).
(hledger-web\[aq]s JSON does not include newlines, here we use python to
prettify it):
.IP
.nf
\f[C]
.EX
$ curl -s http://127.0.0.1:5000/accountnames | python -m json.tool
[
\[dq]assets\[dq],
@ -431,13 +416,11 @@ $ curl -s http://127.0.0.1:5000/accountnames | python -m json.tool
\[dq]liabilities\[dq],
\[dq]liabilities:debts\[dq]
]
\f[R]
.fi
.EE
.PP
Or all transactions:
.IP
.nf
\f[C]
.EX
$ curl -s http://127.0.0.1:5000/transactions | python -m json.tool
[
{
@ -456,8 +439,7 @@ $ curl -s http://127.0.0.1:5000/transactions | python -m json.tool
\[dq]aismultiplier\[dq]: false,
\[dq]aprice\[dq]: null,
\&...
\f[R]
.fi
.EE
.PP
Most of the JSON corresponds to hledger\[aq]s data types; for details of
what the fields mean, see the Hledger.Data.Json haddock docs and click
@ -468,34 +450,31 @@ In some cases there is outer JSON corresponding to a \[dq]Report\[dq]
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 \f[V]/accounttransactions\f[R] it\[aq]s getAccounttransactionsR,
returning a \[dq]\f[V]accountTransactionsReport ...\f[R]\[dq].
Eg for \f[CR]/accounttransactions\f[R] it\[aq]s getAccounttransactionsR,
returning a \[dq]\f[CR]accountTransactionsReport ...\f[R]\[dq].
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).
.PP
You can add a new transaction to the journal with a PUT request to
\f[V]/add\f[R], if hledger-web was started with the \f[V]add\f[R]
\f[CR]/add\f[R], if hledger-web was started with the \f[CR]add\f[R]
capability (enabled by default).
The payload must be the full, exact JSON representation of a hledger
transaction (partial data won\[aq]t do).
You can get sample JSON from hledger-web\[aq]s \f[V]/transactions\f[R]
or \f[V]/accounttransactions\f[R], or you can export it with
You can get sample JSON from hledger-web\[aq]s \f[CR]/transactions\f[R]
or \f[CR]/accounttransactions\f[R], or you can export it with
hledger-lib, eg like so:
.IP
.nf
\f[C]
.EX
\&.../hledger$ stack ghci hledger-lib
>>> writeJsonFile \[dq]txn.json\[dq] (head $ jtxns samplejournal)
>>> :q
\f[R]
.fi
.EE
.PP
Here\[aq]s how it looks as of hledger-1.17 (remember, this JSON
corresponds to hledger\[aq]s Transaction and related data types):
.IP
.nf
\f[C]
.EX
{
\[dq]tcomment\[dq]: \[dq]\[dq],
\[dq]tpostings\[dq]: [
@ -581,21 +560,17 @@ corresponds to hledger\[aq]s Transaction and related data types):
\[dq]tdescription\[dq]: \[dq]income\[dq],
\[dq]tstatus\[dq]: \[dq]Unmarked\[dq]
}
\f[R]
.fi
.EE
.PP
And here\[aq]s how to test adding it with curl.
This should add a new entry to your journal:
.IP
.nf
\f[C]
.EX
$ curl http://127.0.0.1:5000/add -X PUT -H \[aq]Content-Type: application/json\[aq] --data-binary \[at]txn.json
\f[R]
.fi
.EE
.SH DEBUG OUTPUT
.SS Debug output
.PP
You can add \f[V]--debug[=N]\f[R] to the command line to log debug
You can add \f[CR]--debug[=N]\f[R] to the command line to log debug
output.
N ranges from 1 (least output, the default) to 9 (maximum output).
Typically you would start with 1 and increase until you are seeing
@ -607,14 +582,12 @@ stderr, eg:
.PD 0
.P
.PD
\f[V]hledger-web --debug=3 2>hledger-web.log\f[R].
\f[CR]hledger-web --debug=3 2>hledger-web.log\f[R].
.SH ENVIRONMENT
.PP
\f[B]LEDGER_FILE\f[R] The main journal file to use when not specified
with \f[V]-f/--file\f[R].
Default: \f[V]$HOME/.hledger.journal\f[R].
with \f[CR]-f/--file\f[R].
Default: \f[CR]$HOME/.hledger.journal\f[R].
.SH BUGS
.PP
We welcome bug reports in the hledger issue tracker (shortcut:
http://bugs.hledger.org), or on the #hledger chat or hledger mail list
(https://hledger.org/support).

View File

@ -564,4 +564,4 @@ LICENSE
SEE ALSO
hledger(1), hledger-ui(1), hledger-web(1), ledger(1)
hledger-web-1.31.99 November 2023 HLEDGER-WEB(1)
hledger-web-1.31.99 December 2023 HLEDGER-WEB(1)

View File

@ -1,2 +1,2 @@
m4_dnl Date to show in man pages. Updated by "Shake manuals"
m4_define({{_monthyear_}}, {{November 2023}})m4_dnl
m4_define({{_monthyear_}}, {{December 2023}})m4_dnl

File diff suppressed because it is too large Load Diff

View File

@ -5138,24 +5138,18 @@ File: hledger.info, Node: Timedot, Next: PART 3 REPORTING CONCEPTS, Prev: Tim
**********
'timedot' format is hledger's human-friendly time logging format.
Compared to 'timeclock' format, it is
* convenient for quick, approximate, and retroactive time logging
* readable: you can see at a glance where time was spent.
A timedot file contains a series of day entries, which might look
like this:
Compared to 'timeclock' format, it is more convenient for quick,
approximate, and retroactive time logging, and more human-readable (you
can see at a glance where time was spent). A quick example:
2023-05-01
hom:errands .... .... ; two hours
hom:errands .... .... ; two hours; the space is ignored
fos:hledger:timedot .. ; half an hour
per:admin:finance
per:admin:finance ; no time spent yet
hledger reads this as a transaction on this day with three
(unbalanced) postings, where each dot represents "0.25". No commodity
is assumed, but normally we interpret it as hours, with each dot
representing a quarter-hour. It's convenient, though not required, to
group the dots in fours for easy reading.
symbol is assumed, but we typically interpret it as hours.
$ hledger -f a.timedot print # .timedot file extension (or timedot: prefix) is required
2023-05-01 *
@ -5163,55 +5157,75 @@ $ hledger -f a.timedot print # .timedot file extension (or timedot: prefix) is
(fos:hledger:timedot) 0.50 ; half an hour
(per:admin:finance) 0
A transaction begins with a non-indented *simple date* (Y-M-D, Y/M/D,
or Y.M.D). It can optionally be preceded by one or more stars and a
space, for Emacs org mode compatibility. It can optionally be followed
on the same line by a transaction description, and/or a transaction
comment following a semicolon.
A timedot file contains a series of transactions (usually one per
day). Each begins with a *simple date* (Y-M-D, Y/M/D, or Y.M.D),
optionally be followed on the same line by a transaction description,
and/or a transaction comment following a semicolon.
After the date line are zero or more time postings, consisting of:
* an *account name* - any hledger-style account name, optionally
hierarchical, optionally indented.
* *two or more spaces* - a field separator, required if there is an
amount (as in journal format).
* an optional *timedot amount* - dots representing quarter hours, or
a number representing hours, optionally with a unit suffix.
* an optional *posting comment* following a semicolon.
* *An account name* - any hledger-style account name, optionally
indented.
Timedot amounts can be:
* *Two or more spaces* - required if there is an amount (as in
journal format).
* *dots*: zero or more period characters ('.'), each representing
0.25. Spaces are ignored and can be used for grouping. Eg: '....
..'
* *A timedot amount*, which can be
* or a *number*. Eg: '1.5'
* empty (representing zero)
* or a *number immediately followed by a unit symbol* 's', 'm', 'h',
'd', 'w', 'mo', or 'y'. These are interpreted as seconds, minutes,
hours, days weeks, months or years, and converted to hours,
assuming:
'60s' = '1m', '60m' = '1h', '24h' = '1d', '7d' = '1w', '30d' =
'1mo', '365d' = '1y'. Eg '90m' is parsed as '1.5'.
* a number, optionally followed by a unit 's', 'm', 'h', 'd',
'w', 'mo', or 'y', representing a precise number of seconds,
minutes, hours, days weeks, months or years (hours is assumed
by default), which will be converted to hours according to 60s
= 1m, 60m = 1h, 24h = 1d, 7d = 1w, 30d = 1mo, 365d = 1y.
There is some added flexibility to help with keeping time log data in
the same file as your notes, todo lists, etc.:
* one or more dots (period characters), each representing 0.25.
These are the dots in "timedot". Spaces are ignored and can
be used for grouping/alignment.
* one or more letters. These are like dots but they also
generate a tag 't:' (short for "type") with the letter as its
value, and a separate posting for each of the values. This
provides a second dimension of categorisation, viewable in
reports with '--pivot t'.
* *An optional comment* following a semicolon (a hledger-style
posting comment).
There is some flexibility to help with keeping time log data and
notes in the same file:
* Blank lines and lines beginning with '#' or ';' are ignored.
* Before the first date line, lines beginning with '*' are ignored.
* After the first date line, lines which do not contain a double
space are parsed as postings with zero amount. (hledger's register
reports will show these if you add -E).
* From the first date line onward, one or more '*''s followed by a
space at beginning of lines (ie, the headline prefix used by Emacs
Org mode) is ignored. This means the time log can be kept under an
Org headline, and date lines or time transaction lines can be Org
headlines.
* Before the first date line, lines beginning with '*' (eg org
headings) are ignored. And from the first date line onward, Emacs
org mode heading prefixes at the start of lines (one or more '*''s
followed by a space) will be ignored. This means the time log can
also be a org outline.
* Lines not ending with a double-space and amount are parsed as
postings with zero amount. Note hledger's register reports hide
these by default (add -E to see them).
* Menu:
More examples:
* Timedot examples::

File: hledger.info, Node: Timedot examples, Up: Timedot
12.1 Timedot examples
=====================
Numbers:
2016/2/3
inc:client1 4
fos:hledger 3h
biz:research 60m
Dots:
# on this day, 6h was spent on client work, 1.5h on haskell FOSS work, etc.
2016/2/1
@ -5223,34 +5237,6 @@ biz:research .
inc:client1 .... ....
biz:research .
2016/2/3
inc:client1 4
fos:hledger 3
biz:research 1
* Time log
** 2023-01-01
*** adm:time .
*** adm:finance .
* 2023 Work Diary
** Q1
*** 2023-02-29
**** DONE
0700 yoga
**** UNPLANNED
**** BEGUN
hom:chores
cleaning ...
water plants
outdoor - one full watering can
indoor - light watering
**** TODO
adm:planning: trip
*** LATER
Reporting:
$ hledger -f a.timedot print date:2016/2/2
2016-02-02 *
(inc:client1) 2.00
@ -5273,21 +5259,66 @@ Balance changes in 2016-02-01-2016-02-03:
------------++----------------------------------------
|| 7.75 2.25 8.00
Using period instead of colon as account name separator:
Letters:
# Activity types:
# c cleanup/catchup/repair
# e enhancement
# s support
# l learning/research
2023-11-01
work:adm ccecces
$ hledger -f a.timedot print
2023-11-01
(work:adm) 1 ; t:c
(work:adm) 0.5 ; t:e
(work:adm) 0.25 ; t:s
$ hledger -f a.timedot bal
1.75 work:adm
--------------------
1.75
$ hledger -f a.timedot bal --pivot t
1.00 c
0.50 e
0.25 s
--------------------
1.75
Org:
* 2023 Work Diary
** Q1
*** 2023-02-29
**** DONE
0700 yoga
**** UNPLANNED
**** BEGUN
hom:chores
cleaning ...
water plants
outdoor - one full watering can
indoor - light watering
**** TODO
adm:planning: trip
*** LATER
Using '.' as account name separator:
2016/2/4
fos.hledger.timedot 4
fos.hledger.timedot 4h
fos.ledger ..
$ hledger -f a.timedot --alias /\\./=: bal --tree
$ hledger -f a.timedot --alias '/\./=:' bal -t
4.50 fos
4.00 hledger:timedot
0.50 ledger
--------------------
4.50
A sample.timedot file.

File: hledger.info, Node: PART 3 REPORTING CONCEPTS, Next: Amount formatting parseability, Prev: Timedot, Up: Top
@ -5301,9 +5332,33 @@ File: hledger.info, Node: Amount formatting parseability, Next: Time periods,
**********************************
If you're wondering why your 'print' report sometimes shows trailing
decimal marks, even when there are no decimal digits; it does this to
disambiguate ambiguous amounts (amounts which have one digit group mark
and no decimal digits), allowing them to be re-parsed reliably.
decimal marks, with no decimal digits; it does this when showing amounts
that have digit group marks but no decimal digits, to disambiguate them
and allow them to be re-parsed reliably (see also Decimal marks, digit
group marks. Eg:
commodity $1,000.00
2023-01-02
(a) $1000
$ hledger print
2023-01-02
(a) $1,000.
If this is a problem (eg when exporting to Ledger), you can avoid it
by disabling digit group marks, eg with -c/-commodity (for each affected
commodity):
$ hledger print -c '$1000.00'
2023-01-02
(a) $1000
or by forcing print to always show decimal digits, with -round:
$ hledger print -c '$1,000.00' --round=soft
2023-01-02
(a) $1,000.00
More generally: hledger output falls into three rough categories,
which format amounts a little bit differently to suit different
@ -9614,20 +9669,31 @@ options The output formats supported are 'txt', 'beancount', 'csv',
'tsv', 'json' and 'sql'.
_Experimental:_ The 'beancount' format tries to produce
Beancount-compatible output. It is very basic and may require
additional manual fixups:
Beancount-compatible output, as follows:
* Transaction and postings with unmarked status are converted to
cleared ('*") status.
* Transactions' payee and or note are wrapped in double quotes.
cleared ('*') status.
* Transactions' payee and note are backslash-escaped and
double-quote-escaped and wrapped in double quotes.
* Transaction tags are copied to Beancount #tag format.
* Account name parts are capitalised, and if the first account name
part is not one of Assets, Liabilities, Equity, Income, or
Expenses, "Equity:" is prepended.
* The '$' commodity symbol is converted to 'USD'.
* Commodity symbols are converted to upper case, and a small number
of currency symbols like '$' are converted to the corresponding
currency names.
* Account name parts are capitalised and unsupported characters are
replaced with '-'. If an account name part does not begin with a
letter, or if the first part is not Assets, Liabilities, Equity,
Income, or Expenses, an error is raised. (Use '--alias' options to
bring your accounts into compliance.)
* An 'open' directive is generated for each account used, on the
earliest transaction date.
Some limitations:
* Balance assertions are removed.
* Balance assignments become missing amounts.
* Virtual and balanced virtual postings become regular postings.
* Directives are not converted.
Here's an example of print's CSV output:
$ hledger print -Ocsv
@ -11140,306 +11206,308 @@ Node: Timeclock182398
Ref: #timeclock182503
Node: Timedot184681
Ref: #timedot184804
Node: PART 3 REPORTING CONCEPTS189673
Ref: #part-3-reporting-concepts189855
Node: Amount formatting parseability189855
Ref: #amount-formatting-parseability190052
Node: Time periods191756
Ref: #time-periods191895
Node: Report start & end date192013
Ref: #report-start-end-date192165
Node: Smart dates193824
Ref: #smart-dates193977
Node: Report intervals195845
Ref: #report-intervals196000
Node: Date adjustment196418
Ref: #date-adjustment196578
Node: Period expressions197429
Ref: #period-expressions197570
Node: Period expressions with a report interval199334
Ref: #period-expressions-with-a-report-interval199568
Node: More complex report intervals199782
Ref: #more-complex-report-intervals200027
Node: Multiple weekday intervals201828
Ref: #multiple-weekday-intervals202017
Node: Depth202839
Ref: #depth202941
Node: Queries203237
Ref: #queries203339
Node: Query types204464
Ref: #query-types204585
Node: Combining query terms207921
Ref: #combining-query-terms208098
Node: Queries and command options209366
Ref: #queries-and-command-options209565
Node: Queries and valuation209814
Ref: #queries-and-valuation210009
Node: Querying with account aliases210238
Ref: #querying-with-account-aliases210449
Node: Querying with cost or value210579
Ref: #querying-with-cost-or-value210756
Node: Pivoting211057
Ref: #pivoting211171
Node: Generating data212948
Ref: #generating-data213080
Node: Forecasting214663
Ref: #forecasting214788
Node: --forecast215319
Ref: #forecast215450
Node: Inspecting forecast transactions216496
Ref: #inspecting-forecast-transactions216698
Node: Forecast reports217828
Ref: #forecast-reports218001
Node: Forecast tags218937
Ref: #forecast-tags219097
Node: Forecast period in detail219557
Ref: #forecast-period-in-detail219751
Node: Forecast troubleshooting220645
Ref: #forecast-troubleshooting220813
Node: Budgeting221716
Ref: #budgeting221836
Node: Cost reporting222273
Ref: #cost-reporting222407
Node: Recording costs223068
Ref: #recording-costs223204
Node: Reporting at cost224795
Ref: #reporting-at-cost224970
Node: Equity conversion postings225560
Ref: #equity-conversion-postings225774
Node: Inferring equity conversion postings228205
Ref: #inferring-equity-conversion-postings228468
Node: Combining costs and equity conversion postings229220
Ref: #combining-costs-and-equity-conversion-postings229530
Node: Requirements for detecting equity conversion postings230518
Ref: #requirements-for-detecting-equity-conversion-postings230840
Node: Infer cost and equity by default ?232040
Ref: #infer-cost-and-equity-by-default232269
Node: Value reporting232477
Ref: #value-reporting232619
Node: -V Value233393
Ref: #v-value233525
Node: -X Value in specified commodity233720
Ref: #x-value-in-specified-commodity233921
Node: Valuation date234070
Ref: #valuation-date234247
Node: Finding market price235030
Ref: #finding-market-price235241
Node: --infer-market-prices market prices from transactions236410
Ref: #infer-market-prices-market-prices-from-transactions236692
Node: Valuation commodity239454
Ref: #valuation-commodity239673
Node: Simple valuation examples240886
Ref: #simple-valuation-examples241090
Node: --value Flexible valuation241749
Ref: #value-flexible-valuation241959
Node: More valuation examples243603
Ref: #more-valuation-examples243818
Node: Interaction of valuation and queries245088
Ref: #interaction-of-valuation-and-queries245335
Node: Effect of valuation on reports245807
Ref: #effect-of-valuation-on-reports246010
Node: PART 4 COMMANDS253707
Ref: #part-4-commands253856
Node: Commands overview254235
Ref: #commands-overview254369
Node: DATA ENTRY254548
Ref: #data-entry254672
Node: DATA CREATION254871
Ref: #data-creation255025
Node: DATA MANAGEMENT255143
Ref: #data-management255308
Node: REPORTS FINANCIAL255429
Ref: #reports-financial255604
Node: REPORTS VERSATILE255909
Ref: #reports-versatile256082
Node: REPORTS BASIC256335
Ref: #reports-basic256487
Node: HELP256996
Ref: #help257118
Node: ADD-ONS257228
Ref: #add-ons257334
Node: accounts257913
Ref: #accounts258046
Node: activity259933
Ref: #activity260052
Node: add260426
Ref: #add260536
Node: aregister263347
Ref: #aregister263468
Node: aregister and posting dates266356
Ref: #aregister-and-posting-dates266501
Node: balance267257
Ref: #balance267383
Node: balance features268368
Ref: #balance-features268508
Node: Simple balance report270474
Ref: #simple-balance-report270659
Node: Balance report line format272284
Ref: #balance-report-line-format272486
Node: Filtered balance report274644
Ref: #filtered-balance-report274836
Node: List or tree mode275163
Ref: #list-or-tree-mode275331
Node: Depth limiting276676
Ref: #depth-limiting276842
Node: Dropping top-level accounts277443
Ref: #dropping-top-level-accounts277643
Node: Showing declared accounts277953
Ref: #showing-declared-accounts278152
Node: Sorting by amount278683
Ref: #sorting-by-amount278850
Node: Percentages279520
Ref: #percentages279679
Node: Multi-period balance report280227
Ref: #multi-period-balance-report280427
Node: Balance change end balance282702
Ref: #balance-change-end-balance282911
Node: Balance report types284339
Ref: #balance-report-types284520
Node: Calculation type285018
Ref: #calculation-type285173
Node: Accumulation type285722
Ref: #accumulation-type285902
Node: Valuation type286804
Ref: #valuation-type286992
Node: Combining balance report types287993
Ref: #combining-balance-report-types288187
Node: Budget report290025
Ref: #budget-report290187
Node: Budget report start date295841
Ref: #budget-report-start-date296019
Node: Budgets and subaccounts297351
Ref: #budgets-and-subaccounts297558
Node: Selecting budget goals300998
Ref: #selecting-budget-goals301197
Node: Budget vs forecast302232
Ref: #budget-vs-forecast302391
Node: Balance report layout304021
Ref: #balance-report-layout304201
Node: Useful balance reports312386
Ref: #useful-balance-reports312546
Node: balancesheet313631
Ref: #balancesheet313776
Node: balancesheetequity315103
Ref: #balancesheetequity315261
Node: cashflow316657
Ref: #cashflow316788
Node: check318223
Ref: #check318337
Node: Default checks319141
Ref: #default-checks319267
Node: Strict checks319764
Ref: #strict-checks319909
Node: Other checks320389
Ref: #other-checks320531
Node: Custom checks321064
Ref: #custom-checks321221
Node: More about specific checks321638
Ref: #more-about-specific-checks321800
Node: close322506
Ref: #close322617
Node: close and balance assertions326082
Ref: #close-and-balance-assertions326260
Node: Example retain earnings327411
Ref: #example-retain-earnings327628
Node: Example migrate balances to a new file328060
Ref: #example-migrate-balances-to-a-new-file328325
Node: Example excluding closing/opening transactions328901
Ref: #example-excluding-closingopening-transactions329150
Node: codes330368
Ref: #codes330485
Node: commodities331349
Ref: #commodities331477
Node: demo331547
Ref: #demo331668
Node: descriptions332584
Ref: #descriptions332714
Node: diff333005
Ref: #diff333120
Node: files334162
Ref: #files334271
Node: help334412
Ref: #help-1334521
Node: import335894
Ref: #import336017
Node: Deduplication337125
Ref: #deduplication337250
Node: Import testing339269
Ref: #import-testing339434
Node: Importing balance assignments340277
Ref: #importing-balance-assignments340483
Node: Commodity display styles341132
Ref: #commodity-display-styles341305
Node: incomestatement341434
Ref: #incomestatement341576
Node: notes342904
Ref: #notes343026
Node: payees343388
Ref: #payees343503
Node: prices344022
Ref: #prices344137
Node: print344790
Ref: #print344905
Node: print explicitness345881
Ref: #print-explicitness346024
Node: print amount style346803
Ref: #print-amount-style346973
Node: print parseability348025
Ref: #print-parseability348197
Node: print other features348946
Ref: #print-other-features349125
Node: print output format349646
Ref: #print-output-format349794
Node: register352438
Ref: #register352560
Node: Custom register output357591
Ref: #custom-register-output357722
Node: rewrite359066
Ref: #rewrite359184
Node: Re-write rules in a file361082
Ref: #re-write-rules-in-a-file361245
Node: Diff output format362394
Ref: #diff-output-format362577
Node: rewrite vs print --auto363669
Ref: #rewrite-vs.-print---auto363829
Node: roi364385
Ref: #roi364492
Node: Spaces and special characters in --inv and --pnl366304
Ref: #spaces-and-special-characters-in---inv-and---pnl366544
Node: Semantics of --inv and --pnl367032
Ref: #semantics-of---inv-and---pnl367271
Node: IRR and TWR explained369121
Ref: #irr-and-twr-explained369281
Node: stats372534
Ref: #stats372642
Node: tags374029
Ref: #tags-1374136
Node: test375145
Ref: #test375238
Node: PART 5 COMMON TASKS375980
Ref: #part-5-common-tasks376126
Node: Getting help376424
Ref: #getting-help376565
Node: Constructing command lines377325
Ref: #constructing-command-lines377526
Node: Starting a journal file378183
Ref: #starting-a-journal-file378385
Node: Setting LEDGER_FILE379587
Ref: #setting-ledger_file379779
Node: Setting opening balances380736
Ref: #setting-opening-balances380937
Node: Recording transactions384078
Ref: #recording-transactions384267
Node: Reconciling384823
Ref: #reconciling384975
Node: Reporting387232
Ref: #reporting387381
Node: Migrating to a new file391366
Ref: #migrating-to-a-new-file391523
Node: BUGS391822
Ref: #bugs391912
Node: Troubleshooting392791
Ref: #troubleshooting392891
Node: Timedot examples187909
Ref: #timedot-examples188015
Node: PART 3 REPORTING CONCEPTS190186
Ref: #part-3-reporting-concepts190368
Node: Amount formatting parseability190368
Ref: #amount-formatting-parseability190565
Node: Time periods192770
Ref: #time-periods192909
Node: Report start & end date193027
Ref: #report-start-end-date193179
Node: Smart dates194838
Ref: #smart-dates194991
Node: Report intervals196859
Ref: #report-intervals197014
Node: Date adjustment197432
Ref: #date-adjustment197592
Node: Period expressions198443
Ref: #period-expressions198584
Node: Period expressions with a report interval200348
Ref: #period-expressions-with-a-report-interval200582
Node: More complex report intervals200796
Ref: #more-complex-report-intervals201041
Node: Multiple weekday intervals202842
Ref: #multiple-weekday-intervals203031
Node: Depth203853
Ref: #depth203955
Node: Queries204251
Ref: #queries204353
Node: Query types205478
Ref: #query-types205599
Node: Combining query terms208935
Ref: #combining-query-terms209112
Node: Queries and command options210380
Ref: #queries-and-command-options210579
Node: Queries and valuation210828
Ref: #queries-and-valuation211023
Node: Querying with account aliases211252
Ref: #querying-with-account-aliases211463
Node: Querying with cost or value211593
Ref: #querying-with-cost-or-value211770
Node: Pivoting212071
Ref: #pivoting212185
Node: Generating data213962
Ref: #generating-data214094
Node: Forecasting215677
Ref: #forecasting215802
Node: --forecast216333
Ref: #forecast216464
Node: Inspecting forecast transactions217510
Ref: #inspecting-forecast-transactions217712
Node: Forecast reports218842
Ref: #forecast-reports219015
Node: Forecast tags219951
Ref: #forecast-tags220111
Node: Forecast period in detail220571
Ref: #forecast-period-in-detail220765
Node: Forecast troubleshooting221659
Ref: #forecast-troubleshooting221827
Node: Budgeting222730
Ref: #budgeting222850
Node: Cost reporting223287
Ref: #cost-reporting223421
Node: Recording costs224082
Ref: #recording-costs224218
Node: Reporting at cost225809
Ref: #reporting-at-cost225984
Node: Equity conversion postings226574
Ref: #equity-conversion-postings226788
Node: Inferring equity conversion postings229219
Ref: #inferring-equity-conversion-postings229482
Node: Combining costs and equity conversion postings230234
Ref: #combining-costs-and-equity-conversion-postings230544
Node: Requirements for detecting equity conversion postings231532
Ref: #requirements-for-detecting-equity-conversion-postings231854
Node: Infer cost and equity by default ?233054
Ref: #infer-cost-and-equity-by-default233283
Node: Value reporting233491
Ref: #value-reporting233633
Node: -V Value234407
Ref: #v-value234539
Node: -X Value in specified commodity234734
Ref: #x-value-in-specified-commodity234935
Node: Valuation date235084
Ref: #valuation-date235261
Node: Finding market price236044
Ref: #finding-market-price236255
Node: --infer-market-prices market prices from transactions237424
Ref: #infer-market-prices-market-prices-from-transactions237706
Node: Valuation commodity240468
Ref: #valuation-commodity240687
Node: Simple valuation examples241900
Ref: #simple-valuation-examples242104
Node: --value Flexible valuation242763
Ref: #value-flexible-valuation242973
Node: More valuation examples244617
Ref: #more-valuation-examples244832
Node: Interaction of valuation and queries246102
Ref: #interaction-of-valuation-and-queries246349
Node: Effect of valuation on reports246821
Ref: #effect-of-valuation-on-reports247024
Node: PART 4 COMMANDS254721
Ref: #part-4-commands254870
Node: Commands overview255249
Ref: #commands-overview255383
Node: DATA ENTRY255562
Ref: #data-entry255686
Node: DATA CREATION255885
Ref: #data-creation256039
Node: DATA MANAGEMENT256157
Ref: #data-management256322
Node: REPORTS FINANCIAL256443
Ref: #reports-financial256618
Node: REPORTS VERSATILE256923
Ref: #reports-versatile257096
Node: REPORTS BASIC257349
Ref: #reports-basic257501
Node: HELP258010
Ref: #help258132
Node: ADD-ONS258242
Ref: #add-ons258348
Node: accounts258927
Ref: #accounts259060
Node: activity260947
Ref: #activity261066
Node: add261440
Ref: #add261550
Node: aregister264361
Ref: #aregister264482
Node: aregister and posting dates267370
Ref: #aregister-and-posting-dates267515
Node: balance268271
Ref: #balance268397
Node: balance features269382
Ref: #balance-features269522
Node: Simple balance report271488
Ref: #simple-balance-report271673
Node: Balance report line format273298
Ref: #balance-report-line-format273500
Node: Filtered balance report275658
Ref: #filtered-balance-report275850
Node: List or tree mode276177
Ref: #list-or-tree-mode276345
Node: Depth limiting277690
Ref: #depth-limiting277856
Node: Dropping top-level accounts278457
Ref: #dropping-top-level-accounts278657
Node: Showing declared accounts278967
Ref: #showing-declared-accounts279166
Node: Sorting by amount279697
Ref: #sorting-by-amount279864
Node: Percentages280534
Ref: #percentages280693
Node: Multi-period balance report281241
Ref: #multi-period-balance-report281441
Node: Balance change end balance283716
Ref: #balance-change-end-balance283925
Node: Balance report types285353
Ref: #balance-report-types285534
Node: Calculation type286032
Ref: #calculation-type286187
Node: Accumulation type286736
Ref: #accumulation-type286916
Node: Valuation type287818
Ref: #valuation-type288006
Node: Combining balance report types289007
Ref: #combining-balance-report-types289201
Node: Budget report291039
Ref: #budget-report291201
Node: Budget report start date296855
Ref: #budget-report-start-date297033
Node: Budgets and subaccounts298365
Ref: #budgets-and-subaccounts298572
Node: Selecting budget goals302012
Ref: #selecting-budget-goals302211
Node: Budget vs forecast303246
Ref: #budget-vs-forecast303405
Node: Balance report layout305035
Ref: #balance-report-layout305215
Node: Useful balance reports313400
Ref: #useful-balance-reports313560
Node: balancesheet314645
Ref: #balancesheet314790
Node: balancesheetequity316117
Ref: #balancesheetequity316275
Node: cashflow317671
Ref: #cashflow317802
Node: check319237
Ref: #check319351
Node: Default checks320155
Ref: #default-checks320281
Node: Strict checks320778
Ref: #strict-checks320923
Node: Other checks321403
Ref: #other-checks321545
Node: Custom checks322078
Ref: #custom-checks322235
Node: More about specific checks322652
Ref: #more-about-specific-checks322814
Node: close323520
Ref: #close323631
Node: close and balance assertions327096
Ref: #close-and-balance-assertions327274
Node: Example retain earnings328425
Ref: #example-retain-earnings328642
Node: Example migrate balances to a new file329074
Ref: #example-migrate-balances-to-a-new-file329339
Node: Example excluding closing/opening transactions329915
Ref: #example-excluding-closingopening-transactions330164
Node: codes331382
Ref: #codes331499
Node: commodities332363
Ref: #commodities332491
Node: demo332561
Ref: #demo332682
Node: descriptions333598
Ref: #descriptions333728
Node: diff334019
Ref: #diff334134
Node: files335176
Ref: #files335285
Node: help335426
Ref: #help-1335535
Node: import336908
Ref: #import337031
Node: Deduplication338139
Ref: #deduplication338264
Node: Import testing340283
Ref: #import-testing340448
Node: Importing balance assignments341291
Ref: #importing-balance-assignments341497
Node: Commodity display styles342146
Ref: #commodity-display-styles342319
Node: incomestatement342448
Ref: #incomestatement342590
Node: notes343918
Ref: #notes344040
Node: payees344402
Ref: #payees344517
Node: prices345036
Ref: #prices345151
Node: print345804
Ref: #print345919
Node: print explicitness346895
Ref: #print-explicitness347038
Node: print amount style347817
Ref: #print-amount-style347987
Node: print parseability349039
Ref: #print-parseability349211
Node: print other features349960
Ref: #print-other-features350139
Node: print output format350660
Ref: #print-output-format350808
Node: register353927
Ref: #register354049
Node: Custom register output359080
Ref: #custom-register-output359211
Node: rewrite360555
Ref: #rewrite360673
Node: Re-write rules in a file362571
Ref: #re-write-rules-in-a-file362734
Node: Diff output format363883
Ref: #diff-output-format364066
Node: rewrite vs print --auto365158
Ref: #rewrite-vs.-print---auto365318
Node: roi365874
Ref: #roi365981
Node: Spaces and special characters in --inv and --pnl367793
Ref: #spaces-and-special-characters-in---inv-and---pnl368033
Node: Semantics of --inv and --pnl368521
Ref: #semantics-of---inv-and---pnl368760
Node: IRR and TWR explained370610
Ref: #irr-and-twr-explained370770
Node: stats374023
Ref: #stats374131
Node: tags375518
Ref: #tags-1375625
Node: test376634
Ref: #test376727
Node: PART 5 COMMON TASKS377469
Ref: #part-5-common-tasks377615
Node: Getting help377913
Ref: #getting-help378054
Node: Constructing command lines378814
Ref: #constructing-command-lines379015
Node: Starting a journal file379672
Ref: #starting-a-journal-file379874
Node: Setting LEDGER_FILE381076
Ref: #setting-ledger_file381268
Node: Setting opening balances382225
Ref: #setting-opening-balances382426
Node: Recording transactions385567
Ref: #recording-transactions385756
Node: Reconciling386312
Ref: #reconciling386464
Node: Reporting388721
Ref: #reporting388870
Node: Migrating to a new file392855
Ref: #migrating-to-a-new-file393012
Node: BUGS393311
Ref: #bugs393401
Node: Troubleshooting394280
Ref: #troubleshooting394380

End Tag Table

File diff suppressed because it is too large Load Diff