;update manuals
This commit is contained in:
parent
6a1bfe47ba
commit
fcebdfe0cc
@ -5263,6 +5263,12 @@ With this scheme, you would use \f[C]-PC\f[R] to see the current balance
|
|||||||
at your bank, \f[C]-U\f[R] to see things which will probably hit your
|
at your bank, \f[C]-U\f[R] to see things which will probably hit your
|
||||||
bank soon (like uncashed checks), and no flags to see the most
|
bank soon (like uncashed checks), and no flags to see the most
|
||||||
up-to-date state of your finances.
|
up-to-date state of your finances.
|
||||||
|
.SS Code
|
||||||
|
.PP
|
||||||
|
After the status mark, but before the description, you can optionally
|
||||||
|
write a transaction \[dq]code\[dq], enclosed in parentheses.
|
||||||
|
This is a good place to record a check number, or some other important
|
||||||
|
transaction id or reference number.
|
||||||
.SS Description
|
.SS Description
|
||||||
.PP
|
.PP
|
||||||
A transaction\[aq]s description is the rest of the line following the
|
A transaction\[aq]s description is the rest of the line following the
|
||||||
@ -6395,28 +6401,26 @@ rate between two commodities on a certain date.
|
|||||||
often obtained from a stock exchange, cryptocurrency exchange, or the
|
often obtained from a stock exchange, cryptocurrency exchange, or the
|
||||||
foreign exchange market.
|
foreign exchange market.
|
||||||
.PP
|
.PP
|
||||||
Here is the format:
|
The format is:
|
||||||
.IP
|
.IP
|
||||||
.nf
|
.nf
|
||||||
\f[C]
|
\f[C]
|
||||||
P DATE COMMODITYA COMMODITYBAMOUNT
|
P DATE COMMODITY1SYMBOL COMMODITY2AMOUNT
|
||||||
\f[R]
|
\f[R]
|
||||||
.fi
|
.fi
|
||||||
.IP \[bu] 2
|
|
||||||
DATE is a simple date
|
|
||||||
.IP \[bu] 2
|
|
||||||
COMMODITYA is the symbol of the commodity being priced
|
|
||||||
.IP \[bu] 2
|
|
||||||
COMMODITYBAMOUNT is an amount (symbol and quantity) in a second
|
|
||||||
commodity, giving the price in commodity B of one unit of commodity A.
|
|
||||||
.PP
|
.PP
|
||||||
These two market price directives say that one euro was worth 1.35 US
|
DATE is a simple date, COMMODITY1SYMBOL is the symbol of the commodity
|
||||||
dollars during 2009, and $1.40 from 2010 onward:
|
being priced, and COMMODITY2AMOUNT is the amount (symbol and quantity)
|
||||||
|
of commodity 2 that one unit of commodity 1 is worth on this date.
|
||||||
|
Examples:
|
||||||
.IP
|
.IP
|
||||||
.nf
|
.nf
|
||||||
\f[C]
|
\f[C]
|
||||||
P 2009/1/1 \[Eu] $1.35
|
# one euro was worth $1.35 from 2009-01-01 onward:
|
||||||
P 2010/1/1 \[Eu] $1.40
|
P 2009-01-01 \[Eu] $1.35
|
||||||
|
|
||||||
|
# and $1.40 from 2010-01-01 onward:
|
||||||
|
P 2010-01-01 \[Eu] $1.40
|
||||||
\f[R]
|
\f[R]
|
||||||
.fi
|
.fi
|
||||||
.PP
|
.PP
|
||||||
@ -7212,14 +7216,14 @@ below, after the examples:
|
|||||||
.PP
|
.PP
|
||||||
.TS
|
.TS
|
||||||
tab(@);
|
tab(@);
|
||||||
lw(30.1n) lw(39.9n).
|
lw(26.4n) lw(43.6n).
|
||||||
T{
|
T{
|
||||||
\f[B]\f[CB]skip\f[B]\f[R]
|
\f[B]\f[CB]skip\f[B]\f[R]
|
||||||
T}@T{
|
T}@T{
|
||||||
skip one or more header lines or matched CSV records
|
skip one or more header lines or matched CSV records
|
||||||
T}
|
T}
|
||||||
T{
|
T{
|
||||||
\f[B]\f[CB]fields\f[B]\f[R]
|
\f[B]\f[CB]fields\f[B] list\f[R]
|
||||||
T}@T{
|
T}@T{
|
||||||
name CSV fields, assign them to hledger fields
|
name CSV fields, assign them to hledger fields
|
||||||
T}
|
T}
|
||||||
@ -7229,6 +7233,11 @@ T}@T{
|
|||||||
assign a value to one hledger field, with interpolation
|
assign a value to one hledger field, with interpolation
|
||||||
T}
|
T}
|
||||||
T{
|
T{
|
||||||
|
\f[B]Field names\f[R]
|
||||||
|
T}@T{
|
||||||
|
hledger field names, used in the fields list and field assignments
|
||||||
|
T}
|
||||||
|
T{
|
||||||
\f[B]\f[CB]separator\f[B]\f[R]
|
\f[B]\f[CB]separator\f[B]\f[R]
|
||||||
T}@T{
|
T}@T{
|
||||||
a custom field separator
|
a custom field separator
|
||||||
@ -7633,7 +7642,7 @@ whenever your CSV data contains header lines.
|
|||||||
.PP
|
.PP
|
||||||
It also has a second purpose: it can be used inside if blocks to ignore
|
It also has a second purpose: it can be used inside if blocks to ignore
|
||||||
certain CSV records (described below).
|
certain CSV records (described below).
|
||||||
.SS \f[C]fields\f[R]
|
.SS \f[C]fields\f[R] list
|
||||||
.IP
|
.IP
|
||||||
.nf
|
.nf
|
||||||
\f[C]
|
\f[C]
|
||||||
@ -7644,13 +7653,14 @@ fields FIELDNAME1, FIELDNAME2, ...
|
|||||||
A fields list (the word \[dq]fields\[dq] followed by comma-separated
|
A fields list (the word \[dq]fields\[dq] followed by comma-separated
|
||||||
field names) is the quick way to assign CSV field values to hledger
|
field names) is the quick way to assign CSV field values to hledger
|
||||||
fields.
|
fields.
|
||||||
It does two things:
|
(The other way is field assignments, see below.) A fields list does does
|
||||||
|
two things:
|
||||||
.IP "1." 3
|
.IP "1." 3
|
||||||
it names the CSV fields.
|
It names the CSV fields.
|
||||||
This is optional, but can be convenient later for interpolating them.
|
This is optional, but can be convenient later for interpolating them.
|
||||||
.IP "2." 3
|
.IP "2." 3
|
||||||
when you use a standard hledger field name, it assigns the CSV value to
|
Whenever you use a standard hledger field name (defined below), the CSV
|
||||||
that part of the hledger transaction.
|
value is assigned to that part of the hledger transaction.
|
||||||
.PP
|
.PP
|
||||||
Here\[aq]s an example that says \[dq]use the 1st, 2nd and 4th fields as
|
Here\[aq]s an example that says \[dq]use the 1st, 2nd and 4th fields as
|
||||||
the transaction\[aq]s date, description and amount; name the last two
|
the transaction\[aq]s date, description and amount; name the last two
|
||||||
@ -7662,91 +7672,27 @@ fields date, description, , amount, , , somefield, anotherfield
|
|||||||
\f[R]
|
\f[R]
|
||||||
.fi
|
.fi
|
||||||
.PP
|
.PP
|
||||||
Field names may not contain whitespace.
|
Tips:
|
||||||
Fields you don\[aq]t care about can be left unnamed.
|
.IP \[bu] 2
|
||||||
Currently there must be least two items (there must be at least one
|
The fields list always use commas, even if your CSV data uses another
|
||||||
comma).
|
|
||||||
.PP
|
|
||||||
Note, always use comma in the fields list, even if your CSV uses another
|
|
||||||
separator character.
|
separator character.
|
||||||
.PP
|
.IP \[bu] 2
|
||||||
Here are the standard hledger field/pseudo-field names.
|
Currently there must be least two items in the list (at least one
|
||||||
For more about the transaction parts they refer to, see the manual for
|
comma).
|
||||||
hledger\[aq]s journal format.
|
.IP \[bu] 2
|
||||||
.SS Transaction field names
|
Field names may not contain spaces.
|
||||||
.PP
|
Spaces before/after field names are optional.
|
||||||
\f[C]date\f[R], \f[C]date2\f[R], \f[C]status\f[R], \f[C]code\f[R],
|
.IP \[bu] 2
|
||||||
\f[C]description\f[R], \f[C]comment\f[R] can be used to form the
|
If the CSV contains column headings, it\[aq]s a good idea to use these,
|
||||||
transaction\[aq]s first line.
|
suitably modified, as the basis for your field names (eg lower-cased,
|
||||||
.SS Posting field names
|
with underscores instead of spaces).
|
||||||
.SS account
|
.IP \[bu] 2
|
||||||
.PP
|
If some heading names match standard hledger fields, but you don\[aq]t
|
||||||
\f[C]accountN\f[R], where N is 1 to 99, causes a posting to be
|
want to set the hledger fields directly, alter those names, eg by
|
||||||
generated, with that account name.
|
appending an underscore.
|
||||||
.PP
|
.IP \[bu] 2
|
||||||
Most often there are two postings, so you\[aq]ll want to set
|
Fields you don\[aq]t care about can be given a dummy name (eg:
|
||||||
\f[C]account1\f[R] and \f[C]account2\f[R].
|
\f[C]_\f[R] ), or no name.
|
||||||
Typically \f[C]account1\f[R] is associated with the CSV file, and is set
|
|
||||||
once with a top-level assignment, while \f[C]account2\f[R] is set based
|
|
||||||
on each transaction\[aq]s description, and in conditional blocks.
|
|
||||||
.PP
|
|
||||||
If a posting\[aq]s account name is left unset but its amount is set (see
|
|
||||||
below), a default account name will be chosen (like
|
|
||||||
\[dq]expenses:unknown\[dq] or \[dq]income:unknown\[dq]).
|
|
||||||
.SS amount
|
|
||||||
.PP
|
|
||||||
\f[C]amountN\f[R] sets the Nth posting\[aq]s amount.
|
|
||||||
By assigning to \f[C]amount1\f[R], \f[C]amount2\f[R], ...
|
|
||||||
etc.
|
|
||||||
you can generate up to 99 postings.
|
|
||||||
.PP
|
|
||||||
If the CSV uses separate fields for debits and credits (inflows and
|
|
||||||
outflows), you can use \f[C]amountN-in\f[R] and \f[C]amountN-out\f[R]
|
|
||||||
instead.
|
|
||||||
Note hledger assumes both of these fields are unsigned, and will
|
|
||||||
automatically negate the \[dq]-out\[dq] value.
|
|
||||||
If the fields are signed, see \[dq]Setting amounts\[dq] below.
|
|
||||||
.PP
|
|
||||||
There is also an unnumbered form of these names: \f[C]amount\f[R], or
|
|
||||||
\f[C]amount-in\f[R] and \f[C]amount-out\f[R].
|
|
||||||
This is supported to keep pre-hledger-1.17 CSV rules files working (and
|
|
||||||
for occasional convenience).
|
|
||||||
It is suitable only for two-posting transactions; it sets both posting
|
|
||||||
1\[aq]s and posting 2\[aq]s amount.
|
|
||||||
Posting 2\[aq]s amount will be negated, and also converted to cost if
|
|
||||||
there\[aq]s a transaction price.
|
|
||||||
.PP
|
|
||||||
If you have an existing rules file using the unnumbered form, you might
|
|
||||||
want to use the numbered form in certain conditional blocks, without
|
|
||||||
having to update and retest all the old rules.
|
|
||||||
To facilitate this, posting 1 ignores
|
|
||||||
\f[C]amount\f[R]/\f[C]amount-in\f[R]/\f[C]amount-out\f[R] if any of
|
|
||||||
\f[C]amount1\f[R]/\f[C]amount1-in\f[R]/\f[C]amount1-out\f[R] are
|
|
||||||
assigned, and posting 2 ignores them if any of
|
|
||||||
\f[C]amount2\f[R]/\f[C]amount2-in\f[R]/\f[C]amount2-out\f[R] are
|
|
||||||
assigned, avoiding conflicts.
|
|
||||||
.SS currency
|
|
||||||
.PP
|
|
||||||
If the CSV has the currency symbol in a separate field (ie, not part of
|
|
||||||
the amount field), you can use \f[C]currencyN\f[R] to prepend it to
|
|
||||||
posting N\[aq]s amount.
|
|
||||||
Or, \f[C]currency\f[R] with no number affects all postings.
|
|
||||||
.SS balance
|
|
||||||
.PP
|
|
||||||
\f[C]balanceN\f[R] sets a balance assertion amount (or if the posting
|
|
||||||
amount is left empty, a balance assignment) on posting N.
|
|
||||||
.PP
|
|
||||||
Also, for compatibility with hledger <1.17: \f[C]balance\f[R] with no
|
|
||||||
number is equivalent to \f[C]balance1\f[R].
|
|
||||||
.PP
|
|
||||||
You can adjust the type of assertion/assignment with the
|
|
||||||
\f[C]balance-type\f[R] rule (see below).
|
|
||||||
.SS comment
|
|
||||||
.PP
|
|
||||||
Finally, \f[C]commentN\f[R] sets a comment on the Nth posting.
|
|
||||||
Comments can also contain tags, as usual.
|
|
||||||
.PP
|
|
||||||
See TIPS below for more about setting amounts and currency.
|
|
||||||
.SS field assignment
|
.SS field assignment
|
||||||
.IP
|
.IP
|
||||||
.nf
|
.nf
|
||||||
@ -7755,13 +7701,17 @@ HLEDGERFIELDNAME FIELDVALUE
|
|||||||
\f[R]
|
\f[R]
|
||||||
.fi
|
.fi
|
||||||
.PP
|
.PP
|
||||||
Instead of or in addition to a fields list, you can use a \[dq]field
|
Field assignments are the more flexible way to assign CSV values to
|
||||||
assignment\[dq] rule to set the value of a single hledger field, by
|
hledger fields.
|
||||||
writing its name (any of the standard hledger field names above)
|
They can be used instead of or in addition to a fields list (see above).
|
||||||
followed by a text value.
|
.PP
|
||||||
The value may contain interpolated CSV fields, referenced by their
|
To assign a value to a hledger field, write the field name (any of the
|
||||||
1-based position in the CSV record (\f[C]%N\f[R]), or by the name they
|
standard hledger field/pseudo-field names, defined below), a space,
|
||||||
were given in the fields list (\f[C]%CSVFIELDNAME\f[R]).
|
followed by a text value on the same line.
|
||||||
|
This text value may interpolate CSV fields, referenced by their 1-based
|
||||||
|
position in the CSV record (\f[C]%N\f[R]), or by the name they were
|
||||||
|
given in the fields list (\f[C]%CSVFIELDNAME\f[R]).
|
||||||
|
.PP
|
||||||
Some examples:
|
Some examples:
|
||||||
.IP
|
.IP
|
||||||
.nf
|
.nf
|
||||||
@ -7774,9 +7724,108 @@ comment note: %somefield - %anotherfield, date: %1
|
|||||||
\f[R]
|
\f[R]
|
||||||
.fi
|
.fi
|
||||||
.PP
|
.PP
|
||||||
|
Tips:
|
||||||
|
.IP \[bu] 2
|
||||||
Interpolation strips outer whitespace (so a CSV value like
|
Interpolation strips outer whitespace (so a CSV value like
|
||||||
\f[C]\[dq] 1 \[dq]\f[R] becomes \f[C]1\f[R] when interpolated) (#1051).
|
\f[C]\[dq] 1 \[dq]\f[R] becomes \f[C]1\f[R] when interpolated) (#1051).
|
||||||
See TIPS below for more about referencing other fields.
|
.IP \[bu] 2
|
||||||
|
See also Tips below.
|
||||||
|
.SS Field names
|
||||||
|
.PP
|
||||||
|
Here are the standard hledger field (and pseudo-field) names, which you
|
||||||
|
can use in a fields list and in field assignments.
|
||||||
|
For more about the transaction parts they refer to, see Transactions.
|
||||||
|
.SS date field
|
||||||
|
.PP
|
||||||
|
Assigning to \f[C]date\f[R] sets the transaction date.
|
||||||
|
.SS date2 field
|
||||||
|
.PP
|
||||||
|
\f[C]date2\f[R] sets the transaction\[aq]s secondary date, if any.
|
||||||
|
.SS status field
|
||||||
|
.PP
|
||||||
|
\f[C]status\f[R] sets the transaction\[aq]s status, if any.
|
||||||
|
.SS code field
|
||||||
|
.PP
|
||||||
|
\f[C]code\f[R] sets the transaction\[aq]s code, if any.
|
||||||
|
.SS description field
|
||||||
|
.PP
|
||||||
|
\f[C]description\f[R] sets the transaction\[aq]s description, if any.
|
||||||
|
.SS comment field
|
||||||
|
.PP
|
||||||
|
\f[C]comment\f[R] sets the transaction\[aq]s comment, if any.
|
||||||
|
.PP
|
||||||
|
\f[C]commentN\f[R], where N is a number, sets the Nth posting\[aq]s
|
||||||
|
comment.
|
||||||
|
.PP
|
||||||
|
Tips: - Only single-line comments can be assigned.
|
||||||
|
- Comments can contain tags, as usual.
|
||||||
|
.SS account field
|
||||||
|
.PP
|
||||||
|
Assigning to \f[C]accountN\f[R], where N is 1 to 99, sets the account
|
||||||
|
name of the Nth posting, and causes that posting to be generated.
|
||||||
|
.PP
|
||||||
|
Most often there are two postings, so you\[aq]ll want to set
|
||||||
|
\f[C]account1\f[R] and \f[C]account2\f[R].
|
||||||
|
Typically \f[C]account1\f[R] is associated with the CSV file, and is set
|
||||||
|
once with a top-level assignment, while \f[C]account2\f[R] is set based
|
||||||
|
on each transaction\[aq]s description, and in conditional blocks.
|
||||||
|
.PP
|
||||||
|
If a posting\[aq]s account name is left unset but its amount is set (see
|
||||||
|
below), a default account name will be chosen (like
|
||||||
|
\[dq]expenses:unknown\[dq] or \[dq]income:unknown\[dq]).
|
||||||
|
.SS amount field
|
||||||
|
.PP
|
||||||
|
\f[C]amountN\f[R] sets the amount of the Nth posting, and causes that
|
||||||
|
posting to be generated.
|
||||||
|
By assigning to \f[C]amount1\f[R], \f[C]amount2\f[R], ...
|
||||||
|
etc.
|
||||||
|
you can generate up to 99 postings.
|
||||||
|
.PP
|
||||||
|
\f[C]amountN-in\f[R] and \f[C]amountN-out\f[R] can be used instead, if
|
||||||
|
the CSV uses separate fields for debits and credits (inflows and
|
||||||
|
outflows).
|
||||||
|
hledger assumes both of these CSV fields are unsigned, and will
|
||||||
|
automatically negate the \[dq]-out\[dq] value.
|
||||||
|
If they are signed, see \[dq]Setting amounts\[dq] below.
|
||||||
|
.PP
|
||||||
|
\f[C]amount\f[R], or \f[C]amount-in\f[R] and \f[C]amount-out\f[R] are a
|
||||||
|
legacy mode, to keep pre-hledger-1.17 CSV rules files working (and for
|
||||||
|
occasional convenience).
|
||||||
|
They are suitable only for two-posting transactions; they set both
|
||||||
|
posting 1\[aq]s and posting 2\[aq]s amount.
|
||||||
|
Posting 2\[aq]s amount will be negated, and also converted to cost if
|
||||||
|
there\[aq]s a transaction price.
|
||||||
|
.PP
|
||||||
|
If you have an existing rules file using the unnumbered form, you might
|
||||||
|
want to use the numbered form in certain conditional blocks, without
|
||||||
|
having to update and retest all the old rules.
|
||||||
|
To facilitate this, posting 1 ignores
|
||||||
|
\f[C]amount\f[R]/\f[C]amount-in\f[R]/\f[C]amount-out\f[R] if any of
|
||||||
|
\f[C]amount1\f[R]/\f[C]amount1-in\f[R]/\f[C]amount1-out\f[R] are
|
||||||
|
assigned, and posting 2 ignores them if any of
|
||||||
|
\f[C]amount2\f[R]/\f[C]amount2-in\f[R]/\f[C]amount2-out\f[R] are
|
||||||
|
assigned, avoiding conflicts.
|
||||||
|
.SS currency field
|
||||||
|
.PP
|
||||||
|
\f[C]currency\f[R] sets a currency symbol, to be prepended to all
|
||||||
|
postings\[aq] amounts.
|
||||||
|
You can use this if the CSV amounts do not have a currency symbol, eg if
|
||||||
|
it is in a separate column.
|
||||||
|
.PP
|
||||||
|
\f[C]currencyN\f[R] prepends a currency symbol to just the Nth
|
||||||
|
posting\[aq]s amount.
|
||||||
|
.SS balance field
|
||||||
|
.PP
|
||||||
|
\f[C]balanceN\f[R] sets a balance assertion amount (or if the posting
|
||||||
|
amount is left empty, a balance assignment) on posting N.
|
||||||
|
.PP
|
||||||
|
\f[C]balance\f[R] is a compatibility spelling for hledger <1.17; it is
|
||||||
|
equivalent to \f[C]balance1\f[R].
|
||||||
|
.PP
|
||||||
|
You can adjust the type of assertion/assignment with the
|
||||||
|
\f[C]balance-type\f[R] rule (see below).
|
||||||
|
.PP
|
||||||
|
See Tips below for more about setting amounts and currency.
|
||||||
.SS \f[C]separator\f[R]
|
.SS \f[C]separator\f[R]
|
||||||
.PP
|
.PP
|
||||||
You can use the \f[C]separator\f[R] rule to read other kinds of
|
You can use the \f[C]separator\f[R] rule to read other kinds of
|
||||||
@ -8052,6 +8101,11 @@ For the supported strptime syntax, see:
|
|||||||
.P
|
.P
|
||||||
.PD
|
.PD
|
||||||
https://hackage.haskell.org/package/time/docs/Data-Time-Format.html#v:formatTime
|
https://hackage.haskell.org/package/time/docs/Data-Time-Format.html#v:formatTime
|
||||||
|
.PP
|
||||||
|
Note that although you can parse date-times which include a time zone,
|
||||||
|
that time zone is ignored; it will not change the date that is parsed.
|
||||||
|
This means when reading CSV data with times not in your local time zone,
|
||||||
|
dates can be \[dq]off by one\[dq].
|
||||||
.SS \f[C]decimal-mark\f[R]
|
.SS \f[C]decimal-mark\f[R]
|
||||||
.IP
|
.IP
|
||||||
.nf
|
.nf
|
||||||
|
|||||||
1007
hledger/hledger.info
1007
hledger/hledger.info
File diff suppressed because it is too large
Load Diff
1075
hledger/hledger.txt
1075
hledger/hledger.txt
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user