;doc: regen manuals (on server)

Usually done on my laptop, but the toolchain on both machines should
produce the same result these days..

[ci skip]
This commit is contained in:
Simon Michael 2019-09-09 08:02:49 -07:00
parent fb521e248b
commit 85d48a6b0e
10 changed files with 719 additions and 592 deletions

View File

@ -24,9 +24,9 @@ DESCRIPTION
When reading a CSV file named FILE.csv, hledger looks for a conversion When reading a CSV file named FILE.csv, hledger looks for a conversion
rules file named FILE.csv.rules in the same directory. You can over- rules file named FILE.csv.rules in the same directory. You can over-
ride this with the --rules-file option. If the rules file does not ex- ride this with the --rules-file option. If the rules file does not
ist, hledger will auto-create one with some example rules, which you'll exist, hledger will auto-create one with some example rules, which
need to adjust. you'll need to adjust.
At minimum, the rules file must identify the date and amount fields. At minimum, the rules file must identify the date and amount fields.
It's often necessary to specify the date format, and the number of It's often necessary to specify the date format, and the number of
@ -192,8 +192,8 @@ CSV TIPS
you might need newest-first, see above). you might need newest-first, see above).
CSV accounts CSV accounts
Each journal entry will have two postings, to account1 and account2 re- Each journal entry will have two postings, to account1 and account2
spectively. It's not yet possible to generate entries with more than respectively. It's not yet possible to generate entries with more than
two postings. It's conventional and recommended to use account1 for two postings. It's conventional and recommended to use account1 for
the account whose CSV we are reading. the account whose CSV we are reading.
@ -229,9 +229,9 @@ CSV TIPS
CSV balance assertions/assignments CSV balance assertions/assignments
If the CSV includes a running balance, you can assign that to one of If the CSV includes a running balance, you can assign that to one of
the pseudo fields balance (or balance1) or balance2. This will gener- the pseudo fields balance (or balance1) or balance2. This will gener-
ate a balance assertion (or if the amount is left empty, a balance as- ate a balance assertion (or if the amount is left empty, a balance
signment), on the first or second posting, whenever the running balance assignment), on the first or second posting, whenever the running bal-
field is non-empty. (TODO: #1000) ance field is non-empty. (TODO: #1000)
Reading multiple CSV files Reading multiple CSV files
You can read multiple CSV files at once using multiple -f arguments on You can read multiple CSV files at once using multiple -f arguments on

View File

@ -1579,11 +1579,45 @@ parent account.
.SS Periodic transactions .SS Periodic transactions
.PP .PP
Periodic transaction rules describe transactions that recur. Periodic transaction rules describe transactions that recur.
They allow you to generate future transactions for forecasting, without They allow hledger to generate temporary future transactions to help
having to write them out explicitly in the journal (with with forecasting, so you don\[aq]t have to write out each one in the
\f[C]--forecast\f[R]). journal, and it\[aq]s easy to try out different forecasts.
Secondly, they also can be used to define budget goals (with Secondly, they are also used to define the budgets shown in budget
\f[C]--budget\f[R]). reports.
.PP
Periodic transactions can be a little tricky, so before you use them,
read this whole section - or at least these tips:
.IP "1." 3
Two spaces accidentally added or omitted will cause you trouble - read
about this below.
.IP "2." 3
For troubleshooting, show the generated transactions with
\f[C]hledger print --forecast tag:generated\f[R] or
\f[C]hledger register --forecast tag:generated\f[R].
.IP "3." 3
Forecasted transactions will begin only after the last non-forecasted
transaction\[aq]s date.
.IP "4." 3
Forecasted transactions will end 6 months from today, by default.
See below for the exact start/end rules.
.IP "5." 3
period expressions can be tricky.
Their documentation needs improvement, but is worth studying.
.IP "6." 3
Some period expressions with a repeating interval must begin on a
natural boundary of that interval.
Eg in \f[C]weekly from DATE\f[R], DATE must be a monday.
\f[C]\[ti] weekly from 2019/10/1\f[R] (a tuesday) will give an error.
.IP "7." 3
Other period expressions with an interval are automatically expanded to
cover a whole number of that interval.
(This is done to improve reports, but it also affects periodic
transactions.
Yes, it\[aq]s a bit inconsistent with the above.) Eg:
\f[C]\[ti] every 10th day of month from 2020/01\f[R], which is
equivalent to \f[C]\[ti] every 10th day of month from 2020/01/01\f[R],
will be adjusted to start on 2019/12/10.
.SS Periodic rule syntax
.PP .PP
A periodic transaction rule looks like a normal journal entry, with the A periodic transaction rule looks like a normal journal entry, with the
date replaced by a tilde (\f[C]\[ti]\f[R]) followed by a period date replaced by a tilde (\f[C]\[ti]\f[R]) followed by a period
@ -1607,7 +1641,7 @@ Partial or relative dates (M/D, D, tomorrow, last week) in the period
expression can work (useful or not). expression can work (useful or not).
They will be relative to today\[aq]s date, unless a Y default year They will be relative to today\[aq]s date, unless a Y default year
directive is in effect, in which case they will be relative to Y/1/1. directive is in effect, in which case they will be relative to Y/1/1.
.SS Two spaces after the period expression .SS Two spaces between period expression and description!
.PP .PP
If the period expression is followed by a transaction description, these If the period expression is followed by a transaction description, these
must be separated by \f[B]two or more spaces\f[R]. must be separated by \f[B]two or more spaces\f[R].
@ -1625,6 +1659,14 @@ example:
income:acme inc income:acme inc
\f[R] \f[R]
.fi .fi
.PP
So,
.IP \[bu] 2
Do write two spaces between your period expression and your transaction
description, if any.
.IP \[bu] 2
Don\[aq]t accidentally write two spaces in the middle of your period
expression.
.SS Forecasting with periodic transactions .SS Forecasting with periodic transactions
.PP .PP
With the \f[C]--forecast\f[R] flag, each periodic transaction rule With the \f[C]--forecast\f[R] flag, each periodic transaction rule
@ -1686,8 +1728,8 @@ Eg the first example above declares a goal of spending $2000 on rent
(and also, a goal of depositing $2000 into checking) every month. (and also, a goal of depositing $2000 into checking) every month.
Goals and actual performance can then be compared in budget reports. Goals and actual performance can then be compared in budget reports.
.PP .PP
For more details, see: balance: Budget report and Cookbook: Budgeting For more details, see: balance: Budget report and Budgeting and
and Forecasting. Forecasting.
.PP .PP
.SS Auto postings / transaction modifiers .SS Auto postings / transaction modifiers
.PP .PP

View File

@ -1412,12 +1412,52 @@ File: hledger_journal.info, Node: Periodic transactions, Next: Auto postings /
========================== ==========================
Periodic transaction rules describe transactions that recur. They allow Periodic transaction rules describe transactions that recur. They allow
you to generate future transactions for forecasting, without having to hledger to generate temporary future transactions to help with
write them out explicitly in the journal (with '--forecast'). Secondly, forecasting, so you don't have to write out each one in the journal, and
they also can be used to define budget goals (with '--budget'). it's easy to try out different forecasts. Secondly, they are also used
to define the budgets shown in budget reports.
A periodic transaction rule looks like a normal journal entry, with Periodic transactions can be a little tricky, so before you use them,
the date replaced by a tilde ('~') followed by a period expression read this whole section - or at least these tips:
1. Two spaces accidentally added or omitted will cause you trouble -
read about this below.
2. For troubleshooting, show the generated transactions with 'hledger
print --forecast tag:generated' or 'hledger register --forecast
tag:generated'.
3. Forecasted transactions will begin only after the last
non-forecasted transaction's date.
4. Forecasted transactions will end 6 months from today, by default.
See below for the exact start/end rules.
5. period expressions can be tricky. Their documentation needs
improvement, but is worth studying.
6. Some period expressions with a repeating interval must begin on a
natural boundary of that interval. Eg in 'weekly from DATE', DATE
must be a monday. '~ weekly from 2019/10/1' (a tuesday) will give
an error.
7. Other period expressions with an interval are automatically
expanded to cover a whole number of that interval. (This is done
to improve reports, but it also affects periodic transactions.
Yes, it's a bit inconsistent with the above.) Eg: '~ every 10th
day of month from 2020/01', which is equivalent to '~ every 10th
day of month from 2020/01/01', will be adjusted to start on
2019/12/10.
* Menu:
* Periodic rule syntax::
* Two spaces between period expression and description!::
* Forecasting with periodic transactions::
* Budgeting with periodic transactions::

File: hledger_journal.info, Node: Periodic rule syntax, Next: Two spaces between period expression and description!, Up: Periodic transactions
1.15.1 Periodic rule syntax
---------------------------
A periodic transaction rule looks like a normal journal entry, with the
date replaced by a tilde ('~') followed by a period expression
(mnemonic: '~' looks like a recurring sine wave.): (mnemonic: '~' looks like a recurring sine wave.):
~ monthly ~ monthly
@ -1433,17 +1473,11 @@ expression can work (useful or not). They will be relative to today's
date, unless a Y default year directive is in effect, in which case they date, unless a Y default year directive is in effect, in which case they
will be relative to Y/1/1. will be relative to Y/1/1.
* Menu:
* Two spaces after the period expression::
* Forecasting with periodic transactions::
* Budgeting with periodic transactions::
 
File: hledger_journal.info, Node: Two spaces after the period expression, Next: Forecasting with periodic transactions, Up: Periodic transactions File: hledger_journal.info, Node: Two spaces between period expression and description!, Next: Forecasting with periodic transactions, Prev: Periodic rule syntax, Up: Periodic transactions
1.15.1 Two spaces after the period expression 1.15.2 Two spaces between period expression and description!
--------------------------------------------- ------------------------------------------------------------
If the period expression is followed by a transaction description, these If the period expression is followed by a transaction description, these
must be separated by *two or more spaces*. This helps hledger know must be separated by *two or more spaces*. This helps hledger know
@ -1457,10 +1491,17 @@ accidentally alter their meaning, as in this example:
assets:bank:checking $1500 assets:bank:checking $1500
income:acme inc income:acme inc
 So,
File: hledger_journal.info, Node: Forecasting with periodic transactions, Next: Budgeting with periodic transactions, Prev: Two spaces after the period expression, Up: Periodic transactions
1.15.2 Forecasting with periodic transactions * Do write two spaces between your period expression and your
transaction description, if any.
* Don't accidentally write two spaces in the middle of your period
expression.

File: hledger_journal.info, Node: Forecasting with periodic transactions, Next: Budgeting with periodic transactions, Prev: Two spaces between period expression and description!, Up: Periodic transactions
1.15.3 Forecasting with periodic transactions
--------------------------------------------- ---------------------------------------------
With the '--forecast' flag, each periodic transaction rule generates With the '--forecast' flag, each periodic transaction rule generates
@ -1513,7 +1554,7 @@ disables forecast transactions on previous dates.)
 
File: hledger_journal.info, Node: Budgeting with periodic transactions, Prev: Forecasting with periodic transactions, Up: Periodic transactions File: hledger_journal.info, Node: Budgeting with periodic transactions, Prev: Forecasting with periodic transactions, Up: Periodic transactions
1.15.3 Budgeting with periodic transactions 1.15.4 Budgeting with periodic transactions
------------------------------------------- -------------------------------------------
With the '--budget' flag, currently supported by the balance command, With the '--budget' flag, currently supported by the balance command,
@ -1523,8 +1564,8 @@ spending $2000 on rent (and also, a goal of depositing $2000 into
checking) every month. Goals and actual performance can then be checking) every month. Goals and actual performance can then be
compared in budget reports. compared in budget reports.
For more details, see: balance: Budget report and Cookbook: Budgeting For more details, see: balance: Budget report and Budgeting and
and Forecasting. Forecasting.
 
File: hledger_journal.info, Node: Auto postings / transaction modifiers, Prev: Periodic transactions, Up: FILE FORMAT File: hledger_journal.info, Node: Auto postings / transaction modifiers, Prev: Periodic transactions, Up: FILE FORMAT
@ -1760,21 +1801,23 @@ Node: Default parent account50218
Ref: #default-parent-account50384 Ref: #default-parent-account50384
Node: Periodic transactions51268 Node: Periodic transactions51268
Ref: #periodic-transactions51466 Ref: #periodic-transactions51466
Node: Two spaces after the period expression52592 Node: Periodic rule syntax53338
Ref: #two-spaces-after-the-period-expression52837 Ref: #periodic-rule-syntax53544
Node: Forecasting with periodic transactions53322 Node: Two spaces between period expression and description!54248
Ref: #forecasting-with-periodic-transactions53612 Ref: #two-spaces-between-period-expression-and-description54567
Node: Budgeting with periodic transactions55638 Node: Forecasting with periodic transactions55251
Ref: #budgeting-with-periodic-transactions55877 Ref: #forecasting-with-periodic-transactions55556
Node: Auto postings / transaction modifiers56336 Node: Budgeting with periodic transactions57582
Ref: #auto-postings-transaction-modifiers56547 Ref: #budgeting-with-periodic-transactions57821
Node: Auto postings and dates58776 Node: Auto postings / transaction modifiers58270
Ref: #auto-postings-and-dates59033 Ref: #auto-postings-transaction-modifiers58481
Node: Auto postings and transaction balancing / inferred amounts / balance assertions59208 Node: Auto postings and dates60710
Ref: #auto-postings-and-transaction-balancing-inferred-amounts-balance-assertions59583 Ref: #auto-postings-and-dates60967
Node: Auto posting tags59961 Node: Auto postings and transaction balancing / inferred amounts / balance assertions61142
Ref: #auto-posting-tags60200 Ref: #auto-postings-and-transaction-balancing-inferred-amounts-balance-assertions61517
Node: EDITOR SUPPORT60865 Node: Auto posting tags61895
Ref: #editor-support60983 Ref: #auto-posting-tags62134
Node: EDITOR SUPPORT62799
Ref: #editor-support62917
 
End Tag Table End Tag Table

View File

@ -7,9 +7,9 @@ NAME
Journal - hledger's default file format, representing a General Journal Journal - hledger's default file format, representing a General Journal
DESCRIPTION DESCRIPTION
hledger's usual data source is a plain text file containing journal en- hledger's usual data source is a plain text file containing journal
tries in hledger journal format. This file represents a standard ac- entries in hledger journal format. This file represents a standard
counting general journal. I use file names ending in .journal, but accounting general journal. I use file names ending in .journal, but
that's not required. The journal file contains a number of transaction that's not required. The journal file contains a number of transaction
entries, each describing a transfer of money (or any commodity) between entries, each describing a transfer of money (or any commodity) between
two or more named accounts, in a simple format readable by both hledger two or more named accounts, in a simple format readable by both hledger
@ -23,8 +23,8 @@ DESCRIPTION
You can use hledger without learning any more about this file; just use You can use hledger without learning any more about this file; just use
the add or web commands to create and update it. Many users, though, the add or web commands to create and update it. Many users, though,
also edit the journal file directly with a text editor, perhaps as- also edit the journal file directly with a text editor, perhaps
sisted by the helper modes for emacs or vim. assisted by the helper modes for emacs or vim.
Here's an example: Here's an example:
@ -58,9 +58,9 @@ DESCRIPTION
FILE FORMAT FILE FORMAT
Transactions Transactions
Transactions are movements of some quantity of commodities between Transactions are movements of some quantity of commodities between
named accounts. Each transaction is represented by a journal entry be- named accounts. Each transaction is represented by a journal entry
ginning with a simple date in column 0. This can be followed by any of beginning with a simple date in column 0. This can be followed by any
the following, separated by spaces: of the following, separated by spaces:
o (optional) a status character (empty, !, or *) o (optional) a status character (empty, !, or *)
@ -104,16 +104,16 @@ FILE FORMAT
Simple dates Simple dates
Within a journal file, transaction dates use Y/M/D (or Y-M-D or Y.M.D) Within a journal file, transaction dates use Y/M/D (or Y-M-D or Y.M.D)
Leading zeros are optional. The year may be omitted, in which case it Leading zeros are optional. The year may be omitted, in which case it
will be inferred from the context - the current transaction, the de- will be inferred from the context - the current transaction, the
fault year set with a default year directive, or the current date when default year set with a default year directive, or the current date
the command is run. Some examples: 2010/01/31, 1/31, 2010-01-31, when the command is run. Some examples: 2010/01/31, 1/31, 2010-01-31,
2010.1.31. 2010.1.31.
Secondary dates Secondary dates
Real-life transactions sometimes involve more than one date - eg the Real-life transactions sometimes involve more than one date - eg the
date you write a cheque, and the date it clears in your bank. When you date you write a cheque, and the date it clears in your bank. When you
want to model this, eg for more accurate balances, you can specify in- want to model this, eg for more accurate balances, you can specify
dividual posting dates, which I recommend. Or, you can use the sec- individual posting dates, which I recommend. Or, you can use the sec-
ondary dates (aka auxiliary/effective dates) feature, supported for ondary dates (aka auxiliary/effective dates) feature, supported for
compatibility with Ledger. compatibility with Ledger.
@ -142,15 +142,15 @@ FILE FORMAT
Secondary dates require some effort; you must use them consistently in Secondary dates require some effort; you must use them consistently in
your journal entries and remember whether to use or not use the --date2 your journal entries and remember whether to use or not use the --date2
flag for your reports. They are included in hledger for Ledger compat- flag for your reports. They are included in hledger for Ledger compat-
ibility, but posting dates are a more powerful and less confusing al- ibility, but posting dates are a more powerful and less confusing
ternative. alternative.
Posting dates Posting dates
You can give individual postings a different date from their parent You can give individual postings a different date from their parent
transaction, by adding a posting comment containing a tag (see below) transaction, by adding a posting comment containing a tag (see below)
like date:DATE. This is probably the best way to control posting dates like date:DATE. This is probably the best way to control posting dates
precisely. Eg in this example the expense should appear in May re- precisely. Eg in this example the expense should appear in May
ports, and the deduction from checking should be reported on 6/1 for reports, and the deduction from checking should be reported on 6/1 for
easy bank reconciliation: easy bank reconciliation:
2015/5/30 2015/5/30
@ -177,9 +177,9 @@ FILE FORMAT
Status Status
Transactions, or individual postings within a transaction, can have a Transactions, or individual postings within a transaction, can have a
status mark, which is a single character before the transaction de- status mark, which is a single character before the transaction
scription or posting account name, separated from it by a space, indi- description or posting account name, separated from it by a space,
cating one of three statuses: indicating one of three statuses:
mark status mark status
------------------ ------------------
@ -192,8 +192,8 @@ FILE FORMAT
status:* queries; or the U, P, C keys in hledger-ui. status:* queries; or the U, P, C keys in hledger-ui.
Note, in Ledger and in older versions of hledger, the "unmarked" state Note, in Ledger and in older versions of hledger, the "unmarked" state
is called "uncleared". As of hledger 1.3 we have renamed it to un- is called "uncleared". As of hledger 1.3 we have renamed it to
marked for clarity. unmarked for clarity.
To replicate Ledger and old hledger's behaviour of also matching pend- To replicate Ledger and old hledger's behaviour of also matching pend-
ing, combine -U and -P. ing, combine -U and -P.
@ -215,8 +215,8 @@ FILE FORMAT
rect rect
With this scheme, you would use -PC to see the current balance at your With this scheme, you would use -PC to see the current balance at your
bank, -U to see things which will probably hit your bank soon (like un- bank, -U to see things which will probably hit your bank soon (like
cashed checks), and no flags to see the most up-to-date state of your uncashed checks), and no flags to see the most up-to-date state of your
finances. finances.
Description Description
@ -229,9 +229,9 @@ FILE FORMAT
Payee and note Payee and note
You can optionally include a | (pipe) character in descriptions to sub- You can optionally include a | (pipe) character in descriptions to sub-
divide the description into separate fields for payee/payer name on the divide the description into separate fields for payee/payer name on the
left (up to the first |) and an additional note field on the right (af- left (up to the first |) and an additional note field on the right
ter the first |). This may be worthwhile if you need to do more pre- (after the first |). This may be worthwhile if you need to do more
cise querying and pivoting by payee or by note. precise querying and pivoting by payee or by note.
Account names Account names
Account names typically have several parts separated by a full colon, Account names typically have several parts separated by a full colon,
@ -580,11 +580,11 @@ FILE FORMAT
nodes to be ignored, allowing emacs users to fold and navigate their nodes to be ignored, allowing emacs users to fold and navigate their
journals with org-mode or orgstruct-mode.) journals with org-mode or orgstruct-mode.)
You can attach comments to a transaction by writing them after the de- You can attach comments to a transaction by writing them after the
scription and/or indented on the following lines (before the postings). description and/or indented on the following lines (before the post-
Similarly, you can attach comments to an individual posting by writing ings). Similarly, you can attach comments to an individual posting by
them after the amount and/or indented on the following lines. Transac- writing them after the amount and/or indented on the following lines.
tion and posting comments must begin with a semicolon (;). Transaction and posting comments must begin with a semicolon (;).
Some examples: Some examples:
@ -660,33 +660,33 @@ FILE FORMAT
here is a table summarising the directives and their effects, with here is a table summarising the directives and their effects, with
links to more detailed docs. links to more detailed docs.
direc- end di- subdi- purpose can affect (as of direc- end subdi- purpose can affect (as of
tive rective rec- 2018/06) tive directive rec- 2018/06)
tives tives
------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------
account any document account names, de- all entries in all account any document account names, all entries in all
text clare account types & dis- files, before or text declare account types & dis- files, before or
play order after play order after
alias end rewrite account names following in- alias end rewrite account names following
aliases line/included en- aliases inline/included
tries until end of entries until end
current file or end of current file or
directive end directive
apply end apply prepend a common parent to following in- apply end apply prepend a common parent to following
account account account names line/included en- account account account names inline/included
tries until end of entries until end
current file or end of current file or
directive end directive
comment end com- ignore part of journal following in- comment end com- ignore part of journal following
ment line/included en- ment inline/included
tries until end of entries until end
current file or end of current file or
directive end directive
commod- format declare a commodity and its number notation: commod- format declare a commodity and its number notation:
ity number notation & display following entries ity number notation & display following entries
style in that commodity style in that commodity
@ -709,13 +709,13 @@ FILE FORMAT
include include entries/directives what the included include include entries/directives what the included
from another file directives affect from another file directives affect
P declare a market price for a amounts of that P declare a market price for a amounts of that
commodity commodity in re- commodity commodity in
ports, when -V is reports, when -V is
used used
Y declare a year for yearless following in- Y declare a year for yearless following
dates line/included en- dates inline/included
tries until end of entries until end
current file of current file
And some definitions: And some definitions:
@ -731,8 +731,8 @@ FILE FORMAT
scope are affected by a directive scope are affected by a directive
As you can see, directives vary in which journal entries and files they As you can see, directives vary in which journal entries and files they
affect, and whether they are focussed on input (parsing) or output (re- affect, and whether they are focussed on input (parsing) or output
ports). Some directives have multiple effects. (reports). Some directives have multiple effects.
If you have a journal made up of multiple files, or pass multiple -f If you have a journal made up of multiple files, or pass multiple -f
options on the command line, note that directives which affect input options on the command line, note that directives which affect input
@ -756,8 +756,8 @@ FILE FORMAT
file. The include file path may contain common glob patterns (e.g. file. The include file path may contain common glob patterns (e.g.
*). *).
The include directive can only be used in journal files. It can in- The include directive can only be used in journal files. It can
clude journal, timeclock or timedot files, but not CSV files. include journal, timeclock or timedot files, but not CSV files.
Default year Default year
You can set a default year to be used for subsequent dates which don't You can set a default year to be used for subsequent dates which don't
@ -813,8 +813,8 @@ FILE FORMAT
Normally the display format is inferred from journal entries, but this Normally the display format is inferred from journal entries, but this
can be unpredictable; declaring it with a commodity directive overrides can be unpredictable; declaring it with a commodity directive overrides
this and removes ambiguity. Towards this end, amounts in commodity di- this and removes ambiguity. Towards this end, amounts in commodity
rectives must always be written with a decimal point (a period or directives must always be written with a decimal point (a period or
comma, followed by 0 or more decimal digits). comma, followed by 0 or more decimal digits).
Commodity directives do not affect how amounts are parsed; the parser Commodity directives do not affect how amounts are parsed; the parser
@ -839,8 +839,8 @@ FILE FORMAT
a decimal point. a decimal point.
Market prices Market prices
The P directive declares a market price, which is an exchange rate be- The P directive declares a market price, which is an exchange rate
tween two commodities on a certain date. (In Ledger, they are called between two commodities on a certain date. (In Ledger, they are called
"historical prices".) These are often obtained from a stock exchange, "historical prices".) These are often obtained from a stock exchange,
cryptocurrency exchange, or the foreign exchange market. cryptocurrency exchange, or the foreign exchange market.
@ -865,8 +865,8 @@ FILE FORMAT
commodity using these prices. commodity using these prices.
Declaring accounts Declaring accounts
account directives can be used to pre-declare accounts. Though not re- account directives can be used to pre-declare accounts. Though not
quired, they can provide several benefits: required, they can provide several benefits:
o They can document your intended chart of accounts, providing a refer- o They can document your intended chart of accounts, providing a refer-
ence. ence.
@ -925,8 +925,8 @@ FILE FORMAT
detected automatically. detected automatically.
Account types declared with tags Account types declared with tags
More generally, you can declare an account's type with an account di- More generally, you can declare an account's type with an account
rective, by writing a type: tag in a comment, followed by one of the directive, by writing a type: tag in a comment, followed by one of the
words Asset, Liability, Equity, Revenue, Expense, or one of the letters words Asset, Liability, Equity, Revenue, Expense, or one of the letters
ALERX (case insensitive): ALERX (case insensitive):
@ -1025,9 +1025,9 @@ FILE FORMAT
Or, you can use the --alias 'OLD=NEW' option on the command line. This Or, you can use the --alias 'OLD=NEW' option on the command line. This
affects all entries. It's useful for trying out aliases interactively. affects all entries. It's useful for trying out aliases interactively.
OLD and NEW are case sensitive full account names. hledger will re- OLD and NEW are case sensitive full account names. hledger will
place any occurrence of the old account name with the new one. Subac- replace any occurrence of the old account name with the new one. Sub-
counts are also affected. Eg: accounts are also affected. Eg:
alias checking = assets:bank:wells fargo:checking alias checking = assets:bank:wells fargo:checking
; rewrites "checking" to "assets:bank:wells fargo:checking", or "checking:a" to "assets:bank:wells fargo:checking:a" ; rewrites "checking" to "assets:bank:wells fargo:checking", or "checking:a" to "assets:bank:wells fargo:checking:a"
@ -1092,9 +1092,9 @@ FILE FORMAT
end aliases end aliases
Default parent account Default parent account
You can specify a parent account which will be prepended to all ac- You can specify a parent account which will be prepended to all
counts within a section of the journal. Use the apply account and end accounts within a section of the journal. Use the apply account and
apply account directives like so: end apply account directives like so:
apply account home apply account home
@ -1128,11 +1128,44 @@ FILE FORMAT
account. account.
Periodic transactions Periodic transactions
Periodic transaction rules describe transactions that recur. They al- Periodic transaction rules describe transactions that recur. They
low you to generate future transactions for forecasting, without having allow hledger to generate temporary future transactions to help with
to write them out explicitly in the journal (with --forecast). Sec- forecasting, so you don't have to write out each one in the journal,
ondly, they also can be used to define budget goals (with --budget). and it's easy to try out different forecasts. Secondly, they are also
used to define the budgets shown in budget reports.
Periodic transactions can be a little tricky, so before you use them,
read this whole section - or at least these tips:
1. Two spaces accidentally added or omitted will cause you trouble -
read about this below.
2. For troubleshooting, show the generated transactions with hledger
print --forecast tag:generated or hledger register --forecast
tag:generated.
3. Forecasted transactions will begin only after the last non-fore-
casted transaction's date.
4. Forecasted transactions will end 6 months from today, by default.
See below for the exact start/end rules.
5. period expressions can be tricky. Their documentation needs
improvement, but is worth studying.
6. Some period expressions with a repeating interval must begin on a
natural boundary of that interval. Eg in weekly from DATE, DATE
must be a monday. ~ weekly from 2019/10/1 (a tuesday) will give an
error.
7. Other period expressions with an interval are automatically expanded
to cover a whole number of that interval. (This is done to improve
reports, but it also affects periodic transactions. Yes, it's a bit
inconsistent with the above.) Eg: ~ every 10th day of month from
2020/01, which is equivalent to ~ every 10th day of month from
2020/01/01, will be adjusted to start on 2019/12/10.
Periodic rule syntax
A periodic transaction rule looks like a normal journal entry, with the A periodic transaction rule looks like a normal journal entry, with the
date replaced by a tilde (~) followed by a period expression (mnemonic: date replaced by a tilde (~) followed by a period expression (mnemonic:
~ looks like a recurring sine wave.): ~ looks like a recurring sine wave.):
@ -1150,7 +1183,7 @@ FILE FORMAT
date, unless a Y default year directive is in effect, in which case date, unless a Y default year directive is in effect, in which case
they will be relative to Y/1/1. they will be relative to Y/1/1.
Two spaces after the period expression Two spaces between period expression and description!
If the period expression is followed by a transaction description, If the period expression is followed by a transaction description,
these must be separated by two or more spaces. This helps hledger know these must be separated by two or more spaces. This helps hledger know
where the period expression ends, so that descriptions can not acciden- where the period expression ends, so that descriptions can not acciden-
@ -1163,9 +1196,17 @@ FILE FORMAT
assets:bank:checking $1500 assets:bank:checking $1500
income:acme inc income:acme inc
So,
o Do write two spaces between your period expression and your transac-
tion description, if any.
o Don't accidentally write two spaces in the middle of your period
expression.
Forecasting with periodic transactions Forecasting with periodic transactions
With the --forecast flag, each periodic transaction rule generates fu- With the --forecast flag, each periodic transaction rule generates
ture transactions recurring at the specified interval. These are not future transactions recurring at the specified interval. These are not
saved in the journal, but appear in all reports. They will look like saved in the journal, but appear in all reports. They will look like
normal transactions, but with an extra tag: normal transactions, but with an extra tag:
@ -1220,8 +1261,8 @@ FILE FORMAT
checking) every month. Goals and actual performance can then be com- checking) every month. Goals and actual performance can then be com-
pared in budget reports. pared in budget reports.
For more details, see: balance: Budget report and Cookbook: Budgeting For more details, see: balance: Budget report and Budgeting and Fore-
and Forecasting. casting.
Auto postings / transaction modifiers Auto postings / transaction modifiers
Transaction modifier rules, AKA auto posting rules, describe changes to Transaction modifier rules, AKA auto posting rules, describe changes to

View File

@ -28,8 +28,8 @@ FILE FORMAT
Quantities can be written as: Quantities can be written as:
o a sequence of dots (.) representing quarter hours. Spaces may op- o a sequence of dots (.) representing quarter hours. Spaces may
tionally be used for grouping and readability. Eg: .... .. optionally be used for grouping and readability. Eg: .... ..
o an integral or decimal number, representing hours. Eg: 1.5 o an integral or decimal number, representing hours. Eg: 1.5

View File

@ -117,8 +117,8 @@ OPTIONS
using period expressions syntax using period expressions syntax
--date2 --date2
match the secondary date instead (see command help for other ef- match the secondary date instead (see command help for other
fects) effects)
-U --unmarked -U --unmarked
include only unmarked postings/txns (can combine with -P or -C) include only unmarked postings/txns (can combine with -P or -C)
@ -204,8 +204,8 @@ KEYS
BACKSPACE or DELETE removes all filters, showing all transactions. BACKSPACE or DELETE removes all filters, showing all transactions.
As mentioned above, hledger-ui shows auto-generated periodic transac- As mentioned above, hledger-ui shows auto-generated periodic transac-
tions, and hides future transactions (auto-generated or not) by de- tions, and hides future transactions (auto-generated or not) by
fault. F toggles showing and hiding these future transactions. This default. F toggles showing and hiding these future transactions. This
is similar to using a query like date:-tomorrow, but more convenient. is similar to using a query like date:-tomorrow, but more convenient.
(experimental) (experimental)
@ -227,8 +227,8 @@ KEYS
file. This allows some basic data entry. file. This allows some basic data entry.
A is like a, but runs the hledger-iadd tool, which provides a curses- A is like a, but runs the hledger-iadd tool, which provides a curses-
style interface. This key will be available if hledger-iadd is in- style interface. This key will be available if hledger-iadd is
stalled in $PATH. installed in $PATH.
E runs $HLEDGER_UI_EDITOR, or $EDITOR, or a default (emacsclient -a "" E runs $HLEDGER_UI_EDITOR, or $EDITOR, or a default (emacsclient -a ""
-nw) on the journal file. With some editors (emacs, vi), the cursor -nw) on the journal file. With some editors (emacs, vi), the cursor
@ -250,14 +250,15 @@ SCREENS
Account names are shown as a flat list by default. Press T to toggle Account names are shown as a flat list by default. Press T to toggle
tree mode. In flat mode, account balances are exclusive of subac- tree mode. In flat mode, account balances are exclusive of subac-
counts, except where subaccounts are hidden by a depth limit (see be- counts, except where subaccounts are hidden by a depth limit (see
low). In tree mode, all account balances are inclusive of subaccounts. below). In tree mode, all account balances are inclusive of subac-
counts.
To see less detail, press a number key, 1 to 9, to set a depth limit. 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 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 less detail, collapsing all accounts to a single total. To remove the
depth limit, set it higher than the maximum account depth, or press ES- depth limit, set it higher than the maximum account depth, or press
CAPE. ESCAPE.
H toggles between showing historical balances or period balances. His- H toggles between showing historical balances or period balances. His-
torical balances (the default) are ending balances at the end of the torical balances (the default) are ending balances at the end of the
@ -265,15 +266,15 @@ SCREENS
(filtered by the filter query if any), including transactions before (filtered by the filter query if any), including transactions before
the start of the report period. In other words, historical balances the start of the report period. In other words, historical balances
are what you would see on a bank statement for that account (unless are what you would see on a bank statement for that account (unless
disturbed by a filter query). Period balances ignore transactions be- disturbed by a filter query). Period balances ignore transactions
fore the report start date, so they show the change in balance during 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. the report period. They are more useful eg when viewing a time log.
U toggles filtering by unmarked status, including or excluding unmarked U toggles filtering by unmarked status, including or excluding unmarked
postings in the balances. Similarly, P toggles pending postings, and C postings in the balances. Similarly, P toggles pending postings, and C
toggles cleared postings. (By default, balances include all postings; toggles cleared postings. (By default, balances include all postings;
if you activate one or two status filters, only those postings are in- if you activate one or two status filters, only those postings are
cluded; and if you activate all three, the filter is removed.) 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.
@ -328,16 +329,16 @@ SCREENS
similar to hledger's print command and journal format (hledger_jour- similar to hledger's print command and journal format (hledger_jour-
nal(5)). nal(5)).
The transaction's date(s) and any cleared flag, transaction code, de- The transaction's date(s) and any cleared flag, transaction code,
scription, comments, along with all of its account postings are shown. description, comments, along with all of its account postings are
Simple transactions have two postings, but there can be more (or in shown. Simple transactions have two postings, but there can be more
certain cases, fewer). (or in certain cases, fewer).
up and down will step through all transactions listed in the previous up and down will step through all transactions listed in the previous
account register screen. In the title bar, the numbers in parentheses account register screen. In the title bar, the numbers in parentheses
show your position within that account register. They will vary de- show your position within that account register. They will vary
pending on which account register you came from (remember most transac- depending on which account register you came from (remember most trans-
tions appear in multiple account registers). The #N number preceding actions appear in multiple account registers). The #N number preceding
them is the transaction's position within the complete unfiltered jour- them is the transaction's position within the complete unfiltered jour-
nal, which is a more stable id (at least until the next reload). nal, which is a more stable id (at least until the next reload).

View File

@ -19,9 +19,9 @@ DESCRIPTION
hledger-web is hledger's web interface. It starts a simple web appli- hledger-web is hledger's web interface. It starts a simple web appli-
cation for browsing and adding transactions, and optionally opens it in cation for browsing and adding transactions, and optionally opens it in
a web browser window if possible. It provides a more user-friendly UI 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 (ac- than the hledger CLI or hledger-ui interface, showing more at once
counts, the current account register, balance charts) and allowing his- (accounts, the current account register, balance charts) and allowing
tory-aware data entry, interactive searching, and bookmarking. history-aware data entry, interactive searching, and bookmarking.
hledger-web also lets you share a ledger with multiple users, or even 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 the public web. There is no access control, so if you need that you
@ -127,8 +127,8 @@ OPTIONS
using period expressions syntax using period expressions syntax
--date2 --date2
match the secondary date instead (see command help for other ef- match the secondary date instead (see command help for other
fects) effects)
-U --unmarked -U --unmarked
include only unmarked postings/txns (can combine with -P or -C) include only unmarked postings/txns (can combine with -P or -C)
@ -214,8 +214,8 @@ PERMISSIONS
You can restrict who can reach it by You can restrict who can reach it by
o setting the IP address it listens on (see --host above). By default o 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 ma- it listens on 127.0.0.1, accessible to all users on the local
chine. machine.
o putting it behind an authenticating proxy, using eg apache or nginx o putting it behind an authenticating proxy, using eg apache or nginx
@ -231,8 +231,8 @@ PERMISSIONS
o add - allows adding new transactions to the main journal file o add - allows adding new transactions to the main journal file
o manage - allows editing, uploading or downloading the main or in- o manage - allows editing, uploading or downloading the main or
cluded files included files
o using the --capabilities-header=HTTPHEADER flag to specify a HTTP o using the --capabilities-header=HTTPHEADER flag to specify a HTTP
header from which it will read capabilities to enable. hledger-web header from which it will read capabilities to enable. hledger-web
@ -242,8 +242,8 @@ PERMISSIONS
EDITING, UPLOADING, DOWNLOADING 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 "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 in- let you edit, upload, or download the journal file or any files it
cludes. includes.
Note, unlike any other hledger command, in this mode you (or any visi- Note, unlike any other hledger command, in this mode you (or any visi-
tor) can alter or wipe the data files. tor) can alter or wipe the data files.
@ -262,8 +262,8 @@ RELOADING
hledger-web detects changes made to the files by other means (eg if you 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 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. If a change data when you reload the page or navigate to a new page. If a change
makes a file unparseable, hledger-web will display an error message un- makes a file unparseable, hledger-web will display an error message
til the file has been fixed. until the file has been fixed.
(Note: if you are viewing files mounted from another machine, make sure (Note: if you are viewing files mounted from another machine, make sure
that both machine clocks are roughly in step.) that both machine clocks are roughly in step.)

View File

@ -3634,7 +3634,7 @@ account, but it\[aq]s superseded now by the built-in roi command.
.SS Experimental add-ons .SS Experimental add-ons
.PP .PP
These are available in source form in the hledger repo\[aq]s bin/ These are available in source form in the hledger repo\[aq]s bin/
directory; installing them is pretty easy. directory.
They may be less mature and documented than built-in commands. They may be less mature and documented than built-in commands.
Reading and tweaking these is a good way to start making your own! Reading and tweaking these is a good way to start making your own!
.SS autosync .SS autosync

View File

@ -3119,10 +3119,9 @@ File: hledger.info, Node: Experimental add-ons, Prev: Third party add-ons, Up
5.3 Experimental add-ons 5.3 Experimental add-ons
======================== ========================
These are available in source form in the hledger repo's bin/ directory; These are available in source form in the hledger repo's bin/ directory.
installing them is pretty easy. They may be less mature and documented They may be less mature and documented than built-in commands. Reading
than built-in commands. Reading and tweaking these is a good way to and tweaking these is a good way to start making your own!
start making your own!
* Menu: * Menu:
@ -3328,11 +3327,11 @@ Node: irr108282
Ref: #irr108380 Ref: #irr108380
Node: Experimental add-ons108511 Node: Experimental add-ons108511
Ref: #experimental-add-ons108663 Ref: #experimental-add-ons108663
Node: autosync108944 Node: autosync108911
Ref: #autosync109055 Ref: #autosync109022
Node: chart109294 Node: chart109261
Ref: #chart109413 Ref: #chart109380
Node: check109484 Node: check109451
Ref: #check109586 Ref: #check109553
 
End Tag Table End Tag Table

View File

@ -176,8 +176,8 @@ OPTIONS
using period expressions syntax using period expressions syntax
--date2 --date2
match the secondary date instead (see command help for other ef- match the secondary date instead (see command help for other
fects) effects)
-U --unmarked -U --unmarked
include only unmarked postings/txns (can combine with -P or -C) include only unmarked postings/txns (can combine with -P or -C)
@ -218,14 +218,14 @@ OPTIONS
Some reporting options can also be written as query arguments. Some reporting options can also be written as query arguments.
Command options Command options
To see options for a particular command, including command-specific op- To see options for a particular command, including command-specific
tions, run: hledger COMMAND -h. options, run: hledger COMMAND -h.
Command-specific options must be written after the command name, eg: Command-specific options must be written after the command name, eg:
hledger print -x. hledger print -x.
Additionally, if the command is an addon, you may need to put its op- Additionally, if the command is an addon, you may need to put its
tions after a double-hyphen, eg: hledger ui -- --watch. Or, you can options after a double-hyphen, eg: hledger ui -- --watch. Or, you can
run the addon executable directly: hledger-ui --watch. run the addon executable directly: hledger-ui --watch.
Command arguments Command arguments
@ -320,8 +320,8 @@ OPTIONS
This requires a well-configured environment. Here are some tips: This requires a well-configured environment. Here are some tips:
o A system locale must be configured, and it must be one that can de- o A system locale must be configured, and it must be one that can
code the characters being used. In bash, you can set a locale like decode the characters being used. In bash, you can set a locale like
this: export LANG=en_US.UTF-8. There are some more details in Trou- this: export LANG=en_US.UTF-8. There are some more details in Trou-
bleshooting. This step is essential - without it, hledger will quit bleshooting. This step is essential - without it, hledger will quit
on encountering a non-ascii character (as with all GHC-compiled pro- on encountering a non-ascii character (as with all GHC-compiled pro-
@ -421,8 +421,8 @@ OPTIONS
201812 6 digit YYYYMM with valid 201812 6 digit YYYYMM with valid
year and month year and month
Counterexamples - malformed digit sequences might give surprising re- Counterexamples - malformed digit sequences might give surprising
sults: results:
201813 6 digits with an invalid 201813 6 digits with an invalid
month is parsed as start month is parsed as start
@ -472,9 +472,9 @@ OPTIONS
ber 1st of the current ber 1st of the current
year (11/30 will be the year (11/30 will be the
last date included) last date included)
-b thismonth all transactions on or af- -b thismonth all transactions on or
ter the 1st of the current after the 1st of the cur-
month rent month
-p thismonth all transactions in the -p thismonth all transactions in the
current month current month
date:2016/3/17- the above written as date:2016/3/17- the above written as
@ -488,8 +488,8 @@ OPTIONS
ance and activity will divide their reports into multiple subperiods. ance and activity will divide their reports into multiple subperiods.
The basic intervals can be selected with one of -D/--daily, The basic intervals can be selected with one of -D/--daily,
-W/--weekly, -M/--monthly, -Q/--quarterly, or -Y/--yearly. More com- -W/--weekly, -M/--monthly, -Q/--quarterly, or -Y/--yearly. More com-
plex intervals may be specified with a period expression. Report in- plex intervals may be specified with a period expression. Report
tervals can not be specified with a query. intervals can not be specified with a query.
Period expressions Period expressions
The -p/--period option accepts period expressions, a shorthand way of The -p/--period option accepts period expressions, a shorthand way of
@ -539,11 +539,11 @@ OPTIONS
-p "2009/1/1" just that day; equivalent -p "2009/1/1" just that day; equivalent
to "2009/1/1 to 2009/1/2" to "2009/1/1 to 2009/1/2"
The argument of -p can also begin with, or be, a report interval ex- The argument of -p can also begin with, or be, a report interval
pression. The basic report intervals are daily, weekly, monthly, quar- expression. The basic report intervals are daily, weekly, monthly,
terly, or yearly, which have the same effect as the -D,-W,-M,-Q, or -Y quarterly, or yearly, which have the same effect as the -D,-W,-M,-Q, or
flags. Between report interval and start/end dates (if any), the word -Y flags. Between report interval and start/end dates (if any), the
in is optional. Examples: word in is optional. Examples:
-p "weekly from 2009/1/1 to 2009/4/1" -p "weekly from 2009/1/1 to 2009/4/1"
-p "monthly in 2008" -p "monthly in 2008"
@ -551,8 +551,8 @@ OPTIONS
Note that weekly, monthly, quarterly and yearly intervals will always Note that weekly, monthly, quarterly and yearly intervals will always
start on the first day on week, month, quarter or year accordingly, and 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 ex- will end on the last day of same period, even if associated period
pression specifies different explicit start and end date. expression specifies different explicit start and end date.
For example: For example:
@ -568,8 +568,8 @@ OPTIONS
-p "yearly from 2009-12-29" - starts on -p "yearly from 2009-12-29" - starts on
2009/01/01, first day of 2009 2009/01/01, first day of 2009
The following more complex report intervals are also supported: bi- The following more complex report intervals are also supported:
weekly, bimonthly, every day|week|month|quarter|year, every N biweekly, bimonthly, every day|week|month|quarter|year, every N
days|weeks|months|quarters|years. days|weeks|months|quarters|years.
All of these will start on the first day of the requested period and All of these will start on the first day of the requested period and
@ -582,8 +582,8 @@ OPTIONS
2008/03/01, ... 2008/03/01, ...
-p "every 2 weeks" -- starts on closest -p "every 2 weeks" -- starts on closest
preceeding Monday preceeding Monday
-p "every 5 month from 2009/03" -- pe- -p "every 5 month from 2009/03" --
riods will have boundaries on periods will have boundaries on
2009/03/01, 2009/08/01, ... 2009/03/01, 2009/08/01, ...
If you want intervals that start on arbitrary day of your choosing and If you want intervals that start on arbitrary day of your choosing and
@ -622,9 +622,9 @@ OPTIONS
Depth limiting Depth limiting
With the --depth N option (short form: -N), commands like account, bal- With the --depth N option (short form: -N), commands like account, bal-
ance and register will show only the uppermost accounts in the account 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 de- tree, down to level N. Use this when you want a summary with less
tail. This flag has the same effect as a depth: query argument (so -2, detail. This flag has the same effect as a depth: query argument (so
--depth=2 or depth:2 are basically equivalent). -2, --depth=2 or depth:2 are basically equivalent).
Pivoting Pivoting
Normally hledger sums amounts, and organizes them in a hierarchy, based Normally hledger sums amounts, and organizes them in a hierarchy, based
@ -662,8 +662,8 @@ OPTIONS
-------------------- --------------------
0 0
One way to show only amounts with a member: value (using a query, de- One way to show only amounts with a member: value (using a query,
scribed below): described below):
$ hledger balance --pivot member tag:member=. $ hledger balance --pivot member tag:member=.
-2 EUR John Doe -2 EUR John Doe
@ -691,8 +691,8 @@ OPTIONS
is today (equivalent to --value=now); for multiperiod reports, it is is today (equivalent to --value=now); for multiperiod reports, it is
the last day of each subperiod (equivalent to --value=end). the last day of each subperiod (equivalent to --value=end).
The default valuation commodity is the one referenced in the latest ap- The default valuation commodity is the one referenced in the latest
plicable market price dated on or before the valuation date. If most applicable market price dated on or before the valuation date. If most
of your P declarations lead to a single home currency, this will usu- of your P declarations lead to a single home currency, this will usu-
ally be what you want. (To specify the commodity, see -X below.) ally be what you want. (To specify the commodity, see -X below.)
@ -782,8 +782,8 @@ OPTIONS
o reverse prices (declared prices from valuation to source commodity, o reverse prices (declared prices from valuation to source commodity,
inverted) inverted)
o indirect prices (prices calculated from the shortest chain of de- o indirect prices (prices calculated from the shortest chain of
clared or reverse prices from source to valuation commodity) declared or reverse prices from source to valuation commodity)
in that order. in that order.
@ -862,8 +862,8 @@ OPTIONS
2000/03/01 2000/03/01
(a) 1 B (a) 1 B
You may need to explicitly set a commodity's display style, when re- You may need to explicitly set a commodity's display style, when
verse prices are used. Eg this output might be surprising: reverse prices are used. Eg this output might be surprising:
P 2000-01-01 A 2B P 2000-01-01 A 2B
@ -897,8 +897,8 @@ OPTIONS
Effect of --value on reports Effect of --value on reports
Here is a reference for how --value currently affects each part of Here is a reference for how --value currently affects each part of
hledger's reports. It's work in progress, but may be useful for trou- hledger's reports. It's work in progress, but may be useful for trou-
bleshooting or reporting bugs. See also the definitions and notes be- bleshooting or reporting bugs. See also the definitions and notes
low. If you find problems, please report them, ideally with a repro- below. If you find problems, please report them, ideally with a repro-
ducible example. Related: #329, #1083. ducible example. Related: #329, #1083.
Report type -B, -V, -X --value=end --value=DATE, Report type -B, -V, -X --value=end --value=DATE,
@ -908,8 +908,8 @@ OPTIONS
posting cost value at report value at report value at posting cost value at report value at report value at
amounts end or today or journal end DATE/today amounts end or today or journal end DATE/today
balance asser- unchanged unchanged unchanged unchanged balance asser- unchanged unchanged unchanged unchanged
tions / as- tions /
signments assignments
register register
starting bal- cost value at day value at day value at starting bal- cost value at day value at day value at
@ -924,8 +924,8 @@ OPTIONS
ing amounts cost ends ends DATE/today ing amounts cost ends ends DATE/today
(with report (with report
interval) interval)
running to- sum/average of sum/average of sum/average of sum/average running sum/average of sum/average of sum/average of sum/average
tal/average displayed val- displayed val- displayed val- of displayed total/average displayed val- displayed val- displayed val- of displayed
ues ues ues values ues ues ues values
balance (bs, balance (bs,
@ -939,24 +939,25 @@ OPTIONS
val) postings postings sums of post- val) postings postings sums of post-
ings ings
starting bal- sums of costs sums of post- sums of post- sums of post- starting bal- sums of costs sums of post- sums of post- sums of post-
ances (with of postings ings before re- ings before re- ings before ances (with of postings ings before ings before ings before
report inter- before report port start port start report start report inter- before report report start report start report start
val and -H) start val and -H) start
budget amounts like balances like balances like balances like balances budget amounts like balances like balances like balances like balances
with --budget with --budget
grand total sum of dis- sum of dis- sum of dis- sum of dis- grand total sum of dis- sum of dis- sum of dis- sum of dis-
(no report in- played values played values played values played values (no report played values played values played values played values
terval) interval)
row totals/av- sums/averages sums/averages sums/averages sums/averages row sums/averages sums/averages sums/averages sums/averages
erages (with of displayed of displayed of displayed of displayed totals/aver- of displayed of displayed of displayed of displayed
report inter- values values values values ages (with values values values values
report inter-
val) val)
column totals sums of dis- sums of dis- sums of dis- sums of dis- column totals sums of dis- sums of dis- sums of dis- sums of dis-
played values played values played values played values played values played values played values played values
grand to- sum/average of sum/average of sum/average of sum/average grand sum/average of sum/average of sum/average of sum/average
tal/average column totals column totals column totals of column to- total/average column totals column totals column totals of column
tals totals
Additional notes Additional notes
@ -1032,8 +1033,8 @@ OPTIONS
o also support GNU word boundaries (\<, \>, \b, \B) o also support GNU word boundaries (\<, \>, \b, \B)
o and parenthesised capturing groups and numeric backreferences in re- o and parenthesised capturing groups and numeric backreferences in
placement strings replacement strings
o do not support mode modifiers like (?s) o do not support mode modifiers like (?s)
@ -1150,8 +1151,8 @@ QUERIES
only: only:
inacct:ACCTNAME inacct:ACCTNAME
tells hledger-web to show the transaction register for this ac- tells hledger-web to show the transaction register for this
count. Can be filtered further with acct etc. account. Can be filtered further with acct etc.
Some of these can also be expressed as command-line options (eg depth:2 Some of these can also be expressed as command-line options (eg depth:2
is equivalent to --depth 2). Generally you can mix options and query is equivalent to --depth 2). Generally you can mix options and query
@ -1166,14 +1167,14 @@ COMMANDS
scripts named hledger-NAME in your PATH, these will also be listed as scripts named hledger-NAME in your PATH, these will also be listed as
subcommands. subcommands.
Run a subcommand by writing its name as first argument (eg hledger in- Run a subcommand by writing its name as first argument (eg hledger
comestatement). You can also write one of the standard short aliases incomestatement). You can also write one of the standard short aliases
displayed in parentheses in the command list (hledger b), or any any displayed in parentheses in the command list (hledger b), or any any
unambiguous prefix of a command name (hledger inc). unambiguous prefix of a command name (hledger inc).
Here are all the builtin commands in alphabetical order. See also Here are all the builtin commands in alphabetical order. See also
hledger for a more organised command list, and hledger CMD -h for de- hledger for a more organised command list, and hledger CMD -h for
tailed command help. detailed command help.
accounts accounts
accounts, a accounts, a
@ -1234,8 +1235,8 @@ COMMANDS
Features: Features:
o add tries to provide useful defaults, using the most similar (by de- o add tries to provide useful defaults, using the most similar (by
scription) recent transaction (filtered by the query, if any) as a description) recent transaction (filtered by the query, if any) as a
template. template.
o You can also set the initial defaults with command line arguments. o You can also set the initial defaults with command line arguments.
@ -1334,8 +1335,8 @@ COMMANDS
-------------------- --------------------
0 0
By default, accounts are displayed hierarchically, with subaccounts in- By default, accounts are displayed hierarchically, with subaccounts
dented below their parent. At each level of the tree, accounts are indented below their parent. At each level of the tree, accounts are
sorted by account code if any, then by account name. Or with sorted by account code if any, then by account name. Or with
-S/--sort-amount, by their balance amount. -S/--sort-amount, by their balance amount.
@ -1404,9 +1405,9 @@ COMMANDS
o %, - render on one line, comma-separated o %, - render on one line, comma-separated
There are some quirks. Eg in one-line mode, %(depth_spacer) has no ef- There are some quirks. Eg in one-line mode, %(depth_spacer) has no
fect, instead %(account) has indentation built in. Experimentation may effect, instead %(account) has indentation built in. Experimentation
be needed to get pleasing results. may be needed to get pleasing results.
Some example formats: Some example formats:
@ -1458,8 +1459,8 @@ COMMANDS
Multicolumn or tabular balance reports are a very useful hledger fea- Multicolumn or tabular balance reports are a very useful hledger fea-
ture, and usually the preferred style. They share many of the above ture, and usually the preferred style. They share many of the above
features, but they show the report as a table, with columns represent- features, but they show the report as a table, with columns represent-
ing time periods. This mode is activated by providing a reporting in- ing time periods. This mode is activated by providing a reporting
terval. interval.
There are three types of multicolumn balance report, showing different There are three types of multicolumn balance report, showing different
information: information:
@ -1480,8 +1481,8 @@ COMMANDS
-------------------++--------------------------------- -------------------++---------------------------------
|| $-1 $1 0 0 || $-1 $1 0 0
2. With --cumulative: each column shows the ending balance for that pe- 2. With --cumulative: each column shows the ending balance for that
riod, accumulating the changes across periods, starting from 0 at period, accumulating the changes across periods, starting from 0 at
the report start date: the report start date:
$ hledger balance --quarterly income expenses -E --cumulative $ hledger balance --quarterly income expenses -E --cumulative
@ -1526,12 +1527,12 @@ COMMANDS
ods will be "full" and comparable to the others. ods will be "full" and comparable to the others.
The -E/--empty flag does two things in multicolumn balance reports: The -E/--empty flag does two things in multicolumn balance reports:
first, the report will show all columns within the specified report pe- first, the report will show all columns within the specified report
riod (without -E, leading and trailing columns with all zeroes are not period (without -E, leading and trailing columns with all zeroes are
shown). Second, all accounts which existed at the report start date not shown). Second, all accounts which existed at the report start
will be considered, not just the ones with activity during the report date will be considered, not just the ones with activity during the
period (use -E to include low-activity accounts which would otherwise report period (use -E to include low-activity accounts which would oth-
would be omitted). erwise would be omitted).
The -T/--row-total flag adds an additional column showing the total for The -T/--row-total flag adds an additional column showing the total for
each row. each row.
@ -1569,12 +1570,12 @@ COMMANDS
Budget report Budget report
With --budget, extra columns are displayed showing budget goals for With --budget, extra columns are displayed showing budget goals for
each account and period, if any. Budget goals are defined by periodic each account and period, if any. Budget goals are defined by periodic
transactions. This is very useful for comparing planned and actual in- transactions. This is very useful for comparing planned and actual
come, expenses, time usage, etc. --budget is most often combined with income, expenses, time usage, etc. --budget is most often combined
a report interval. with a report interval.
For example, you can take average monthly expenses in the common ex- For example, you can take average monthly expenses in the common
pense categories to construct a minimal monthly budget: expense categories to construct a minimal monthly budget:
;; Budget ;; Budget
~ monthly ~ monthly
@ -1699,10 +1700,10 @@ COMMANDS
budget for personal expenses is an additional $1000, which implicity budget for personal expenses is an additional $1000, which implicity
means that budget for both expenses:personal and expenses is $1100. means that budget for both expenses:personal and expenses is $1100.
Transactions in expenses:personal:electronics will be counted both to- Transactions in expenses:personal:electronics will be counted both
wards its $100 budget and $1100 of expenses:personal , and transactions towards its $100 budget and $1100 of expenses:personal , and transac-
in any other subaccount of expenses:personal would be counted towards tions in any other subaccount of expenses:personal would be counted
only towards the budget of expenses:personal. towards only towards the budget of expenses:personal.
For example, let's consider these transactions: For example, let's consider these transactions:
@ -1763,8 +1764,8 @@ COMMANDS
|| 0 [ 0] || 0 [ 0]
Output format Output format
The balance command supports output destination and output format se- The balance command supports output destination and output format
lection. selection.
balancesheet balancesheet
balancesheet, bs balancesheet, bs
@ -1924,12 +1925,12 @@ COMMANDS
INGDATE. Eg, to close/open on the 2018/2019 boundary, use -e 2019. INGDATE. Eg, to close/open on the 2018/2019 boundary, use -e 2019.
You can also use -p or date:PERIOD (any starting date is ignored). You can also use -p or date:PERIOD (any starting date is ignored).
Both transactions will include balance assertions for the closed/re- Both transactions will include balance assertions for the
opened accounts. You probably shouldn't use status or realness filters closed/reopened accounts. You probably shouldn't use status or real-
(like -C or -R or status:) with this command, or the generated balance ness filters (like -C or -R or status:) with this command, or the gen-
assertions will depend on these flags. Likewise, if you run this com- erated balance assertions will depend on these flags. Likewise, if you
mand with --auto, the balance assertions will probably always require run this command with --auto, the balance assertions will probably
--auto. always require --auto.
When account balances have cost information (transaction prices), the When account balances have cost information (transaction prices), the
closing/opening transactions will preserve it, so that eg balance -B closing/opening transactions will preserve it, so that eg balance -B
@ -2095,8 +2096,8 @@ COMMANDS
expenses during a period. It assumes that these accounts are under a expenses during a period. It assumes that these accounts are under a
top-level revenue or income or expense account (case insensitive, plu- top-level revenue or income or expense account (case insensitive, plu-
ral forms also allowed). Note this report shows all account balances ral forms also allowed). Note this report shows all account balances
with normal positive sign (like conventional financial statements, un- with normal positive sign (like conventional financial statements,
like balance/print/register) (experimental). unlike balance/print/register) (experimental).
This command displays a simple income statement. It currently assumes This command displays a simple income statement. It currently assumes
that you have top-level accounts named income (or revenue) and expense that you have top-level accounts named income (or revenue) and expense
@ -2157,9 +2158,10 @@ COMMANDS
prices prices
prices prices
Print market price directives from the journal. With --costs, also Print market price directives from the journal. With --costs, also
print synthetic market prices based on transaction prices. With --in- print synthetic market prices based on transaction prices. With
verted-costs, also print inverse prices based on transaction prices. --inverted-costs, also print inverse prices based on transaction
Prices (and postings providing prices) can be filtered by a query. prices. Prices (and postings providing prices) can be filtered by a
query.
print print
print, txns, p print, txns, p
@ -2170,8 +2172,8 @@ COMMANDS
tions are sorted by secondary date instead. tions are sorted by secondary date instead.
print's output is always a valid hledger journal. print's output is always a valid hledger journal.
It preserves all transaction information, but it does not preserve di- It preserves all transaction information, but it does not preserve
rectives or inter-transaction comments directives or inter-transaction comments
$ hledger print $ hledger print
2008/01/01 income 2008/01/01 income
@ -2217,16 +2219,16 @@ COMMANDS
cial state file (.latest.FILE in the same directory), containing the cial state file (.latest.FILE in the same directory), containing the
latest transaction date(s) that were seen last time FILE was read. latest transaction date(s) that were seen last time FILE was read.
When this file is found, only transactions with newer dates (and new When this file is found, only transactions with newer dates (and new
transactions on the latest date) are printed. This is useful for ig- transactions on the latest date) are printed. This is useful for
noring already-seen entries in import data, such as downloaded CSV ignoring already-seen entries in import data, such as downloaded CSV
files. Eg: files. Eg:
$ hledger -f bank1.csv print --new $ hledger -f bank1.csv print --new
# shows transactions added since last print --new on this file # shows transactions added since last print --new on this file
This assumes that transactions added to FILE always have same or in- This assumes that transactions added to FILE always have same or
creasing dates, and that transactions on the same day do not get re- increasing dates, and that transactions on the same day do not get
ordered. See also the import command. reordered. See also the import command.
This command also supports output destination and output format selec- This command also supports output destination and output format selec-
tion. Here's an example of print's CSV output: tion. Here's an example of print's CSV output:
@ -2307,21 +2309,21 @@ COMMANDS
The --average/-A flag shows the running average posting amount instead The --average/-A flag shows the running average posting amount instead
of the running total (so, the final number displayed is the average for of the running total (so, the final number displayed is the average for
the whole report period). This flag implies --empty (see below). It the whole report period). This flag implies --empty (see below). It
is affected by --historical. It works best when showing just one ac- is affected by --historical. It works best when showing just one
count and one commodity. account and one commodity.
The --related/-r flag shows the other postings in the transactions of The --related/-r flag shows the other postings in the transactions of
the postings which would normally be shown. the postings which would normally be shown.
The --invert flag negates all amounts. For example, it can be used on The --invert flag negates all amounts. For example, it can be used on
an income account where amounts are normally displayed as negative num- an income account where amounts are normally displayed as negative num-
bers. It's also useful to show postings on the checking account to- bers. It's also useful to show postings on the checking account
gether with the related account: together with the related account:
$ hledger register --related --invert assets:checking $ hledger register --related --invert assets:checking
With a reporting interval, register shows summary postings, one per in- With a reporting interval, register shows summary postings, one per
terval, aggregating the postings to each account: interval, aggregating the postings to each account:
$ hledger register --monthly income $ hledger register --monthly income
2008/01 income:salary $-1 $-1 2008/01 income:salary $-1 $-1
@ -2344,8 +2346,8 @@ COMMANDS
2008/11 0 $-2 2008/11 0 $-2
2008/12 0 $-2 2008/12 0 $-2
Often, you'll want to see just one line per interval. The --depth op- Often, you'll want to see just one line per interval. The --depth
tion helps with this, causing subaccounts to be aggregated: option helps with this, causing subaccounts to be aggregated:
$ hledger register --monthly assets --depth 1h $ hledger register --monthly assets --depth 1h
2008/01 assets $1 $1 2008/01 assets $1 $1
@ -2353,8 +2355,8 @@ COMMANDS
2008/12 assets $-1 $-1 2008/12 assets $-1 $-1
Note when using report intervals, if you specify start/end dates these Note when using report intervals, if you specify start/end dates these
will be adjusted outward if necessary to contain a whole number of in- will be adjusted outward if necessary to contain a whole number of
tervals. This ensures that the first and last intervals are full intervals. This ensures that the first and last intervals are full
length and comparable to the others in the report. length and comparable to the others in the report.
Custom register output Custom register output
@ -2363,9 +2365,9 @@ COMMANDS
a bash shell variable) or by using the --width/-w option. a bash shell variable) or by using the --width/-w option.
The description and account columns normally share the space equally The description and account columns normally share the space equally
(about half of (width - 40) each). You can adjust this by adding a de- (about half of (width - 40) each). You can adjust this by adding a
scription width as part of --width's argument, comma-separated: --width description width as part of --width's argument, comma-separated:
W,D . Here's a diagram (won't display correctly in --help): --width W,D . Here's a diagram (won't display correctly in --help):
<--------------------------------- width (W) ----------------------------------> <--------------------------------- width (W) ---------------------------------->
date (10) description (D) account (W-41-D) amount (12) balance (12) date (10) description (D) account (W-41-D) amount (12) balance (12)
@ -2388,8 +2390,8 @@ COMMANDS
Print the one posting whose transaction description is closest to DESC, Print the one posting whose transaction description is closest to DESC,
in the style of the register command. If there are multiple equally in the style of the register command. If there are multiple equally
good matches, it shows the most recent. Query options (options, not good matches, it shows the most recent. Query options (options, not
arguments) can be used to restrict the search space. Helps ledger-au- arguments) can be used to restrict the search space. Helps ledger-
tosync detect already-seen transactions when importing. autosync detect already-seen transactions when importing.
rewrite rewrite
rewrite rewrite
@ -2429,10 +2431,10 @@ COMMANDS
Argument for --add-posting option is a usual posting of transaction Argument for --add-posting option is a usual posting of transaction
with an exception for amount specification. More precisely, you can with an exception for amount specification. More precisely, you can
use '*' (star symbol) before the amount to indicate that that this is a use '*' (star symbol) before the amount to indicate that that this is a
factor for an amount of original matched posting. If the amount in- factor for an amount of original matched posting. If the amount
cludes a commodity name, the new posting amount will be in the new com- includes a commodity name, the new posting amount will be in the new
modity; otherwise, it will be in the matched posting amount's commod- commodity; otherwise, it will be in the matched posting amount's com-
ity. modity.
Re-write rules in a file Re-write rules in a file
During the run this tool will execute so called "Automated Transac- During the run this tool will execute so called "Automated Transac-
@ -2530,9 +2532,9 @@ COMMANDS
originating from unrealized profit and loss account(s) are assumed to originating from unrealized profit and loss account(s) are assumed to
be your investments or withdrawals. be your investments or withdrawals.
At a minimum, you need to supply a query (which could be just an ac- At a minimum, you need to supply a query (which could be just an
count name) to select your investments with --inv, and another query to account name) to select your investments with --inv, and another query
identify your profit and loss transactions with --pnl. to identify your profit and loss transactions with --pnl.
It will compute and display the internalized rate of return (IRR) and It will compute and display the internalized rate of return (IRR) and
time-weighted rate of return (TWR) for your investments for the time time-weighted rate of return (TWR) for your investments for the time
@ -2570,8 +2572,8 @@ COMMANDS
List all the tag names used in the journal. With a TAGREGEX argument, List all the tag names used in the journal. With a TAGREGEX argument,
only tag names matching the regular expression (case insensitive) are only tag names matching the regular expression (case insensitive) are
shown. With QUERY arguments, only transactions matching the query are shown. With QUERY arguments, only transactions matching the query are
considered. With --values flag, the tags' unique values are listed in- considered. With --values flag, the tags' unique values are listed
stead. instead.
test test
test test
@ -2590,8 +2592,8 @@ COMMANDS
none of them). none of them).
This is mainly used by developers, but it's nice to be able to sanity- This is mainly used by developers, but it's nice to be able to sanity-
check your installed hledger executable at any time. All tests are ex- check your installed hledger executable at any time. All tests are
pected to pass - if you ever see otherwise, something has gone wrong, expected to pass - if you ever see otherwise, something has gone wrong,
please report a bug! please report a bug!
ADD-ON COMMANDS ADD-ON COMMANDS
@ -2650,14 +2652,13 @@ ADD-ON COMMANDS
ing to various schemes. ing to various schemes.
irr irr
hledger-irr calculates the internal rate of return of an investment ac- hledger-irr calculates the internal rate of return of an investment
count, but it's superseded now by the built-in roi command. account, but it's superseded now by the built-in roi command.
Experimental add-ons Experimental add-ons
These are available in source form in the hledger repo's bin/ direc- These are available in source form in the hledger repo's bin/ direc-
tory; installing them is pretty easy. They may be less mature and doc- tory. They may be less mature and documented than built-in commands.
umented than built-in commands. Reading and tweaking these is a good Reading and tweaking these is a good way to start making your own!
way to start making your own!
autosync autosync
hledger-autosync is a symbolic link for easily running ledger-autosync, hledger-autosync is a symbolic link for easily running ledger-autosync,
@ -2709,8 +2710,8 @@ LIMITATIONS
Ledger. Ledger.
TROUBLESHOOTING TROUBLESHOOTING
Here are some issues you might encounter when you run hledger (and re- Here are some issues you might encounter when you run hledger (and
member you can also seek help from the IRC channel, mail list or bug remember you can also seek help from the IRC channel, mail list or bug
tracker): tracker):
Successfully installed, but "No command 'hledger' found" Successfully installed, but "No command 'hledger' found"