mirror of
https://github.com/simonmichael/hledger.git
synced 2024-12-25 19:31:44 +03:00
doc: bring embedded help files up to date
This commit is contained in:
parent
abf1bcbf36
commit
bd3212654c
@ -1,6 +1,6 @@
|
||||
.\"t
|
||||
|
||||
.TH "hledger_journal" "5" "April 2016" "" "hledger User Manuals"
|
||||
.TH "hledger_journal" "5" "May 2016" "" "hledger User Manuals"
|
||||
|
||||
|
||||
|
||||
@ -85,25 +85,29 @@ inferred.
|
||||
.SS Simple dates
|
||||
.PP
|
||||
Within a journal file, transaction dates use Y/M/D (or Y\-M\-D or Y.M.D)
|
||||
Leading zeroes are optional.
|
||||
The year may be omitted, in which case it defaults to the current year,
|
||||
or you can set the default year with a default year directive.
|
||||
.PP
|
||||
Leading zeros are optional.
|
||||
The year may be omitted, in which case it will be inferred from the
|
||||
context \- the current transaction, the default year set with a default
|
||||
year directive, or the current date when the command is run.
|
||||
Some examples: \f[C]2010/01/31\f[], \f[C]1/31\f[],
|
||||
\f[C]2010\-01\-31\f[], \f[C]2010.1.31\f[].
|
||||
.SS Secondary dates
|
||||
.PP
|
||||
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 want to model this, eg for more accurate balances, write both
|
||||
dates separated by an equals sign.
|
||||
The \f[I]primary date\f[], on the left, is used by default; the
|
||||
\f[I]secondary date\f[], on the right, is used when the
|
||||
\f[C]\-\-date2\f[] flag is specified (For Ledger compatibility,
|
||||
\f[C]\-\-aux\-date\f[] or \f[C]\-\-effective\f[] also work.)
|
||||
When you want to model this, eg for more accurate balances, you can
|
||||
specify individual #posting\-dates, which I recommend.
|
||||
Or, you can use the secondary dates (aka auxiliary/effective dates)
|
||||
feature, supported for compatibility with Ledger.
|
||||
.PP
|
||||
Their meaning is up to you, but it\[aq]s best to follow a consistent
|
||||
rule.
|
||||
A secondary date can be written after the primary date, separated by an
|
||||
equals sign.
|
||||
The primary date, on the left, is used by default; the secondary date,
|
||||
on the right, is used when the \f[C]\-\-date2\f[] flag is specified
|
||||
(\f[C]\-\-aux\-date\f[] or \f[C]\-\-effective\f[] also work).
|
||||
.PP
|
||||
The meaning of secondary dates is up to you, but it\[aq]s best to follow
|
||||
a consistent rule.
|
||||
Eg write the bank\[aq]s clearing date as primary, and when needed, the
|
||||
date the transaction was initiated as secondary.
|
||||
.PP
|
||||
@ -133,15 +137,16 @@ $\ hledger\ register\ checking\ \-\-date2
|
||||
\f[]
|
||||
.fi
|
||||
.PP
|
||||
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
|
||||
\f[C]\-\-date2\f[] flag for your reports.
|
||||
Arguably they are now obsolete, superseded by...
|
||||
They are included in hledger for Ledger compatibility, but posting dates
|
||||
are a more powerful and less confusing alternative.
|
||||
.SS Posting dates
|
||||
.PP
|
||||
You can give individual postings a different date from their parent
|
||||
transaction, by adding a posting tag (see below) like
|
||||
\f[C]date:DATE\f[], where DATE is a simple date.
|
||||
transaction, by adding a posting comment containing a tag (see below)
|
||||
like \f[C]date:DATE\f[].
|
||||
This is probably the best way to control posting dates precisely.
|
||||
Eg in this example the expense should appear in May reports, and the
|
||||
deduction from checking should be reported on 6/1 for easy bank
|
||||
@ -157,28 +162,31 @@ reconciliation:
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
$\ hledger\ \-f\ tt.j\ register\ food
|
||||
$\ hledger\ \-f\ t.j\ register\ food
|
||||
2015/05/30\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ expenses:food\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $10\ \ \ \ \ \ \ \ \ \ \ $10
|
||||
\f[]
|
||||
.fi
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
$\ hledger\ \-f\ tt.j\ register\ checking
|
||||
$\ hledger\ \-f\ t.j\ register\ checking
|
||||
2015/06/01\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ assets:checking\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-10\ \ \ \ \ \ \ \ \ \ $\-10
|
||||
\f[]
|
||||
.fi
|
||||
.PP
|
||||
A posting date will use the year of the transaction date if unspecified.
|
||||
DATE should be a simple date; if the year is not specified it will use
|
||||
the year of the transaction\[aq]s date.
|
||||
You can set the secondary date similarly, with \f[C]date2:DATE2\f[].
|
||||
The \f[C]date:\f[] or \f[C]date2:\f[] tags must have a valid simple date
|
||||
value if they are present, eg a \f[C]date:\f[] tag with no value is not
|
||||
allowed.
|
||||
.PP
|
||||
You can also set the secondary date, with \f[C]date2:DATE2\f[].
|
||||
For compatibility, Ledger\[aq]s older posting date syntax is also
|
||||
supported: \f[C][DATE]\f[], \f[C][DATE=DATE2]\f[] or \f[C][=DATE2]\f[]
|
||||
in a posting comment.
|
||||
.PP
|
||||
When using any of these forms, be sure to provide a valid simple date or
|
||||
you\[aq]ll get a parse error.
|
||||
Eg a \f[C]date:\f[] tag with no value is not allowed.
|
||||
Ledger\[aq]s earlier, more compact bracketed date syntax is also
|
||||
supported: \f[C][DATE]\f[], \f[C][DATE=DATE2]\f[] or \f[C][=DATE2]\f[].
|
||||
hledger will attempt to parse any square\-bracketed sequence of the
|
||||
\f[C]0123456789/\-.=\f[] characters in this way.
|
||||
With this syntax, DATE infers its year from the transaction and DATE2
|
||||
infers its year from DATE.
|
||||
.SS Account names
|
||||
.PP
|
||||
Account names typically have several parts separated by a full colon,
|
||||
@ -189,67 +197,87 @@ five top\-level accounts: \f[C]assets\f[], \f[C]liabilities\f[],
|
||||
.PP
|
||||
Account names may contain single spaces, eg:
|
||||
\f[C]assets:accounts\ receivable\f[].
|
||||
Because of this, they must always be followed by at least two spaces (or
|
||||
newline).
|
||||
Because of this, they must always be followed by \f[B]two or more
|
||||
spaces\f[] (or newline).
|
||||
.PP
|
||||
Account names can be aliased.
|
||||
.SS Amounts
|
||||
.PP
|
||||
After the account name, there is usually an amount.
|
||||
Important: between account name and amount, there must be \f[B]two or
|
||||
more\f[] spaces.
|
||||
more spaces\f[].
|
||||
.PP
|
||||
The amount is a number, optionally with a currency symbol or commodity
|
||||
name on either the left or right.
|
||||
Negative amounts may have the minus sign either before or after the
|
||||
currency symbol (\f[C]\-$1\f[] or \f[C]$\-1\f[]).
|
||||
Commodity names which contain more than just letters should be enclosed
|
||||
in double quotes (\f[C]1\ "person\ hours"\f[]).
|
||||
.SS Decimal points and digit groups
|
||||
Amounts consist of a number and (usually) a currency symbol or commodity
|
||||
name.
|
||||
Some examples:
|
||||
.PP
|
||||
hledger supports flexible decimal point and digit group separator
|
||||
styles, to support international variations.
|
||||
Numbers can use either a period (\f[C]\&.\f[]) or a comma (\f[C],\f[])
|
||||
as decimal point.
|
||||
They can also have digit group separators at any position (eg thousands
|
||||
separators) which can be comma or period \- whichever one you did not
|
||||
use as a decimal point.
|
||||
If you use digit group separators, you must also include a decimal point
|
||||
in at least one number in the same commodity, so that hledger knows
|
||||
which character is which.
|
||||
Eg, write \f[C]$1,000.00\f[] or \f[C]$1.000,00\f[].
|
||||
.SS Amount display styles
|
||||
\f[C]2.00001\f[]
|
||||
.PD 0
|
||||
.P
|
||||
.PD
|
||||
\f[C]$1\f[]
|
||||
.PD 0
|
||||
.P
|
||||
.PD
|
||||
\f[C]4000\ AAPL\f[]
|
||||
.PD 0
|
||||
.P
|
||||
.PD
|
||||
\f[C]3\ "green\ apples"\f[]
|
||||
.PD 0
|
||||
.P
|
||||
.PD
|
||||
\f[C]\-$1,000,000.00\f[]
|
||||
.PD 0
|
||||
.P
|
||||
.PD
|
||||
\f[C]INR\ 9,99,99,999.00\f[]
|
||||
.PD 0
|
||||
.P
|
||||
.PD
|
||||
\f[C]EUR\ \-2.000.000,00\f[]
|
||||
.PP
|
||||
Based on how you format amounts, hledger will infer canonical display
|
||||
styles for each commodity, and use these when displaying amounts in that
|
||||
As you can see, the amount format is somewhat flexible:
|
||||
.IP \[bu] 2
|
||||
amounts are a number (the "quantity") and optionally a currency
|
||||
symbol/commodity name (the "commodity").
|
||||
.IP \[bu] 2
|
||||
the commodity is a symbol, word, or double\-quoted phrase, on the left
|
||||
or right, with or without a separating space
|
||||
.IP \[bu] 2
|
||||
negative amounts with a commodity on the left can have the minus sign
|
||||
before or after it
|
||||
.IP \[bu] 2
|
||||
digit groups (thousands, or any other grouping) can be separated by
|
||||
commas (in which case period is used for decimal point) or periods (in
|
||||
which case comma is used for decimal point)
|
||||
.PP
|
||||
You can use any of these variations when recording data, but when
|
||||
hledger displays amounts, it will choose a consistent format for each
|
||||
commodity.
|
||||
Amount styles include:
|
||||
(Except for price amounts, which are always formatted as written).
|
||||
The display format is chosen as follows:
|
||||
.IP \[bu] 2
|
||||
the position (left or right) and spacing (space or no separator) of the
|
||||
commodity symbol
|
||||
if there is a commodity directive specifying the format, that is used
|
||||
.IP \[bu] 2
|
||||
the digit group separator character (comma or period) and digit group
|
||||
sizes, if any
|
||||
otherwise the format is inferred from the first posting amount in that
|
||||
commodity in the journal, and the precision (number of decimal places)
|
||||
will be the maximum from all posting amounts in that commmodity
|
||||
.IP \[bu] 2
|
||||
the decimal point character (period or comma)
|
||||
.IP \[bu] 2
|
||||
the display precision (number of decimal places displayed)
|
||||
or if there are no such amounts in the journal, a default format is used
|
||||
(like \f[C]$1000.00\f[]).
|
||||
.PP
|
||||
The canonical style is generally the style of the first posting amount
|
||||
seen in a commodity.
|
||||
However the display precision will be the highest precision seen in all
|
||||
posting amounts in that commmodity.
|
||||
.PP
|
||||
The precisions used in a price amount, or a D directive, don\[aq]t
|
||||
affect the canonical display precision directly, but they can affect it
|
||||
indirectly, eg when D\[aq]s default commodity is applied to a
|
||||
commodity\-less amount or when an amountless posting is balanced using a
|
||||
price\[aq]s commodity (actually this last case does not influence the
|
||||
canonical display precision but probably should).
|
||||
Price amounts and amounts in D directives usually don\[aq]t affect
|
||||
amount format inference, but in some situations they can do so
|
||||
indirectly.
|
||||
(Eg when D\[aq]s default commodity is applied to a commodity\-less
|
||||
amount, or when an amountless posting is balanced using a price\[aq]s
|
||||
commodity, or when \-V is used.) If you find this causing problems, set
|
||||
the desired format with a commodity directive.
|
||||
.SS Virtual Postings
|
||||
.PP
|
||||
When you parenthesise the account name in a posting, that posting is
|
||||
considered \f[I]virtual\f[], which means:
|
||||
When you parenthesise the account name in a posting, we call that a
|
||||
\f[I]virtual posting\f[], which means:
|
||||
.IP \[bu] 2
|
||||
it is ignored when checking that the transaction is balanced
|
||||
.IP \[bu] 2
|
||||
@ -265,20 +293,28 @@ needing to use the \f[C]equity:opening\ balances\f[] account:
|
||||
\ \ (assets:checking)\ \ \ $1000
|
||||
\f[]
|
||||
.fi
|
||||
.SS Balanced Virtual Postings
|
||||
.PP
|
||||
When the account name is bracketed, the posting is \f[I]balanced
|
||||
virtual\f[], which is just like a virtual posting except the balanced
|
||||
virtual postings in a transaction must balance to 0, like the real
|
||||
postings (but separately from them).
|
||||
When the account name is bracketed, we call it a \f[I]balanced virtual
|
||||
posting\f[].
|
||||
This is like an ordinary virtual posting except the balanced virtual
|
||||
postings in a transaction must balance to 0, like the real postings (but
|
||||
separately from them).
|
||||
Balanced virtual postings are also excluded by \f[C]\-\-real/\-R\f[] or
|
||||
\f[C]real:1\f[].
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
1/1\ buy\ food\ with\ cash,\ and\ update\ some\ budget\-tracking\ subaccounts\ elsewhere
|
||||
\ \ expenses:food\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $10
|
||||
\ \ assets:cash\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-10
|
||||
\ \ [assets:checking:available]\ \ \ \ \ $10
|
||||
\ \ [assets:checking:budget:food]\ \ $\-10
|
||||
\f[]
|
||||
.fi
|
||||
.PP
|
||||
Virtual postings are a feature inherited from Ledger can can
|
||||
occasionally be useful, but they can be a crutch and you should think
|
||||
twice or three times before using them.
|
||||
You can almost always find an equivalent journal entry using two or more
|
||||
real postings that will be more correct and more error\-proof.
|
||||
Virtual postings have some legitimate uses, but those are few.
|
||||
You can usually find an equivalent journal entry using real postings,
|
||||
which is more correct and provides better error checking.
|
||||
.SS Balance Assertions
|
||||
.PP
|
||||
hledger supports ledger\-style balance assertions in journal files.
|
||||
@ -547,7 +583,7 @@ posting\-tag):
|
||||
.fi
|
||||
.PP
|
||||
Tags are like Ledger\[aq]s metadata feature, except hledger\[aq]s tag
|
||||
values are always simple strings.
|
||||
values are simple strings.
|
||||
.SS Directives
|
||||
.SS Account aliases
|
||||
.PP
|
||||
@ -721,46 +757,50 @@ spellings were also supported.
|
||||
A line containing just \f[C]comment\f[] starts a multi\-line comment,
|
||||
and a line containing just \f[C]end\ comment\f[] ends it.
|
||||
See comments.
|
||||
.SS commodity directive
|
||||
.PP
|
||||
The \f[C]commodity\f[] directive predefines commodities (currently this
|
||||
is just informational), and also it may define the display format for
|
||||
amounts in this commodity (overriding the automatically inferred
|
||||
format).
|
||||
.PP
|
||||
It may be written on a single line, like this:
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
;\ commodity\ EXAMPLEAMOUNT
|
||||
|
||||
;\ display\ AAAA\ amounts\ with\ the\ symbol\ on\ the\ right,\ space\-separated,
|
||||
;\ using\ period\ as\ decimal\ point,\ with\ four\ decimal\ places,\ and
|
||||
;\ separating\ thousands\ with\ comma.
|
||||
commodity\ 1,000.0000\ AAAA
|
||||
\f[]
|
||||
.fi
|
||||
.PP
|
||||
or on multiple lines, using the "format" subdirective.
|
||||
In this case the commodity symbol appears twice and should be the same
|
||||
in both places:
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
;\ commodity\ SYMBOL
|
||||
;\ \ \ format\ EXAMPLEAMOUNT
|
||||
|
||||
;\ display\ indian\ rupees\ with\ currency\ name\ on\ the\ left,
|
||||
;\ thousands,\ lakhs\ and\ crores\ comma\-separated,
|
||||
;\ period\ as\ decimal\ point,\ and\ two\ decimal\ places.
|
||||
commodity\ INR
|
||||
\ \ format\ INR\ 9,99,99,999.00
|
||||
\f[]
|
||||
.fi
|
||||
.SS Default commodity
|
||||
.PP
|
||||
You can set a default commodity, to be used for amounts without one.
|
||||
Use the D directive with a sample amount.
|
||||
The commodity (and the sample amount\[aq]s display style) will be
|
||||
The commodity (and the sample amount\[aq]s display format) will be
|
||||
applied to all subsequent commodity\-less amounts, up to the next D
|
||||
directive.
|
||||
(Note this is different from Ledger\[aq]s default commodity directive.)
|
||||
.PP
|
||||
Also note the directive itself does not influence the commodity\[aq]s
|
||||
default display style, but the amount it is applied to might.
|
||||
Here\[aq]s an example:
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
;\ set\ £\ as\ the\ default\ commodity
|
||||
D\ £1,000.00
|
||||
|
||||
2010/1/1
|
||||
\ \ a\ \ 2340
|
||||
\ \ b
|
||||
|
||||
2014/1/1
|
||||
\ \ c\ \ £1000
|
||||
\ \ d
|
||||
\f[]
|
||||
.fi
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
$\ hledger\ print
|
||||
2010/01/01
|
||||
\ \ \ \ a\ \ \ \ \ £2,340.00
|
||||
\ \ \ \ b\ \ \ \ £\-2,340.00
|
||||
|
||||
2014/01/01
|
||||
\ \ \ \ c\ \ \ \ \ £1,000.00
|
||||
\ \ \ \ d\ \ \ \ £\-1,000.00
|
||||
\f[]
|
||||
.fi
|
||||
.SS Default year
|
||||
.PP
|
||||
You can set a default year to be used for subsequent dates which
|
||||
@ -800,12 +840,10 @@ include\ path/to/file.journal
|
||||
.PP
|
||||
If the path does not begin with a slash, it is relative to the current
|
||||
file.
|
||||
.PP
|
||||
Glob patterns (\f[C]*\f[]) are not currently supported.
|
||||
.PP
|
||||
The \f[C]include\f[] directive may only be used in journal files, and
|
||||
currently it may only include other journal files (eg, not CSV or
|
||||
timeclock files.)
|
||||
The \f[C]include\f[] directive can only be used in journal files.
|
||||
It can include journal, timeclock or timedot files, but not CSV files.
|
||||
.SH EDITOR SUPPORT
|
||||
.PP
|
||||
Add\-on modes exist for various text editors, to make working with
|
||||
|
@ -119,11 +119,11 @@ File: hledger_journal.5.info, Node: Simple dates, Next: Secondary dates, Up:
|
||||
------------------
|
||||
|
||||
Within a journal file, transaction dates use Y/M/D (or Y-M-D or Y.M.D)
|
||||
Leading zeroes are optional. The year may be omitted, in which case it
|
||||
defaults to the current year, or you can set the default year with a
|
||||
default year directive.
|
||||
|
||||
Some examples: `2010/01/31', `1/31', `2010-01-31', `2010.1.31'.
|
||||
Leading zeros are optional. The year may be omitted, in which case it
|
||||
will be inferred from the context - the current transaction, the default
|
||||
year set with a default year directive, or the current date when the
|
||||
command is run. Some examples: `2010/01/31', `1/31', `2010-01-31',
|
||||
`2010.1.31'.
|
||||
|
||||
|
||||
File: hledger_journal.5.info, Node: Secondary dates, Next: Posting dates, Prev: Simple dates, Up: Dates
|
||||
@ -133,15 +133,19 @@ File: hledger_journal.5.info, Node: Secondary dates, Next: Posting dates, Pre
|
||||
|
||||
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
|
||||
want to model this, eg for more accurate balances, write both dates
|
||||
separated by an equals sign. The _primary date_, on the left, is used
|
||||
by default; the _secondary date_, on the right, is used when the
|
||||
`--date2' flag is specified (For Ledger compatibility, `--aux-date' or
|
||||
`--effective' also work.)
|
||||
want to model this, eg for more accurate balances, you can specify
|
||||
individual #posting-dates, which I recommend. Or, you can use the
|
||||
secondary dates (aka auxiliary/effective dates) feature, supported for
|
||||
compatibility with Ledger.
|
||||
|
||||
Their meaning is up to you, but it's best to follow a consistent
|
||||
rule. Eg write the bank's clearing date as primary, and when needed,
|
||||
the date the transaction was initiated as secondary.
|
||||
A secondary date can be written after the primary date, separated by
|
||||
an equals sign. The primary date, on the left, is used by default; the
|
||||
secondary date, on the right, is used when the `--date2' flag is
|
||||
specified (`--aux-date' or `--effective' also work).
|
||||
|
||||
The meaning of secondary dates is up to you, but it's best to follow
|
||||
a consistent rule. Eg write the bank's clearing date as primary, and
|
||||
when needed, the date the transaction was initiated as secondary.
|
||||
|
||||
Here's an example. Note that a secondary date will use the year of
|
||||
the primary date if unspecified.
|
||||
@ -159,10 +163,11 @@ $ hledger register checking
|
||||
$ hledger register checking --date2
|
||||
2010/02/19 movie ticket assets:checking $-10 $-10
|
||||
|
||||
Secondary dates require some effort: you must use them consistently
|
||||
Secondary dates require some effort; you must use them consistently
|
||||
in your journal entries and remember whether to use or not use the
|
||||
`--date2' flag for your reports. Arguably they are now obsolete,
|
||||
superseded by...
|
||||
`--date2' flag for your reports. They are included in hledger for
|
||||
Ledger compatibility, but posting dates are a more powerful and less
|
||||
confusing alternative.
|
||||
|
||||
|
||||
File: hledger_journal.5.info, Node: Posting dates, Prev: Secondary dates, Up: Dates
|
||||
@ -171,11 +176,11 @@ File: hledger_journal.5.info, Node: Posting dates, Prev: Secondary dates, Up:
|
||||
-------------------
|
||||
|
||||
You can give individual postings a different date from their parent
|
||||
transaction, by adding a posting tag (see below) like `date:DATE',
|
||||
where DATE is a simple date. This is probably the best way to control
|
||||
posting dates precisely. Eg in this example the expense should appear in
|
||||
May reports, and the deduction from checking should be reported on 6/1
|
||||
for easy bank reconciliation:
|
||||
transaction, by adding a posting comment containing a tag (see below)
|
||||
like `date:DATE'. This is probably the best way to control posting
|
||||
dates precisely. Eg in this example the expense should appear in May
|
||||
reports, and the deduction from checking should be reported on 6/1 for
|
||||
easy bank reconciliation:
|
||||
|
||||
|
||||
2015/5/30
|
||||
@ -183,23 +188,24 @@ for easy bank reconciliation:
|
||||
assets:checking ; bank cleared it on monday, date:6/1
|
||||
|
||||
|
||||
$ hledger -f tt.j register food
|
||||
$ hledger -f t.j register food
|
||||
2015/05/30 expenses:food $10 $10
|
||||
|
||||
|
||||
$ hledger -f tt.j register checking
|
||||
$ hledger -f t.j register checking
|
||||
2015/06/01 assets:checking $-10 $-10
|
||||
|
||||
A posting date will use the year of the transaction date if
|
||||
unspecified.
|
||||
DATE should be a simple date; if the year is not specified it will
|
||||
use the year of the transaction's date. You can set the secondary date
|
||||
similarly, with `date2:DATE2'. The `date:' or `date2:' tags must have a
|
||||
valid simple date value if they are present, eg a `date:' tag with no
|
||||
value is not allowed.
|
||||
|
||||
You can also set the secondary date, with `date2:DATE2'. For
|
||||
compatibility, Ledger's older posting date syntax is also supported:
|
||||
`[DATE]', `[DATE=DATE2]' or `[=DATE2]' in a posting comment.
|
||||
|
||||
When using any of these forms, be sure to provide a valid simple
|
||||
date or you'll get a parse error. Eg a `date:' tag with no value is not
|
||||
allowed.
|
||||
Ledger's earlier, more compact bracketed date syntax is also
|
||||
supported: `[DATE]', `[DATE=DATE2]' or `[=DATE2]'. hledger will attempt
|
||||
to parse any square-bracketed sequence of the `0123456789/-.='
|
||||
characters in this way. With this syntax, DATE infers its year from the
|
||||
transaction and DATE2 infers its year from DATE.
|
||||
|
||||
|
||||
File: hledger_journal.5.info, Node: Account names, Next: Amounts, Prev: Dates, Up: FILE FORMAT
|
||||
@ -213,8 +219,8 @@ anything you like, but in finance there are traditionally five top-level
|
||||
accounts: `assets', `liabilities', `income', `expenses', and `equity'.
|
||||
|
||||
Account names may contain single spaces, eg: `assets:accounts
|
||||
receivable'. Because of this, they must always be followed by at least
|
||||
two spaces (or newline).
|
||||
receivable'. Because of this, they must always be followed by *two or
|
||||
more spaces* (or newline).
|
||||
|
||||
Account names can be aliased.
|
||||
|
||||
@ -225,65 +231,56 @@ File: hledger_journal.5.info, Node: Amounts, Next: Virtual Postings, Prev: Ac
|
||||
===========
|
||||
|
||||
After the account name, there is usually an amount. Important: between
|
||||
account name and amount, there must be *two or more* spaces.
|
||||
account name and amount, there must be *two or more spaces*.
|
||||
|
||||
The amount is a number, optionally with a currency symbol or
|
||||
commodity name on either the left or right. Negative amounts may have
|
||||
the minus sign either before or after the currency symbol (`-$1' or
|
||||
`$-1'). Commodity names which contain more than just letters should be
|
||||
enclosed in double quotes (`1 "person hours"').
|
||||
Amounts consist of a number and (usually) a currency symbol or
|
||||
commodity name. Some examples:
|
||||
|
||||
* Menu:
|
||||
`2.00001'
|
||||
`$1'
|
||||
`4000 AAPL'
|
||||
`3 "green apples"'
|
||||
`-$1,000,000.00'
|
||||
`INR 9,99,99,999.00'
|
||||
`EUR -2.000.000,00'
|
||||
|
||||
* Decimal points and digit groups::
|
||||
* Amount display styles::
|
||||
As you can see, the amount format is somewhat flexible:
|
||||
|
||||
|
||||
File: hledger_journal.5.info, Node: Decimal points and digit groups, Next: Amount display styles, Up: Amounts
|
||||
* amounts are a number (the "quantity") and optionally a currency
|
||||
symbol/commodity name (the "commodity").
|
||||
|
||||
1.4.1 Decimal points and digit groups
|
||||
-------------------------------------
|
||||
* the commodity is a symbol, word, or double-quoted phrase, on the
|
||||
left or right, with or without a separating space
|
||||
|
||||
hledger supports flexible decimal point and digit group separator
|
||||
styles, to support international variations. Numbers can use either a
|
||||
period (`.') or a comma (`,') as decimal point. They can also have
|
||||
digit group separators at any position (eg thousands separators) which
|
||||
can be comma or period - whichever one you did not use as a decimal
|
||||
point. If you use digit group separators, you must also include a
|
||||
decimal point in at least one number in the same commodity, so that
|
||||
hledger knows which character is which. Eg, write `$1,000.00' or
|
||||
`$1.000,00'.
|
||||
* negative amounts with a commodity on the left can have the minus
|
||||
sign before or after it
|
||||
|
||||
|
||||
File: hledger_journal.5.info, Node: Amount display styles, Prev: Decimal points and digit groups, Up: Amounts
|
||||
* digit groups (thousands, or any other grouping) can be separated by
|
||||
commas (in which case period is used for decimal point) or periods
|
||||
(in which case comma is used for decimal point)
|
||||
|
||||
1.4.2 Amount display styles
|
||||
---------------------------
|
||||
You can use any of these variations when recording data, but when
|
||||
hledger displays amounts, it will choose a consistent format for each
|
||||
commodity. (Except for price amounts, which are always formatted as
|
||||
written). The display format is chosen as follows:
|
||||
|
||||
Based on how you format amounts, hledger will infer canonical display
|
||||
styles for each commodity, and use these when displaying amounts in that
|
||||
commodity. Amount styles include:
|
||||
* if there is a commodity directive specifying the format, that is
|
||||
used
|
||||
|
||||
* the position (left or right) and spacing (space or no separator)
|
||||
of the commodity symbol
|
||||
* otherwise the format is inferred from the first posting amount in
|
||||
that commodity in the journal, and the precision (number of
|
||||
decimal places) will be the maximum from all posting amounts in
|
||||
that commmodity
|
||||
|
||||
* the digit group separator character (comma or period) and digit
|
||||
group sizes, if any
|
||||
* or if there are no such amounts in the journal, a default format
|
||||
is used (like `$1000.00').
|
||||
|
||||
* the decimal point character (period or comma)
|
||||
|
||||
* the display precision (number of decimal places displayed)
|
||||
|
||||
The canonical style is generally the style of the first posting
|
||||
amount seen in a commodity. However the display precision will be the
|
||||
highest precision seen in all posting amounts in that commmodity.
|
||||
|
||||
The precisions used in a price amount, or a D directive, don't affect
|
||||
the canonical display precision directly, but they can affect it
|
||||
indirectly, eg when D's default commodity is applied to a commodity-less
|
||||
amount or when an amountless posting is balanced using a price's
|
||||
commodity (actually this last case does not influence the canonical
|
||||
display precision but probably should).
|
||||
Price amounts and amounts in D directives usually don't affect amount
|
||||
format inference, but in some situations they can do so indirectly. (Eg
|
||||
when D's default commodity is applied to a commodity-less amount, or
|
||||
when an amountless posting is balanced using a price's commodity, or
|
||||
when -V is used.) If you find this causing problems, set the desired
|
||||
format with a commodity directive.
|
||||
|
||||
|
||||
File: hledger_journal.5.info, Node: Virtual Postings, Next: Balance Assertions, Prev: Amounts, Up: FILE FORMAT
|
||||
@ -291,8 +288,8 @@ File: hledger_journal.5.info, Node: Virtual Postings, Next: Balance Assertions
|
||||
1.5 Virtual Postings
|
||||
====================
|
||||
|
||||
When you parenthesise the account name in a posting, that posting is
|
||||
considered _virtual_, which means:
|
||||
When you parenthesise the account name in a posting, we call that a
|
||||
_virtual posting_, which means:
|
||||
|
||||
* it is ignored when checking that the transaction is balanced
|
||||
|
||||
@ -306,27 +303,22 @@ needing to use the `equity:opening balances' account:
|
||||
1/1 special unbalanced posting to set initial balance
|
||||
(assets:checking) $1000
|
||||
|
||||
* Menu:
|
||||
When the account name is bracketed, we call it a _balanced virtual
|
||||
posting_. This is like an ordinary virtual posting except the balanced
|
||||
virtual postings in a transaction must balance to 0, like the real
|
||||
postings (but separately from them). Balanced virtual postings are also
|
||||
excluded by `--real/-R' or `real:1'.
|
||||
|
||||
* Balanced Virtual Postings::
|
||||
|
||||
|
||||
File: hledger_journal.5.info, Node: Balanced Virtual Postings, Up: Virtual Postings
|
||||
1/1 buy food with cash, and update some budget-tracking subaccounts elsewhere
|
||||
expenses:food $10
|
||||
assets:cash $-10
|
||||
[assets:checking:available] $10
|
||||
[assets:checking:budget:food] $-10
|
||||
|
||||
1.5.1 Balanced Virtual Postings
|
||||
-------------------------------
|
||||
|
||||
When the account name is bracketed, the posting is _balanced virtual_,
|
||||
which is just like a virtual posting except the balanced virtual
|
||||
postings in a transaction must balance to 0, like the real postings
|
||||
(but separately from them). Balanced virtual postings are also excluded
|
||||
by `--real/-R' or `real:1'.
|
||||
|
||||
Virtual postings are a feature inherited from Ledger can can
|
||||
occasionally be useful, but they can be a crutch and you should think
|
||||
twice or three times before using them. You can almost always find an
|
||||
equivalent journal entry using two or more real postings that will be
|
||||
more correct and more error-proof.
|
||||
Virtual postings have some legitimate uses, but those are few. You
|
||||
can usually find an equivalent journal entry using real postings, which
|
||||
is more correct and provides better error checking.
|
||||
|
||||
|
||||
File: hledger_journal.5.info, Node: Balance Assertions, Next: Prices, Prev: Virtual Postings, Up: FILE FORMAT
|
||||
@ -602,7 +594,7 @@ and the posting has four (A, TAG2, third-tag, posting-tag):
|
||||
(a) $1 ; posting-tag:
|
||||
|
||||
Tags are like Ledger's metadata feature, except hledger's tag values
|
||||
are always simple strings.
|
||||
are simple strings.
|
||||
|
||||
|
||||
File: hledger_journal.5.info, Node: Directives, Prev: Tags, Up: FILE FORMAT
|
||||
@ -616,6 +608,7 @@ File: hledger_journal.5.info, Node: Directives, Prev: Tags, Up: FILE FORMAT
|
||||
* account directive::
|
||||
* apply account directive::
|
||||
* Multi-line comments::
|
||||
* commodity directive::
|
||||
* Default commodity::
|
||||
* Default year::
|
||||
* Including other files::
|
||||
@ -791,7 +784,7 @@ include personal.journal
|
||||
also supported.
|
||||
|
||||
|
||||
File: hledger_journal.5.info, Node: Multi-line comments, Next: Default commodity, Prev: apply account directive, Up: Directives
|
||||
File: hledger_journal.5.info, Node: Multi-line comments, Next: commodity directive, Prev: apply account directive, Up: Directives
|
||||
|
||||
1.10.4 Multi-line comments
|
||||
--------------------------
|
||||
@ -800,47 +793,56 @@ A line containing just `comment' starts a multi-line comment, and a
|
||||
line containing just `end comment' ends it. See comments.
|
||||
|
||||
|
||||
File: hledger_journal.5.info, Node: Default commodity, Next: Default year, Prev: Multi-line comments, Up: Directives
|
||||
File: hledger_journal.5.info, Node: commodity directive, Next: Default commodity, Prev: Multi-line comments, Up: Directives
|
||||
|
||||
1.10.5 Default commodity
|
||||
1.10.5 commodity directive
|
||||
--------------------------
|
||||
|
||||
The `commodity' directive predefines commodities (currently this is
|
||||
just informational), and also it may define the display format for
|
||||
amounts in this commodity (overriding the automatically inferred
|
||||
format).
|
||||
|
||||
It may be written on a single line, like this:
|
||||
|
||||
|
||||
; commodity EXAMPLEAMOUNT
|
||||
|
||||
; display AAAA amounts with the symbol on the right, space-separated,
|
||||
; using period as decimal point, with four decimal places, and
|
||||
; separating thousands with comma.
|
||||
commodity 1,000.0000 AAAA
|
||||
|
||||
or on multiple lines, using the "format" subdirective. In this case
|
||||
the commodity symbol appears twice and should be the same in both
|
||||
places:
|
||||
|
||||
|
||||
; commodity SYMBOL
|
||||
; format EXAMPLEAMOUNT
|
||||
|
||||
; display indian rupees with currency name on the left,
|
||||
; thousands, lakhs and crores comma-separated,
|
||||
; period as decimal point, and two decimal places.
|
||||
commodity INR
|
||||
format INR 9,99,99,999.00
|
||||
|
||||
|
||||
File: hledger_journal.5.info, Node: Default commodity, Next: Default year, Prev: commodity directive, Up: Directives
|
||||
|
||||
1.10.6 Default commodity
|
||||
------------------------
|
||||
|
||||
You can set a default commodity, to be used for amounts without one. Use
|
||||
the D directive with a sample amount. The commodity (and the sample
|
||||
amount's display style) will be applied to all subsequent commodity-less
|
||||
amounts, up to the next D directive. (Note this is different from
|
||||
Ledger's default commodity directive.)
|
||||
|
||||
Also note the directive itself does not influence the commodity's
|
||||
default display style, but the amount it is applied to might. Here's an
|
||||
example:
|
||||
|
||||
|
||||
; set £ as the default commodity
|
||||
D £1,000.00
|
||||
|
||||
2010/1/1
|
||||
a 2340
|
||||
b
|
||||
|
||||
2014/1/1
|
||||
c £1000
|
||||
d
|
||||
|
||||
|
||||
$ hledger print
|
||||
2010/01/01
|
||||
a £2,340.00
|
||||
b £-2,340.00
|
||||
|
||||
2014/01/01
|
||||
c £1,000.00
|
||||
d £-1,000.00
|
||||
amount's display format) will be applied to all subsequent
|
||||
commodity-less amounts, up to the next D directive. (Note this is
|
||||
different from Ledger's default commodity directive.)
|
||||
|
||||
|
||||
File: hledger_journal.5.info, Node: Default year, Next: Including other files, Prev: Default commodity, Up: Directives
|
||||
|
||||
1.10.6 Default year
|
||||
1.10.7 Default year
|
||||
-------------------
|
||||
|
||||
You can set a default year to be used for subsequent dates which don't
|
||||
@ -867,7 +869,7 @@ Y2010 ; change default year to 2010
|
||||
|
||||
File: hledger_journal.5.info, Node: Including other files, Prev: Default year, Up: Directives
|
||||
|
||||
1.10.7 Including other files
|
||||
1.10.8 Including other files
|
||||
----------------------------
|
||||
|
||||
You can pull in the content of additional journal files by writing an
|
||||
@ -877,13 +879,10 @@ include directive, like this:
|
||||
include path/to/file.journal
|
||||
|
||||
If the path does not begin with a slash, it is relative to the
|
||||
current file.
|
||||
current file. Glob patterns (`*') are not currently supported.
|
||||
|
||||
Glob patterns (`*') are not currently supported.
|
||||
|
||||
The `include' directive may only be used in journal files, and
|
||||
currently it may only include other journal files (eg, not CSV or
|
||||
timeclock files.)
|
||||
The `include' directive can only be used in journal files. It can
|
||||
include journal, timeclock or timedot files, but not CSV files.
|
||||
|
||||
|
||||
File: hledger_journal.5.info, Node: EDITOR SUPPORT, Prev: FILE FORMAT, Up: Top
|
||||
@ -917,67 +916,63 @@ Node: Dates3351
|
||||
Ref: #dates3479
|
||||
Node: Simple dates3544
|
||||
Ref: #simple-dates3672
|
||||
Node: Secondary dates3976
|
||||
Ref: #secondary-dates4132
|
||||
Node: Posting dates5408
|
||||
Ref: #posting-dates5539
|
||||
Node: Account names6715
|
||||
Ref: #account-names6854
|
||||
Node: Amounts7338
|
||||
Ref: #amounts7476
|
||||
Node: Decimal points and digit groups8003
|
||||
Ref: #decimal-points-and-digit-groups8196
|
||||
Node: Amount display styles8751
|
||||
Ref: #amount-display-styles8924
|
||||
Node: Virtual Postings10003
|
||||
Ref: #virtual-postings10164
|
||||
Node: Balanced Virtual Postings10683
|
||||
Ref: #balanced-virtual-postings10837
|
||||
Node: Balance Assertions11452
|
||||
Ref: #balance-assertions11616
|
||||
Node: Assertions and ordering12438
|
||||
Ref: #assertions-and-ordering12623
|
||||
Node: Assertions and commodities13654
|
||||
Ref: #assertions-and-commodities13880
|
||||
Node: Assertions and subaccounts14572
|
||||
Ref: #assertions-and-subaccounts14806
|
||||
Node: Assertions and virtual postings15328
|
||||
Ref: #assertions-and-virtual-postings15537
|
||||
Node: Prices15678
|
||||
Ref: #prices15810
|
||||
Node: Transaction prices15861
|
||||
Ref: #transaction-prices16006
|
||||
Node: Market prices17613
|
||||
Ref: #market-prices17748
|
||||
Node: Comments18636
|
||||
Ref: #comments18758
|
||||
Node: Tags19870
|
||||
Ref: #tags19988
|
||||
Node: Directives20918
|
||||
Ref: #directives21033
|
||||
Node: Account aliases21202
|
||||
Ref: #account-aliases21348
|
||||
Node: Basic aliases21950
|
||||
Ref: #basic-aliases22095
|
||||
Node: Regex aliases22783
|
||||
Ref: #regex-aliases22953
|
||||
Node: Multiple aliases23723
|
||||
Ref: #multiple-aliases23897
|
||||
Node: end aliases24393
|
||||
Ref: #end-aliases24535
|
||||
Node: account directive24637
|
||||
Ref: #account-directive24819
|
||||
Node: apply account directive25115
|
||||
Ref: #apply-account-directive25313
|
||||
Node: Multi-line comments25974
|
||||
Ref: #multi-line-comments26164
|
||||
Node: Default commodity26291
|
||||
Ref: #default-commodity26466
|
||||
Node: Default year27161
|
||||
Ref: #default-year27328
|
||||
Node: Including other files27751
|
||||
Ref: #including-other-files27910
|
||||
Node: EDITOR SUPPORT28327
|
||||
Ref: #editor-support28447
|
||||
Node: Secondary dates4036
|
||||
Ref: #secondary-dates4192
|
||||
Node: Posting dates5753
|
||||
Ref: #posting-dates5884
|
||||
Node: Account names7255
|
||||
Ref: #account-names7394
|
||||
Node: Amounts7879
|
||||
Ref: #amounts8017
|
||||
Node: Virtual Postings10015
|
||||
Ref: #virtual-postings10176
|
||||
Node: Balance Assertions11396
|
||||
Ref: #balance-assertions11560
|
||||
Node: Assertions and ordering12382
|
||||
Ref: #assertions-and-ordering12567
|
||||
Node: Assertions and commodities13598
|
||||
Ref: #assertions-and-commodities13824
|
||||
Node: Assertions and subaccounts14516
|
||||
Ref: #assertions-and-subaccounts14750
|
||||
Node: Assertions and virtual postings15272
|
||||
Ref: #assertions-and-virtual-postings15481
|
||||
Node: Prices15622
|
||||
Ref: #prices15754
|
||||
Node: Transaction prices15805
|
||||
Ref: #transaction-prices15950
|
||||
Node: Market prices17557
|
||||
Ref: #market-prices17692
|
||||
Node: Comments18580
|
||||
Ref: #comments18702
|
||||
Node: Tags19814
|
||||
Ref: #tags19932
|
||||
Node: Directives20855
|
||||
Ref: #directives20970
|
||||
Node: Account aliases21163
|
||||
Ref: #account-aliases21309
|
||||
Node: Basic aliases21911
|
||||
Ref: #basic-aliases22056
|
||||
Node: Regex aliases22744
|
||||
Ref: #regex-aliases22914
|
||||
Node: Multiple aliases23684
|
||||
Ref: #multiple-aliases23858
|
||||
Node: end aliases24354
|
||||
Ref: #end-aliases24496
|
||||
Node: account directive24598
|
||||
Ref: #account-directive24780
|
||||
Node: apply account directive25076
|
||||
Ref: #apply-account-directive25274
|
||||
Node: Multi-line comments25935
|
||||
Ref: #multi-line-comments26127
|
||||
Node: commodity directive26254
|
||||
Ref: #commodity-directive26440
|
||||
Node: Default commodity27313
|
||||
Ref: #default-commodity27488
|
||||
Node: Default year27809
|
||||
Ref: #default-year27976
|
||||
Node: Including other files28399
|
||||
Ref: #including-other-files28558
|
||||
Node: EDITOR SUPPORT28954
|
||||
Ref: #editor-support29074
|
||||
|
||||
End Tag Table
|
||||
|
@ -75,24 +75,28 @@ FFIILLEE FFOORRMMAATT
|
||||
DDaatteess
|
||||
SSiimmppllee ddaatteess
|
||||
Within a journal file, transaction dates use Y/M/D (or Y-M-D or Y.M.D)
|
||||
Leading zeroes are optional. The year may be omitted, in which case it
|
||||
defaults to the current year, or you can set the default year with a
|
||||
default year directive.
|
||||
|
||||
Some examples: 2010/01/31, 1/31, 2010-01-31, 2010.1.31.
|
||||
Leading zeros are optional. The year may be omitted, in which case it
|
||||
will be inferred from the context - the current transaction, the
|
||||
default year set with a default year directive, or the current date
|
||||
when the command is run. Some examples: 2010/01/31, 1/31, 2010-01-31,
|
||||
2010.1.31.
|
||||
|
||||
SSeeccoonnddaarryy ddaatteess
|
||||
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
|
||||
want to model this, eg for more accurate balances, write both dates
|
||||
separated by an equals sign. The _p_r_i_m_a_r_y _d_a_t_e, on the left, is used by
|
||||
default; the _s_e_c_o_n_d_a_r_y _d_a_t_e, on the right, is used when the --date2
|
||||
flag is specified (For Ledger compatibility, --aux-date or --effective
|
||||
also work.)
|
||||
want to model this, eg for more accurate balances, you can specify
|
||||
individual #posting-dates, which I recommend. Or, you can use the sec-
|
||||
ondary dates (aka auxiliary/effective dates) feature, supported for
|
||||
compatibility with Ledger.
|
||||
|
||||
Their meaning is up to you, but it's best to follow a consistent rule.
|
||||
Eg write the bank's clearing date as primary, and when needed, the date
|
||||
the transaction was initiated as secondary.
|
||||
A secondary date can be written after the primary date, separated by an
|
||||
equals sign. The primary date, on the left, is used by default; the
|
||||
secondary date, on the right, is used when the --date2 flag is speci-
|
||||
fied (--aux-date or --effective also work).
|
||||
|
||||
The meaning of secondary dates is up to you, but it's best to follow a
|
||||
consistent rule. Eg write the bank's clearing date as primary, and
|
||||
when needed, the date the transaction was initiated as secondary.
|
||||
|
||||
Here's an example. Note that a secondary date will use the year of the
|
||||
primary date if unspecified.
|
||||
@ -107,39 +111,41 @@ FFIILLEE FFOORRMMAATT
|
||||
$ hledger register checking --date2
|
||||
2010/02/19 movie ticket assets:checking $-10 $-10
|
||||
|
||||
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
|
||||
flag for your reports. Arguably they are now obsolete, superseded
|
||||
by...
|
||||
flag for your reports. They are included in hledger for Ledger compat-
|
||||
ibility, but posting dates are a more powerful and less confusing
|
||||
alternative.
|
||||
|
||||
PPoossttiinngg ddaatteess
|
||||
You can give individual postings a different date from their parent
|
||||
transaction, by adding a posting tag (see below) like date:DATE, where
|
||||
DATE is a simple date. This is probably the best way to control post-
|
||||
ing dates precisely. Eg in this example the expense should appear in
|
||||
May reports, and the deduction from checking should be reported on 6/1
|
||||
for easy bank reconciliation:
|
||||
You can give individual postings a different date from their parent
|
||||
transaction, by adding a posting comment containing a tag (see below)
|
||||
like date:DATE. This is probably the best way to control posting dates
|
||||
precisely. Eg in this example the expense should appear in May
|
||||
reports, and the deduction from checking should be reported on 6/1 for
|
||||
easy bank reconciliation:
|
||||
|
||||
2015/5/30
|
||||
expenses:food $10 ; food purchased on saturday 5/30
|
||||
assets:checking ; bank cleared it on monday, date:6/1
|
||||
|
||||
$ hledger -f tt.j register food
|
||||
$ hledger -f t.j register food
|
||||
2015/05/30 expenses:food $10 $10
|
||||
|
||||
$ hledger -f tt.j register checking
|
||||
$ hledger -f t.j register checking
|
||||
2015/06/01 assets:checking $-10 $-10
|
||||
|
||||
A posting date will use the year of the transaction date if unspeci-
|
||||
fied.
|
||||
DATE should be a simple date; if the year is not specified it will use
|
||||
the year of the transaction's date. You can set the secondary date
|
||||
similarly, with date2:DATE2. The date: or date2: tags must have a
|
||||
valid simple date value if they are present, eg a date: tag with no
|
||||
value is not allowed.
|
||||
|
||||
You can also set the secondary date, with date2:DATE2. For compatibil-
|
||||
ity, Ledger's older posting date syntax is also supported: [DATE],
|
||||
[DATE=DATE2] or [=DATE2] in a posting comment.
|
||||
|
||||
When using any of these forms, be sure to provide a valid simple date
|
||||
or you'll get a parse error. Eg a date: tag with no value is not
|
||||
allowed.
|
||||
Ledger's earlier, more compact bracketed date syntax is also supported:
|
||||
[DATE], [DATE=DATE2] or [=DATE2]. hledger will attempt to parse any
|
||||
square-bracketed sequence of the 0123456789/-.= characters in this way.
|
||||
With this syntax, DATE infers its year from the transaction and DATE2
|
||||
infers its year from DATE.
|
||||
|
||||
AAccccoouunntt nnaammeess
|
||||
Account names typically have several parts separated by a full colon,
|
||||
@ -148,89 +154,98 @@ FFIILLEE FFOORRMMAATT
|
||||
top-level accounts: assets, liabilities, income, expenses, and equity.
|
||||
|
||||
Account names may contain single spaces, eg: assets:accounts receiv-
|
||||
able. Because of this, they must always be followed by at least two
|
||||
spaces (or newline).
|
||||
able. Because of this, they must always be followed by ttwwoo oorr mmoorree
|
||||
ssppaacceess (or newline).
|
||||
|
||||
Account names can be aliased.
|
||||
|
||||
AAmmoouunnttss
|
||||
After the account name, there is usually an amount. Important: between
|
||||
account name and amount, there must be ttwwoo oorr mmoorree spaces.
|
||||
account name and amount, there must be ttwwoo oorr mmoorree ssppaacceess.
|
||||
|
||||
The amount is a number, optionally with a currency symbol or commodity
|
||||
name on either the left or right. Negative amounts may have the minus
|
||||
sign either before or after the currency symbol (-$1 or $-1). Commod-
|
||||
ity names which contain more than just letters should be enclosed in
|
||||
double quotes (1 "person hours").
|
||||
Amounts consist of a number and (usually) a currency symbol or commod-
|
||||
ity name. Some examples:
|
||||
|
||||
DDeecciimmaall ppooiinnttss aanndd ddiiggiitt ggrroouuppss
|
||||
hledger supports flexible decimal point and digit group separator
|
||||
styles, to support international variations. Numbers can use either a
|
||||
period (.) or a comma (,) as decimal point. They can also have digit
|
||||
group separators at any position (eg thousands separators) which can be
|
||||
comma or period - whichever one you did not use as a decimal point. If
|
||||
you use digit group separators, you must also include a decimal point
|
||||
in at least one number in the same commodity, so that hledger knows
|
||||
which character is which. Eg, write $1,000.00 or $1.000,00.
|
||||
2.00001
|
||||
$1
|
||||
4000 AAPL
|
||||
3 "green apples"
|
||||
-$1,000,000.00
|
||||
INR 9,99,99,999.00
|
||||
EUR -2.000.000,00
|
||||
|
||||
AAmmoouunntt ddiissppllaayy ssttyylleess
|
||||
Based on how you format amounts, hledger will infer canonical display
|
||||
styles for each commodity, and use these when displaying amounts in
|
||||
that commodity. Amount styles include:
|
||||
As you can see, the amount format is somewhat flexible:
|
||||
|
||||
+o the position (left or right) and spacing (space or no separator) of
|
||||
the commodity symbol
|
||||
+o amounts are a number (the "quantity") and optionally a currency sym-
|
||||
bol/commodity name (the "commodity").
|
||||
|
||||
+o the digit group separator character (comma or period) and digit group
|
||||
sizes, if any
|
||||
+o the commodity is a symbol, word, or double-quoted phrase, on the left
|
||||
or right, with or without a separating space
|
||||
|
||||
+o the decimal point character (period or comma)
|
||||
+o negative amounts with a commodity on the left can have the minus sign
|
||||
before or after it
|
||||
|
||||
+o the display precision (number of decimal places displayed)
|
||||
+o digit groups (thousands, or any other grouping) can be separated by
|
||||
commas (in which case period is used for decimal point) or periods
|
||||
(in which case comma is used for decimal point)
|
||||
|
||||
The canonical style is generally the style of the first posting amount
|
||||
seen in a commodity. However the display precision will be the highest
|
||||
precision seen in all posting amounts in that commmodity.
|
||||
You can use any of these variations when recording data, but when
|
||||
hledger displays amounts, it will choose a consistent format for each
|
||||
commodity. (Except for price amounts, which are always formatted as
|
||||
written). The display format is chosen as follows:
|
||||
|
||||
The precisions used in a price amount, or a D directive, don't affect
|
||||
the canonical display precision directly, but they can affect it indi-
|
||||
rectly, eg when D's default commodity is applied to a commodity-less
|
||||
amount or when an amountless posting is balanced using a price's com-
|
||||
modity (actually this last case does not influence the canonical dis-
|
||||
play precision but probably should).
|
||||
+o if there is a commodity directive specifying the format, that is used
|
||||
|
||||
+o otherwise the format is inferred from the first posting amount in
|
||||
that commodity in the journal, and the precision (number of decimal
|
||||
places) will be the maximum from all posting amounts in that commmod-
|
||||
ity
|
||||
|
||||
+o or if there are no such amounts in the journal, a default format is
|
||||
used (like $1000.00).
|
||||
|
||||
Price amounts and amounts in D directives usually don't affect amount
|
||||
format inference, but in some situations they can do so indirectly.
|
||||
(Eg when D's default commodity is applied to a commodity-less amount,
|
||||
or when an amountless posting is balanced using a price's commodity, or
|
||||
when -V is used.) If you find this causing problems, set the desired
|
||||
format with a commodity directive.
|
||||
|
||||
VViirrttuuaall PPoossttiinnggss
|
||||
When you parenthesise the account name in a posting, that posting is
|
||||
considered _v_i_r_t_u_a_l, which means:
|
||||
When you parenthesise the account name in a posting, we call that a
|
||||
_v_i_r_t_u_a_l _p_o_s_t_i_n_g, which means:
|
||||
|
||||
+o it is ignored when checking that the transaction is balanced
|
||||
|
||||
+o it is excluded from reports when the --real/-R flag is used, or the
|
||||
+o it is excluded from reports when the --real/-R flag is used, or the
|
||||
real:1 query.
|
||||
|
||||
You could use this, eg, to set an account's opening balance without
|
||||
You could use this, eg, to set an account's opening balance without
|
||||
needing to use the equity:opening balances account:
|
||||
|
||||
1/1 special unbalanced posting to set initial balance
|
||||
(assets:checking) $1000
|
||||
|
||||
BBaallaanncceedd VViirrttuuaall PPoossttiinnggss
|
||||
When the account name is bracketed, the posting is _b_a_l_a_n_c_e_d _v_i_r_t_u_a_l,
|
||||
which is just like a virtual posting except the balanced virtual post-
|
||||
ings in a transaction must balance to 0, like the real postings (but
|
||||
separately from them). Balanced virtual postings are also excluded by
|
||||
--real/-R or real:1.
|
||||
When the account name is bracketed, we call it a _b_a_l_a_n_c_e_d _v_i_r_t_u_a_l _p_o_s_t_-
|
||||
_i_n_g. This is like an ordinary virtual posting except the balanced vir-
|
||||
tual postings in a transaction must balance to 0, like the real post-
|
||||
ings (but separately from them). Balanced virtual postings are also
|
||||
excluded by --real/-R or real:1.
|
||||
|
||||
Virtual postings are a feature inherited from Ledger can can occasion-
|
||||
ally be useful, but they can be a crutch and you should think twice or
|
||||
three times before using them. You can almost always find an equiva-
|
||||
lent journal entry using two or more real postings that will be more
|
||||
correct and more error-proof.
|
||||
1/1 buy food with cash, and update some budget-tracking subaccounts elsewhere
|
||||
expenses:food $10
|
||||
assets:cash $-10
|
||||
[assets:checking:available] $10
|
||||
[assets:checking:budget:food] $-10
|
||||
|
||||
Virtual postings have some legitimate uses, but those are few. You can
|
||||
usually find an equivalent journal entry using real postings, which is
|
||||
more correct and provides better error checking.
|
||||
|
||||
BBaallaannccee AAsssseerrttiioonnss
|
||||
hledger supports ledger-style balance assertions in journal files.
|
||||
These look like =EXPECTEDBALANCE following a posting's amount. Eg in
|
||||
this example we assert the expected dollar balance in accounts a and b
|
||||
hledger supports ledger-style balance assertions in journal files.
|
||||
These look like =EXPECTEDBALANCE following a posting's amount. Eg in
|
||||
this example we assert the expected dollar balance in accounts a and b
|
||||
after each posting:
|
||||
|
||||
2013/1/1
|
||||
@ -242,48 +257,48 @@ FFIILLEE FFOORRMMAATT
|
||||
b $-1 =$-2
|
||||
|
||||
After reading a journal file, hledger will check all balance assertions
|
||||
and report an error if any of them fail. Balance assertions can pro-
|
||||
tect you from, eg, inadvertently disrupting reconciled balances while
|
||||
cleaning up old entries. You can disable them temporarily with the
|
||||
--ignore-assertions flag, which can be useful for troubleshooting or
|
||||
and report an error if any of them fail. Balance assertions can pro-
|
||||
tect you from, eg, inadvertently disrupting reconciled balances while
|
||||
cleaning up old entries. You can disable them temporarily with the
|
||||
--ignore-assertions flag, which can be useful for troubleshooting or
|
||||
for reading Ledger files.
|
||||
|
||||
AAsssseerrttiioonnss aanndd oorrddeerriinngg
|
||||
hledger sorts an account's postings and assertions first by date and
|
||||
then (for postings on the same day) by parse order. Note this is dif-
|
||||
hledger sorts an account's postings and assertions first by date and
|
||||
then (for postings on the same day) by parse order. Note this is dif-
|
||||
ferent from Ledger, which sorts assertions only by parse order. (Also,
|
||||
Ledger assertions do not see the accumulated effect of repeated post-
|
||||
Ledger assertions do not see the accumulated effect of repeated post-
|
||||
ings to the same account within a transaction.)
|
||||
|
||||
So, hledger balance assertions keep working if you reorder differ-
|
||||
ently-dated transactions within the journal. But if you reorder
|
||||
So, hledger balance assertions keep working if you reorder differ-
|
||||
ently-dated transactions within the journal. But if you reorder
|
||||
same-dated transactions or postings, assertions might break and require
|
||||
updating. This order dependence does bring an advantage: precise con-
|
||||
updating. This order dependence does bring an advantage: precise con-
|
||||
trol over the order of postings and assertions within a day, so you can
|
||||
assert intra-day balances.
|
||||
|
||||
With included files, things are a little more complicated. Including
|
||||
preserves the ordering of postings and assertions. If you have multi-
|
||||
ple postings to an account on the same day, split across different
|
||||
files, and you also want to assert the account's balance on the same
|
||||
With included files, things are a little more complicated. Including
|
||||
preserves the ordering of postings and assertions. If you have multi-
|
||||
ple postings to an account on the same day, split across different
|
||||
files, and you also want to assert the account's balance on the same
|
||||
day, you'll have to put the assertion in the right file.
|
||||
|
||||
AAsssseerrttiioonnss aanndd ccoommmmooddiittiieess
|
||||
The asserted balance must be a simple single-commodity amount, and in
|
||||
fact the assertion checks only this commodity's balance within the
|
||||
(possibly multi-commodity) account balance. We could call this a par-
|
||||
tial balance assertion. This is compatible with Ledger, and makes it
|
||||
The asserted balance must be a simple single-commodity amount, and in
|
||||
fact the assertion checks only this commodity's balance within the
|
||||
(possibly multi-commodity) account balance. We could call this a par-
|
||||
tial balance assertion. This is compatible with Ledger, and makes it
|
||||
possible to make assertions about accounts containing multiple commodi-
|
||||
ties.
|
||||
|
||||
To assert each commodity's balance in such a multi-commodity account,
|
||||
you can add multiple postings (with amount 0 if necessary). But note
|
||||
that no matter how many assertions you add, you can't be sure the
|
||||
To assert each commodity's balance in such a multi-commodity account,
|
||||
you can add multiple postings (with amount 0 if necessary). But note
|
||||
that no matter how many assertions you add, you can't be sure the
|
||||
account does not contain some unexpected commodity. (We'll add support
|
||||
for this kind of total balance assertion if there's demand.)
|
||||
|
||||
AAsssseerrttiioonnss aanndd ssuubbaaccccoouunnttss
|
||||
Balance assertions do not count the balance from subaccounts; they
|
||||
Balance assertions do not count the balance from subaccounts; they
|
||||
check the posted account's exclusive balance. For example:
|
||||
|
||||
1/1
|
||||
@ -291,7 +306,7 @@ FFIILLEE FFOORRMMAATT
|
||||
checking 1 = 1 ; post to the parent account, its exclusive balance is now 1
|
||||
equity
|
||||
|
||||
The balance report's flat mode shows these exclusive balances more
|
||||
The balance report's flat mode shows these exclusive balances more
|
||||
clearly:
|
||||
|
||||
$ hledger bal checking --flat
|
||||
@ -306,19 +321,19 @@ FFIILLEE FFOORRMMAATT
|
||||
|
||||
PPrriicceess
|
||||
TTrraannssaaccttiioonn pprriicceess
|
||||
When recording a transaction, you can also record an amount's price in
|
||||
another commodity. This documents the exchange rate, cost (of a pur-
|
||||
chase), or selling price (of a sale) that was in effect within this
|
||||
particular transaction (or more precisely, within the particular post-
|
||||
When recording a transaction, you can also record an amount's price in
|
||||
another commodity. This documents the exchange rate, cost (of a pur-
|
||||
chase), or selling price (of a sale) that was in effect within this
|
||||
particular transaction (or more precisely, within the particular post-
|
||||
ing). These transaction prices are fixed, and do not change.
|
||||
|
||||
Such priced amounts can be displayed in their transaction price's com-
|
||||
modity, by using the --cost/-B flag (B for "cost Basis"), supported by
|
||||
Such priced amounts can be displayed in their transaction price's com-
|
||||
modity, by using the --cost/-B flag (B for "cost Basis"), supported by
|
||||
most hledger commands.
|
||||
|
||||
There are three ways to specify a transaction price:
|
||||
|
||||
1. Write the unit price (aka exchange rate), as @ UNITPRICE after the
|
||||
1. Write the unit price (aka exchange rate), as @ UNITPRICE after the
|
||||
amount:
|
||||
|
||||
2009/1/1
|
||||
@ -332,7 +347,7 @@ FFIILLEE FFOORRMMAATT
|
||||
assets:cash
|
||||
|
||||
3. Or let hledger infer the price so as to balance the transaction. To
|
||||
permit this, you must fully specify all posting amounts, and their
|
||||
permit this, you must fully specify all posting amounts, and their
|
||||
sum must have a non-zero amount in exactly two commodities:
|
||||
|
||||
2009/1/1
|
||||
@ -346,17 +361,17 @@ FFIILLEE FFOORRMMAATT
|
||||
assets:foreign currency $135.00
|
||||
assets:cash $-135.00
|
||||
|
||||
Example use for transaction prices: recording the effective conversion
|
||||
Example use for transaction prices: recording the effective conversion
|
||||
rate of purchases made in a foreign currency.
|
||||
|
||||
MMaarrkkeett pprriicceess
|
||||
Market prices are not tied to a particular transaction; they represent
|
||||
historical exchange rates between two commodities, usually from some
|
||||
Market prices are not tied to a particular transaction; they represent
|
||||
historical exchange rates between two commodities, usually from some
|
||||
public market which publishes such rates.
|
||||
|
||||
When market prices are known, the -V/--value option will use them to
|
||||
convert reported amounts to their market value as of the report end
|
||||
date. This option is currently available only with the balance com-
|
||||
When market prices are known, the -V/--value option will use them to
|
||||
convert reported amounts to their market value as of the report end
|
||||
date. This option is currently available only with the balance com-
|
||||
mand.
|
||||
|
||||
You record market prices (Ledger calls them historical prices) with a P
|
||||
@ -366,7 +381,7 @@ FFIILLEE FFOORRMMAATT
|
||||
P DATE COMMODITYSYMBOL UNITPRICE
|
||||
|
||||
For example, the following directives say that the euro's exchange rate
|
||||
was 1.35 US dollars during 2009, and $1.40 from 2010 onward (and
|
||||
was 1.35 US dollars during 2009, and $1.40 from 2010 onward (and
|
||||
unknown before 2009).
|
||||
|
||||
P 2009/1/1 ^a~ $1.35
|
||||
@ -375,17 +390,17 @@ FFIILLEE FFOORRMMAATT
|
||||
Example use for market prices: tracking the value of stocks.
|
||||
|
||||
CCoommmmeennttss
|
||||
Lines in the journal beginning with a semicolon (;) or hash (#) or
|
||||
asterisk (*) are comments, and will be ignored. (Asterisk comments
|
||||
make it easy to treat your journal like an org-mode outline in emacs.)
|
||||
Lines in the journal beginning with a semicolon (;) or hash (#) or
|
||||
asterisk (*) are comments, and will be ignored. (Asterisk comments
|
||||
make it easy to treat your journal like an org-mode outline in emacs.)
|
||||
|
||||
Also, anything between comment and end comment directives is a
|
||||
(multi-line) comment. If there is no end comment, the comment extends
|
||||
Also, anything between comment and end comment directives is a
|
||||
(multi-line) comment. If there is no end comment, the comment extends
|
||||
to the end of the file.
|
||||
|
||||
You can attach comments to a transaction by writing them after the
|
||||
description and/or indented on the following lines (before the post-
|
||||
ings). Similarly, you can attach comments to an individual posting by
|
||||
You can attach comments to a transaction by writing them after the
|
||||
description and/or indented on the following lines (before the post-
|
||||
ings). Similarly, you can attach comments to an individual posting by
|
||||
writing them after the amount and/or indented on the following lines.
|
||||
|
||||
Some examples:
|
||||
@ -410,30 +425,30 @@ FFIILLEE FFOORRMMAATT
|
||||
; a journal comment (because not indented)
|
||||
|
||||
TTaaggss
|
||||
A _t_a_g is a word followed by a full colon inside a transaction or post-
|
||||
ing comment. You can write multiple tags, comma separated. Eg:
|
||||
; a comment containing sometag:, anothertag:. You can search for tags
|
||||
A _t_a_g is a word followed by a full colon inside a transaction or post-
|
||||
ing comment. You can write multiple tags, comma separated. Eg:
|
||||
; a comment containing sometag:, anothertag:. You can search for tags
|
||||
with the tag: query.
|
||||
|
||||
A tag can also have a value, which is any text between the colon and
|
||||
the next comma or newline, excluding leading/trailing whitespace. (So
|
||||
A tag can also have a value, which is any text between the colon and
|
||||
the next comma or newline, excluding leading/trailing whitespace. (So
|
||||
hledger tag values can not contain commas or newlines).
|
||||
|
||||
Tags in a transaction comment affect the transaction and all of its
|
||||
postings, while tags in a posting comment affect only that posting.
|
||||
For example, the following transaction has three tags (A, TAG2,
|
||||
Tags in a transaction comment affect the transaction and all of its
|
||||
postings, while tags in a posting comment affect only that posting.
|
||||
For example, the following transaction has three tags (A, TAG2,
|
||||
third-tag) and the posting has four (A, TAG2, third-tag, posting-tag):
|
||||
|
||||
1/1 a transaction ; A:, TAG2:
|
||||
; third-tag: a third transaction tag, this time with a value
|
||||
(a) $1 ; posting-tag:
|
||||
|
||||
Tags are like Ledger's metadata feature, except hledger's tag values
|
||||
are always simple strings.
|
||||
Tags are like Ledger's metadata feature, except hledger's tag values
|
||||
are simple strings.
|
||||
|
||||
DDiirreeccttiivveess
|
||||
AAccccoouunntt aalliiaasseess
|
||||
You can define aliases which rewrite your account names (after reading
|
||||
You can define aliases which rewrite your account names (after reading
|
||||
the journal, before generating reports). hledger's account aliases can
|
||||
be useful for:
|
||||
|
||||
@ -450,8 +465,8 @@ FFIILLEE FFOORRMMAATT
|
||||
See also How to use account aliases.
|
||||
|
||||
BBaassiicc aalliiaasseess
|
||||
To set an account alias, use the alias directive in your journal file.
|
||||
This affects all subsequent journal entries in the current file or its
|
||||
To set an account alias, use the alias directive in your journal file.
|
||||
This affects all subsequent journal entries in the current file or its
|
||||
included files. The spaces around the = are optional:
|
||||
|
||||
alias OLD = NEW
|
||||
@ -459,53 +474,53 @@ FFIILLEE FFOORRMMAATT
|
||||
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.
|
||||
|
||||
OLD and NEW are full account names. hledger will replace any occur-
|
||||
rence of the old account name with the new one. Subaccounts are also
|
||||
OLD and NEW are full account names. hledger will replace any occur-
|
||||
rence of the old account name with the new one. Subaccounts are also
|
||||
affected. Eg:
|
||||
|
||||
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"
|
||||
|
||||
RReeggeexx aalliiaasseess
|
||||
There is also a more powerful variant that uses a regular expression,
|
||||
indicated by the forward slashes. (This was the default behaviour in
|
||||
There is also a more powerful variant that uses a regular expression,
|
||||
indicated by the forward slashes. (This was the default behaviour in
|
||||
hledger 0.24-0.25):
|
||||
|
||||
alias /REGEX/ = REPLACEMENT
|
||||
|
||||
or --alias '/REGEX/=REPLACEMENT'.
|
||||
|
||||
REGEX is a case-insensitive regular expression. Anywhere it matches
|
||||
inside an account name, the matched part will be replaced by REPLACE-
|
||||
MENT. If REGEX contains parenthesised match groups, these can be ref-
|
||||
REGEX is a case-insensitive regular expression. Anywhere it matches
|
||||
inside an account name, the matched part will be replaced by REPLACE-
|
||||
MENT. If REGEX contains parenthesised match groups, these can be ref-
|
||||
erenced by the usual numeric backreferences in REPLACEMENT. Note, cur-
|
||||
rently regular expression aliases may cause noticeable slow-downs.
|
||||
rently regular expression aliases may cause noticeable slow-downs.
|
||||
(And if you use Ledger on your hledger file, they will be ignored.) Eg:
|
||||
|
||||
alias /^(.+):bank:([^:]+)(.*)/ = \1:\2 \3
|
||||
# rewrites "assets:bank:wells fargo:checking" to "assets:wells fargo checking"
|
||||
|
||||
MMuullttiippllee aalliiaasseess
|
||||
You can define as many aliases as you like using directives or com-
|
||||
mand-line options. Aliases are recursive - each alias sees the result
|
||||
of applying previous ones. (This is different from Ledger, where
|
||||
You can define as many aliases as you like using directives or com-
|
||||
mand-line options. Aliases are recursive - each alias sees the result
|
||||
of applying previous ones. (This is different from Ledger, where
|
||||
aliases are non-recursive by default). Aliases are applied in the fol-
|
||||
lowing order:
|
||||
|
||||
1. alias directives, most recently seen first (recent directives take
|
||||
1. alias directives, most recently seen first (recent directives take
|
||||
precedence over earlier ones; directives not yet seen are ignored)
|
||||
|
||||
2. alias options, in the order they appear on the command line
|
||||
|
||||
eenndd aalliiaasseess
|
||||
You can clear (forget) all currently defined aliases with the
|
||||
You can clear (forget) all currently defined aliases with the
|
||||
end aliases directive:
|
||||
|
||||
end aliases
|
||||
|
||||
aaccccoouunntt ddiirreeccttiivvee
|
||||
The account directive predefines account names, as in Ledger and Bean-
|
||||
count. This may be useful for your own documentation; hledger doesn't
|
||||
The account directive predefines account names, as in Ledger and Bean-
|
||||
count. This may be useful for your own documentation; hledger doesn't
|
||||
make use of it yet.
|
||||
|
||||
; account ACCT
|
||||
@ -520,8 +535,8 @@ FFIILLEE FFOORRMMAATT
|
||||
; etc.
|
||||
|
||||
aappppllyy aaccccoouunntt ddiirreeccttiivvee
|
||||
You can specify a parent account which will be prepended to all
|
||||
accounts within a section of the journal. Use the apply account and
|
||||
You can specify a parent account which will be prepended to all
|
||||
accounts within a section of the journal. Use the apply account and
|
||||
end apply account directives like so:
|
||||
|
||||
apply account home
|
||||
@ -538,7 +553,7 @@ FFIILLEE FFOORRMMAATT
|
||||
home:food $10
|
||||
home:cash $-10
|
||||
|
||||
If end apply account is omitted, the effect lasts to the end of the
|
||||
If end apply account is omitted, the effect lasts to the end of the
|
||||
file. Included files are also affected, eg:
|
||||
|
||||
apply account business
|
||||
@ -547,47 +562,50 @@ FFIILLEE FFOORRMMAATT
|
||||
apply account personal
|
||||
include personal.journal
|
||||
|
||||
Prior to hledger 0.28, legacy account and end spellings were also sup-
|
||||
Prior to hledger 0.28, legacy account and end spellings were also sup-
|
||||
ported.
|
||||
|
||||
MMuullttii--lliinnee ccoommmmeennttss
|
||||
A line containing just comment starts a multi-line comment, and a line
|
||||
A line containing just comment starts a multi-line comment, and a line
|
||||
containing just end comment ends it. See comments.
|
||||
|
||||
ccoommmmooddiittyy ddiirreeccttiivvee
|
||||
The commodity directive predefines commodities (currently this is just
|
||||
informational), and also it may define the display format for amounts
|
||||
in this commodity (overriding the automatically inferred format).
|
||||
|
||||
It may be written on a single line, like this:
|
||||
|
||||
; commodity EXAMPLEAMOUNT
|
||||
|
||||
; display AAAA amounts with the symbol on the right, space-separated,
|
||||
; using period as decimal point, with four decimal places, and
|
||||
; separating thousands with comma.
|
||||
commodity 1,000.0000 AAAA
|
||||
|
||||
or on multiple lines, using the "format" subdirective. In this case
|
||||
the commodity symbol appears twice and should be the same in both
|
||||
places:
|
||||
|
||||
; commodity SYMBOL
|
||||
; format EXAMPLEAMOUNT
|
||||
|
||||
; display indian rupees with currency name on the left,
|
||||
; thousands, lakhs and crores comma-separated,
|
||||
; period as decimal point, and two decimal places.
|
||||
commodity INR
|
||||
format INR 9,99,99,999.00
|
||||
|
||||
DDeeffaauulltt ccoommmmooddiittyy
|
||||
You can set a default commodity, to be used for amounts without one.
|
||||
Use the D directive with a sample amount. The commodity (and the sam-
|
||||
ple amount's display style) will be applied to all subsequent commod-
|
||||
ity-less amounts, up to the next D directive. (Note this is different
|
||||
You can set a default commodity, to be used for amounts without one.
|
||||
Use the D directive with a sample amount. The commodity (and the sam-
|
||||
ple amount's display format) will be applied to all subsequent commod-
|
||||
ity-less amounts, up to the next D directive. (Note this is different
|
||||
from Ledger's default commodity directive.)
|
||||
|
||||
Also note the directive itself does not influence the commodity's
|
||||
default display style, but the amount it is applied to might. Here's
|
||||
an example:
|
||||
|
||||
; set ^A-L as the default commodity
|
||||
D ^A-L1,000.00
|
||||
|
||||
2010/1/1
|
||||
a 2340
|
||||
b
|
||||
|
||||
2014/1/1
|
||||
c ^A-L1000
|
||||
d
|
||||
|
||||
$ hledger print
|
||||
2010/01/01
|
||||
a ^A-L2,340.00
|
||||
b ^A-L-2,340.00
|
||||
|
||||
2014/01/01
|
||||
c ^A-L1,000.00
|
||||
d ^A-L-1,000.00
|
||||
|
||||
DDeeffaauulltt yyeeaarr
|
||||
You can set a default year to be used for subsequent dates which don't
|
||||
specify a year. This is a line beginning with Y followed by the year.
|
||||
You can set a default year to be used for subsequent dates which don't
|
||||
specify a year. This is a line beginning with Y followed by the year.
|
||||
Eg:
|
||||
|
||||
Y2009 ; set default year to 2009
|
||||
@ -607,19 +625,16 @@ FFIILLEE FFOORRMMAATT
|
||||
assets
|
||||
|
||||
IInncclluuddiinngg ootthheerr ffiilleess
|
||||
You can pull in the content of additional journal files by writing an
|
||||
You can pull in the content of additional journal files by writing an
|
||||
include directive, like this:
|
||||
|
||||
include path/to/file.journal
|
||||
|
||||
If the path does not begin with a slash, it is relative to the current
|
||||
file.
|
||||
If the path does not begin with a slash, it is relative to the current
|
||||
file. Glob patterns (*) are not currently supported.
|
||||
|
||||
Glob patterns (*) are not currently supported.
|
||||
|
||||
The include directive may only be used in journal files, and currently
|
||||
it may only include other journal files (eg, not CSV or timeclock
|
||||
files.)
|
||||
The include directive can only be used in journal files. It can
|
||||
include journal, timeclock or timedot files, but not CSV files.
|
||||
|
||||
EEDDIITTOORR SSUUPPPPOORRTT
|
||||
Add-on modes exist for various text editors, to make working with jour-
|
||||
@ -665,4 +680,4 @@ SSEEEE AALLSSOO
|
||||
|
||||
|
||||
|
||||
April 2016 hledger_journal(5)
|
||||
May 2016 hledger_journal(5)
|
||||
|
@ -11,7 +11,7 @@ Timeclock \- the time logging format of timeclock.el, as read by hledger
|
||||
hledger can read timeclock files.
|
||||
As with Ledger, these are (a subset of) timeclock.el\[aq]s format,
|
||||
containing clock\-in and clock\-out entries as in the example below.
|
||||
The date is a simple date (also, default year directives work).
|
||||
The date is a simple date.
|
||||
The time format is HH:MM[:SS][+\-ZZZZ].
|
||||
Seconds and timezone are optional.
|
||||
The timezone, if present, must be four digits and is ignored (currently
|
||||
|
@ -9,10 +9,10 @@ hledger_timeclock(5)
|
||||
|
||||
hledger can read timeclock files. As with Ledger, these are (a subset
|
||||
of) timeclock.el's format, containing clock-in and clock-out entries as
|
||||
in the example below. The date is a simple date (also, default year
|
||||
directives work). The time format is HH:MM[:SS][+-ZZZZ]. Seconds and
|
||||
timezone are optional. The timezone, if present, must be four digits and
|
||||
is ignored (currently the time is always interpreted as a local time).
|
||||
in the example below. The date is a simple date. The time format is
|
||||
HH:MM[:SS][+-ZZZZ]. Seconds and timezone are optional. The timezone, if
|
||||
present, must be four digits and is ignored (currently the time is
|
||||
always interpreted as a local time).
|
||||
|
||||
|
||||
i 2015/03/30 09:00:00 some:account name optional description after two spaces
|
||||
|
@ -9,20 +9,19 @@ NNAAMMEE
|
||||
DDEESSCCRRIIPPTTIIOONN
|
||||
hledger can read timeclock files. As with Ledger, these are (a subset
|
||||
of) timeclock.el's format, containing clock-in and clock-out entries as
|
||||
in the example below. The date is a simple date (also, default year
|
||||
directives work). The time format is HH:MM[:SS][+-ZZZZ]. Seconds and
|
||||
timezone are optional. The timezone, if present, must be four digits
|
||||
and is ignored (currently the time is always interpreted as a local
|
||||
time).
|
||||
in the example below. The date is a simple date. The time format is
|
||||
HH:MM[:SS][+-ZZZZ]. Seconds and timezone are optional. The timezone,
|
||||
if present, must be four digits and is ignored (currently the time is
|
||||
always interpreted as a local time).
|
||||
|
||||
i 2015/03/30 09:00:00 some:account name optional description after two spaces
|
||||
o 2015/03/30 09:20:00
|
||||
i 2015/03/31 22:21:45 another account
|
||||
o 2015/04/01 02:00:34
|
||||
|
||||
hledger treats each clock-in/clock-out pair as a transaction posting
|
||||
some number of hours to an account. Or if the session spans more than
|
||||
one day, it is split into several transactions, one for each day. For
|
||||
hledger treats each clock-in/clock-out pair as a transaction posting
|
||||
some number of hours to an account. Or if the session spans more than
|
||||
one day, it is split into several transactions, one for each day. For
|
||||
the above time log, hledger print generates these journal entries:
|
||||
|
||||
$ hledger -f t.timeclock print
|
||||
@ -43,7 +42,7 @@ DDEESSCCRRIIPPTTIIOONN
|
||||
|
||||
To generate time logs, ie to clock in and clock out, you could:
|
||||
|
||||
+o use emacs and the built-in timeclock.el, or the extended time-
|
||||
+o use emacs and the built-in timeclock.el, or the extended time-
|
||||
clock-x.el and perhaps the extras in ledgerutils.el
|
||||
|
||||
+o at the command line, use these bash aliases:
|
||||
@ -52,13 +51,13 @@ DDEESSCCRRIIPPTTIIOONN
|
||||
alias to="echo o `date '+%Y-%m-%d %H:%M:%S'` >>$TIMELOG"
|
||||
|
||||
+o or use the old ti and to scripts in the ledger 2.x repository. These
|
||||
rely on a "timeclock" executable which I think is just the ledger 2
|
||||
rely on a "timeclock" executable which I think is just the ledger 2
|
||||
executable renamed.
|
||||
|
||||
|
||||
|
||||
RREEPPOORRTTIINNGG BBUUGGSS
|
||||
Report bugs at http://bugs.hledger.org (or on the #hledger IRC channel
|
||||
Report bugs at http://bugs.hledger.org (or on the #hledger IRC channel
|
||||
or hledger mail list)
|
||||
|
||||
|
||||
@ -72,7 +71,7 @@ CCOOPPYYRRIIGGHHTT
|
||||
|
||||
|
||||
SSEEEE AALLSSOO
|
||||
hledger(1), hledger-ui(1), hledger-web(1), hledger-api(1),
|
||||
hledger(1), hledger-ui(1), hledger-web(1), hledger-api(1),
|
||||
hledger_csv(5), hledger_journal(5), hledger_timeclock(5), hledger_time-
|
||||
dot(5), ledger(1)
|
||||
|
||||
|
@ -120,8 +120,6 @@ $\ hledger\ \-f\ t.timedot\ \-\-alias\ /\\\\./=:\ bal\ date:2016/2/4
|
||||
\f[]
|
||||
.fi
|
||||
.PP
|
||||
default year directives may be used.
|
||||
.PP
|
||||
Here is a sample.timedot.
|
||||
|
||||
|
||||
|
@ -109,8 +109,6 @@ $ hledger -f t.timedot --alias /\\./=: bal date:2016/2/4
|
||||
--------------------
|
||||
4.50
|
||||
|
||||
default year directives may be used.
|
||||
|
||||
Here is a sample.timedot.
|
||||
|
||||
|
||||
|
@ -93,8 +93,6 @@ FFIILLEE FFOORRMMAATT
|
||||
--------------------
|
||||
4.50
|
||||
|
||||
default year directives may be used.
|
||||
|
||||
Here is a sample.timedot.
|
||||
|
||||
|
||||
|
@ -139,8 +139,8 @@ set start date, end date, and/or reporting interval all at once
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[C]\-\-date2\ \-\-aux\-date\f[]
|
||||
use postings/txns\[aq] secondary dates instead
|
||||
.B \f[C]\-\-date2\f[]
|
||||
show, and match with \-b/\-e/\-p/date:, secondary dates instead
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
|
@ -106,8 +106,8 @@ The following common hledger options should also work:
|
||||
set start date, end date, and/or reporting interval all at once
|
||||
(overrides the flags above)
|
||||
|
||||
`--date2 --aux-date'
|
||||
use postings/txns' secondary dates instead
|
||||
`--date2'
|
||||
show, and match with -b/-e/-p/date:, secondary dates instead
|
||||
|
||||
`-C --cleared'
|
||||
include only cleared postings/txns
|
||||
@ -273,17 +273,17 @@ Node: OPTIONS682
|
||||
Ref: #options781
|
||||
Node: hledger options1547
|
||||
Ref: #hledger-options1653
|
||||
Node: KEYS2829
|
||||
Ref: #keys2926
|
||||
Node: SCREENS3323
|
||||
Ref: #screens3410
|
||||
Node: Accounts screen3500
|
||||
Ref: #accounts-screen3630
|
||||
Node: Register screen4475
|
||||
Ref: #register-screen4632
|
||||
Node: Transaction screen6014
|
||||
Ref: #transaction-screen6174
|
||||
Node: Error screen7041
|
||||
Ref: #error-screen7165
|
||||
Node: KEYS2836
|
||||
Ref: #keys2933
|
||||
Node: SCREENS3330
|
||||
Ref: #screens3417
|
||||
Node: Accounts screen3507
|
||||
Ref: #accounts-screen3637
|
||||
Node: Register screen4482
|
||||
Ref: #register-screen4639
|
||||
Node: Transaction screen6021
|
||||
Ref: #transaction-screen6181
|
||||
Node: Error screen7048
|
||||
Ref: #error-screen7172
|
||||
|
||||
End Tag Table
|
||||
|
@ -94,8 +94,8 @@ OOPPTTIIOONNSS
|
||||
set start date, end date, and/or reporting interval all at once
|
||||
(overrides the flags above)
|
||||
|
||||
----ddaattee22 ----aauuxx--ddaattee
|
||||
use postings/txns' secondary dates instead
|
||||
----ddaattee22
|
||||
show, and match with -b/-e/-p/date:, secondary dates instead
|
||||
|
||||
--CC ----cclleeaarreedd
|
||||
include only cleared postings/txns
|
||||
|
@ -73,8 +73,14 @@ Note there is no built\-in access control, so you will need to hide
|
||||
hledger\-web behind an authenticating proxy (such as apache or nginx) if
|
||||
you want to restrict who can see and add entries to your journal.
|
||||
.PP
|
||||
Command\-line options and arguments may be used to set an initial filter
|
||||
on the data.
|
||||
This is not shown in the web UI, but it will be applied in addition to
|
||||
any search query entered there.
|
||||
.PP
|
||||
With journal and timeclock files (but not CSV files, currently) the web
|
||||
app detects changes and will show the new data on the next request.
|
||||
app detects changes made by other means and will show the new data on
|
||||
the next request.
|
||||
If a change makes the file unparseable, hledger\-web will show an error
|
||||
until the file has been fixed.
|
||||
.SH OPTIONS
|
||||
@ -178,8 +184,8 @@ set start date, end date, and/or reporting interval all at once
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[C]\-\-date2\ \-\-aux\-date\f[]
|
||||
use postings/txns\[aq] secondary dates instead
|
||||
.B \f[C]\-\-date2\f[]
|
||||
show, and match with \-b/\-e/\-p/date:, secondary dates instead
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
|
@ -51,10 +51,14 @@ the PORT in the base url.
|
||||
hledger-web behind an authenticating proxy (such as apache or nginx) if
|
||||
you want to restrict who can see and add entries to your journal.
|
||||
|
||||
Command-line options and arguments may be used to set an initial
|
||||
filter on the data. This is not shown in the web UI, but it will be
|
||||
applied in addition to any search query entered there.
|
||||
|
||||
With journal and timeclock files (but not CSV files, currently) the
|
||||
web app detects changes and will show the new data on the next request.
|
||||
If a change makes the file unparseable, hledger-web will show an error
|
||||
until the file has been fixed.
|
||||
web app detects changes made by other means and will show the new data
|
||||
on the next request. If a change makes the file unparseable, hledger-web
|
||||
will show an error until the file has been fixed.
|
||||
|
||||
* Menu:
|
||||
|
||||
@ -139,8 +143,8 @@ The following common hledger options should also work:
|
||||
set start date, end date, and/or reporting interval all at once
|
||||
(overrides the flags above)
|
||||
|
||||
`--date2 --aux-date'
|
||||
use postings/txns' secondary dates instead
|
||||
`--date2'
|
||||
show, and match with -b/-e/-p/date:, secondary dates instead
|
||||
|
||||
`-C --cleared'
|
||||
include only cleared postings/txns
|
||||
@ -167,9 +171,9 @@ The following common hledger options should also work:
|
||||
|
||||
Tag Table:
|
||||
Node: Top90
|
||||
Node: OPTIONS2622
|
||||
Ref: #options2709
|
||||
Node: hledger options3572
|
||||
Ref: #hledger-options3679
|
||||
Node: OPTIONS2834
|
||||
Ref: #options2921
|
||||
Node: hledger options3784
|
||||
Ref: #hledger-options3891
|
||||
|
||||
End Tag Table
|
||||
|
@ -61,10 +61,14 @@ DDEESSCCRRIIPPTTIIOONN
|
||||
hledger-web behind an authenticating proxy (such as apache or nginx) if
|
||||
you want to restrict who can see and add entries to your journal.
|
||||
|
||||
Command-line options and arguments may be used to set an initial filter
|
||||
on the data. This is not shown in the web UI, but it will be applied
|
||||
in addition to any search query entered there.
|
||||
|
||||
With journal and timeclock files (but not CSV files, currently) the web
|
||||
app detects changes and will show the new data on the next request. If
|
||||
a change makes the file unparseable, hledger-web will show an error
|
||||
until the file has been fixed.
|
||||
app detects changes made by other means and will show the new data on
|
||||
the next request. If a change makes the file unparseable, hledger-web
|
||||
will show an error until the file has been fixed.
|
||||
|
||||
OOPPTTIIOONNSS
|
||||
Note: if invoking hledger-web as a hledger subcommand, write -- before
|
||||
@ -128,8 +132,8 @@ OOPPTTIIOONNSS
|
||||
set start date, end date, and/or reporting interval all at once
|
||||
(overrides the flags above)
|
||||
|
||||
----ddaattee22 ----aauuxx--ddaattee
|
||||
use postings/txns' secondary dates instead
|
||||
----ddaattee22
|
||||
show, and match with -b/-e/-p/date:, secondary dates instead
|
||||
|
||||
--CC ----cclleeaarreedd
|
||||
include only cleared postings/txns
|
||||
|
@ -142,6 +142,27 @@ $\ hledger\ print\ desc:shop\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ #\ show\ transacti
|
||||
$\ hledger\ activity\ \-W\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ #\ show\ transaction\ counts\ per\ week\ as\ a\ bar\ chart
|
||||
\f[]
|
||||
.fi
|
||||
.PP
|
||||
With the journal
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
2016/02/16\ Member\ Fee\ Payment\ John\ Doe
|
||||
\ \ \ \ assets:bank\ account\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 2\ EUR
|
||||
\ \ \ \ income:member\ fees\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \-2\ EUR
|
||||
\ \ \ \ \ \ ;\ member:\ John\ Doe
|
||||
\f[]
|
||||
.fi
|
||||
.PP
|
||||
the \-\-pivot comand will output the following:
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
$\ hledger\ bal\ \-\-pivot\ member
|
||||
\ \ \ \ 2\ EUR\ \ assets:bank\ account
|
||||
\ \ \ \-2\ EUR\ \ member:John\ Doe
|
||||
\f[]
|
||||
.fi
|
||||
.SH OPTIONS
|
||||
.PP
|
||||
To see general usage and the command list: \f[C]hledger\ \-h\f[] or just
|
||||
@ -269,8 +290,8 @@ set start date, end date, and/or reporting interval all at once
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[C]\-\-date2\ \-\-aux\-date\f[]
|
||||
use postings/txns\[aq] secondary dates instead
|
||||
.B \f[C]\-\-date2\f[]
|
||||
show, and match with \-b/\-e/\-p/date:, secondary dates instead
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
@ -308,12 +329,27 @@ show empty/zero things which are normally omitted
|
||||
show amounts in their cost price\[aq]s commodity
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B `\-\-pivot TAG
|
||||
will transform the journal before any other processing by replacing the
|
||||
account name of every posting having the tag TAG with content VALUE by
|
||||
the account name "TAG:VALUE".
|
||||
.RS
|
||||
.RE
|
||||
The TAG will only match if it is a full\-length match.
|
||||
The pivot will only happen if the TAG is on a posting, not if it is on
|
||||
the transaction.
|
||||
If the tag value is a multi:level:account:name the new account name will
|
||||
be "TAG:multi:level:account:name".
|
||||
.RS
|
||||
.RE
|
||||
.SS Multiple files
|
||||
.PP
|
||||
One may specify the \f[C]\-\-file\ FILE\f[] option multiple times.
|
||||
This is equivalent to concatenating the files to standard input and
|
||||
passing \f[C]\-\-file\ \-\f[], except that the add command functions
|
||||
normally and adds entries to the first specified file.
|
||||
You can specify multiple \f[C]\-f/\-\-file\ FILE\f[] options.
|
||||
This is like combining all the files into one, except they can have
|
||||
different formats.
|
||||
Also directives and aliases in one file do not affect subsequent files
|
||||
(if you need that, use the include directive instead).
|
||||
.SS Repeated options
|
||||
.PP
|
||||
Otherwise, if a reporting option is repeated, the last one takes
|
||||
@ -657,13 +693,16 @@ match transaction descriptions
|
||||
.RE
|
||||
.TP
|
||||
.B \f[B]\f[C]date:PERIODEXPR\f[]\f[]
|
||||
match dates within the specified period (which should not include a
|
||||
reporting interval
|
||||
match dates within the specified period.
|
||||
PERIODEXPR should not include a reporting interval.
|
||||
The command\-line \f[C]\-\-date2\f[] flag makes this match secondary
|
||||
dates instead (like the \f[C]\-b\f[]/\f[C]\-e\f[]/\f[C]\-p\f[] options).
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[B]\f[C]date2:PERIODEXPR\f[]\f[]
|
||||
as above, but match secondary dates
|
||||
match secondary dates within the specified period.
|
||||
PERIODEXPR should not include a reporting interval.
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
@ -695,8 +734,6 @@ transaction.
|
||||
before any of the above negates the match.
|
||||
.RS
|
||||
.RE
|
||||
.PP
|
||||
* * * * *
|
||||
.PP
|
||||
Some of these can also be expressed as command\-line options (eg
|
||||
\f[C]depth:2\f[] is equivalent to \f[C]\-\-depth\ 2\f[]).
|
||||
@ -827,8 +864,9 @@ Many hledger users edit their journals directly with a text editor, or
|
||||
generate them from CSV.
|
||||
For more interactive data entry, there is the \f[C]add\f[] command,
|
||||
which prompts interactively on the console for new transactions, and
|
||||
appends them to the journal file (existing transactions are not
|
||||
changed).
|
||||
appends them to the journal file (if there are multiple
|
||||
\f[C]\-f\ FILE\f[] options, the first file is used.) Existing
|
||||
transactions are not changed.
|
||||
This is the only hledger command that writes to the journal file.
|
||||
.PP
|
||||
To use it, just run \f[C]hledger\ add\f[] and follow the prompts.
|
||||
@ -2103,6 +2141,11 @@ $\ LEDGER_FILE=unique.journal\ hledger\ print\-unique
|
||||
.PP
|
||||
Prints all journal entries, adding specified custom postings to matched
|
||||
entries.
|
||||
.PP
|
||||
hledger\-rewrite.hs, in hledger\[aq]s extra directory (compilation
|
||||
optional), adds postings to existing transactions, optionally with an
|
||||
amount based on the existing transaction\[aq]s first amount.
|
||||
See the script for more details.
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
|
@ -114,6 +114,21 @@ $ hledger reg 'assets:some bank:checking' # show postings to/from this checking
|
||||
$ hledger print desc:shop # show transactions with shop in the description
|
||||
$ hledger activity -W # show transaction counts per week as a bar chart
|
||||
|
||||
With the journal
|
||||
|
||||
|
||||
2016/02/16 Member Fee Payment John Doe
|
||||
assets:bank account 2 EUR
|
||||
income:member fees -2 EUR
|
||||
; member: John Doe
|
||||
|
||||
the -pivot comand will output the following:
|
||||
|
||||
|
||||
$ hledger bal --pivot member
|
||||
2 EUR assets:bank account
|
||||
-2 EUR member:John Doe
|
||||
|
||||
|
||||
File: hledger.1.info, Node: OPTIONS, Next: QUERIES, Prev: EXAMPLES, Up: Top
|
||||
|
||||
@ -204,8 +219,8 @@ command name.
|
||||
set start date, end date, and/or reporting interval all at once
|
||||
(overrides the flags above)
|
||||
|
||||
`--date2 --aux-date'
|
||||
use postings/txns' secondary dates instead
|
||||
`--date2'
|
||||
show, and match with -b/-e/-p/date:, secondary dates instead
|
||||
|
||||
`-C --cleared'
|
||||
include only cleared postings/txns
|
||||
@ -228,6 +243,15 @@ command name.
|
||||
`-B --cost'
|
||||
show amounts in their cost price's commodity
|
||||
|
||||
`-pivot TAG
|
||||
will transform the journal before any other processing by
|
||||
replacing the account name of every posting having the tag TAG
|
||||
with content VALUE by the account name "TAG:VALUE". The TAG will
|
||||
only match if it is a full-length match. The pivot will only
|
||||
happen if the TAG is on a posting, not if it is on the transaction.
|
||||
If the tag value is a multi:level:account:name the new account
|
||||
name will be "TAG:multi:level:account:name".
|
||||
|
||||
* Menu:
|
||||
|
||||
* Multiple files::
|
||||
@ -244,10 +268,10 @@ File: hledger.1.info, Node: Multiple files, Next: Repeated options, Up: OPTIO
|
||||
2.1 Multiple files
|
||||
==================
|
||||
|
||||
One may specify the `--file FILE' option multiple times. This is
|
||||
equivalent to concatenating the files to standard input and passing
|
||||
`--file -', except that the add command functions normally and adds
|
||||
entries to the first specified file.
|
||||
You can specify multiple `-f/--file FILE' options. This is like
|
||||
combining all the files into one, except they can have different
|
||||
formats. Also directives and aliases in one file do not affect
|
||||
subsequent files (if you need that, use the include directive instead).
|
||||
|
||||
|
||||
File: hledger.1.info, Node: Repeated options, Next: Depth limiting, Prev: Multiple files, Up: OPTIONS
|
||||
@ -480,11 +504,14 @@ match (or negatively match)
|
||||
match transaction descriptions
|
||||
|
||||
*`date:PERIODEXPR'*
|
||||
match dates within the specified period (which should not include a
|
||||
reporting interval
|
||||
match dates within the specified period. PERIODEXPR should not
|
||||
include a reporting interval. The command-line `--date2' flag
|
||||
makes this match secondary dates instead (like the `-b'/`-e'/`-p'
|
||||
options).
|
||||
|
||||
*`date2:PERIODEXPR'*
|
||||
as above, but match secondary dates
|
||||
match secondary dates within the specified period. PERIODEXPR
|
||||
should not include a reporting interval.
|
||||
|
||||
*`depth:N'*
|
||||
match (or display, depending on command) accounts at or above this
|
||||
@ -506,8 +533,7 @@ match (or negatively match)
|
||||
*`not:'*
|
||||
before any of the above negates the match.
|
||||
|
||||
-----------------------------------------------------------------------
|
||||
Some of these can also be expressed as command-line options (eg
|
||||
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 arguments, and the resulting query will be their intersection
|
||||
(perhaps excluding the `-p/--period' option).
|
||||
@ -648,8 +674,9 @@ Prompt for transactions and add them to the journal.
|
||||
Many hledger users edit their journals directly with a text editor,
|
||||
or generate them from CSV. For more interactive data entry, there is the
|
||||
`add' command, which prompts interactively on the console for new
|
||||
transactions, and appends them to the journal file (existing
|
||||
transactions are not changed). This is the only hledger command that
|
||||
transactions, and appends them to the journal file (if there are
|
||||
multiple `-f FILE' options, the first file is used.) Existing
|
||||
transactions are not changed. This is the only hledger command that
|
||||
writes to the journal file.
|
||||
|
||||
To use it, just run `hledger add' and follow the prompts. You can
|
||||
@ -1877,6 +1904,11 @@ File: hledger.1.info, Node: rewrite, Next: ui, Prev: print-unique, Up: ADD-O
|
||||
Prints all journal entries, adding specified custom postings to matched
|
||||
entries.
|
||||
|
||||
hledger-rewrite.hs, in hledger's extra directory (compilation
|
||||
optional), adds postings to existing transactions, optionally with an
|
||||
amount based on the existing transaction's first amount. See the script
|
||||
for more details.
|
||||
|
||||
|
||||
$ hledger rewrite -- [QUERY] --add-posting "ACCT AMTEXPR" ...
|
||||
$ hledger rewrite -- ^income --add-posting '(liabilities:tax) *.33'
|
||||
@ -2009,97 +2041,97 @@ Tag Table:
|
||||
Node: Top82
|
||||
Node: EXAMPLES1754
|
||||
Ref: #examples1856
|
||||
Node: OPTIONS3508
|
||||
Ref: #options3612
|
||||
Node: Multiple files6386
|
||||
Ref: #multiple-files6511
|
||||
Node: Repeated options6750
|
||||
Ref: #repeated-options6902
|
||||
Node: Depth limiting7022
|
||||
Ref: #depth-limiting7167
|
||||
Node: Smart dates7368
|
||||
Ref: #smart-dates7509
|
||||
Node: Reporting interval8506
|
||||
Ref: #reporting-interval8665
|
||||
Node: Period expressions9008
|
||||
Ref: #period-expressions9175
|
||||
Node: Regular Expressions11221
|
||||
Ref: #regular-expressions11363
|
||||
Node: QUERIES12846
|
||||
Ref: #queries12950
|
||||
Node: COMMANDS16125
|
||||
Ref: #commands16239
|
||||
Node: accounts16912
|
||||
Ref: #accounts17012
|
||||
Node: activity17994
|
||||
Ref: #activity18106
|
||||
Node: add18465
|
||||
Ref: #add18566
|
||||
Node: balance21160
|
||||
Ref: #balance21273
|
||||
Node: Flat mode23989
|
||||
Ref: #flat-mode24116
|
||||
Node: Depth limited balance reports24535
|
||||
Ref: #depth-limited-balance-reports24738
|
||||
Node: Multicolumn balance reports25159
|
||||
Ref: #multicolumn-balance-reports25361
|
||||
Node: Market value30010
|
||||
Ref: #market-value30174
|
||||
Node: Custom balance output30667
|
||||
Ref: #custom-balance-output30840
|
||||
Node: Output destination32944
|
||||
Ref: #output-destination33109
|
||||
Node: CSV output33379
|
||||
Ref: #csv-output33498
|
||||
Node: balancesheet33895
|
||||
Ref: #balancesheet34023
|
||||
Node: cashflow34675
|
||||
Ref: #cashflow34792
|
||||
Node: help35482
|
||||
Ref: #help35594
|
||||
Node: incomestatement36431
|
||||
Ref: #incomestatement36561
|
||||
Node: info37288
|
||||
Ref: #info37395
|
||||
Node: man37757
|
||||
Ref: #man37854
|
||||
Node: print38257
|
||||
Ref: #print38362
|
||||
Node: register39713
|
||||
Ref: #register39826
|
||||
Node: Custom register output44167
|
||||
Ref: #custom-register-output44298
|
||||
Node: stats45595
|
||||
Ref: #stats45701
|
||||
Node: test46582
|
||||
Ref: #test46669
|
||||
Node: ADD-ON COMMANDS47036
|
||||
Ref: #add-on-commands47172
|
||||
Node: api48460
|
||||
Ref: #api48552
|
||||
Node: autosync48586
|
||||
Ref: #autosync48701
|
||||
Node: diff51016
|
||||
Ref: #diff51126
|
||||
Node: equity51790
|
||||
Ref: #equity51904
|
||||
Node: interest53232
|
||||
Ref: #interest53349
|
||||
Node: irr56433
|
||||
Ref: #irr56546
|
||||
Node: print-unique58921
|
||||
Ref: #print-unique59051
|
||||
Node: rewrite59309
|
||||
Ref: #rewrite59428
|
||||
Node: ui59731
|
||||
Ref: #ui59831
|
||||
Node: web59872
|
||||
Ref: #web59960
|
||||
Node: TROUBLESHOOTING59993
|
||||
Ref: #troubleshooting60112
|
||||
Node: Run-time problems60166
|
||||
Ref: #run-time-problems60309
|
||||
Node: Known limitations62253
|
||||
Ref: #known-limitations62396
|
||||
Node: OPTIONS3860
|
||||
Ref: #options3964
|
||||
Node: Multiple files7217
|
||||
Ref: #multiple-files7342
|
||||
Node: Repeated options7607
|
||||
Ref: #repeated-options7759
|
||||
Node: Depth limiting7879
|
||||
Ref: #depth-limiting8024
|
||||
Node: Smart dates8225
|
||||
Ref: #smart-dates8366
|
||||
Node: Reporting interval9363
|
||||
Ref: #reporting-interval9522
|
||||
Node: Period expressions9865
|
||||
Ref: #period-expressions10032
|
||||
Node: Regular Expressions12078
|
||||
Ref: #regular-expressions12220
|
||||
Node: QUERIES13703
|
||||
Ref: #queries13807
|
||||
Node: COMMANDS17109
|
||||
Ref: #commands17223
|
||||
Node: accounts17896
|
||||
Ref: #accounts17996
|
||||
Node: activity18978
|
||||
Ref: #activity19090
|
||||
Node: add19449
|
||||
Ref: #add19550
|
||||
Node: balance22209
|
||||
Ref: #balance22322
|
||||
Node: Flat mode25038
|
||||
Ref: #flat-mode25165
|
||||
Node: Depth limited balance reports25584
|
||||
Ref: #depth-limited-balance-reports25787
|
||||
Node: Multicolumn balance reports26208
|
||||
Ref: #multicolumn-balance-reports26410
|
||||
Node: Market value31059
|
||||
Ref: #market-value31223
|
||||
Node: Custom balance output31716
|
||||
Ref: #custom-balance-output31889
|
||||
Node: Output destination33993
|
||||
Ref: #output-destination34158
|
||||
Node: CSV output34428
|
||||
Ref: #csv-output34547
|
||||
Node: balancesheet34944
|
||||
Ref: #balancesheet35072
|
||||
Node: cashflow35724
|
||||
Ref: #cashflow35841
|
||||
Node: help36531
|
||||
Ref: #help36643
|
||||
Node: incomestatement37480
|
||||
Ref: #incomestatement37610
|
||||
Node: info38337
|
||||
Ref: #info38444
|
||||
Node: man38806
|
||||
Ref: #man38903
|
||||
Node: print39306
|
||||
Ref: #print39411
|
||||
Node: register40762
|
||||
Ref: #register40875
|
||||
Node: Custom register output45216
|
||||
Ref: #custom-register-output45347
|
||||
Node: stats46644
|
||||
Ref: #stats46750
|
||||
Node: test47631
|
||||
Ref: #test47718
|
||||
Node: ADD-ON COMMANDS48085
|
||||
Ref: #add-on-commands48221
|
||||
Node: api49509
|
||||
Ref: #api49601
|
||||
Node: autosync49635
|
||||
Ref: #autosync49750
|
||||
Node: diff52065
|
||||
Ref: #diff52175
|
||||
Node: equity52839
|
||||
Ref: #equity52953
|
||||
Node: interest54281
|
||||
Ref: #interest54398
|
||||
Node: irr57482
|
||||
Ref: #irr57595
|
||||
Node: print-unique59970
|
||||
Ref: #print-unique60100
|
||||
Node: rewrite60358
|
||||
Ref: #rewrite60477
|
||||
Node: ui61006
|
||||
Ref: #ui61106
|
||||
Node: web61147
|
||||
Ref: #web61235
|
||||
Node: TROUBLESHOOTING61268
|
||||
Ref: #troubleshooting61387
|
||||
Node: Run-time problems61441
|
||||
Ref: #run-time-problems61584
|
||||
Node: Known limitations63528
|
||||
Ref: #known-limitations63671
|
||||
|
||||
End Tag Table
|
||||
|
@ -103,6 +103,19 @@ EEXXAAMMPPLLEESS
|
||||
$ hledger print desc:shop # show transactions with shop in the description
|
||||
$ hledger activity -W # show transaction counts per week as a bar chart
|
||||
|
||||
With the journal
|
||||
|
||||
2016/02/16 Member Fee Payment John Doe
|
||||
assets:bank account 2 EUR
|
||||
income:member fees -2 EUR
|
||||
; member: John Doe
|
||||
|
||||
the --pivot comand will output the following:
|
||||
|
||||
$ hledger bal --pivot member
|
||||
2 EUR assets:bank account
|
||||
-2 EUR member:John Doe
|
||||
|
||||
OOPPTTIIOONNSS
|
||||
To see general usage and the command list: hledger -h or just hledger
|
||||
|
||||
@ -181,8 +194,8 @@ OOPPTTIIOONNSS
|
||||
set start date, end date, and/or reporting interval all at once
|
||||
(overrides the flags above)
|
||||
|
||||
----ddaattee22 ----aauuxx--ddaattee
|
||||
use postings/txns' secondary dates instead
|
||||
----ddaattee22
|
||||
show, and match with -b/-e/-p/date:, secondary dates instead
|
||||
|
||||
--CC ----cclleeaarreedd
|
||||
include only cleared postings/txns
|
||||
@ -205,156 +218,165 @@ OOPPTTIIOONNSS
|
||||
--BB ----ccoosstt
|
||||
show amounts in their cost price's commodity
|
||||
|
||||
``----ppiivvoott TTAAGG
|
||||
will transform the journal before any other processing by
|
||||
replacing the account name of every posting having the tag TAG
|
||||
with content VALUE by the account name "TAG:VALUE".
|
||||
The TAG will only match if it is a full-length match. The pivot will
|
||||
only happen if the TAG is on a posting, not if it is on the transac-
|
||||
tion. If the tag value is a multi:level:account:name the new account
|
||||
name will be "TAG:multi:level:account:name".
|
||||
|
||||
MMuullttiippllee ffiilleess
|
||||
One may specify the --file FILE option multiple times. This is equiva-
|
||||
lent to concatenating the files to standard input and passing --file -,
|
||||
except that the add command functions normally and adds entries to the
|
||||
first specified file.
|
||||
You can specify multiple -f/--file FILE options. This is like combin-
|
||||
ing all the files into one, except they can have different formats.
|
||||
Also directives and aliases in one file do not affect subsequent files
|
||||
(if you need that, use the include directive instead).
|
||||
|
||||
RReeppeeaatteedd ooppttiioonnss
|
||||
Otherwise, if a reporting option is repeated, the last one takes prece-
|
||||
dence. Eg -p jan -p feb is equivalent to -p feb.
|
||||
|
||||
DDeepptthh lliimmiittiinngg
|
||||
With the --depth N option, commands like account, balance and register
|
||||
will show only the uppermost accounts in the account tree, down to
|
||||
With the --depth N option, commands like account, balance and register
|
||||
will show only the uppermost accounts in the account tree, down to
|
||||
level N. Use this when you want a summary with less detail.
|
||||
|
||||
SSmmaarrtt ddaatteess
|
||||
hledger's user interfaces accept a flexible "smart date" syntax (unlike
|
||||
dates in the journal file). Smart dates allow some english words, can
|
||||
be relative to today's date, and can have less-significant date parts
|
||||
dates in the journal file). Smart dates allow some english words, can
|
||||
be relative to today's date, and can have less-significant date parts
|
||||
omitted (defaulting to 1).
|
||||
|
||||
Examples:
|
||||
|
||||
|
||||
tab(@); l l. T{ 2009/1/1, 2009/01/01, 2009-1-1, 2009.1.1 T}@T{ simple
|
||||
dates, several separators allowed T} T{ 2009/1, 2009 T}@T{ same as
|
||||
above - a missing day or month defaults to 1 T} T{ 1/1, january, jan,
|
||||
this year T}@T{ relative dates, meaning january 1 of the current year
|
||||
tab(@); l l. T{ 2009/1/1, 2009/01/01, 2009-1-1, 2009.1.1 T}@T{ simple
|
||||
dates, several separators allowed T} T{ 2009/1, 2009 T}@T{ same as
|
||||
above - a missing day or month defaults to 1 T} T{ 1/1, january, jan,
|
||||
this year T}@T{ relative dates, meaning january 1 of the current year
|
||||
T} T{ next year T}@T{ january 1 of next year T} T{ this month T}@T{ the
|
||||
1st of the current month T} T{ this week T}@T{ the most recent monday
|
||||
T} T{ last week T}@T{ the monday of the week before this one T} T{
|
||||
lastweek T}@T{ spaces are optional T} T{ today, yesterday, tomorrow
|
||||
1st of the current month T} T{ this week T}@T{ the most recent monday
|
||||
T} T{ last week T}@T{ the monday of the week before this one T} T{
|
||||
lastweek T}@T{ spaces are optional T} T{ today, yesterday, tomorrow
|
||||
T}@T{ T}
|
||||
|
||||
RReeppoorrttiinngg iinntteerrvvaall
|
||||
A reporting interval can be specified so that commands like register,
|
||||
balance and activity will divide their reports into multiple report
|
||||
periods. The basic intervals can be selected with one of -D/--daily,
|
||||
-W/--weekly, -M/--monthly, -Q/--quarterly, or -Y/--yearly. More com-
|
||||
A reporting interval can be specified so that commands like register,
|
||||
balance and activity will divide their reports into multiple report
|
||||
periods. The basic intervals can be selected with one of -D/--daily,
|
||||
-W/--weekly, -M/--monthly, -Q/--quarterly, or -Y/--yearly. More com-
|
||||
plex intervals may be specified with a period expression.
|
||||
|
||||
PPeerriioodd eexxpprreessssiioonnss
|
||||
The -p/--period option accepts period expressions, a shorthand way of
|
||||
expressing a start date, end date, and or reporting interval all at
|
||||
once. Note a period expression on the command line will cause any
|
||||
The -p/--period option accepts period expressions, a shorthand way of
|
||||
expressing a start date, end date, and or reporting interval all at
|
||||
once. Note a period expression on the command line will cause any
|
||||
other date flags (-b/-e/-D/-W/-M/-Q/-Y) to be ignored.
|
||||
|
||||
hledger's period expressions are similar to Ledger's, though not iden-
|
||||
tical. Here's a basic period expression specifying the first quarter
|
||||
of 2009. Note, hledger always treats start dates as inclusive and end
|
||||
hledger's period expressions are similar to Ledger's, though not iden-
|
||||
tical. Here's a basic period expression specifying the first quarter
|
||||
of 2009. Note, hledger always treats start dates as inclusive and end
|
||||
dates as exclusive:
|
||||
|
||||
-p "from 2009/1/1 to 2009/4/1"
|
||||
|
||||
Keywords like "from" and "to" are optional, and so are the spaces, as
|
||||
long as you don't run two dates together. "to" can also be written as
|
||||
Keywords like "from" and "to" are optional, and so are the spaces, as
|
||||
long as you don't run two dates together. "to" can also be written as
|
||||
"-". These are equivalent to the above:
|
||||
|
||||
|
||||
tab(@); l. T{ -p "2009/1/1 2009/4/1" T} T{ -p2009/1/1to2009/4/1 T} T{
|
||||
tab(@); l. T{ -p "2009/1/1 2009/4/1" T} T{ -p2009/1/1to2009/4/1 T} T{
|
||||
-p2009/1/1-2009/4/1 T}
|
||||
|
||||
Dates are smart dates, so if the current year is 2009, the above can
|
||||
Dates are smart dates, so if the current year is 2009, the above can
|
||||
also be written as:
|
||||
|
||||
|
||||
tab(@); l. T{ -p "1/1 4/1" T} T{ -p "january-apr" T} T{
|
||||
tab(@); l. T{ -p "1/1 4/1" T} T{ -p "january-apr" T} T{
|
||||
-p "this year to 4/1" T}
|
||||
|
||||
If you specify only one date, the missing start or end date will be the
|
||||
earliest or latest transaction in your journal:
|
||||
|
||||
|
||||
tab(@); l l. T{ -p "from 2009/1/1" T}@T{ everything after january 1,
|
||||
2009 T} T{ -p "from 2009/1" T}@T{ the same T} T{ -p "from 2009" T}@T{
|
||||
tab(@); l l. T{ -p "from 2009/1/1" T}@T{ everything after january 1,
|
||||
2009 T} T{ -p "from 2009/1" T}@T{ the same T} T{ -p "from 2009" T}@T{
|
||||
the same T} T{ -p "to 2009" T}@T{ everything before january 1, 2009 T}
|
||||
|
||||
A single date with no "from" or "to" defines both the start and end
|
||||
A single date with no "from" or "to" defines both the start and end
|
||||
date like so:
|
||||
|
||||
|
||||
tab(@); l l. T{ -p "2009" T}@T{ the year 2009; equivalent to "2009/1/1
|
||||
to 2010/1/1" T} T{ -p "2009/1" T}@T{ the month of jan; equivalent to
|
||||
to 2010/1/1" T} T{ -p "2009/1" T}@T{ the month of jan; equivalent to
|
||||
"2009/1/1 to 2009/2/1" T} T{ -p "2009/1/1" T}@T{ just that day; equiva-
|
||||
lent to "2009/1/1 to 2009/1/2" T}
|
||||
|
||||
Period expressions can also start with (or be) a reporting interval:
|
||||
daily, weekly, monthly, quarterly, yearly, or one of the every ...
|
||||
expressions below. Optionally the word in may appear between the
|
||||
Period expressions can also start with (or be) a reporting interval:
|
||||
daily, weekly, monthly, quarterly, yearly, or one of the every ...
|
||||
expressions below. Optionally the word in may appear between the
|
||||
reporting interval and the start/end dates. Examples:
|
||||
|
||||
|
||||
tab(@); l. T{ -p "weekly from 2009/1/1 to 2009/4/1" T} T{
|
||||
-p "monthly in 2008" T} T{ -p "bimonthly from 2008" T} T{ -p "quar-
|
||||
terly" T} T{ -p "every 2 weeks" T} T{ -p "every 5 days from 1/3" T} T{
|
||||
tab(@); l. T{ -p "weekly from 2009/1/1 to 2009/4/1" T} T{
|
||||
-p "monthly in 2008" T} T{ -p "bimonthly from 2008" T} T{ -p "quar-
|
||||
terly" T} T{ -p "every 2 weeks" T} T{ -p "every 5 days from 1/3" T} T{
|
||||
-p "every 15th day of month" T} T{ -p "every 4th day of week" T}
|
||||
|
||||
RReegguullaarr EExxpprreessssiioonnss
|
||||
hledger uses regular expressions in a number of places:
|
||||
|
||||
+o query terms, on the command line and in the hledger-web search form:
|
||||
+o query terms, on the command line and in the hledger-web search form:
|
||||
REGEX, desc:REGEX, cur:REGEX, tag:...=REGEX
|
||||
|
||||
+o CSV rules conditional blocks: if REGEX ...
|
||||
|
||||
+o account alias directives and options: alias /REGEX/ = REPLACEMENT,
|
||||
+o account alias directives and options: alias /REGEX/ = REPLACEMENT,
|
||||
--alias /REGEX/=REPLACEMENT
|
||||
|
||||
hledger's regular expressions come from the regex-tdfa library. In
|
||||
hledger's regular expressions come from the regex-tdfa library. In
|
||||
general they:
|
||||
|
||||
+o are case insensitive
|
||||
|
||||
+o are infix matching (do not need to match the entire thing being
|
||||
+o are infix matching (do not need to match the entire thing being
|
||||
matched)
|
||||
|
||||
+o are POSIX extended regular expressions
|
||||
|
||||
+o also support GNU word boundaries (\<, \>, \b, \B)
|
||||
|
||||
+o and parenthesised capturing groups and numeric backreferences in
|
||||
+o and parenthesised capturing groups and numeric backreferences in
|
||||
replacement strings
|
||||
|
||||
+o do not support mode modifiers like (?s)
|
||||
|
||||
Some things to note:
|
||||
|
||||
+o In the alias directive and --alias option, regular expressions must
|
||||
be enclosed in forward slashes (/REGEX/). Elsewhere in hledger,
|
||||
+o In the alias directive and --alias option, regular expressions must
|
||||
be enclosed in forward slashes (/REGEX/). Elsewhere in hledger,
|
||||
these are not required.
|
||||
|
||||
+o To match a regular expression metacharacter like $ as a literal char-
|
||||
acter, prepend a backslash. Eg to search for amounts with the dollar
|
||||
sign in hledger-web, write cur:\$.
|
||||
|
||||
+o On the command line, some metacharacters like $ have a special mean-
|
||||
+o On the command line, some metacharacters like $ have a special mean-
|
||||
ing to the shell and so must be escaped a second time, with single or
|
||||
double quotes or another backslash. Eg, to match amounts with the
|
||||
double quotes or another backslash. Eg, to match amounts with the
|
||||
dollar sign from the command line, write cur:'\$' or cur:\\$.
|
||||
|
||||
QQUUEERRIIEESS
|
||||
One of hledger's strengths is being able to quickly report on precise
|
||||
subsets of your data. Most commands accept an optional query expres-
|
||||
sion, written as arguments after the command name, to filter the data
|
||||
by date, account name or other criteria. The syntax is similar to a
|
||||
One of hledger's strengths is being able to quickly report on precise
|
||||
subsets of your data. Most commands accept an optional query expres-
|
||||
sion, written as arguments after the command name, to filter the data
|
||||
by date, account name or other criteria. The syntax is similar to a
|
||||
web search: one or more space-separated search terms, quotes to enclose
|
||||
whitespace, optional prefixes to match specific fields. Multiple
|
||||
whitespace, optional prefixes to match specific fields. Multiple
|
||||
search terms are combined as follows:
|
||||
|
||||
All commands except print: show transactions/postings/accounts which
|
||||
All commands except print: show transactions/postings/accounts which
|
||||
match (or negatively match)
|
||||
|
||||
+o any of the description terms AND
|
||||
@ -381,22 +403,22 @@ QQUUEERRIIEESS
|
||||
same as above
|
||||
|
||||
aammtt::NN,, aammtt::<<NN,, aammtt::<<==NN,, aammtt::>>NN,, aammtt::>>==NN
|
||||
match postings with a single-commodity amount that is equal to,
|
||||
less than, or greater than N. (Multi-commodity amounts are not
|
||||
match postings with a single-commodity amount that is equal to,
|
||||
less than, or greater than N. (Multi-commodity amounts are not
|
||||
tested, and will always match.) The comparison has two modes: if
|
||||
N is preceded by a + or - sign (or is 0), the two signed numbers
|
||||
are compared. Otherwise, the absolute magnitudes are compared,
|
||||
are compared. Otherwise, the absolute magnitudes are compared,
|
||||
ignoring sign.
|
||||
|
||||
ccooddee::RREEGGEEXX
|
||||
match by transaction code (eg check number)
|
||||
|
||||
ccuurr::RREEGGEEXX
|
||||
match postings or transactions including any amounts whose cur-
|
||||
rency/commodity symbol is fully matched by REGEX. (For a par-
|
||||
match postings or transactions including any amounts whose cur-
|
||||
rency/commodity symbol is fully matched by REGEX. (For a par-
|
||||
tial match, use .*REGEX.*). Note, to match characters which are
|
||||
regex-significant, like the dollar sign ($), you need to prepend
|
||||
\. And when using the command line you need to add one more
|
||||
\. And when using the command line you need to add one more
|
||||
level of quoting to hide it from the shell, so eg do:
|
||||
hledger print cur:'\$' or hledger print cur:\\$.
|
||||
|
||||
@ -404,11 +426,14 @@ QQUUEERRIIEESS
|
||||
match transaction descriptions
|
||||
|
||||
ddaattee::PPEERRIIOODDEEXXPPRR
|
||||
match dates within the specified period (which should not
|
||||
include a reporting interval
|
||||
match dates within the specified period. PERIODEXPR should not
|
||||
include a reporting interval. The command-line --date2 flag
|
||||
makes this match secondary dates instead (like the -b/-e/-p
|
||||
options).
|
||||
|
||||
ddaattee22::PPEERRIIOODDEEXXPPRR
|
||||
as above, but match secondary dates
|
||||
match secondary dates within the specified period. PERIODEXPR
|
||||
should not include a reporting interval.
|
||||
|
||||
ddeepptthh::NN
|
||||
match (or display, depending on command) accounts at or above
|
||||
@ -429,8 +454,6 @@ QQUUEERRIIEESS
|
||||
|
||||
nnoott:: before any of the above negates the match.
|
||||
|
||||
* * * * *
|
||||
|
||||
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
|
||||
arguments, and the resulting query will be their intersection (perhaps
|
||||
@ -529,17 +552,18 @@ CCOOMMMMAANNDDSS
|
||||
Many hledger users edit their journals directly with a text editor, or
|
||||
generate them from CSV. For more interactive data entry, there is the
|
||||
add command, which prompts interactively on the console for new trans-
|
||||
actions, and appends them to the journal file (existing transactions
|
||||
are not changed). This is the only hledger command that writes to the
|
||||
journal file.
|
||||
actions, and appends them to the journal file (if there are multiple
|
||||
-f FILE options, the first file is used.) Existing transactions are not
|
||||
changed. This is the only hledger command that writes to the journal
|
||||
file.
|
||||
|
||||
To use it, just run hledger add and follow the prompts. You can add as
|
||||
many transactions as you like; when you are finished, enter . or press
|
||||
many transactions as you like; when you are finished, enter . or press
|
||||
control-d or control-c to exit.
|
||||
|
||||
Features:
|
||||
|
||||
+o add tries to provide useful defaults, using the most similar recent
|
||||
+o add tries to provide useful defaults, using the most similar recent
|
||||
transaction (by description) as a template.
|
||||
|
||||
+o You can also set the initial defaults with command line arguments.
|
||||
@ -547,20 +571,20 @@ CCOOMMMMAANNDDSS
|
||||
+o Readline-style edit keys can be used during data entry.
|
||||
|
||||
+o The tab key will auto-complete whenever possible - accounts, descrip-
|
||||
tions, dates (yesterday, today, tomorrow). If the input area is
|
||||
tions, dates (yesterday, today, tomorrow). If the input area is
|
||||
empty, it will insert the default value.
|
||||
|
||||
+o If the journal defines a default commodity, it will be added to any
|
||||
+o If the journal defines a default commodity, it will be added to any
|
||||
bare numbers entered.
|
||||
|
||||
+o A parenthesised transaction code may be entered following a date.
|
||||
|
||||
+o Comments and tags may be entered following a description or amount.
|
||||
|
||||
+o If you make a mistake, enter < at any prompt to restart the transac-
|
||||
+o If you make a mistake, enter < at any prompt to restart the transac-
|
||||
tion.
|
||||
|
||||
+o Input prompts are displayed in a different colour when the terminal
|
||||
+o Input prompts are displayed in a different colour when the terminal
|
||||
supports it.
|
||||
|
||||
Example (see the tutorial for a detailed explanation):
|
||||
@ -632,7 +656,7 @@ CCOOMMMMAANNDDSS
|
||||
--OO FFMMTT ----oouuttppuutt--ffoorrmmaatt==FFMMTT
|
||||
select the output format. Supported formats: txt, csv.
|
||||
|
||||
The balance command displays accounts and balances. It is hledger's
|
||||
The balance command displays accounts and balances. It is hledger's
|
||||
most featureful and most useful command.
|
||||
|
||||
$ hledger balance
|
||||
@ -649,24 +673,24 @@ CCOOMMMMAANNDDSS
|
||||
--------------------
|
||||
0
|
||||
|
||||
More precisely, the balance command shows the _c_h_a_n_g_e to each account's
|
||||
More precisely, the balance command shows the _c_h_a_n_g_e to each account's
|
||||
balance caused by all (matched) postings. In the common case where you
|
||||
do not filter by date and your journal sets the correct opening bal-
|
||||
do not filter by date and your journal sets the correct opening bal-
|
||||
ances, this is the same as the account's ending balance.
|
||||
|
||||
By default, accounts are displayed hierarchically, with subaccounts
|
||||
By default, accounts are displayed hierarchically, with subaccounts
|
||||
indented below their parent. "Boring" accounts, which contain a single
|
||||
interesting subaccount and no balance of their own, are elided into the
|
||||
following line for more compact output. (Use --no-elide to prevent
|
||||
following line for more compact output. (Use --no-elide to prevent
|
||||
this.)
|
||||
|
||||
Each account's balance is the "inclusive" balance - it includes the
|
||||
Each account's balance is the "inclusive" balance - it includes the
|
||||
balances of any subaccounts.
|
||||
|
||||
Accounts which have zero balance (and no non-zero subaccounts) are
|
||||
Accounts which have zero balance (and no non-zero subaccounts) are
|
||||
omitted. Use -E/--empty to show them.
|
||||
|
||||
A final total is displayed by default; use -N/--no-total to suppress
|
||||
A final total is displayed by default; use -N/--no-total to suppress
|
||||
it:
|
||||
|
||||
$ hledger balance -p 2008/6 expenses --no-total
|
||||
@ -676,9 +700,9 @@ CCOOMMMMAANNDDSS
|
||||
|
||||
FFllaatt mmooddee
|
||||
To see a flat list of full account names instead of the default hierar-
|
||||
chical display, use --flat. In this mode, accounts (unless
|
||||
chical display, use --flat. In this mode, accounts (unless
|
||||
depth-clipped) show their "exclusive" balance, excluding any subaccount
|
||||
balances. In this mode, you can also use --drop N to omit the first
|
||||
balances. In this mode, you can also use --drop N to omit the first
|
||||
few account name components.
|
||||
|
||||
$ hledger balance -p 2008/6 expenses -N --flat --drop 1
|
||||
@ -686,9 +710,9 @@ CCOOMMMMAANNDDSS
|
||||
$1 supplies
|
||||
|
||||
DDeepptthh lliimmiitteedd bbaallaannccee rreeppoorrttss
|
||||
With --depth N, balance shows accounts only to the specified depth.
|
||||
This is very useful to show a complex charts of accounts in less
|
||||
detail. In flat mode, balances from accounts below the depth limit
|
||||
With --depth N, balance shows accounts only to the specified depth.
|
||||
This is very useful to show a complex charts of accounts in less
|
||||
detail. In flat mode, balances from accounts below the depth limit
|
||||
will be shown as part of a parent account at the depth limit.
|
||||
|
||||
$ hledger balance -N --depth 1
|
||||
@ -698,12 +722,12 @@ CCOOMMMMAANNDDSS
|
||||
$1 liabilities
|
||||
|
||||
MMuullttiiccoolluummnn bbaallaannccee rreeppoorrttss
|
||||
With a reporting interval, multiple balance columns will be shown, one
|
||||
for each report period. There are three types of multi-column balance
|
||||
With a reporting interval, multiple balance columns will be shown, one
|
||||
for each report period. There are three types of multi-column balance
|
||||
report, showing different information:
|
||||
|
||||
1. By default: each column shows the sum of postings in that period, ie
|
||||
the account's change of balance in that period. This is useful eg
|
||||
the account's change of balance in that period. This is useful eg
|
||||
for a monthly income statement:
|
||||
|
||||
$ hledger balance --quarterly income expenses -E
|
||||
@ -718,8 +742,8 @@ CCOOMMMMAANNDDSS
|
||||
-------------------++---------------------------------
|
||||
|| $-1 $1 0 0
|
||||
|
||||
2. With --cumulative: each column shows the ending balance for that
|
||||
period, accumulating the changes across periods, starting from 0 at
|
||||
2. With --cumulative: each column shows the ending balance for that
|
||||
period, accumulating the changes across periods, starting from 0 at
|
||||
the report start date:
|
||||
|
||||
$ hledger balance --quarterly income expenses -E --cumulative
|
||||
@ -735,8 +759,8 @@ CCOOMMMMAANNDDSS
|
||||
|| $-1 0 0 0
|
||||
|
||||
3. With --historical/-H: each column shows the actual historical ending
|
||||
balance for that period, accumulating the changes across periods,
|
||||
starting from the actual balance at the report start date. This is
|
||||
balance for that period, accumulating the changes across periods,
|
||||
starting from the actual balance at the report start date. This is
|
||||
useful eg for a multi-period balance sheet, and when you are showing
|
||||
only the data after a certain start date:
|
||||
|
||||
@ -752,26 +776,26 @@ CCOOMMMMAANNDDSS
|
||||
----------------------++-------------------------------------
|
||||
|| 0 0 0
|
||||
|
||||
Multi-column balance reports display accounts in flat mode by default;
|
||||
Multi-column balance reports display accounts in flat mode by default;
|
||||
to see the hierarchy, use --tree.
|
||||
|
||||
With a reporting interval (like --quarterly above), the report
|
||||
start/end dates will be adjusted if necessary so that they encompass
|
||||
With a reporting interval (like --quarterly above), the report
|
||||
start/end dates will be adjusted if necessary so that they encompass
|
||||
the displayed report periods. This is so that the first and last peri-
|
||||
ods will be "full" and comparable to the others.
|
||||
|
||||
The -E/--empty flag does two things in multicolumn balance reports:
|
||||
first, the report will show all columns within the specified report
|
||||
period (without -E, leading and trailing columns with all zeroes are
|
||||
not shown). Second, all accounts which existed at the report start
|
||||
date will be considered, not just the ones with activity during the
|
||||
The -E/--empty flag does two things in multicolumn balance reports:
|
||||
first, the report will show all columns within the specified report
|
||||
period (without -E, leading and trailing columns with all zeroes are
|
||||
not shown). Second, all accounts which existed at the report start
|
||||
date will be considered, not just the ones with activity during the
|
||||
report period (use -E to include low-activity accounts which would oth-
|
||||
erwise would be omitted).
|
||||
|
||||
The -T/--row-total flag adds an additional column showing the total for
|
||||
each row.
|
||||
|
||||
The -A/--average flag adds a column showing the average value in each
|
||||
The -A/--average flag adds a column showing the average value in each
|
||||
row.
|
||||
|
||||
Here's an example of all three:
|
||||
@ -794,16 +818,16 @@ CCOOMMMMAANNDDSS
|
||||
|
||||
MMaarrkkeett vvaalluuee
|
||||
The -V/--value flag converts all the reported amounts to their "current
|
||||
market value" using their default market price. That is the latest
|
||||
market price (P directive) found in the journal (or an included file),
|
||||
market value" using their default market price. That is the latest
|
||||
market price (P directive) found in the journal (or an included file),
|
||||
for the amount's commodity, dated on or before the report end date.
|
||||
|
||||
Unlike Ledger, hledger's -V only uses the market prices recorded with P
|
||||
directives, ignoring transaction prices recorded as part of posting
|
||||
directives, ignoring transaction prices recorded as part of posting
|
||||
amounts (which -B/--cost uses). Using -B and -V together is allowed.
|
||||
|
||||
CCuussttoomm bbaallaannccee oouuttppuutt
|
||||
In simple (non-multi-column) balance reports, you can customise the
|
||||
In simple (non-multi-column) balance reports, you can customise the
|
||||
output with --format FMT:
|
||||
|
||||
$ hledger balance --format "%20(account) %12(total)"
|
||||
@ -821,7 +845,7 @@ CCOOMMMMAANNDDSS
|
||||
0
|
||||
|
||||
The FMT format string (plus a newline) specifies the formatting applied
|
||||
to each account/balance pair. It may contain any suitable text, with
|
||||
to each account/balance pair. It may contain any suitable text, with
|
||||
data fields interpolated like so:
|
||||
|
||||
%[MIN][.MAX](FIELDNAME)
|
||||
@ -832,14 +856,14 @@ CCOOMMMMAANNDDSS
|
||||
|
||||
+o FIELDNAME must be enclosed in parentheses, and can be one of:
|
||||
|
||||
+o depth_spacer - a number of spaces equal to the account's depth, or
|
||||
+o depth_spacer - a number of spaces equal to the account's depth, or
|
||||
if MIN is specified, MIN * depth spaces.
|
||||
|
||||
+o account - the account's name
|
||||
|
||||
+o total - the account's balance/posted total, right justified
|
||||
|
||||
Also, FMT can begin with an optional prefix to control how multi-com-
|
||||
Also, FMT can begin with an optional prefix to control how multi-com-
|
||||
modity amounts are rendered:
|
||||
|
||||
+o %_ - render on multiple lines, bottom-aligned (the default)
|
||||
@ -848,7 +872,7 @@ CCOOMMMMAANNDDSS
|
||||
|
||||
+o %, - render on one line, comma-separated
|
||||
|
||||
There are some quirks. Eg in one-line mode, %(depth_spacer) has no
|
||||
There are some quirks. Eg in one-line mode, %(depth_spacer) has no
|
||||
effect, instead %(account) has indentation built in.
|
||||
Experimentation may be needed to get pleasing results.
|
||||
|
||||
@ -856,19 +880,19 @@ CCOOMMMMAANNDDSS
|
||||
|
||||
+o %(total) - the account's total
|
||||
|
||||
+o %-20.20(account) - the account's name, left justified, padded to 20
|
||||
+o %-20.20(account) - the account's name, left justified, padded to 20
|
||||
characters and clipped at 20 characters
|
||||
|
||||
+o %,%-50(account) %25(total) - account name padded to 50 characters,
|
||||
total padded to 20 characters, with multiple commodities rendered on
|
||||
+o %,%-50(account) %25(total) - account name padded to 50 characters,
|
||||
total padded to 20 characters, with multiple commodities rendered on
|
||||
one line
|
||||
|
||||
+o %20(total) %2(depth_spacer)%-(account) - the default format for the
|
||||
+o %20(total) %2(depth_spacer)%-(account) - the default format for the
|
||||
single-column balance report
|
||||
|
||||
OOuuttppuutt ddeessttiinnaattiioonn
|
||||
The balance, print, register and stats commands can write their output
|
||||
to a destination other than the console. This is controlled by the
|
||||
The balance, print, register and stats commands can write their output
|
||||
to a destination other than the console. This is controlled by the
|
||||
-o/--output-file option.
|
||||
|
||||
$ hledger balance -o - # write to stdout (the default)
|
||||
@ -876,8 +900,8 @@ CCOOMMMMAANNDDSS
|
||||
|
||||
CCSSVV oouuttppuutt
|
||||
The balance, print and register commands can write their output as CSV.
|
||||
This is useful for exporting data to other applications, eg to make
|
||||
charts in a spreadsheet. This is controlled by the -O/--output-format
|
||||
This is useful for exporting data to other applications, eg to make
|
||||
charts in a spreadsheet. This is controlled by the -O/--output-format
|
||||
option, or by specifying a .csv file extension with -o/--output-file.
|
||||
|
||||
$ hledger balance -O csv # write CSV to stdout
|
||||
@ -891,8 +915,8 @@ CCOOMMMMAANNDDSS
|
||||
----ddrroopp==NN
|
||||
in flat mode: omit N leading account name parts
|
||||
|
||||
This command displays a simple balance sheet. It currently assumes
|
||||
that you have top-level accounts named asset and liability (plural
|
||||
This command displays a simple balance sheet. It currently assumes
|
||||
that you have top-level accounts named asset and liability (plural
|
||||
forms also allowed.)
|
||||
|
||||
$ hledger balancesheet
|
||||
@ -922,9 +946,9 @@ CCOOMMMMAANNDDSS
|
||||
----ddrroopp==NN
|
||||
in flat mode: omit N leading account name parts
|
||||
|
||||
This command displays a simple cashflow statement It shows the change
|
||||
in all "cash" (ie, liquid assets) accounts for the period. It cur-
|
||||
rently assumes that cash accounts are under a top-level account named
|
||||
This command displays a simple cashflow statement It shows the change
|
||||
in all "cash" (ie, liquid assets) accounts for the period. It cur-
|
||||
rently assumes that cash accounts are under a top-level account named
|
||||
asset and do not contain receivable or A/R (plural forms also allowed.)
|
||||
|
||||
$ hledger cashflow
|
||||
@ -944,11 +968,11 @@ CCOOMMMMAANNDDSS
|
||||
hheellpp
|
||||
Show one of the hledger manuals.
|
||||
|
||||
The help command displays any of the main hledger man pages. (Unlike
|
||||
hledger --help, which displays only the hledger man page.) Run it with
|
||||
no arguments to list available topics (their names are shortened for
|
||||
easier typing), and run hledger help TOPIC to select one. The output
|
||||
is similar to a man page, but fixed width. It may be long, so you may
|
||||
The help command displays any of the main hledger man pages. (Unlike
|
||||
hledger --help, which displays only the hledger man page.) Run it with
|
||||
no arguments to list available topics (their names are shortened for
|
||||
easier typing), and run hledger help TOPIC to select one. The output
|
||||
is similar to a man page, but fixed width. It may be long, so you may
|
||||
wish to pipe it into a pager. See also info and man.
|
||||
|
||||
$ hledger help
|
||||
@ -977,8 +1001,8 @@ CCOOMMMMAANNDDSS
|
||||
----ddrroopp==NN
|
||||
in flat mode: omit N leading account name parts
|
||||
|
||||
This command displays a simple income statement. It currently assumes
|
||||
that you have top-level accounts named income (or revenue) and expense
|
||||
This command displays a simple income statement. It currently assumes
|
||||
that you have top-level accounts named income (or revenue) and expense
|
||||
(plural forms also allowed.)
|
||||
|
||||
$ hledger incomestatement
|
||||
@ -1005,30 +1029,30 @@ CCOOMMMMAANNDDSS
|
||||
iinnffoo
|
||||
Show one of the hledger manuals using info.
|
||||
|
||||
The info command displays any of the hledger reference manuals using
|
||||
the info hypertextual documentation viewer. This can be a very effi-
|
||||
cient way to browse large manuals. It requires the "info" program to
|
||||
The info command displays any of the hledger reference manuals using
|
||||
the info hypertextual documentation viewer. This can be a very effi-
|
||||
cient way to browse large manuals. It requires the "info" program to
|
||||
be available in your PATH.
|
||||
|
||||
As with help, run it with no arguments to list available topics (manu-
|
||||
As with help, run it with no arguments to list available topics (manu-
|
||||
als).
|
||||
|
||||
mmaann
|
||||
Show one of the hledger manuals using man.
|
||||
|
||||
The man command displays any of the hledger reference manuals using
|
||||
man, the standard documentation viewer on unix systems. This will fit
|
||||
the text to your terminal width, and probably invoke a pager automati-
|
||||
The man command displays any of the hledger reference manuals using
|
||||
man, the standard documentation viewer on unix systems. This will fit
|
||||
the text to your terminal width, and probably invoke a pager automati-
|
||||
cally. It requires the "man" program to be available in your PATH.
|
||||
|
||||
As with help, run it with no arguments to list available topics (manu-
|
||||
As with help, run it with no arguments to list available topics (manu-
|
||||
als).
|
||||
|
||||
pprriinntt
|
||||
Show transactions from the journal.
|
||||
|
||||
--mm SSTTRR ----mmaattcchh==SSTTRR
|
||||
show the transaction whose description is most similar to STR,
|
||||
show the transaction whose description is most similar to STR,
|
||||
and is most recent
|
||||
|
||||
--oo FFIILLEE[[..FFMMTT]] ----oouuttppuutt--ffiillee==FFIILLEE[[..FFMMTT]]
|
||||
@ -1060,12 +1084,12 @@ CCOOMMMMAANNDDSS
|
||||
liabilities:debts $1
|
||||
assets:bank:checking $-1
|
||||
|
||||
The print command displays full transactions from the journal file,
|
||||
tidily formatted and showing all amounts explicitly. The output of
|
||||
print is always a valid hledger journal, but it does always not pre-
|
||||
The print command displays full transactions from the journal file,
|
||||
tidily formatted and showing all amounts explicitly. The output of
|
||||
print is always a valid hledger journal, but it does always not pre-
|
||||
serve all original content exactly (eg directives).
|
||||
|
||||
hledger's print command also shows all unit prices in effect, or (with
|
||||
hledger's print command also shows all unit prices in effect, or (with
|
||||
-B/--cost) shows cost amounts.
|
||||
|
||||
The print command also supports output destination and CSV output.
|
||||
@ -1077,14 +1101,14 @@ CCOOMMMMAANNDDSS
|
||||
include prior postings in the running total
|
||||
|
||||
--AA ----aavveerraaggee
|
||||
show a running average instead of the running total (implies
|
||||
show a running average instead of the running total (implies
|
||||
--empty)
|
||||
|
||||
--rr ----rreellaatteedd
|
||||
show postings' siblings instead
|
||||
|
||||
--ww NN ----wwiiddtthh==NN
|
||||
set output width (default: terminal width or COLUMNS. -wN,M
|
||||
set output width (default: terminal width or COLUMNS. -wN,M
|
||||
sets description width as well)
|
||||
|
||||
--oo FFIILLEE[[..FFMMTT]] ----oouuttppuutt--ffiillee==FFIILLEE[[..FFMMTT]]
|
||||
@ -1095,7 +1119,7 @@ CCOOMMMMAANNDDSS
|
||||
select the output format. Supported formats: txt, csv.
|
||||
|
||||
The register command displays postings, one per line, and their running
|
||||
total. This is typically used with a query selecting a particular
|
||||
total. This is typically used with a query selecting a particular
|
||||
account, to see that account's activity:
|
||||
|
||||
$ hledger register checking
|
||||
@ -1104,8 +1128,8 @@ CCOOMMMMAANNDDSS
|
||||
2008/06/02 save assets:bank:checking $-1 $1
|
||||
2008/12/31 pay off assets:bank:checking $-1 0
|
||||
|
||||
The --historical/-H flag adds the balance from any undisplayed prior
|
||||
postings to the running total. This is useful when you want to see
|
||||
The --historical/-H flag adds the balance from any undisplayed prior
|
||||
postings to the running total. This is useful when you want to see
|
||||
only recent activity, with a historically accurate running balance:
|
||||
|
||||
$ hledger register checking -b 2008/6 --historical
|
||||
@ -1115,22 +1139,22 @@ CCOOMMMMAANNDDSS
|
||||
|
||||
The --depth option limits the amount of sub-account detail displayed.
|
||||
|
||||
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
|
||||
the whole report period). This flag implies --empty (see below). It
|
||||
the whole report period). This flag implies --empty (see below). It
|
||||
works best when showing just one account and one commodity.
|
||||
|
||||
The --related/-r flag shows the _o_t_h_e_r postings in the transactions of
|
||||
The --related/-r flag shows the _o_t_h_e_r postings in the transactions of
|
||||
the postings which would normally be shown.
|
||||
|
||||
With a reporting interval, register shows summary postings, one per
|
||||
With a reporting interval, register shows summary postings, one per
|
||||
interval, aggregating the postings to each account:
|
||||
|
||||
$ hledger register --monthly income
|
||||
2008/01 income:salary $-1 $-1
|
||||
2008/06 income:gifts $-1 $-2
|
||||
|
||||
Periods with no activity, and summary postings with a zero amount, are
|
||||
Periods with no activity, and summary postings with a zero amount, are
|
||||
not shown by default; use the --empty/-E flag to see them:
|
||||
|
||||
$ hledger register --monthly income -E
|
||||
@ -1147,7 +1171,7 @@ CCOOMMMMAANNDDSS
|
||||
2008/11 0 $-2
|
||||
2008/12 0 $-2
|
||||
|
||||
Often, you'll want to see just one line per interval. The --depth
|
||||
Often, you'll want to see just one line per interval. The --depth
|
||||
option helps with this, causing subaccounts to be aggregated:
|
||||
|
||||
$ hledger register --monthly assets --depth 1h
|
||||
@ -1155,19 +1179,19 @@ CCOOMMMMAANNDDSS
|
||||
2008/06 assets $-1 0
|
||||
2008/12 assets $-1 $-1
|
||||
|
||||
Note when using report intervals, if you specify start/end dates these
|
||||
will be adjusted outward if necessary to contain a whole number of
|
||||
intervals. This ensures that the first and last intervals are full
|
||||
Note when using report intervals, if you specify start/end dates these
|
||||
will be adjusted outward if necessary to contain a whole number of
|
||||
intervals. This ensures that the first and last intervals are full
|
||||
length and comparable to the others in the report.
|
||||
|
||||
CCuussttoomm rreeggiisstteerr oouuttppuutt
|
||||
register uses the full terminal width by default, except on windows.
|
||||
You can override this by setting the COLUMNS environment variable (not
|
||||
register uses the full terminal width by default, except on windows.
|
||||
You can override this by setting the COLUMNS environment variable (not
|
||||
a bash shell variable) or by using the --width/-w option.
|
||||
|
||||
The description and account columns normally share the space equally
|
||||
(about half of (width - 40) each). You can adjust this by adding a
|
||||
description width as part of --width's argument, comma-separated:
|
||||
The description and account columns normally share the space equally
|
||||
(about half of (width - 40) each). You can adjust this by adding a
|
||||
description width as part of --width's argument, comma-separated:
|
||||
--width W,D . Here's a diagram:
|
||||
|
||||
<--------------------------------- width (W) ---------------------------------->
|
||||
@ -1183,7 +1207,7 @@ CCOOMMMMAANNDDSS
|
||||
$ hledger reg -w 100,40 # set overall width 100, description width 40
|
||||
$ hledger reg -w $COLUMNS,40 # use terminal width, and set description width
|
||||
|
||||
The register command also supports the -o/--output-file and -O/--out-
|
||||
The register command also supports the -o/--output-file and -O/--out-
|
||||
put-format options for controlling output destination and CSV output.
|
||||
|
||||
ssttaattss
|
||||
@ -1205,8 +1229,8 @@ CCOOMMMMAANNDDSS
|
||||
Accounts : 8 (depth 3)
|
||||
Commodities : 1 ($)
|
||||
|
||||
The stats command displays summary information for the whole journal,
|
||||
or a matched part of it. With a reporting interval, it shows a report
|
||||
The stats command displays summary information for the whole journal,
|
||||
or a matched part of it. With a reporting interval, it shows a report
|
||||
for each report period.
|
||||
|
||||
The stats command also supports -o/--output-file for controlling output
|
||||
@ -1218,37 +1242,37 @@ CCOOMMMMAANNDDSS
|
||||
$ hledger test
|
||||
Cases: 74 Tried: 74 Errors: 0 Failures: 0
|
||||
|
||||
This command runs hledger's built-in unit tests and displays a quick
|
||||
This command runs hledger's built-in unit tests and displays a quick
|
||||
report. With a regular expression argument, it selects only tests with
|
||||
matching names. It's mainly used in development, but it's also nice to
|
||||
be able to check your hledger executable for smoke at any time.
|
||||
|
||||
AADDDD--OONN CCOOMMMMAANNDDSS
|
||||
Add-on commands are executables in your PATH whose name starts with
|
||||
hledger- and ends with any of these file extensions: none,
|
||||
.hs,.lhs,.pl,.py,.rb,.rkt,.sh,.bat,.com,.exe. Also, an add-on's name
|
||||
Add-on commands are executables in your PATH whose name starts with
|
||||
hledger- and ends with any of these file extensions: none,
|
||||
.hs,.lhs,.pl,.py,.rb,.rkt,.sh,.bat,.com,.exe. Also, an add-on's name
|
||||
may not be the same as any built-in command or alias.
|
||||
|
||||
hledger will detect these and include them in the command list and let
|
||||
you invoke them with hledger ADDONCMD. However there are some limita-
|
||||
hledger will detect these and include them in the command list and let
|
||||
you invoke them with hledger ADDONCMD. However there are some limita-
|
||||
tions:
|
||||
|
||||
+o Options appearing before ADDONCMD will be visible only to hledger and
|
||||
will not be passed to the add-on. Eg: hledger -h web shows hledger's
|
||||
usage, hledger web -h shows hledger-web's usage.
|
||||
|
||||
+o Options understood only by the add-on must go after a -- argument to
|
||||
hide them from hledger, which would otherwise reject them. Eg:
|
||||
+o Options understood only by the add-on must go after a -- argument to
|
||||
hide them from hledger, which would otherwise reject them. Eg:
|
||||
hledger web -- --server.
|
||||
|
||||
Sometimes it may be more convenient to just run the add-on directly,
|
||||
Sometimes it may be more convenient to just run the add-on directly,
|
||||
eg: hledger-web --server.
|
||||
|
||||
Add-ons which are written in haskell can take advantage of the
|
||||
hledger-lib library for journal parsing, reporting, command-line
|
||||
Add-ons which are written in haskell can take advantage of the
|
||||
hledger-lib library for journal parsing, reporting, command-line
|
||||
options, etc.
|
||||
|
||||
Here are some hledger add-ons available from Hackage, the extra direc-
|
||||
Here are some hledger add-ons available from Hackage, the extra direc-
|
||||
tory in the hledger source, or elsewhere:
|
||||
|
||||
aappii
|
||||
@ -1306,11 +1330,11 @@ AADDDD--OONN CCOOMMMMAANNDDSS
|
||||
WF:4303001832 -$6.00
|
||||
[assets:business:bank:wf:bchecking:banking] $6.00
|
||||
|
||||
ledger-autosync, which includes a hledger-autosync alias, downloads
|
||||
ledger-autosync, which includes a hledger-autosync alias, downloads
|
||||
transactions from your bank(s) via OFX, and prints just the new ones as
|
||||
journal entries which you can add to your journal. It can also operate
|
||||
on .OFX files which you've downloaded manually. It can be a nice
|
||||
alternative to hledger's built-in CSV reader, especially if your bank
|
||||
on .OFX files which you've downloaded manually. It can be a nice
|
||||
alternative to hledger's built-in CSV reader, especially if your bank
|
||||
supports OFX download.
|
||||
|
||||
ddiiffff
|
||||
@ -1336,9 +1360,9 @@ AADDDD--OONN CCOOMMMMAANNDDSS
|
||||
2015/02/02
|
||||
(acct:two) $2
|
||||
|
||||
hledger-diff compares two journal files. Given an account name, it
|
||||
prints out the transactions affecting that account which are in one
|
||||
journal file but not in the other. This can be useful for reconciling
|
||||
hledger-diff compares two journal files. Given an account name, it
|
||||
prints out the transactions affecting that account which are in one
|
||||
journal file but not in the other. This can be useful for reconciling
|
||||
existing journals with bank statements.
|
||||
|
||||
eeqquuiittyy
|
||||
@ -1365,14 +1389,14 @@ AADDDD--OONN CCOOMMMMAANNDDSS
|
||||
equity:opening balances 0
|
||||
|
||||
This prints a journal entry which zeroes out the specified accounts (or
|
||||
all accounts) with a transfer to/from "equity:closing balances" (like
|
||||
Ledger's equity command). Also, it prints an similar entry with oppo-
|
||||
all accounts) with a transfer to/from "equity:closing balances" (like
|
||||
Ledger's equity command). Also, it prints an similar entry with oppo-
|
||||
site sign for restoring the balances from "equity:opening balances".
|
||||
|
||||
These can be useful for ending one journal file and starting a new one,
|
||||
respectively. By zeroing your asset and liability accounts at the end
|
||||
respectively. By zeroing your asset and liability accounts at the end
|
||||
of a file and restoring them at the start of the next one, you will see
|
||||
correct asset/liability balances whether you run hledger on just one
|
||||
correct asset/liability balances whether you run hledger on just one
|
||||
file, or on several files concatenated with include.
|
||||
|
||||
iinntteerreesstt
|
||||
@ -1453,11 +1477,11 @@ AADDDD--OONN CCOOMMMMAANNDDSS
|
||||
Liabilities:Bank EUR 3700.00
|
||||
|
||||
hledger-interest computes interests for a given account. Using command
|
||||
line flags, the program can be configured to use various schemes for
|
||||
day-counting, such as act/act, 30/360, 30E/360, and 30/360isda. Fur-
|
||||
thermore, it supports a (small) number of interest schemes, i.e.
|
||||
line flags, the program can be configured to use various schemes for
|
||||
day-counting, such as act/act, 30/360, 30E/360, and 30/360isda. Fur-
|
||||
thermore, it supports a (small) number of interest schemes, i.e.
|
||||
annual interest with a fixed rate and the scheme mandated by the German
|
||||
BGB288 (Basiszins f~A1/4r Verbrauchergesch~Aoxfte). See the package page
|
||||
BGB288 (Basiszins f~A1/4r Verbrauchergesch~Aoxfte). See the package page
|
||||
for more.
|
||||
|
||||
iirrrr
|
||||
@ -1515,11 +1539,11 @@ AADDDD--OONN CCOOMMMMAANNDDSS
|
||||
2011/04/01 - 2011/05/01: 32.24%
|
||||
2011/05/01 - 2011/06/01: 95.92%
|
||||
|
||||
hledger-irr computes the internal rate of return, also known as the
|
||||
effective interest rate, of a given investment. After specifying what
|
||||
account holds the investment, and what account stores the gains (or
|
||||
losses, or fees, or cost), it calculates the hypothetical annual rate
|
||||
of fixed rate investment that would have provided the exact same cash
|
||||
hledger-irr computes the internal rate of return, also known as the
|
||||
effective interest rate, of a given investment. After specifying what
|
||||
account holds the investment, and what account stores the gains (or
|
||||
losses, or fees, or cost), it calculates the hypothetical annual rate
|
||||
of fixed rate investment that would have provided the exact same cash
|
||||
flow. See the package page for more.
|
||||
|
||||
pprriinntt--uunniiqquuee
|
||||
@ -1539,6 +1563,11 @@ AADDDD--OONN CCOOMMMMAANNDDSS
|
||||
Prints all journal entries, adding specified custom postings to matched
|
||||
entries.
|
||||
|
||||
hledger-rewrite.hs, in hledger's extra directory (compilation
|
||||
optional), adds postings to existing transactions, optionally with an
|
||||
amount based on the existing transaction's first amount. See the
|
||||
script for more details.
|
||||
|
||||
$ hledger rewrite -- [QUERY] --add-posting "ACCT AMTEXPR" ...
|
||||
$ hledger rewrite -- ^income --add-posting '(liabilities:tax) *.33'
|
||||
$ hledger rewrite -- expenses:gifts --add-posting '(budget:gifts) *-1"'
|
||||
|
Loading…
Reference in New Issue
Block a user