;manuals
This commit is contained in:
parent
a54376e204
commit
09b6d44562
@ -1,6 +1,6 @@
|
|||||||
.\"t
|
.\"t
|
||||||
|
|
||||||
.TH "hledger_csv" "5" "June 2020" "hledger 1.17.99" "hledger User Manuals"
|
.TH "hledger_csv" "5" "June 2020" "hledger 1.18" "hledger User Manuals"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -81,6 +81,11 @@ T{
|
|||||||
T}@T{
|
T}@T{
|
||||||
inline another CSV rules file
|
inline another CSV rules file
|
||||||
T}
|
T}
|
||||||
|
T{
|
||||||
|
\f[B]\f[CB]balance-type\f[B]\f[R]
|
||||||
|
T}@T{
|
||||||
|
choose which type of balance assignments to use
|
||||||
|
T}
|
||||||
.TE
|
.TE
|
||||||
.PP
|
.PP
|
||||||
Note, for best error messages when reading CSV files, use a
|
Note, for best error messages when reading CSV files, use a
|
||||||
|
|||||||
@ -3,8 +3,8 @@ This is hledger_csv.info, produced by makeinfo version 6.7 from stdin.
|
|||||||
|
|
||||||
File: hledger_csv.info, Node: Top, Next: EXAMPLES, Up: (dir)
|
File: hledger_csv.info, Node: Top, Next: EXAMPLES, Up: (dir)
|
||||||
|
|
||||||
hledger_csv(5) hledger 1.17.99
|
hledger_csv(5) hledger 1.18
|
||||||
******************************
|
***************************
|
||||||
|
|
||||||
CSV - how hledger reads CSV data, and the CSV rules file format
|
CSV - how hledger reads CSV data, and the CSV rules file format
|
||||||
|
|
||||||
@ -38,6 +38,7 @@ assignment*
|
|||||||
*'date-format'* describe the format of CSV dates
|
*'date-format'* describe the format of CSV dates
|
||||||
*'newest-first'* disambiguate record order when there's only one date
|
*'newest-first'* disambiguate record order when there's only one date
|
||||||
*'include'* inline another CSV rules file
|
*'include'* inline another CSV rules file
|
||||||
|
*'balance-type'* choose which type of balance assignments to use
|
||||||
|
|
||||||
Note, for best error messages when reading CSV files, use a '.csv',
|
Note, for best error messages when reading CSV files, use a '.csv',
|
||||||
'.tsv' or '.ssv' file extension or file prefix - see File Extension
|
'.tsv' or '.ssv' file extension or file prefix - see File Extension
|
||||||
@ -1035,74 +1036,74 @@ command the user specified.
|
|||||||
|
|
||||||
Tag Table:
|
Tag Table:
|
||||||
Node: Top72
|
Node: Top72
|
||||||
Node: EXAMPLES2113
|
Node: EXAMPLES2174
|
||||||
Ref: #examples2219
|
Ref: #examples2280
|
||||||
Node: Basic2427
|
Node: Basic2488
|
||||||
Ref: #basic2527
|
Ref: #basic2588
|
||||||
Node: Bank of Ireland3069
|
Node: Bank of Ireland3130
|
||||||
Ref: #bank-of-ireland3204
|
Ref: #bank-of-ireland3265
|
||||||
Node: Amazon4666
|
Node: Amazon4727
|
||||||
Ref: #amazon4784
|
Ref: #amazon4845
|
||||||
Node: Paypal6503
|
Node: Paypal6564
|
||||||
Ref: #paypal6597
|
Ref: #paypal6658
|
||||||
Node: CSV RULES14241
|
Node: CSV RULES14302
|
||||||
Ref: #csv-rules14350
|
Ref: #csv-rules14411
|
||||||
Node: skip14626
|
Node: skip14687
|
||||||
Ref: #skip14719
|
Ref: #skip14780
|
||||||
Node: fields15094
|
Node: fields15155
|
||||||
Ref: #fields15216
|
Ref: #fields15277
|
||||||
Node: Transaction field names16381
|
Node: Transaction field names16442
|
||||||
Ref: #transaction-field-names16541
|
Ref: #transaction-field-names16602
|
||||||
Node: Posting field names16652
|
Node: Posting field names16713
|
||||||
Ref: #posting-field-names16804
|
Ref: #posting-field-names16865
|
||||||
Node: account16874
|
Node: account16935
|
||||||
Ref: #account16990
|
Ref: #account17051
|
||||||
Node: amount17527
|
Node: amount17588
|
||||||
Ref: #amount17658
|
Ref: #amount17719
|
||||||
Node: currency18765
|
Node: currency18826
|
||||||
Ref: #currency18900
|
Ref: #currency18961
|
||||||
Node: balance19106
|
Node: balance19167
|
||||||
Ref: #balance19240
|
Ref: #balance19301
|
||||||
Node: comment19557
|
Node: comment19618
|
||||||
Ref: #comment19674
|
Ref: #comment19735
|
||||||
Node: field assignment19837
|
Node: field assignment19898
|
||||||
Ref: #field-assignment19980
|
Ref: #field-assignment20041
|
||||||
Node: separator20798
|
Node: separator20859
|
||||||
Ref: #separator20927
|
Ref: #separator20988
|
||||||
Node: if21338
|
Node: if21399
|
||||||
Ref: #if21440
|
Ref: #if21501
|
||||||
Node: end23596
|
Node: end23657
|
||||||
Ref: #end23702
|
Ref: #end23763
|
||||||
Node: date-format23926
|
Node: date-format23987
|
||||||
Ref: #date-format24058
|
Ref: #date-format24119
|
||||||
Node: newest-first24807
|
Node: newest-first24868
|
||||||
Ref: #newest-first24945
|
Ref: #newest-first25006
|
||||||
Node: include25628
|
Node: include25689
|
||||||
Ref: #include25757
|
Ref: #include25818
|
||||||
Node: balance-type26201
|
Node: balance-type26262
|
||||||
Ref: #balance-type26321
|
Ref: #balance-type26382
|
||||||
Node: TIPS27021
|
Node: TIPS27082
|
||||||
Ref: #tips27103
|
Ref: #tips27164
|
||||||
Node: Rapid feedback27359
|
Node: Rapid feedback27420
|
||||||
Ref: #rapid-feedback27476
|
Ref: #rapid-feedback27537
|
||||||
Node: Valid CSV27936
|
Node: Valid CSV27997
|
||||||
Ref: #valid-csv28066
|
Ref: #valid-csv28127
|
||||||
Node: File Extension28258
|
Node: File Extension28319
|
||||||
Ref: #file-extension28410
|
Ref: #file-extension28471
|
||||||
Node: Reading multiple CSV files28820
|
Node: Reading multiple CSV files28881
|
||||||
Ref: #reading-multiple-csv-files29005
|
Ref: #reading-multiple-csv-files29066
|
||||||
Node: Valid transactions29246
|
Node: Valid transactions29307
|
||||||
Ref: #valid-transactions29424
|
Ref: #valid-transactions29485
|
||||||
Node: Deduplicating importing30052
|
Node: Deduplicating importing30113
|
||||||
Ref: #deduplicating-importing30231
|
Ref: #deduplicating-importing30292
|
||||||
Node: Setting amounts31264
|
Node: Setting amounts31325
|
||||||
Ref: #setting-amounts31433
|
Ref: #setting-amounts31494
|
||||||
Node: Setting currency/commodity32419
|
Node: Setting currency/commodity32480
|
||||||
Ref: #setting-currencycommodity32611
|
Ref: #setting-currencycommodity32672
|
||||||
Node: Referencing other fields33414
|
Node: Referencing other fields33475
|
||||||
Ref: #referencing-other-fields33614
|
Ref: #referencing-other-fields33675
|
||||||
Node: How CSV rules are evaluated34511
|
Node: How CSV rules are evaluated34572
|
||||||
Ref: #how-csv-rules-are-evaluated34684
|
Ref: #how-csv-rules-are-evaluated34745
|
||||||
|
|
||||||
End Tag Table
|
End Tag Table
|
||||||
|
|
||||||
|
|||||||
@ -45,20 +45,22 @@ DESCRIPTION
|
|||||||
when there's only one date
|
when there's only one date
|
||||||
include inline another CSV rules
|
include inline another CSV rules
|
||||||
file
|
file
|
||||||
|
balance-type choose which type of bal-
|
||||||
|
ance assignments to use
|
||||||
|
|
||||||
Note, for best error messages when reading CSV files, use a .csv, .tsv
|
Note, for best error messages when reading CSV files, use a .csv, .tsv
|
||||||
or .ssv file extension or file prefix - see File Extension below.
|
or .ssv file extension or file prefix - see File Extension below.
|
||||||
|
|
||||||
There's an introductory Convert CSV files tutorial on hledger.org.
|
There's an introductory Convert CSV files tutorial on hledger.org.
|
||||||
|
|
||||||
EXAMPLES
|
EXAMPLES
|
||||||
Here are some sample hledger CSV rules files. See also the full col-
|
Here are some sample hledger CSV rules files. See also the full col-
|
||||||
lection at:
|
lection at:
|
||||||
https://github.com/simonmichael/hledger/tree/master/examples/csv
|
https://github.com/simonmichael/hledger/tree/master/examples/csv
|
||||||
|
|
||||||
Basic
|
Basic
|
||||||
At minimum, the rules file must identify the date and amount fields,
|
At minimum, the rules file must identify the date and amount fields,
|
||||||
and often it also specifies the date format and how many header lines
|
and often it also specifies the date format and how many header lines
|
||||||
there are. Here's a simple CSV file and a rules file for it:
|
there are. Here's a simple CSV file and a rules file for it:
|
||||||
|
|
||||||
Date, Description, Id, Amount
|
Date, Description, Id, Amount
|
||||||
@ -77,8 +79,8 @@ EXAMPLES
|
|||||||
Default account names are chosen, since we didn't set them.
|
Default account names are chosen, since we didn't set them.
|
||||||
|
|
||||||
Bank of Ireland
|
Bank of Ireland
|
||||||
Here's a CSV with two amount fields (Debit and Credit), and a balance
|
Here's a CSV with two amount fields (Debit and Credit), and a balance
|
||||||
field, which we can use to add balance assertions, which is not neces-
|
field, which we can use to add balance assertions, which is not neces-
|
||||||
sary but provides extra error checking:
|
sary but provides extra error checking:
|
||||||
|
|
||||||
Date,Details,Debit,Credit,Balance
|
Date,Details,Debit,Credit,Balance
|
||||||
@ -120,13 +122,13 @@ EXAMPLES
|
|||||||
assets:bank:boi:checking EUR-5.0 = EUR126.0
|
assets:bank:boi:checking EUR-5.0 = EUR126.0
|
||||||
expenses:unknown EUR5.0
|
expenses:unknown EUR5.0
|
||||||
|
|
||||||
The balance assertions don't raise an error above, because we're read-
|
The balance assertions don't raise an error above, because we're read-
|
||||||
ing directly from CSV, but they will be checked if these entries are
|
ing directly from CSV, but they will be checked if these entries are
|
||||||
imported into a journal file.
|
imported into a journal file.
|
||||||
|
|
||||||
Amazon
|
Amazon
|
||||||
Here we convert amazon.com order history, and use an if block to gener-
|
Here we convert amazon.com order history, and use an if block to gener-
|
||||||
ate a third posting if there's a fee. (In practice you'd probably get
|
ate a third posting if there's a fee. (In practice you'd probably get
|
||||||
this data from your bank instead, but it's an example.)
|
this data from your bank instead, but it's an example.)
|
||||||
|
|
||||||
"Date","Type","To/From","Name","Status","Amount","Fees","Transaction ID"
|
"Date","Type","To/From","Name","Status","Amount","Fees","Transaction ID"
|
||||||
@ -178,7 +180,7 @@ EXAMPLES
|
|||||||
expenses:fees $1.00
|
expenses:fees $1.00
|
||||||
|
|
||||||
Paypal
|
Paypal
|
||||||
Here's a real-world rules file for (customised) Paypal CSV, with some
|
Here's a real-world rules file for (customised) Paypal CSV, with some
|
||||||
Paypal-specific rules, and a second rules file included:
|
Paypal-specific rules, and a second rules file included:
|
||||||
|
|
||||||
"Date","Time","TimeZone","Name","Type","Status","Currency","Gross","Fee","Net","From Email Address","To Email Address","Transaction ID","Item Title","Item ID","Reference Txn ID","Receipt ID","Balance","Note"
|
"Date","Time","TimeZone","Name","Type","Status","Currency","Gross","Fee","Net","From Email Address","To Email Address","Transaction ID","Item Title","Item ID","Reference Txn ID","Receipt ID","Balance","Note"
|
||||||
@ -333,9 +335,9 @@ CSV RULES
|
|||||||
skip
|
skip
|
||||||
skip N
|
skip N
|
||||||
|
|
||||||
The word "skip" followed by a number (or no number, meaning 1) tells
|
The word "skip" followed by a number (or no number, meaning 1) tells
|
||||||
hledger to ignore this many non-empty lines preceding the CSV data.
|
hledger to ignore this many non-empty lines preceding the CSV data.
|
||||||
(Empty/blank lines are skipped automatically.) You'll need this when-
|
(Empty/blank lines are skipped automatically.) You'll need this when-
|
||||||
ever your CSV data contains header lines.
|
ever your CSV data contains header lines.
|
||||||
|
|
||||||
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
|
||||||
@ -344,27 +346,27 @@ CSV RULES
|
|||||||
fields
|
fields
|
||||||
fields FIELDNAME1, FIELDNAME2, ...
|
fields FIELDNAME1, FIELDNAME2, ...
|
||||||
|
|
||||||
A fields list (the word "fields" followed by comma-separated field
|
A fields list (the word "fields" followed by comma-separated field
|
||||||
names) is the quick way to assign CSV field values to hledger fields.
|
names) is the quick way to assign CSV field values to hledger fields.
|
||||||
It does two things:
|
It does two things:
|
||||||
|
|
||||||
1. it names the CSV fields. This is optional, but can be convenient
|
1. it names the CSV fields. This is optional, but can be convenient
|
||||||
later for interpolating them.
|
later for interpolating them.
|
||||||
|
|
||||||
2. when you use a standard hledger field name, it assigns the CSV value
|
2. when you use a standard hledger field name, it assigns the CSV value
|
||||||
to that part of the hledger transaction.
|
to that part of the hledger transaction.
|
||||||
|
|
||||||
Here's an example that says "use the 1st, 2nd and 4th fields as the
|
Here's an example that says "use the 1st, 2nd and 4th fields as the
|
||||||
transaction's date, description and amount; name the last two fields
|
transaction's date, description and amount; name the last two fields
|
||||||
for later reference; and ignore the others":
|
for later reference; and ignore the others":
|
||||||
|
|
||||||
fields date, description, , amount, , , somefield, anotherfield
|
fields date, description, , amount, , , somefield, anotherfield
|
||||||
|
|
||||||
Field names may not contain whitespace. Fields you don't care about
|
Field names may not contain whitespace. Fields you don't care about
|
||||||
can be left unnamed. Currently there must be least two items (there
|
can be left unnamed. Currently there must be least two items (there
|
||||||
must be at least one comma).
|
must be at least one comma).
|
||||||
|
|
||||||
Note, always use comma in the fields list, even if your CSV uses an-
|
Note, always use comma in the fields list, even if your CSV uses an-
|
||||||
other separator character.
|
other separator character.
|
||||||
|
|
||||||
Here are the standard hledger field/pseudo-field names. For more about
|
Here are the standard hledger field/pseudo-field names. For more about
|
||||||
@ -377,52 +379,52 @@ CSV RULES
|
|||||||
|
|
||||||
Posting field names
|
Posting field names
|
||||||
account
|
account
|
||||||
accountN, where N is 1 to 99, causes a posting to be generated, with
|
accountN, where N is 1 to 99, causes a posting to be generated, with
|
||||||
that account name.
|
that account name.
|
||||||
|
|
||||||
Most often there are two postings, so you'll want to set account1 and
|
Most often there are two postings, so you'll want to set account1 and
|
||||||
account2. Typically account1 is associated with the CSV file, and is
|
account2. Typically account1 is associated with the CSV file, and is
|
||||||
set once with a top-level assignment, while account2 is set based on
|
set once with a top-level assignment, while account2 is set based on
|
||||||
each transaction's description, and in conditional blocks.
|
each transaction's description, and in conditional blocks.
|
||||||
|
|
||||||
If a posting's account name is left unset but its amount is set (see
|
If a posting's account name is left unset but its amount is set (see
|
||||||
below), a default account name will be chosen (like "expenses:unknown"
|
below), a default account name will be chosen (like "expenses:unknown"
|
||||||
or "income:unknown").
|
or "income:unknown").
|
||||||
|
|
||||||
amount
|
amount
|
||||||
amountN sets posting N's amount. If the CSV uses separate fields for
|
amountN sets posting N's amount. If the CSV uses separate fields for
|
||||||
inflows and outflows, you can use amountN-in and amountN-out instead.
|
inflows and outflows, you can use amountN-in and amountN-out instead.
|
||||||
By assigning to amount1, amount2, ... etc. you can generate anywhere
|
By assigning to amount1, amount2, ... etc. you can generate anywhere
|
||||||
from 0 to 99 postings.
|
from 0 to 99 postings.
|
||||||
|
|
||||||
There is also an older, unnumbered form of these names, suitable for
|
There is also an older, unnumbered form of these names, suitable for
|
||||||
2-posting transactions, which sets both posting 1's and (negated) post-
|
2-posting transactions, which sets both posting 1's and (negated) post-
|
||||||
ing 2's amount: amount, or amount-in and amount-out. This is still
|
ing 2's amount: amount, or amount-in and amount-out. This is still
|
||||||
supported because it keeps pre-hledger-1.17 csv rules files working,
|
supported because it keeps pre-hledger-1.17 csv rules files working,
|
||||||
and because it can be more succinct, and because it converts posting
|
and because it can be more succinct, and because it converts posting
|
||||||
2's amount to cost if there's a transaction price, which can be useful.
|
2's amount to cost if there's a transaction price, which can be useful.
|
||||||
|
|
||||||
If you have an existing rules file using the unnumbered form, you might
|
If you have an existing rules file using the unnumbered form, you might
|
||||||
want to use the numbered form in certain conditional blocks, without
|
want to use the numbered form in certain conditional blocks, without
|
||||||
having to update and retest all the old rules. To facilitate this,
|
having to update and retest all the old rules. To facilitate this,
|
||||||
posting 1 ignores amount/amount-in/amount-out if any of
|
posting 1 ignores amount/amount-in/amount-out if any of
|
||||||
amount1/amount1-in/amount1-out are assigned, and posting 2 ignores them
|
amount1/amount1-in/amount1-out are assigned, and posting 2 ignores them
|
||||||
if any of amount2/amount2-in/amount2-out are assigned, avoiding con-
|
if any of amount2/amount2-in/amount2-out are assigned, avoiding con-
|
||||||
flicts.
|
flicts.
|
||||||
|
|
||||||
currency
|
currency
|
||||||
If the CSV has the currency symbol in a separate field (ie, not part of
|
If the CSV has the currency symbol in a separate field (ie, not part of
|
||||||
the amount field), you can use currencyN to prepend it to posting N's
|
the amount field), you can use currencyN to prepend it to posting N's
|
||||||
amount. Or, currency with no number affects all postings.
|
amount. Or, currency with no number affects all postings.
|
||||||
|
|
||||||
balance
|
balance
|
||||||
balanceN sets a balance assertion amount (or if the posting amount is
|
balanceN sets a balance assertion amount (or if the posting amount is
|
||||||
left empty, a balance assignment) on posting N.
|
left empty, a balance assignment) on posting N.
|
||||||
|
|
||||||
Also, for compatibility with hledger <1.17: balance with no number is
|
Also, for compatibility with hledger <1.17: balance with no number is
|
||||||
equivalent to balance1.
|
equivalent to balance1.
|
||||||
|
|
||||||
You can adjust the type of assertion/assignment with the balance-type
|
You can adjust the type of assertion/assignment with the balance-type
|
||||||
rule (see below).
|
rule (see below).
|
||||||
|
|
||||||
comment
|
comment
|
||||||
@ -434,11 +436,11 @@ CSV RULES
|
|||||||
field assignment
|
field assignment
|
||||||
HLEDGERFIELDNAME FIELDVALUE
|
HLEDGERFIELDNAME FIELDVALUE
|
||||||
|
|
||||||
Instead of or in addition to a fields list, you can use a "field as-
|
Instead of or in addition to a fields list, you can use a "field as-
|
||||||
signment" rule to set the value of a single hledger field, by writing
|
signment" rule to set the value of a single hledger field, by writing
|
||||||
its name (any of the standard hledger field names above) followed by a
|
its name (any of the standard hledger field names above) followed by a
|
||||||
text value. The value may contain interpolated CSV fields, referenced
|
text value. The value may contain interpolated CSV fields, referenced
|
||||||
by their 1-based position in the CSV record (%N), or by the name they
|
by their 1-based position in the CSV record (%N), or by the name they
|
||||||
were given in the fields list (%CSVFIELDNAME). Some examples:
|
were given in the fields list (%CSVFIELDNAME). Some examples:
|
||||||
|
|
||||||
# set the amount to the 4th CSV field, with " USD" appended
|
# set the amount to the 4th CSV field, with " USD" appended
|
||||||
@ -447,18 +449,18 @@ CSV RULES
|
|||||||
# combine three fields to make a comment, containing note: and date: tags
|
# combine three fields to make a comment, containing note: and date: tags
|
||||||
comment note: %somefield - %anotherfield, date: %1
|
comment note: %somefield - %anotherfield, date: %1
|
||||||
|
|
||||||
Interpolation strips outer whitespace (so a CSV value like " 1 " be-
|
Interpolation strips outer whitespace (so a CSV value like " 1 " be-
|
||||||
comes 1 when interpolated) (#1051). See TIPS below for more about ref-
|
comes 1 when interpolated) (#1051). See TIPS below for more about ref-
|
||||||
erencing other fields.
|
erencing other fields.
|
||||||
|
|
||||||
separator
|
separator
|
||||||
You can use the separator directive to read other kinds of character-
|
You can use the separator directive to read other kinds of character-
|
||||||
separated data. Eg to read SSV (Semicolon Separated Values), use:
|
separated data. Eg to read SSV (Semicolon Separated Values), use:
|
||||||
|
|
||||||
separator ;
|
separator ;
|
||||||
|
|
||||||
The separator directive accepts exactly one single byte character as a
|
The separator directive accepts exactly one single byte character as a
|
||||||
separator. To specify whitespace characters, you may use the special
|
separator. To specify whitespace characters, you may use the special
|
||||||
words TAB or SPACE. Eg to read TSV (Tab Separated Values), use:
|
words TAB or SPACE. Eg to read TSV (Tab Separated Values), use:
|
||||||
|
|
||||||
separator TAB
|
separator TAB
|
||||||
@ -476,24 +478,24 @@ CSV RULES
|
|||||||
RULE
|
RULE
|
||||||
RULE
|
RULE
|
||||||
|
|
||||||
Conditional blocks ("if blocks") are a block of rules that are applied
|
Conditional blocks ("if blocks") are a block of rules that are applied
|
||||||
only to CSV records which match certain patterns. They are often used
|
only to CSV records which match certain patterns. They are often used
|
||||||
for customising account names based on transaction descriptions.
|
for customising account names based on transaction descriptions.
|
||||||
|
|
||||||
Each MATCHER can be a record matcher, which looks like this:
|
Each MATCHER can be a record matcher, which looks like this:
|
||||||
|
|
||||||
REGEX
|
REGEX
|
||||||
|
|
||||||
REGEX is a case-insensitive regular expression which tries to match
|
REGEX is a case-insensitive regular expression which tries to match
|
||||||
anywhere within the CSV record. It is a POSIX ERE (extended regular
|
anywhere within the CSV record. It is a POSIX ERE (extended regular
|
||||||
expression) that also supports GNU word boundaries (\b, \B, \<, \>),
|
expression) that also supports GNU word boundaries (\b, \B, \<, \>),
|
||||||
and nothing else. If you have trouble, be sure to check our
|
and nothing else. If you have trouble, be sure to check our
|
||||||
https://hledger.org/hledger.html#regular-expressions doc.
|
https://hledger.org/hledger.html#regular-expressions doc.
|
||||||
|
|
||||||
Important note: the record that is matched is not the original record,
|
Important note: the record that is matched is not the original record,
|
||||||
but a synthetic one, with any enclosing double quotes (but not enclos-
|
but a synthetic one, with any enclosing double quotes (but not enclos-
|
||||||
ing whitespace) removed, and always comma-separated (which means that a
|
ing whitespace) removed, and always comma-separated (which means that a
|
||||||
field containing a comma will appear like two fields). Eg, if the
|
field containing a comma will appear like two fields). Eg, if the
|
||||||
original record is 2020-01-01; "Acme, Inc."; 1,000, the REGEX will ac-
|
original record is 2020-01-01; "Acme, Inc."; 1,000, the REGEX will ac-
|
||||||
tually see 2020-01-01,Acme, Inc., 1,000).
|
tually see 2020-01-01,Acme, Inc., 1,000).
|
||||||
|
|
||||||
@ -501,16 +503,16 @@ CSV RULES
|
|||||||
|
|
||||||
%CSVFIELD REGEX
|
%CSVFIELD REGEX
|
||||||
|
|
||||||
which matches just the content of a particular CSV field. CSVFIELD is
|
which matches just the content of a particular CSV field. CSVFIELD is
|
||||||
a percent sign followed by the field's name or column number, like
|
a percent sign followed by the field's name or column number, like
|
||||||
%date or %1.
|
%date or %1.
|
||||||
|
|
||||||
A single matcher can be written on the same line as the "if"; or multi-
|
A single matcher can be written on the same line as the "if"; or multi-
|
||||||
ple matchers can be written on the following lines, non-indented. Mul-
|
ple matchers can be written on the following lines, non-indented. Mul-
|
||||||
tiple matchers are OR'd (any one of them can match).
|
tiple matchers are OR'd (any one of them can match).
|
||||||
|
|
||||||
After the patterns there should be one or more rules to apply, all in-
|
After the patterns there should be one or more rules to apply, all in-
|
||||||
dented by at least one space. Three kinds of rule are allowed in con-
|
dented by at least one space. Three kinds of rule are allowed in con-
|
||||||
ditional blocks:
|
ditional blocks:
|
||||||
|
|
||||||
o field assignments (to set a hledger field)
|
o field assignments (to set a hledger field)
|
||||||
@ -534,7 +536,7 @@ CSV RULES
|
|||||||
comment XXX deductible ? check it
|
comment XXX deductible ? check it
|
||||||
|
|
||||||
end
|
end
|
||||||
This rule can be used inside if blocks (only), to make hledger stop
|
This rule can be used inside if blocks (only), to make hledger stop
|
||||||
reading this CSV file and move on to the next input file, or to command
|
reading this CSV file and move on to the next input file, or to command
|
||||||
execution. Eg:
|
execution. Eg:
|
||||||
|
|
||||||
@ -545,10 +547,10 @@ CSV RULES
|
|||||||
date-format
|
date-format
|
||||||
date-format DATEFMT
|
date-format DATEFMT
|
||||||
|
|
||||||
This is a helper for the date (and date2) fields. If your CSV dates
|
This is a helper for the date (and date2) fields. If your CSV dates
|
||||||
are not formatted like YYYY-MM-DD, YYYY/MM/DD or YYYY.MM.DD, you'll
|
are not formatted like YYYY-MM-DD, YYYY/MM/DD or YYYY.MM.DD, you'll
|
||||||
need to add a date-format rule describing them with a strptime date
|
need to add a date-format rule describing them with a strptime date
|
||||||
parsing pattern, which must parse the CSV date value completely. Some
|
parsing pattern, which must parse the CSV date value completely. Some
|
||||||
examples:
|
examples:
|
||||||
|
|
||||||
# MM/DD/YY
|
# MM/DD/YY
|
||||||
@ -570,15 +572,15 @@ CSV RULES
|
|||||||
mat.html#v:formatTime
|
mat.html#v:formatTime
|
||||||
|
|
||||||
newest-first
|
newest-first
|
||||||
hledger always sorts the generated transactions by date. Transactions
|
hledger always sorts the generated transactions by date. Transactions
|
||||||
on the same date should appear in the same order as their CSV records,
|
on the same date should appear in the same order as their CSV records,
|
||||||
as hledger can usually auto-detect whether the CSV's normal order is
|
as hledger can usually auto-detect whether the CSV's normal order is
|
||||||
oldest first or newest first. But if all of the following are true:
|
oldest first or newest first. But if all of the following are true:
|
||||||
|
|
||||||
o the CSV might sometimes contain just one day of data (all records
|
o the CSV might sometimes contain just one day of data (all records
|
||||||
having the same date)
|
having the same date)
|
||||||
|
|
||||||
o the CSV records are normally in reverse chronological order (newest
|
o the CSV records are normally in reverse chronological order (newest
|
||||||
at the top)
|
at the top)
|
||||||
|
|
||||||
o and you care about preserving the order of same-day transactions
|
o and you care about preserving the order of same-day transactions
|
||||||
@ -591,9 +593,9 @@ CSV RULES
|
|||||||
include
|
include
|
||||||
include RULESFILE
|
include RULESFILE
|
||||||
|
|
||||||
This includes the contents of another CSV rules file at this point.
|
This includes the contents of another CSV rules file at this point.
|
||||||
RULESFILE is an absolute file path or a path relative to the current
|
RULESFILE is an absolute file path or a path relative to the current
|
||||||
file's directory. This can be useful for sharing common rules between
|
file's directory. This can be useful for sharing common rules between
|
||||||
several rules files, eg:
|
several rules files, eg:
|
||||||
|
|
||||||
# someaccount.csv.rules
|
# someaccount.csv.rules
|
||||||
@ -608,10 +610,10 @@ CSV RULES
|
|||||||
|
|
||||||
balance-type
|
balance-type
|
||||||
Balance assertions generated by assigning to balanceN are of the simple
|
Balance assertions generated by assigning to balanceN are of the simple
|
||||||
= type by default, which is a single-commodity, subaccount-excluding
|
= type by default, which is a single-commodity, subaccount-excluding
|
||||||
assertion. You may find the subaccount-including variants more useful,
|
assertion. You may find the subaccount-including variants more useful,
|
||||||
eg if you have created some virtual subaccounts of checking to help
|
eg if you have created some virtual subaccounts of checking to help
|
||||||
with budgeting. You can select a different type of assertion with the
|
with budgeting. You can select a different type of assertion with the
|
||||||
balance-type rule:
|
balance-type rule:
|
||||||
|
|
||||||
# balance assertions will consider all commodities and all subaccounts
|
# balance assertions will consider all commodities and all subaccounts
|
||||||
@ -626,19 +628,19 @@ CSV RULES
|
|||||||
|
|
||||||
TIPS
|
TIPS
|
||||||
Rapid feedback
|
Rapid feedback
|
||||||
It's a good idea to get rapid feedback while creating/troubleshooting
|
It's a good idea to get rapid feedback while creating/troubleshooting
|
||||||
CSV rules. Here's a good way, using entr from http://eradman.com/entr-
|
CSV rules. Here's a good way, using entr from http://eradman.com/entr-
|
||||||
project :
|
project :
|
||||||
|
|
||||||
$ ls foo.csv* | entr bash -c 'echo ----; hledger -f foo.csv print desc:SOMEDESC'
|
$ ls foo.csv* | entr bash -c 'echo ----; hledger -f foo.csv print desc:SOMEDESC'
|
||||||
|
|
||||||
A desc: query (eg) is used to select just one, or a few, transactions
|
A desc: query (eg) is used to select just one, or a few, transactions
|
||||||
of interest. "bash -c" is used to run multiple commands, so we can
|
of interest. "bash -c" is used to run multiple commands, so we can
|
||||||
echo a separator each time the command re-runs, making it easier to
|
echo a separator each time the command re-runs, making it easier to
|
||||||
read the output.
|
read the output.
|
||||||
|
|
||||||
Valid CSV
|
Valid CSV
|
||||||
hledger accepts CSV conforming to RFC 4180. When CSV values are en-
|
hledger accepts CSV conforming to RFC 4180. When CSV values are en-
|
||||||
closed in quotes, note:
|
closed in quotes, note:
|
||||||
|
|
||||||
o they must be double quotes (not single quotes)
|
o they must be double quotes (not single quotes)
|
||||||
@ -646,9 +648,9 @@ TIPS
|
|||||||
o spaces outside the quotes are not allowed
|
o spaces outside the quotes are not allowed
|
||||||
|
|
||||||
File Extension
|
File Extension
|
||||||
CSV ("Character Separated Values") files should be named with one of
|
CSV ("Character Separated Values") files should be named with one of
|
||||||
these filename extensions: .csv, .ssv, .tsv. Or, the file path should
|
these filename extensions: .csv, .ssv, .tsv. Or, the file path should
|
||||||
be prefixed with one of csv:, ssv:, tsv:. This helps hledger identify
|
be prefixed with one of csv:, ssv:, tsv:. This helps hledger identify
|
||||||
the format and show the right error messages. For example:
|
the format and show the right error messages. For example:
|
||||||
|
|
||||||
$ hledger -f foo.ssv print
|
$ hledger -f foo.ssv print
|
||||||
@ -660,44 +662,44 @@ TIPS
|
|||||||
More about this: Input files in the hledger manual.
|
More about this: Input files in the hledger manual.
|
||||||
|
|
||||||
Reading multiple CSV files
|
Reading multiple CSV files
|
||||||
If you use multiple -f options to read multiple CSV files at once,
|
If you use multiple -f options to read multiple CSV files at once,
|
||||||
hledger will look for a correspondingly-named rules file for each CSV
|
hledger will look for a correspondingly-named rules file for each CSV
|
||||||
file. But if you use the --rules-file option, that rules file will be
|
file. But if you use the --rules-file option, that rules file will be
|
||||||
used for all the CSV files.
|
used for all the CSV files.
|
||||||
|
|
||||||
Valid transactions
|
Valid transactions
|
||||||
After reading a CSV file, hledger post-processes and validates the gen-
|
After reading a CSV file, hledger post-processes and validates the gen-
|
||||||
erated journal entries as it would for a journal file - balancing them,
|
erated journal entries as it would for a journal file - balancing them,
|
||||||
applying balance assignments, and canonicalising amount styles. Any
|
applying balance assignments, and canonicalising amount styles. Any
|
||||||
errors at this stage will be reported in the usual way, displaying the
|
errors at this stage will be reported in the usual way, displaying the
|
||||||
problem entry.
|
problem entry.
|
||||||
|
|
||||||
There is one exception: balance assertions, if you have generated them,
|
There is one exception: balance assertions, if you have generated them,
|
||||||
will not be checked, since normally these will work only when the CSV
|
will not be checked, since normally these will work only when the CSV
|
||||||
data is part of the main journal. If you do need to check balance as-
|
data is part of the main journal. If you do need to check balance as-
|
||||||
sertions generated from CSV right away, pipe into another hledger:
|
sertions generated from CSV right away, pipe into another hledger:
|
||||||
|
|
||||||
$ hledger -f file.csv print | hledger -f- print
|
$ hledger -f file.csv print | hledger -f- print
|
||||||
|
|
||||||
Deduplicating, importing
|
Deduplicating, importing
|
||||||
When you download a CSV file periodically, eg to get your latest bank
|
When you download a CSV file periodically, eg to get your latest bank
|
||||||
transactions, the new file may overlap with the old one, containing
|
transactions, the new file may overlap with the old one, containing
|
||||||
some of the same records.
|
some of the same records.
|
||||||
|
|
||||||
The import command will (a) detect the new transactions, and (b) append
|
The import command will (a) detect the new transactions, and (b) append
|
||||||
just those transactions to your main journal. It is idempotent, so you
|
just those transactions to your main journal. It is idempotent, so you
|
||||||
don't have to remember how many times you ran it or with which version
|
don't have to remember how many times you ran it or with which version
|
||||||
of the CSV. (It keeps state in a hidden .latest.FILE.csv file.) This
|
of the CSV. (It keeps state in a hidden .latest.FILE.csv file.) This
|
||||||
is the easiest way to import CSV data. Eg:
|
is the easiest way to import CSV data. Eg:
|
||||||
|
|
||||||
# download the latest CSV files, then run this command.
|
# download the latest CSV files, then run this command.
|
||||||
# Note, no -f flags needed here.
|
# Note, no -f flags needed here.
|
||||||
$ hledger import *.csv [--dry]
|
$ hledger import *.csv [--dry]
|
||||||
|
|
||||||
This method works for most CSV files. (Where records have a stable
|
This method works for most CSV files. (Where records have a stable
|
||||||
chronological order, and new records appear only at the new end.)
|
chronological order, and new records appear only at the new end.)
|
||||||
|
|
||||||
A number of other tools and workflows, hledger-specific and otherwise,
|
A number of other tools and workflows, hledger-specific and otherwise,
|
||||||
exist for converting, deduplicating, classifying and managing CSV data.
|
exist for converting, deduplicating, classifying and managing CSV data.
|
||||||
See:
|
See:
|
||||||
|
|
||||||
@ -708,43 +710,43 @@ TIPS
|
|||||||
Setting amounts
|
Setting amounts
|
||||||
A posting amount can be set in one of these ways:
|
A posting amount can be set in one of these ways:
|
||||||
|
|
||||||
o by assigning (with a fields list or field assigment) to amountN
|
o by assigning (with a fields list or field assigment) to amountN
|
||||||
(posting N's amount) or amount (posting 1's amount)
|
(posting N's amount) or amount (posting 1's amount)
|
||||||
|
|
||||||
o by assigning to amountN-in and amountN-out (or amount-in and amount-
|
o by assigning to amountN-in and amountN-out (or amount-in and amount-
|
||||||
out). For each CSV record, whichever of these has a non-zero value
|
out). For each CSV record, whichever of these has a non-zero value
|
||||||
will be used, with appropriate sign. If both contain a non-zero
|
will be used, with appropriate sign. If both contain a non-zero
|
||||||
value, this may not work.
|
value, this may not work.
|
||||||
|
|
||||||
o by assigning to balanceN (or balance) instead of the above, setting
|
o by assigning to balanceN (or balance) instead of the above, setting
|
||||||
the amount indirectly via a balance assignment. If you do this the
|
the amount indirectly via a balance assignment. If you do this the
|
||||||
default account name may be wrong, so you should set that explicitly.
|
default account name may be wrong, so you should set that explicitly.
|
||||||
|
|
||||||
There is some special handling for an amount's sign:
|
There is some special handling for an amount's sign:
|
||||||
|
|
||||||
o If an amount value is parenthesised, it will be de-parenthesised and
|
o If an amount value is parenthesised, it will be de-parenthesised and
|
||||||
sign-flipped.
|
sign-flipped.
|
||||||
|
|
||||||
o If an amount value begins with a double minus sign, those cancel out
|
o If an amount value begins with a double minus sign, those cancel out
|
||||||
and are removed.
|
and are removed.
|
||||||
|
|
||||||
o If an amount value begins with a plus sign, that will be removed
|
o If an amount value begins with a plus sign, that will be removed
|
||||||
|
|
||||||
Setting currency/commodity
|
Setting currency/commodity
|
||||||
If the currency/commodity symbol is included in the CSV's amount
|
If the currency/commodity symbol is included in the CSV's amount
|
||||||
field(s), you don't have to do anything special.
|
field(s), you don't have to do anything special.
|
||||||
|
|
||||||
If the currency is provided as a separate CSV field, you can either:
|
If the currency is provided as a separate CSV field, you can either:
|
||||||
|
|
||||||
o assign that to currency, which adds it to all posting amounts. The
|
o assign that to currency, which adds it to all posting amounts. The
|
||||||
symbol will prepended to the amount quantity (on the left side). If
|
symbol will prepended to the amount quantity (on the left side). If
|
||||||
you write a trailing space after the symbol, there will be a space
|
you write a trailing space after the symbol, there will be a space
|
||||||
between symbol and amount (an exception to the usual whitespace
|
between symbol and amount (an exception to the usual whitespace
|
||||||
stripping).
|
stripping).
|
||||||
|
|
||||||
o or assign it to currencyN which adds it to posting N's amount only.
|
o or assign it to currencyN which adds it to posting N's amount only.
|
||||||
|
|
||||||
o or for more control, construct the amount from symbol and quantity
|
o or for more control, construct the amount from symbol and quantity
|
||||||
using field assignment, eg:
|
using field assignment, eg:
|
||||||
|
|
||||||
fields date,description,currency,quantity
|
fields date,description,currency,quantity
|
||||||
@ -752,9 +754,9 @@ TIPS
|
|||||||
amount %quantity %currency
|
amount %quantity %currency
|
||||||
|
|
||||||
Referencing other fields
|
Referencing other fields
|
||||||
In field assignments, you can interpolate only CSV fields, not hledger
|
In field assignments, you can interpolate only CSV fields, not hledger
|
||||||
fields. In the example below, there's both a CSV field and a hledger
|
fields. In the example below, there's both a CSV field and a hledger
|
||||||
field named amount1, but %amount1 always means the CSV field, not the
|
field named amount1, but %amount1 always means the CSV field, not the
|
||||||
hledger field:
|
hledger field:
|
||||||
|
|
||||||
# Name the third CSV field "amount1"
|
# Name the third CSV field "amount1"
|
||||||
@ -766,7 +768,7 @@ TIPS
|
|||||||
# Set comment to the CSV amount1 (not the amount1 assigned above)
|
# Set comment to the CSV amount1 (not the amount1 assigned above)
|
||||||
comment %amount1
|
comment %amount1
|
||||||
|
|
||||||
Here, since there's no CSV amount1 field, %amount1 will produce a lit-
|
Here, since there's no CSV amount1 field, %amount1 will produce a lit-
|
||||||
eral "amount1":
|
eral "amount1":
|
||||||
|
|
||||||
fields date,description,csvamount
|
fields date,description,csvamount
|
||||||
@ -774,7 +776,7 @@ TIPS
|
|||||||
# Can't interpolate amount1 here
|
# Can't interpolate amount1 here
|
||||||
comment %amount1
|
comment %amount1
|
||||||
|
|
||||||
When there are multiple field assignments to the same hledger field,
|
When there are multiple field assignments to the same hledger field,
|
||||||
only the last one takes effect. Here, comment's value will be be B, or
|
only the last one takes effect. Here, comment's value will be be B, or
|
||||||
C if "something" is matched, but never A:
|
C if "something" is matched, but never A:
|
||||||
|
|
||||||
@ -784,14 +786,14 @@ TIPS
|
|||||||
comment C
|
comment C
|
||||||
|
|
||||||
How CSV rules are evaluated
|
How CSV rules are evaluated
|
||||||
Here's how to think of CSV rules being evaluated (if you really need
|
Here's how to think of CSV rules being evaluated (if you really need
|
||||||
to). First,
|
to). First,
|
||||||
|
|
||||||
o include - all includes are inlined, from top to bottom, depth first.
|
o include - all includes are inlined, from top to bottom, depth first.
|
||||||
(At each include point the file is inlined and scanned for further
|
(At each include point the file is inlined and scanned for further
|
||||||
includes, recursively, before proceeding.)
|
includes, recursively, before proceeding.)
|
||||||
|
|
||||||
Then "global" rules are evaluated, top to bottom. If a rule is re-
|
Then "global" rules are evaluated, top to bottom. If a rule is re-
|
||||||
peated, the last one wins:
|
peated, the last one wins:
|
||||||
|
|
||||||
o skip (at top level)
|
o skip (at top level)
|
||||||
@ -805,30 +807,30 @@ TIPS
|
|||||||
|
|
||||||
Then for each CSV record in turn:
|
Then for each CSV record in turn:
|
||||||
|
|
||||||
o test all if blocks. If any of them contain a end rule, skip all re-
|
o test all if blocks. If any of them contain a end rule, skip all re-
|
||||||
maining CSV records. Otherwise if any of them contain a skip rule,
|
maining CSV records. Otherwise if any of them contain a skip rule,
|
||||||
skip that many CSV records. If there are multiple matched skip
|
skip that many CSV records. If there are multiple matched skip
|
||||||
rules, the first one wins.
|
rules, the first one wins.
|
||||||
|
|
||||||
o collect all field assignments at top level and in matched if blocks.
|
o collect all field assignments at top level and in matched if blocks.
|
||||||
When there are multiple assignments for a field, keep only the last
|
When there are multiple assignments for a field, keep only the last
|
||||||
one.
|
one.
|
||||||
|
|
||||||
o compute a value for each hledger field - either the one that was as-
|
o compute a value for each hledger field - either the one that was as-
|
||||||
signed to it (and interpolate the %CSVFIELDNAME references), or a de-
|
signed to it (and interpolate the %CSVFIELDNAME references), or a de-
|
||||||
fault
|
fault
|
||||||
|
|
||||||
o generate a synthetic hledger transaction from these values.
|
o generate a synthetic hledger transaction from these values.
|
||||||
|
|
||||||
This is all part of the CSV reader, one of several readers hledger can
|
This is all part of the CSV reader, one of several readers hledger can
|
||||||
use to parse input files. When all files have been read successfully,
|
use to parse input files. When all files have been read successfully,
|
||||||
the transactions are passed as input to whichever hledger command the
|
the transactions are passed as input to whichever hledger command the
|
||||||
user specified.
|
user specified.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
REPORTING BUGS
|
REPORTING BUGS
|
||||||
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)
|
or hledger mail list)
|
||||||
|
|
||||||
|
|
||||||
@ -842,7 +844,7 @@ COPYRIGHT
|
|||||||
|
|
||||||
|
|
||||||
SEE ALSO
|
SEE ALSO
|
||||||
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-
|
hledger_csv(5), hledger_journal(5), hledger_timeclock(5), hledger_time-
|
||||||
dot(5), ledger(1)
|
dot(5), ledger(1)
|
||||||
|
|
||||||
@ -850,4 +852,4 @@ SEE ALSO
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
hledger 1.17.99 June 2020 hledger_csv(5)
|
hledger 1.18 June 2020 hledger_csv(5)
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
.\"t
|
.\"t
|
||||||
|
|
||||||
.TH "hledger_journal" "5" "June 2020" "hledger 1.17.99" "hledger User Manuals"
|
.TH "hledger_journal" "5" "June 2020" "hledger 1.18" "hledger User Manuals"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -4,8 +4,8 @@ stdin.
|
|||||||
|
|
||||||
File: hledger_journal.info, Node: Top, Up: (dir)
|
File: hledger_journal.info, Node: Top, Up: (dir)
|
||||||
|
|
||||||
hledger_journal(5) hledger 1.17.99
|
hledger_journal(5) hledger 1.18
|
||||||
**********************************
|
*******************************
|
||||||
|
|
||||||
Journal - hledger's default file format, representing a General Journal
|
Journal - hledger's default file format, representing a General Journal
|
||||||
|
|
||||||
@ -1823,124 +1823,124 @@ will have these tags added:
|
|||||||
|
|
||||||
Tag Table:
|
Tag Table:
|
||||||
Node: Top76
|
Node: Top76
|
||||||
Node: Transactions1875
|
Node: Transactions1869
|
||||||
Ref: #transactions1967
|
Ref: #transactions1961
|
||||||
Node: Dates3251
|
Node: Dates3245
|
||||||
Ref: #dates3350
|
Ref: #dates3344
|
||||||
Node: Simple dates3415
|
Node: Simple dates3409
|
||||||
Ref: #simple-dates3541
|
Ref: #simple-dates3535
|
||||||
Node: Secondary dates4050
|
Node: Secondary dates4044
|
||||||
Ref: #secondary-dates4204
|
Ref: #secondary-dates4198
|
||||||
Node: Posting dates5540
|
Node: Posting dates5534
|
||||||
Ref: #posting-dates5669
|
Ref: #posting-dates5663
|
||||||
Node: Status7041
|
Node: Status7035
|
||||||
Ref: #status7162
|
Ref: #status7156
|
||||||
Node: Description8870
|
Node: Description8864
|
||||||
Ref: #description9004
|
Ref: #description8998
|
||||||
Node: Payee and note9324
|
Node: Payee and note9318
|
||||||
Ref: #payee-and-note9438
|
Ref: #payee-and-note9432
|
||||||
Node: Comments9773
|
Node: Comments9767
|
||||||
Ref: #comments9899
|
Ref: #comments9893
|
||||||
Node: Tags11093
|
Node: Tags11087
|
||||||
Ref: #tags11208
|
Ref: #tags11202
|
||||||
Node: Postings12601
|
Node: Postings12595
|
||||||
Ref: #postings12729
|
Ref: #postings12723
|
||||||
Node: Virtual postings13755
|
Node: Virtual postings13749
|
||||||
Ref: #virtual-postings13872
|
Ref: #virtual-postings13866
|
||||||
Node: Account names15177
|
Node: Account names15171
|
||||||
Ref: #account-names15318
|
Ref: #account-names15312
|
||||||
Node: Amounts15805
|
Node: Amounts15799
|
||||||
Ref: #amounts15944
|
Ref: #amounts15938
|
||||||
Node: Digit group marks17052
|
Node: Digit group marks17046
|
||||||
Ref: #digit-group-marks17200
|
Ref: #digit-group-marks17194
|
||||||
Node: Amount display style18138
|
Node: Amount display style18132
|
||||||
Ref: #amount-display-style18292
|
Ref: #amount-display-style18286
|
||||||
Node: Transaction prices19729
|
Node: Transaction prices19723
|
||||||
Ref: #transaction-prices19901
|
Ref: #transaction-prices19895
|
||||||
Node: Lot prices and lot dates22233
|
Node: Lot prices and lot dates22227
|
||||||
Ref: #lot-prices-and-lot-dates22430
|
Ref: #lot-prices-and-lot-dates22424
|
||||||
Node: Balance assertions22918
|
Node: Balance assertions22912
|
||||||
Ref: #balance-assertions23104
|
Ref: #balance-assertions23098
|
||||||
Node: Assertions and ordering24137
|
Node: Assertions and ordering24131
|
||||||
Ref: #assertions-and-ordering24325
|
Ref: #assertions-and-ordering24319
|
||||||
Node: Assertions and included files25025
|
Node: Assertions and included files25019
|
||||||
Ref: #assertions-and-included-files25268
|
Ref: #assertions-and-included-files25262
|
||||||
Node: Assertions and multiple -f options25601
|
Node: Assertions and multiple -f options25595
|
||||||
Ref: #assertions-and-multiple--f-options25857
|
Ref: #assertions-and-multiple--f-options25851
|
||||||
Node: Assertions and commodities25989
|
Node: Assertions and commodities25983
|
||||||
Ref: #assertions-and-commodities26221
|
Ref: #assertions-and-commodities26215
|
||||||
Node: Assertions and prices27378
|
Node: Assertions and prices27372
|
||||||
Ref: #assertions-and-prices27592
|
Ref: #assertions-and-prices27586
|
||||||
Node: Assertions and subaccounts28032
|
Node: Assertions and subaccounts28026
|
||||||
Ref: #assertions-and-subaccounts28261
|
Ref: #assertions-and-subaccounts28255
|
||||||
Node: Assertions and virtual postings28585
|
Node: Assertions and virtual postings28579
|
||||||
Ref: #assertions-and-virtual-postings28827
|
Ref: #assertions-and-virtual-postings28821
|
||||||
Node: Assertions and precision28969
|
Node: Assertions and precision28963
|
||||||
Ref: #assertions-and-precision29162
|
Ref: #assertions-and-precision29156
|
||||||
Node: Balance assignments29429
|
Node: Balance assignments29423
|
||||||
Ref: #balance-assignments29603
|
Ref: #balance-assignments29597
|
||||||
Node: Balance assignments and prices30767
|
Node: Balance assignments and prices30761
|
||||||
Ref: #balance-assignments-and-prices30939
|
Ref: #balance-assignments-and-prices30933
|
||||||
Node: Directives31163
|
Node: Directives31157
|
||||||
Ref: #directives31322
|
Ref: #directives31316
|
||||||
Node: Directives and multiple files37013
|
Node: Directives and multiple files37007
|
||||||
Ref: #directives-and-multiple-files37196
|
Ref: #directives-and-multiple-files37190
|
||||||
Node: Comment blocks37860
|
Node: Comment blocks37854
|
||||||
Ref: #comment-blocks38043
|
Ref: #comment-blocks38037
|
||||||
Node: Including other files38219
|
Node: Including other files38213
|
||||||
Ref: #including-other-files38399
|
Ref: #including-other-files38393
|
||||||
Node: Default year39050
|
Node: Default year39044
|
||||||
Ref: #default-year39219
|
Ref: #default-year39213
|
||||||
Node: Declaring commodities39626
|
Node: Declaring commodities39620
|
||||||
Ref: #declaring-commodities39809
|
Ref: #declaring-commodities39803
|
||||||
Node: Default commodity41615
|
Node: Default commodity41609
|
||||||
Ref: #default-commodity41801
|
Ref: #default-commodity41795
|
||||||
Node: Declaring market prices42690
|
Node: Declaring market prices42684
|
||||||
Ref: #declaring-market-prices42885
|
Ref: #declaring-market-prices42879
|
||||||
Node: Declaring accounts43742
|
Node: Declaring accounts43736
|
||||||
Ref: #declaring-accounts43928
|
Ref: #declaring-accounts43922
|
||||||
Node: Account comments44853
|
Node: Account comments44847
|
||||||
Ref: #account-comments45016
|
Ref: #account-comments45010
|
||||||
Node: Account subdirectives45440
|
Node: Account subdirectives45434
|
||||||
Ref: #account-subdirectives45635
|
Ref: #account-subdirectives45629
|
||||||
Node: Account types45948
|
Node: Account types45942
|
||||||
Ref: #account-types46132
|
Ref: #account-types46126
|
||||||
Node: Account display order47771
|
Node: Account display order47765
|
||||||
Ref: #account-display-order47941
|
Ref: #account-display-order47935
|
||||||
Node: Rewriting accounts49092
|
Node: Rewriting accounts49086
|
||||||
Ref: #rewriting-accounts49277
|
Ref: #rewriting-accounts49271
|
||||||
Node: Basic aliases50034
|
Node: Basic aliases50028
|
||||||
Ref: #basic-aliases50180
|
Ref: #basic-aliases50174
|
||||||
Node: Regex aliases50884
|
Node: Regex aliases50878
|
||||||
Ref: #regex-aliases51056
|
Ref: #regex-aliases51050
|
||||||
Node: Combining aliases51774
|
Node: Combining aliases51768
|
||||||
Ref: #combining-aliases51967
|
Ref: #combining-aliases51961
|
||||||
Node: Aliases and multiple files53243
|
Node: Aliases and multiple files53237
|
||||||
Ref: #aliases-and-multiple-files53452
|
Ref: #aliases-and-multiple-files53446
|
||||||
Node: end aliases54031
|
Node: end aliases54025
|
||||||
Ref: #end-aliases54188
|
Ref: #end-aliases54182
|
||||||
Node: Default parent account54289
|
Node: Default parent account54283
|
||||||
Ref: #default-parent-account54457
|
Ref: #default-parent-account54451
|
||||||
Node: Periodic transactions55341
|
Node: Periodic transactions55335
|
||||||
Ref: #periodic-transactions55516
|
Ref: #periodic-transactions55510
|
||||||
Node: Periodic rule syntax57388
|
Node: Periodic rule syntax57382
|
||||||
Ref: #periodic-rule-syntax57594
|
Ref: #periodic-rule-syntax57588
|
||||||
Node: Two spaces between period expression and description!58298
|
Node: Two spaces between period expression and description!58292
|
||||||
Ref: #two-spaces-between-period-expression-and-description58617
|
Ref: #two-spaces-between-period-expression-and-description58611
|
||||||
Node: Forecasting with periodic transactions59301
|
Node: Forecasting with periodic transactions59295
|
||||||
Ref: #forecasting-with-periodic-transactions59606
|
Ref: #forecasting-with-periodic-transactions59600
|
||||||
Node: Budgeting with periodic transactions61661
|
Node: Budgeting with periodic transactions61655
|
||||||
Ref: #budgeting-with-periodic-transactions61900
|
Ref: #budgeting-with-periodic-transactions61894
|
||||||
Node: Auto postings62349
|
Node: Auto postings62343
|
||||||
Ref: #auto-postings62489
|
Ref: #auto-postings62483
|
||||||
Node: Auto postings and multiple files64668
|
Node: Auto postings and multiple files64662
|
||||||
Ref: #auto-postings-and-multiple-files64872
|
Ref: #auto-postings-and-multiple-files64866
|
||||||
Node: Auto postings and dates65081
|
Node: Auto postings and dates65075
|
||||||
Ref: #auto-postings-and-dates65355
|
Ref: #auto-postings-and-dates65349
|
||||||
Node: Auto postings and transaction balancing / inferred amounts / balance assertions65530
|
Node: Auto postings and transaction balancing / inferred amounts / balance assertions65524
|
||||||
Ref: #auto-postings-and-transaction-balancing-inferred-amounts-balance-assertions65881
|
Ref: #auto-postings-and-transaction-balancing-inferred-amounts-balance-assertions65875
|
||||||
Node: Auto posting tags66223
|
Node: Auto posting tags66217
|
||||||
Ref: #auto-posting-tags66438
|
Ref: #auto-posting-tags66432
|
||||||
|
|
||||||
End Tag Table
|
End Tag Table
|
||||||
|
|
||||||
|
|||||||
@ -1480,4 +1480,4 @@ SEE ALSO
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
hledger 1.17.99 June 2020 hledger_journal(5)
|
hledger 1.18 June 2020 hledger_journal(5)
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
.TH "hledger_timeclock" "5" "June 2020" "hledger 1.17.99" "hledger User Manuals"
|
.TH "hledger_timeclock" "5" "June 2020" "hledger 1.18" "hledger User Manuals"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -4,8 +4,8 @@ stdin.
|
|||||||
|
|
||||||
File: hledger_timeclock.info, Node: Top, Up: (dir)
|
File: hledger_timeclock.info, Node: Top, Up: (dir)
|
||||||
|
|
||||||
hledger_timeclock(5) hledger 1.17.99
|
hledger_timeclock(5) hledger 1.18
|
||||||
************************************
|
*********************************
|
||||||
|
|
||||||
Timeclock - the time logging format of timeclock.el, as read by hledger
|
Timeclock - the time logging format of timeclock.el, as read by hledger
|
||||||
|
|
||||||
|
|||||||
@ -78,4 +78,4 @@ SEE ALSO
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
hledger 1.17.99 June 2020 hledger_timeclock(5)
|
hledger 1.18 June 2020 hledger_timeclock(5)
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
.TH "hledger_timedot" "5" "June 2020" "hledger 1.17.99" "hledger User Manuals"
|
.TH "hledger_timedot" "5" "June 2020" "hledger 1.18" "hledger User Manuals"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -4,8 +4,8 @@ stdin.
|
|||||||
|
|
||||||
File: hledger_timedot.info, Node: Top, Up: (dir)
|
File: hledger_timedot.info, Node: Top, Up: (dir)
|
||||||
|
|
||||||
hledger_timedot(5) hledger 1.17.99
|
hledger_timedot(5) hledger 1.18
|
||||||
**********************************
|
*******************************
|
||||||
|
|
||||||
Timedot - hledger's human-friendly time logging format
|
Timedot - hledger's human-friendly time logging format
|
||||||
|
|
||||||
|
|||||||
@ -161,4 +161,4 @@ SEE ALSO
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
hledger 1.17.99 June 2020 hledger_timedot(5)
|
hledger 1.18 June 2020 hledger_timedot(5)
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
.TH "hledger-ui" "1" "June 2020" "hledger-ui 1.17.99" "hledger User Manuals"
|
.TH "hledger-ui" "1" "June 2020" "hledger-ui 1.18" "hledger User Manuals"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -3,8 +3,8 @@ This is hledger-ui.info, produced by makeinfo version 6.7 from stdin.
|
|||||||
|
|
||||||
File: hledger-ui.info, Node: Top, Next: OPTIONS, Up: (dir)
|
File: hledger-ui.info, Node: Top, Next: OPTIONS, Up: (dir)
|
||||||
|
|
||||||
hledger-ui(1) hledger-ui 1.17.99
|
hledger-ui(1) hledger-ui 1.18
|
||||||
********************************
|
*****************************
|
||||||
|
|
||||||
hledger-ui - terminal interface for the hledger accounting tool
|
hledger-ui - terminal interface for the hledger accounting tool
|
||||||
|
|
||||||
@ -499,26 +499,26 @@ program is restarted.
|
|||||||
|
|
||||||
Tag Table:
|
Tag Table:
|
||||||
Node: Top71
|
Node: Top71
|
||||||
Node: OPTIONS1476
|
Node: OPTIONS1470
|
||||||
Ref: #options1573
|
Ref: #options1567
|
||||||
Node: KEYS5004
|
Node: KEYS4998
|
||||||
Ref: #keys5099
|
Ref: #keys5093
|
||||||
Node: SCREENS9375
|
Node: SCREENS9369
|
||||||
Ref: #screens9480
|
Ref: #screens9474
|
||||||
Node: Accounts screen9570
|
Node: Accounts screen9564
|
||||||
Ref: #accounts-screen9698
|
Ref: #accounts-screen9692
|
||||||
Node: Register screen11914
|
Node: Register screen11908
|
||||||
Ref: #register-screen12069
|
Ref: #register-screen12063
|
||||||
Node: Transaction screen14066
|
Node: Transaction screen14060
|
||||||
Ref: #transaction-screen14224
|
Ref: #transaction-screen14218
|
||||||
Node: Error screen15094
|
Node: Error screen15088
|
||||||
Ref: #error-screen15216
|
Ref: #error-screen15210
|
||||||
Node: ENVIRONMENT15460
|
Node: ENVIRONMENT15454
|
||||||
Ref: #environment15574
|
Ref: #environment15568
|
||||||
Node: FILES16381
|
Node: FILES16375
|
||||||
Ref: #files16480
|
Ref: #files16474
|
||||||
Node: BUGS16693
|
Node: BUGS16687
|
||||||
Ref: #bugs16770
|
Ref: #bugs16764
|
||||||
|
|
||||||
End Tag Table
|
End Tag Table
|
||||||
|
|
||||||
|
|||||||
@ -441,4 +441,4 @@ SEE ALSO
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
hledger-ui 1.17.99 June 2020 hledger-ui(1)
|
hledger-ui 1.18 June 2020 hledger-ui(1)
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
.TH "hledger-web" "1" "June 2020" "hledger-web 1.17.99" "hledger User Manuals"
|
.TH "hledger-web" "1" "June 2020" "hledger-web 1.18" "hledger User Manuals"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -342,7 +342,9 @@ You can get JSON data from these routes:
|
|||||||
\f[R]
|
\f[R]
|
||||||
.fi
|
.fi
|
||||||
.PP
|
.PP
|
||||||
Eg, all account names in the journal (similar to the accounts command):
|
Eg, all account names in the journal (similar to the accounts command).
|
||||||
|
(hledger-web\[aq]s JSON does not include newlines, here we use python to
|
||||||
|
prettify it):
|
||||||
.IP
|
.IP
|
||||||
.nf
|
.nf
|
||||||
\f[C]
|
\f[C]
|
||||||
@ -410,117 +412,107 @@ You can add a new transaction to the journal with a PUT request to
|
|||||||
capability (enabled by default).
|
capability (enabled by default).
|
||||||
The payload must be the full, exact JSON representation of a hledger
|
The payload must be the full, exact JSON representation of a hledger
|
||||||
transaction (partial data won\[aq]t do).
|
transaction (partial data won\[aq]t do).
|
||||||
You can get sample JSON from \f[C]/transactions\f[R] or
|
You can get sample JSON from hledger-web\[aq]s \f[C]/transactions\f[R]
|
||||||
\f[C]/accounttransactions\f[R], or you can export it with
|
or \f[C]/accounttransactions\f[R], or you can export it with
|
||||||
hledger-lib\[aq]s \f[C]writeJsonFile\f[R] helper, like so:
|
hledger-lib, eg like so:
|
||||||
.IP
|
.IP
|
||||||
.nf
|
.nf
|
||||||
\f[C]
|
\f[C]
|
||||||
$ make ghci-web
|
\&.../hledger$ stack ghci hledger-lib
|
||||||
>>> import Hledger
|
>>> writeJsonFile \[dq]txn.json\[dq] (head $ jtxns samplejournal)
|
||||||
>>> writeJsonFile \[dq]txn.json\[dq] (head $ jtxns samplejournal) -- export samplejournal\[aq]s first txn
|
|
||||||
>>> :q
|
>>> :q
|
||||||
\f[R]
|
\f[R]
|
||||||
.fi
|
.fi
|
||||||
.PP
|
.PP
|
||||||
If you like, reformat the json to make it human-readable:
|
|
||||||
.IP
|
|
||||||
.nf
|
|
||||||
\f[C]
|
|
||||||
$ python -m json.tool txn.json >pretty
|
|
||||||
$ mv pretty txn.json
|
|
||||||
\f[R]
|
|
||||||
.fi
|
|
||||||
.PP
|
|
||||||
Here\[aq]s how it looks as of hledger-1.17 (remember, this JSON
|
Here\[aq]s how it looks as of hledger-1.17 (remember, this JSON
|
||||||
corresponds to hledger\[aq]s Transaction and related data types):
|
corresponds to hledger\[aq]s Transaction and related data types):
|
||||||
.IP
|
.IP
|
||||||
.nf
|
.nf
|
||||||
\f[C]
|
\f[C]
|
||||||
{
|
{
|
||||||
\[dq]tcode\[dq]: \[dq]\[dq],
|
|
||||||
\[dq]tcomment\[dq]: \[dq]\[dq],
|
\[dq]tcomment\[dq]: \[dq]\[dq],
|
||||||
\[dq]tdate\[dq]: \[dq]2008-01-01\[dq],
|
|
||||||
\[dq]tdate2\[dq]: null,
|
|
||||||
\[dq]tdescription\[dq]: \[dq]income\[dq],
|
|
||||||
\[dq]tindex\[dq]: 1,
|
|
||||||
\[dq]tpostings\[dq]: [
|
\[dq]tpostings\[dq]: [
|
||||||
{
|
{
|
||||||
\[dq]paccount\[dq]: \[dq]assets:bank:checking\[dq],
|
\[dq]pbalanceassertion\[dq]: null,
|
||||||
|
\[dq]pstatus\[dq]: \[dq]Unmarked\[dq],
|
||||||
\[dq]pamount\[dq]: [
|
\[dq]pamount\[dq]: [
|
||||||
{
|
{
|
||||||
\[dq]acommodity\[dq]: \[dq]$\[dq],
|
|
||||||
\[dq]aismultiplier\[dq]: false,
|
|
||||||
\[dq]aprice\[dq]: null,
|
\[dq]aprice\[dq]: null,
|
||||||
|
\[dq]acommodity\[dq]: \[dq]$\[dq],
|
||||||
\[dq]aquantity\[dq]: {
|
\[dq]aquantity\[dq]: {
|
||||||
\[dq]decimalMantissa\[dq]: 10000000000,
|
\[dq]floatingPoint\[dq]: 1,
|
||||||
\[dq]decimalPlaces\[dq]: 10,
|
\[dq]decimalPlaces\[dq]: 10,
|
||||||
\[dq]floatingPoint\[dq]: 1
|
\[dq]decimalMantissa\[dq]: 10000000000
|
||||||
},
|
},
|
||||||
|
\[dq]aismultiplier\[dq]: false,
|
||||||
\[dq]astyle\[dq]: {
|
\[dq]astyle\[dq]: {
|
||||||
\[dq]ascommodityside\[dq]: \[dq]L\[dq],
|
\[dq]ascommodityside\[dq]: \[dq]L\[dq],
|
||||||
\[dq]ascommodityspaced\[dq]: false,
|
|
||||||
\[dq]asdecimalpoint\[dq]: \[dq].\[dq],
|
|
||||||
\[dq]asdigitgroups\[dq]: null,
|
\[dq]asdigitgroups\[dq]: null,
|
||||||
\[dq]asprecision\[dq]: 2
|
\[dq]ascommodityspaced\[dq]: false,
|
||||||
|
\[dq]asprecision\[dq]: 2,
|
||||||
|
\[dq]asdecimalpoint\[dq]: \[dq].\[dq]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
\[dq]pbalanceassertion\[dq]: null,
|
|
||||||
\[dq]pcomment\[dq]: \[dq]\[dq],
|
|
||||||
\[dq]pdate\[dq]: null,
|
|
||||||
\[dq]pdate2\[dq]: null,
|
|
||||||
\[dq]poriginal\[dq]: null,
|
|
||||||
\[dq]pstatus\[dq]: \[dq]Unmarked\[dq],
|
|
||||||
\[dq]ptags\[dq]: [],
|
|
||||||
\[dq]ptransaction_\[dq]: \[dq]1\[dq],
|
\[dq]ptransaction_\[dq]: \[dq]1\[dq],
|
||||||
\[dq]ptype\[dq]: \[dq]RegularPosting\[dq]
|
\[dq]paccount\[dq]: \[dq]assets:bank:checking\[dq],
|
||||||
|
\[dq]pdate\[dq]: null,
|
||||||
|
\[dq]ptype\[dq]: \[dq]RegularPosting\[dq],
|
||||||
|
\[dq]pcomment\[dq]: \[dq]\[dq],
|
||||||
|
\[dq]pdate2\[dq]: null,
|
||||||
|
\[dq]ptags\[dq]: [],
|
||||||
|
\[dq]poriginal\[dq]: null
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
\[dq]paccount\[dq]: \[dq]income:salary\[dq],
|
\[dq]pbalanceassertion\[dq]: null,
|
||||||
|
\[dq]pstatus\[dq]: \[dq]Unmarked\[dq],
|
||||||
\[dq]pamount\[dq]: [
|
\[dq]pamount\[dq]: [
|
||||||
{
|
{
|
||||||
\[dq]acommodity\[dq]: \[dq]$\[dq],
|
|
||||||
\[dq]aismultiplier\[dq]: false,
|
|
||||||
\[dq]aprice\[dq]: null,
|
\[dq]aprice\[dq]: null,
|
||||||
|
\[dq]acommodity\[dq]: \[dq]$\[dq],
|
||||||
\[dq]aquantity\[dq]: {
|
\[dq]aquantity\[dq]: {
|
||||||
\[dq]decimalMantissa\[dq]: -10000000000,
|
\[dq]floatingPoint\[dq]: -1,
|
||||||
\[dq]decimalPlaces\[dq]: 10,
|
\[dq]decimalPlaces\[dq]: 10,
|
||||||
\[dq]floatingPoint\[dq]: -1
|
\[dq]decimalMantissa\[dq]: -10000000000
|
||||||
},
|
},
|
||||||
|
\[dq]aismultiplier\[dq]: false,
|
||||||
\[dq]astyle\[dq]: {
|
\[dq]astyle\[dq]: {
|
||||||
\[dq]ascommodityside\[dq]: \[dq]L\[dq],
|
\[dq]ascommodityside\[dq]: \[dq]L\[dq],
|
||||||
\[dq]ascommodityspaced\[dq]: false,
|
|
||||||
\[dq]asdecimalpoint\[dq]: \[dq].\[dq],
|
|
||||||
\[dq]asdigitgroups\[dq]: null,
|
\[dq]asdigitgroups\[dq]: null,
|
||||||
\[dq]asprecision\[dq]: 2
|
\[dq]ascommodityspaced\[dq]: false,
|
||||||
|
\[dq]asprecision\[dq]: 2,
|
||||||
|
\[dq]asdecimalpoint\[dq]: \[dq].\[dq]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
\[dq]pbalanceassertion\[dq]: null,
|
|
||||||
\[dq]pcomment\[dq]: \[dq]\[dq],
|
|
||||||
\[dq]pdate\[dq]: null,
|
|
||||||
\[dq]pdate2\[dq]: null,
|
|
||||||
\[dq]poriginal\[dq]: null,
|
|
||||||
\[dq]pstatus\[dq]: \[dq]Unmarked\[dq],
|
|
||||||
\[dq]ptags\[dq]: [],
|
|
||||||
\[dq]ptransaction_\[dq]: \[dq]1\[dq],
|
\[dq]ptransaction_\[dq]: \[dq]1\[dq],
|
||||||
\[dq]ptype\[dq]: \[dq]RegularPosting\[dq]
|
\[dq]paccount\[dq]: \[dq]income:salary\[dq],
|
||||||
|
\[dq]pdate\[dq]: null,
|
||||||
|
\[dq]ptype\[dq]: \[dq]RegularPosting\[dq],
|
||||||
|
\[dq]pcomment\[dq]: \[dq]\[dq],
|
||||||
|
\[dq]pdate2\[dq]: null,
|
||||||
|
\[dq]ptags\[dq]: [],
|
||||||
|
\[dq]poriginal\[dq]: null
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
\[dq]tprecedingcomment\[dq]: \[dq]\[dq],
|
\[dq]ttags\[dq]: [],
|
||||||
\[dq]tsourcepos\[dq]: {
|
\[dq]tsourcepos\[dq]: {
|
||||||
|
\[dq]tag\[dq]: \[dq]JournalSourcePos\[dq],
|
||||||
\[dq]contents\[dq]: [
|
\[dq]contents\[dq]: [
|
||||||
\[dq]\[dq],
|
\[dq]\[dq],
|
||||||
[
|
[
|
||||||
1,
|
1,
|
||||||
1
|
1
|
||||||
]
|
]
|
||||||
],
|
]
|
||||||
\[dq]tag\[dq]: \[dq]JournalSourcePos\[dq]
|
|
||||||
},
|
},
|
||||||
\[dq]tstatus\[dq]: \[dq]Unmarked\[dq],
|
\[dq]tdate\[dq]: \[dq]2008-01-01\[dq],
|
||||||
\[dq]ttags\[dq]: []
|
\[dq]tcode\[dq]: \[dq]\[dq],
|
||||||
|
\[dq]tindex\[dq]: 1,
|
||||||
|
\[dq]tprecedingcomment\[dq]: \[dq]\[dq],
|
||||||
|
\[dq]tdate2\[dq]: null,
|
||||||
|
\[dq]tdescription\[dq]: \[dq]income\[dq],
|
||||||
|
\[dq]tstatus\[dq]: \[dq]Unmarked\[dq]
|
||||||
}
|
}
|
||||||
\f[R]
|
\f[R]
|
||||||
.fi
|
.fi
|
||||||
|
|||||||
@ -3,8 +3,8 @@ This is hledger-web.info, produced by makeinfo version 6.7 from stdin.
|
|||||||
|
|
||||||
File: hledger-web.info, Node: Top, Next: OPTIONS, Up: (dir)
|
File: hledger-web.info, Node: Top, Next: OPTIONS, Up: (dir)
|
||||||
|
|
||||||
hledger-web(1) hledger-web 1.17.99
|
hledger-web(1) hledger-web 1.18
|
||||||
**********************************
|
*******************************
|
||||||
|
|
||||||
hledger-web - web interface for the hledger accounting tool
|
hledger-web - web interface for the hledger accounting tool
|
||||||
|
|
||||||
@ -347,7 +347,8 @@ $ hledger-web -f examples/sample.journal --serve-api
|
|||||||
/accounttransactions/ACCOUNTNAME
|
/accounttransactions/ACCOUNTNAME
|
||||||
|
|
||||||
Eg, all account names in the journal (similar to the accounts
|
Eg, all account names in the journal (similar to the accounts
|
||||||
command):
|
command). (hledger-web's JSON does not include newlines, here we use
|
||||||
|
python to prettify it):
|
||||||
|
|
||||||
$ curl -s http://127.0.0.1:5000/accountnames | python -m json.tool
|
$ curl -s http://127.0.0.1:5000/accountnames | python -m json.tool
|
||||||
[
|
[
|
||||||
@ -405,106 +406,100 @@ AccountTransactionsReportItem (etc).
|
|||||||
'/add', if hledger-web was started with the 'add' capability (enabled by
|
'/add', if hledger-web was started with the 'add' capability (enabled by
|
||||||
default). The payload must be the full, exact JSON representation of a
|
default). The payload must be the full, exact JSON representation of a
|
||||||
hledger transaction (partial data won't do). You can get sample JSON
|
hledger transaction (partial data won't do). You can get sample JSON
|
||||||
from '/transactions' or '/accounttransactions', or you can export it
|
from hledger-web's '/transactions' or '/accounttransactions', or you can
|
||||||
with hledger-lib's 'writeJsonFile' helper, like so:
|
export it with hledger-lib, eg like so:
|
||||||
|
|
||||||
$ make ghci-web
|
.../hledger$ stack ghci hledger-lib
|
||||||
>>> import Hledger
|
>>> writeJsonFile "txn.json" (head $ jtxns samplejournal)
|
||||||
>>> writeJsonFile "txn.json" (head $ jtxns samplejournal) -- export samplejournal's first txn
|
|
||||||
>>> :q
|
>>> :q
|
||||||
|
|
||||||
If you like, reformat the json to make it human-readable:
|
|
||||||
|
|
||||||
$ python -m json.tool txn.json >pretty
|
|
||||||
$ mv pretty txn.json
|
|
||||||
|
|
||||||
Here's how it looks as of hledger-1.17 (remember, this JSON
|
Here's how it looks as of hledger-1.17 (remember, this JSON
|
||||||
corresponds to hledger's Transaction and related data types):
|
corresponds to hledger's Transaction and related data types):
|
||||||
|
|
||||||
{
|
{
|
||||||
"tcode": "",
|
|
||||||
"tcomment": "",
|
"tcomment": "",
|
||||||
"tdate": "2008-01-01",
|
|
||||||
"tdate2": null,
|
|
||||||
"tdescription": "income",
|
|
||||||
"tindex": 1,
|
|
||||||
"tpostings": [
|
"tpostings": [
|
||||||
{
|
{
|
||||||
"paccount": "assets:bank:checking",
|
"pbalanceassertion": null,
|
||||||
|
"pstatus": "Unmarked",
|
||||||
"pamount": [
|
"pamount": [
|
||||||
{
|
{
|
||||||
"acommodity": "$",
|
|
||||||
"aismultiplier": false,
|
|
||||||
"aprice": null,
|
"aprice": null,
|
||||||
|
"acommodity": "$",
|
||||||
"aquantity": {
|
"aquantity": {
|
||||||
"decimalMantissa": 10000000000,
|
"floatingPoint": 1,
|
||||||
"decimalPlaces": 10,
|
"decimalPlaces": 10,
|
||||||
"floatingPoint": 1
|
"decimalMantissa": 10000000000
|
||||||
},
|
},
|
||||||
|
"aismultiplier": false,
|
||||||
"astyle": {
|
"astyle": {
|
||||||
"ascommodityside": "L",
|
"ascommodityside": "L",
|
||||||
"ascommodityspaced": false,
|
|
||||||
"asdecimalpoint": ".",
|
|
||||||
"asdigitgroups": null,
|
"asdigitgroups": null,
|
||||||
"asprecision": 2
|
"ascommodityspaced": false,
|
||||||
|
"asprecision": 2,
|
||||||
|
"asdecimalpoint": "."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"pbalanceassertion": null,
|
|
||||||
"pcomment": "",
|
|
||||||
"pdate": null,
|
|
||||||
"pdate2": null,
|
|
||||||
"poriginal": null,
|
|
||||||
"pstatus": "Unmarked",
|
|
||||||
"ptags": [],
|
|
||||||
"ptransaction_": "1",
|
"ptransaction_": "1",
|
||||||
"ptype": "RegularPosting"
|
"paccount": "assets:bank:checking",
|
||||||
|
"pdate": null,
|
||||||
|
"ptype": "RegularPosting",
|
||||||
|
"pcomment": "",
|
||||||
|
"pdate2": null,
|
||||||
|
"ptags": [],
|
||||||
|
"poriginal": null
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"paccount": "income:salary",
|
"pbalanceassertion": null,
|
||||||
|
"pstatus": "Unmarked",
|
||||||
"pamount": [
|
"pamount": [
|
||||||
{
|
{
|
||||||
"acommodity": "$",
|
|
||||||
"aismultiplier": false,
|
|
||||||
"aprice": null,
|
"aprice": null,
|
||||||
|
"acommodity": "$",
|
||||||
"aquantity": {
|
"aquantity": {
|
||||||
"decimalMantissa": -10000000000,
|
"floatingPoint": -1,
|
||||||
"decimalPlaces": 10,
|
"decimalPlaces": 10,
|
||||||
"floatingPoint": -1
|
"decimalMantissa": -10000000000
|
||||||
},
|
},
|
||||||
|
"aismultiplier": false,
|
||||||
"astyle": {
|
"astyle": {
|
||||||
"ascommodityside": "L",
|
"ascommodityside": "L",
|
||||||
"ascommodityspaced": false,
|
|
||||||
"asdecimalpoint": ".",
|
|
||||||
"asdigitgroups": null,
|
"asdigitgroups": null,
|
||||||
"asprecision": 2
|
"ascommodityspaced": false,
|
||||||
|
"asprecision": 2,
|
||||||
|
"asdecimalpoint": "."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"pbalanceassertion": null,
|
|
||||||
"pcomment": "",
|
|
||||||
"pdate": null,
|
|
||||||
"pdate2": null,
|
|
||||||
"poriginal": null,
|
|
||||||
"pstatus": "Unmarked",
|
|
||||||
"ptags": [],
|
|
||||||
"ptransaction_": "1",
|
"ptransaction_": "1",
|
||||||
"ptype": "RegularPosting"
|
"paccount": "income:salary",
|
||||||
|
"pdate": null,
|
||||||
|
"ptype": "RegularPosting",
|
||||||
|
"pcomment": "",
|
||||||
|
"pdate2": null,
|
||||||
|
"ptags": [],
|
||||||
|
"poriginal": null
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"tprecedingcomment": "",
|
"ttags": [],
|
||||||
"tsourcepos": {
|
"tsourcepos": {
|
||||||
|
"tag": "JournalSourcePos",
|
||||||
"contents": [
|
"contents": [
|
||||||
"",
|
"",
|
||||||
[
|
[
|
||||||
1,
|
1,
|
||||||
1
|
1
|
||||||
]
|
]
|
||||||
],
|
]
|
||||||
"tag": "JournalSourcePos"
|
|
||||||
},
|
},
|
||||||
"tstatus": "Unmarked",
|
"tdate": "2008-01-01",
|
||||||
"ttags": []
|
"tcode": "",
|
||||||
|
"tindex": 1,
|
||||||
|
"tprecedingcomment": "",
|
||||||
|
"tdate2": null,
|
||||||
|
"tdescription": "income",
|
||||||
|
"tstatus": "Unmarked"
|
||||||
}
|
}
|
||||||
|
|
||||||
And here's how to test adding it with curl. This should add a new
|
And here's how to test adding it with curl. This should add a new
|
||||||
@ -569,22 +564,22 @@ awkward.
|
|||||||
|
|
||||||
Tag Table:
|
Tag Table:
|
||||||
Node: Top72
|
Node: Top72
|
||||||
Node: OPTIONS1752
|
Node: OPTIONS1746
|
||||||
Ref: #options1857
|
Ref: #options1851
|
||||||
Node: PERMISSIONS8201
|
Node: PERMISSIONS8195
|
||||||
Ref: #permissions8340
|
Ref: #permissions8334
|
||||||
Node: EDITING UPLOADING DOWNLOADING9552
|
Node: EDITING UPLOADING DOWNLOADING9546
|
||||||
Ref: #editing-uploading-downloading9733
|
Ref: #editing-uploading-downloading9727
|
||||||
Node: RELOADING10567
|
Node: RELOADING10561
|
||||||
Ref: #reloading10701
|
Ref: #reloading10695
|
||||||
Node: JSON API11134
|
Node: JSON API11128
|
||||||
Ref: #json-api11248
|
Ref: #json-api11242
|
||||||
Node: ENVIRONMENT16812
|
Node: ENVIRONMENT16723
|
||||||
Ref: #environment16928
|
Ref: #environment16839
|
||||||
Node: FILES17661
|
Node: FILES17572
|
||||||
Ref: #files17761
|
Ref: #files17672
|
||||||
Node: BUGS17974
|
Node: BUGS17885
|
||||||
Ref: #bugs18052
|
Ref: #bugs17963
|
||||||
|
|
||||||
End Tag Table
|
End Tag Table
|
||||||
|
|
||||||
|
|||||||
@ -305,7 +305,9 @@ JSON API
|
|||||||
/accounts
|
/accounts
|
||||||
/accounttransactions/ACCOUNTNAME
|
/accounttransactions/ACCOUNTNAME
|
||||||
|
|
||||||
Eg, all account names in the journal (similar to the accounts command):
|
Eg, all account names in the journal (similar to the accounts command).
|
||||||
|
(hledger-web's JSON does not include newlines, here we use python to
|
||||||
|
prettify it):
|
||||||
|
|
||||||
$ curl -s http://127.0.0.1:5000/accountnames | python -m json.tool
|
$ curl -s http://127.0.0.1:5000/accountnames | python -m json.tool
|
||||||
[
|
[
|
||||||
@ -363,106 +365,100 @@ JSON API
|
|||||||
/add, if hledger-web was started with the add capability (enabled by
|
/add, if hledger-web was started with the add capability (enabled by
|
||||||
default). The payload must be the full, exact JSON representation of a
|
default). The payload must be the full, exact JSON representation of a
|
||||||
hledger transaction (partial data won't do). You can get sample JSON
|
hledger transaction (partial data won't do). You can get sample JSON
|
||||||
from /transactions or /accounttransactions, or you can export it with
|
from hledger-web's /transactions or /accounttransactions, or you can
|
||||||
hledger-lib's writeJsonFile helper, like so:
|
export it with hledger-lib, eg like so:
|
||||||
|
|
||||||
$ make ghci-web
|
.../hledger$ stack ghci hledger-lib
|
||||||
>>> import Hledger
|
>>> writeJsonFile "txn.json" (head $ jtxns samplejournal)
|
||||||
>>> writeJsonFile "txn.json" (head $ jtxns samplejournal) -- export samplejournal's first txn
|
|
||||||
>>> :q
|
>>> :q
|
||||||
|
|
||||||
If you like, reformat the json to make it human-readable:
|
|
||||||
|
|
||||||
$ python -m json.tool txn.json >pretty
|
|
||||||
$ mv pretty txn.json
|
|
||||||
|
|
||||||
Here's how it looks as of hledger-1.17 (remember, this JSON corresponds
|
Here's how it looks as of hledger-1.17 (remember, this JSON corresponds
|
||||||
to hledger's Transaction and related data types):
|
to hledger's Transaction and related data types):
|
||||||
|
|
||||||
{
|
{
|
||||||
"tcode": "",
|
|
||||||
"tcomment": "",
|
"tcomment": "",
|
||||||
"tdate": "2008-01-01",
|
|
||||||
"tdate2": null,
|
|
||||||
"tdescription": "income",
|
|
||||||
"tindex": 1,
|
|
||||||
"tpostings": [
|
"tpostings": [
|
||||||
{
|
{
|
||||||
"paccount": "assets:bank:checking",
|
"pbalanceassertion": null,
|
||||||
|
"pstatus": "Unmarked",
|
||||||
"pamount": [
|
"pamount": [
|
||||||
{
|
{
|
||||||
"acommodity": "$",
|
|
||||||
"aismultiplier": false,
|
|
||||||
"aprice": null,
|
"aprice": null,
|
||||||
|
"acommodity": "$",
|
||||||
"aquantity": {
|
"aquantity": {
|
||||||
"decimalMantissa": 10000000000,
|
"floatingPoint": 1,
|
||||||
"decimalPlaces": 10,
|
"decimalPlaces": 10,
|
||||||
"floatingPoint": 1
|
"decimalMantissa": 10000000000
|
||||||
},
|
},
|
||||||
|
"aismultiplier": false,
|
||||||
"astyle": {
|
"astyle": {
|
||||||
"ascommodityside": "L",
|
"ascommodityside": "L",
|
||||||
"ascommodityspaced": false,
|
|
||||||
"asdecimalpoint": ".",
|
|
||||||
"asdigitgroups": null,
|
"asdigitgroups": null,
|
||||||
"asprecision": 2
|
"ascommodityspaced": false,
|
||||||
|
"asprecision": 2,
|
||||||
|
"asdecimalpoint": "."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"pbalanceassertion": null,
|
|
||||||
"pcomment": "",
|
|
||||||
"pdate": null,
|
|
||||||
"pdate2": null,
|
|
||||||
"poriginal": null,
|
|
||||||
"pstatus": "Unmarked",
|
|
||||||
"ptags": [],
|
|
||||||
"ptransaction_": "1",
|
"ptransaction_": "1",
|
||||||
"ptype": "RegularPosting"
|
"paccount": "assets:bank:checking",
|
||||||
|
"pdate": null,
|
||||||
|
"ptype": "RegularPosting",
|
||||||
|
"pcomment": "",
|
||||||
|
"pdate2": null,
|
||||||
|
"ptags": [],
|
||||||
|
"poriginal": null
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"paccount": "income:salary",
|
"pbalanceassertion": null,
|
||||||
|
"pstatus": "Unmarked",
|
||||||
"pamount": [
|
"pamount": [
|
||||||
{
|
{
|
||||||
"acommodity": "$",
|
|
||||||
"aismultiplier": false,
|
|
||||||
"aprice": null,
|
"aprice": null,
|
||||||
|
"acommodity": "$",
|
||||||
"aquantity": {
|
"aquantity": {
|
||||||
"decimalMantissa": -10000000000,
|
"floatingPoint": -1,
|
||||||
"decimalPlaces": 10,
|
"decimalPlaces": 10,
|
||||||
"floatingPoint": -1
|
"decimalMantissa": -10000000000
|
||||||
},
|
},
|
||||||
|
"aismultiplier": false,
|
||||||
"astyle": {
|
"astyle": {
|
||||||
"ascommodityside": "L",
|
"ascommodityside": "L",
|
||||||
"ascommodityspaced": false,
|
|
||||||
"asdecimalpoint": ".",
|
|
||||||
"asdigitgroups": null,
|
"asdigitgroups": null,
|
||||||
"asprecision": 2
|
"ascommodityspaced": false,
|
||||||
|
"asprecision": 2,
|
||||||
|
"asdecimalpoint": "."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"pbalanceassertion": null,
|
|
||||||
"pcomment": "",
|
|
||||||
"pdate": null,
|
|
||||||
"pdate2": null,
|
|
||||||
"poriginal": null,
|
|
||||||
"pstatus": "Unmarked",
|
|
||||||
"ptags": [],
|
|
||||||
"ptransaction_": "1",
|
"ptransaction_": "1",
|
||||||
"ptype": "RegularPosting"
|
"paccount": "income:salary",
|
||||||
|
"pdate": null,
|
||||||
|
"ptype": "RegularPosting",
|
||||||
|
"pcomment": "",
|
||||||
|
"pdate2": null,
|
||||||
|
"ptags": [],
|
||||||
|
"poriginal": null
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"tprecedingcomment": "",
|
"ttags": [],
|
||||||
"tsourcepos": {
|
"tsourcepos": {
|
||||||
|
"tag": "JournalSourcePos",
|
||||||
"contents": [
|
"contents": [
|
||||||
"",
|
"",
|
||||||
[
|
[
|
||||||
1,
|
1,
|
||||||
1
|
1
|
||||||
]
|
]
|
||||||
],
|
]
|
||||||
"tag": "JournalSourcePos"
|
|
||||||
},
|
},
|
||||||
"tstatus": "Unmarked",
|
"tdate": "2008-01-01",
|
||||||
"ttags": []
|
"tcode": "",
|
||||||
|
"tindex": 1,
|
||||||
|
"tprecedingcomment": "",
|
||||||
|
"tdate2": null,
|
||||||
|
"tdescription": "income",
|
||||||
|
"tstatus": "Unmarked"
|
||||||
}
|
}
|
||||||
|
|
||||||
And here's how to test adding it with curl. This should add a new en-
|
And here's how to test adding it with curl. This should add a new en-
|
||||||
@ -533,4 +529,4 @@ SEE ALSO
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
hledger-web 1.17.99 June 2020 hledger-web(1)
|
hledger-web 1.18 June 2020 hledger-web(1)
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
.\"t
|
.\"t
|
||||||
|
|
||||||
.TH "hledger" "1" "June 2020" "hledger 1.17.99" "hledger User Manuals"
|
.TH "hledger" "1" "June 2020" "hledger 1.18" "hledger User Manuals"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -3,8 +3,8 @@ This is hledger.info, produced by makeinfo version 6.7 from stdin.
|
|||||||
|
|
||||||
File: hledger.info, Node: Top, Next: COMMON TASKS, Up: (dir)
|
File: hledger.info, Node: Top, Next: COMMON TASKS, Up: (dir)
|
||||||
|
|
||||||
hledger(1) hledger 1.17.99
|
hledger(1) hledger 1.18
|
||||||
**************************
|
***********************
|
||||||
|
|
||||||
hledger - a command-line accounting tool
|
hledger - a command-line accounting tool
|
||||||
|
|
||||||
@ -3776,187 +3776,187 @@ $ LANG=en_US.UTF-8 hledger -f my.journal print
|
|||||||
|
|
||||||
Tag Table:
|
Tag Table:
|
||||||
Node: Top68
|
Node: Top68
|
||||||
Node: COMMON TASKS2321
|
Node: COMMON TASKS2315
|
||||||
Ref: #common-tasks2433
|
Ref: #common-tasks2427
|
||||||
Node: Getting help2840
|
Node: Getting help2834
|
||||||
Ref: #getting-help2972
|
Ref: #getting-help2966
|
||||||
Node: Constructing command lines3525
|
Node: Constructing command lines3519
|
||||||
Ref: #constructing-command-lines3717
|
Ref: #constructing-command-lines3711
|
||||||
Node: Starting a journal file4414
|
Node: Starting a journal file4408
|
||||||
Ref: #starting-a-journal-file4612
|
Ref: #starting-a-journal-file4606
|
||||||
Node: Setting opening balances5800
|
Node: Setting opening balances5794
|
||||||
Ref: #setting-opening-balances5996
|
Ref: #setting-opening-balances5990
|
||||||
Node: Recording transactions9137
|
Node: Recording transactions9131
|
||||||
Ref: #recording-transactions9317
|
Ref: #recording-transactions9311
|
||||||
Node: Reconciling9873
|
Node: Reconciling9867
|
||||||
Ref: #reconciling10016
|
Ref: #reconciling10010
|
||||||
Node: Reporting12273
|
Node: Reporting12267
|
||||||
Ref: #reporting12413
|
Ref: #reporting12407
|
||||||
Node: Migrating to a new file16412
|
Node: Migrating to a new file16406
|
||||||
Ref: #migrating-to-a-new-file16560
|
Ref: #migrating-to-a-new-file16554
|
||||||
Node: OPTIONS16859
|
Node: OPTIONS16853
|
||||||
Ref: #options16966
|
Ref: #options16960
|
||||||
Node: General options17336
|
Node: General options17330
|
||||||
Ref: #general-options17461
|
Ref: #general-options17455
|
||||||
Node: Command options20231
|
Node: Command options20225
|
||||||
Ref: #command-options20382
|
Ref: #command-options20376
|
||||||
Node: Command arguments20780
|
Node: Command arguments20774
|
||||||
Ref: #command-arguments20927
|
Ref: #command-arguments20921
|
||||||
Node: Queries21807
|
Node: Queries21801
|
||||||
Ref: #queries21962
|
Ref: #queries21956
|
||||||
Node: Special characters in arguments and queries25924
|
Node: Special characters in arguments and queries25918
|
||||||
Ref: #special-characters-in-arguments-and-queries26152
|
Ref: #special-characters-in-arguments-and-queries26146
|
||||||
Node: More escaping26603
|
Node: More escaping26597
|
||||||
Ref: #more-escaping26765
|
Ref: #more-escaping26759
|
||||||
Node: Even more escaping27061
|
Node: Even more escaping27055
|
||||||
Ref: #even-more-escaping27255
|
Ref: #even-more-escaping27249
|
||||||
Node: Less escaping27926
|
Node: Less escaping27920
|
||||||
Ref: #less-escaping28088
|
Ref: #less-escaping28082
|
||||||
Node: Unicode characters28333
|
Node: Unicode characters28327
|
||||||
Ref: #unicode-characters28515
|
Ref: #unicode-characters28509
|
||||||
Node: Input files29927
|
Node: Input files29921
|
||||||
Ref: #input-files30070
|
Ref: #input-files30064
|
||||||
Node: Output destination31999
|
Node: Output destination31993
|
||||||
Ref: #output-destination32151
|
Ref: #output-destination32145
|
||||||
Node: Output format32576
|
Node: Output format32570
|
||||||
Ref: #output-format32726
|
Ref: #output-format32720
|
||||||
Node: Regular expressions34308
|
Node: Regular expressions34302
|
||||||
Ref: #regular-expressions34465
|
Ref: #regular-expressions34459
|
||||||
Node: Smart dates36201
|
Node: Smart dates36195
|
||||||
Ref: #smart-dates36352
|
Ref: #smart-dates36346
|
||||||
Node: Report start & end date37713
|
Node: Report start & end date37707
|
||||||
Ref: #report-start-end-date37885
|
Ref: #report-start-end-date37879
|
||||||
Node: Report intervals39382
|
Node: Report intervals39376
|
||||||
Ref: #report-intervals39547
|
Ref: #report-intervals39541
|
||||||
Node: Period expressions39937
|
Node: Period expressions39931
|
||||||
Ref: #period-expressions40097
|
Ref: #period-expressions40091
|
||||||
Node: Depth limiting44233
|
Node: Depth limiting44227
|
||||||
Ref: #depth-limiting44377
|
Ref: #depth-limiting44371
|
||||||
Node: Pivoting44709
|
Node: Pivoting44703
|
||||||
Ref: #pivoting44832
|
Ref: #pivoting44826
|
||||||
Node: Valuation46508
|
Node: Valuation46502
|
||||||
Ref: #valuation46610
|
Ref: #valuation46604
|
||||||
Node: -B Cost47530
|
Node: -B Cost47524
|
||||||
Ref: #b-cost47634
|
Ref: #b-cost47628
|
||||||
Node: -V Value47806
|
Node: -V Value47800
|
||||||
Ref: #v-value47959
|
Ref: #v-value47953
|
||||||
Node: -X Market value in specified commodity49232
|
Node: -X Market value in specified commodity49226
|
||||||
Ref: #x-market-value-in-specified-commodity49451
|
Ref: #x-market-value-in-specified-commodity49445
|
||||||
Node: Market prices49629
|
Node: Market prices49623
|
||||||
Ref: #market-prices49814
|
Ref: #market-prices49808
|
||||||
Node: --value Flexible valuation50739
|
Node: --value Flexible valuation50733
|
||||||
Ref: #value-flexible-valuation50940
|
Ref: #value-flexible-valuation50934
|
||||||
Node: Effect of --value on reports55445
|
Node: Effect of --value on reports55439
|
||||||
Ref: #effect-of---value-on-reports55626
|
Ref: #effect-of---value-on-reports55620
|
||||||
Node: COMMANDS61172
|
Node: COMMANDS61166
|
||||||
Ref: #commands61280
|
Ref: #commands61274
|
||||||
Node: accounts62364
|
Node: accounts62358
|
||||||
Ref: #accounts62462
|
Ref: #accounts62456
|
||||||
Node: activity63161
|
Node: activity63155
|
||||||
Ref: #activity63271
|
Ref: #activity63265
|
||||||
Node: add63654
|
Node: add63648
|
||||||
Ref: #add63753
|
Ref: #add63747
|
||||||
Node: balance66492
|
Node: balance66486
|
||||||
Ref: #balance66603
|
Ref: #balance66597
|
||||||
Node: Classic balance report68061
|
Node: Classic balance report68055
|
||||||
Ref: #classic-balance-report68234
|
Ref: #classic-balance-report68228
|
||||||
Node: Customising the classic balance report69603
|
Node: Customising the classic balance report69597
|
||||||
Ref: #customising-the-classic-balance-report69831
|
Ref: #customising-the-classic-balance-report69825
|
||||||
Node: Colour support71907
|
Node: Colour support71901
|
||||||
Ref: #colour-support72074
|
Ref: #colour-support72068
|
||||||
Node: Flat mode72247
|
Node: Flat mode72241
|
||||||
Ref: #flat-mode72395
|
Ref: #flat-mode72389
|
||||||
Node: Depth limited balance reports72808
|
Node: Depth limited balance reports72802
|
||||||
Ref: #depth-limited-balance-reports72993
|
Ref: #depth-limited-balance-reports72987
|
||||||
Node: Percentages73449
|
Node: Percentages73443
|
||||||
Ref: #percentages73615
|
Ref: #percentages73609
|
||||||
Node: Multicolumn balance report74752
|
Node: Multicolumn balance report74746
|
||||||
Ref: #multicolumn-balance-report74932
|
Ref: #multicolumn-balance-report74926
|
||||||
Node: Budget report80194
|
Node: Budget report80188
|
||||||
Ref: #budget-report80337
|
Ref: #budget-report80331
|
||||||
Node: Nested budgets85603
|
Node: Nested budgets85597
|
||||||
Ref: #nested-budgets85715
|
Ref: #nested-budgets85709
|
||||||
Ref: #output-format-189196
|
Ref: #output-format-189190
|
||||||
Node: balancesheet89393
|
Node: balancesheet89387
|
||||||
Ref: #balancesheet89529
|
Ref: #balancesheet89523
|
||||||
Node: balancesheetequity90995
|
Node: balancesheetequity90989
|
||||||
Ref: #balancesheetequity91144
|
Ref: #balancesheetequity91138
|
||||||
Node: cashflow91867
|
Node: cashflow91861
|
||||||
Ref: #cashflow91995
|
Ref: #cashflow91989
|
||||||
Node: check-dates93174
|
Node: check-dates93168
|
||||||
Ref: #check-dates93301
|
Ref: #check-dates93295
|
||||||
Node: check-dupes93580
|
Node: check-dupes93574
|
||||||
Ref: #check-dupes93704
|
Ref: #check-dupes93698
|
||||||
Node: close93997
|
Node: close93991
|
||||||
Ref: #close94111
|
Ref: #close94105
|
||||||
Node: close usage95633
|
Node: close usage95627
|
||||||
Ref: #close-usage95726
|
Ref: #close-usage95720
|
||||||
Node: commodities98539
|
Node: commodities98533
|
||||||
Ref: #commodities98666
|
Ref: #commodities98660
|
||||||
Node: descriptions98748
|
Node: descriptions98742
|
||||||
Ref: #descriptions98876
|
Ref: #descriptions98870
|
||||||
Node: diff99057
|
Node: diff99051
|
||||||
Ref: #diff99163
|
Ref: #diff99157
|
||||||
Node: files100210
|
Node: files100204
|
||||||
Ref: #files100310
|
Ref: #files100304
|
||||||
Node: help100457
|
Node: help100451
|
||||||
Ref: #help100557
|
Ref: #help100551
|
||||||
Node: import101638
|
Node: import101632
|
||||||
Ref: #import101752
|
Ref: #import101746
|
||||||
Node: Importing balance assignments102645
|
Node: Importing balance assignments102639
|
||||||
Ref: #importing-balance-assignments102793
|
Ref: #importing-balance-assignments102787
|
||||||
Node: incomestatement103442
|
Node: incomestatement103436
|
||||||
Ref: #incomestatement103575
|
Ref: #incomestatement103569
|
||||||
Node: notes105062
|
Node: notes105056
|
||||||
Ref: #notes105175
|
Ref: #notes105169
|
||||||
Node: payees105301
|
Node: payees105295
|
||||||
Ref: #payees105407
|
Ref: #payees105401
|
||||||
Node: prices105565
|
Node: prices105559
|
||||||
Ref: #prices105671
|
Ref: #prices105665
|
||||||
Node: print106012
|
Node: print106006
|
||||||
Ref: #print106122
|
Ref: #print106116
|
||||||
Node: print-unique110908
|
Node: print-unique110902
|
||||||
Ref: #print-unique111034
|
Ref: #print-unique111028
|
||||||
Node: register111319
|
Node: register111313
|
||||||
Ref: #register111446
|
Ref: #register111440
|
||||||
Node: Custom register output115618
|
Node: Custom register output115612
|
||||||
Ref: #custom-register-output115747
|
Ref: #custom-register-output115741
|
||||||
Node: register-match117084
|
Node: register-match117078
|
||||||
Ref: #register-match117218
|
Ref: #register-match117212
|
||||||
Node: rewrite117569
|
Node: rewrite117563
|
||||||
Ref: #rewrite117684
|
Ref: #rewrite117678
|
||||||
Node: Re-write rules in a file119539
|
Node: Re-write rules in a file119533
|
||||||
Ref: #re-write-rules-in-a-file119673
|
Ref: #re-write-rules-in-a-file119667
|
||||||
Node: Diff output format120883
|
Node: Diff output format120877
|
||||||
Ref: #diff-output-format121052
|
Ref: #diff-output-format121046
|
||||||
Node: rewrite vs print --auto122144
|
Node: rewrite vs print --auto122138
|
||||||
Ref: #rewrite-vs.-print---auto122323
|
Ref: #rewrite-vs.-print---auto122317
|
||||||
Node: roi122879
|
Node: roi122873
|
||||||
Ref: #roi122977
|
Ref: #roi122971
|
||||||
Node: stats123989
|
Node: stats123983
|
||||||
Ref: #stats124088
|
Ref: #stats124082
|
||||||
Node: tags124876
|
Node: tags124870
|
||||||
Ref: #tags124974
|
Ref: #tags124968
|
||||||
Node: test125268
|
Node: test125262
|
||||||
Ref: #test125376
|
Ref: #test125370
|
||||||
Node: Add-on commands126123
|
Node: Add-on commands126117
|
||||||
Ref: #add-on-commands126240
|
Ref: #add-on-commands126234
|
||||||
Node: ui127583
|
Node: ui127577
|
||||||
Ref: #ui127671
|
Ref: #ui127665
|
||||||
Node: web127725
|
Node: web127719
|
||||||
Ref: #web127828
|
Ref: #web127822
|
||||||
Node: iadd127944
|
Node: iadd127938
|
||||||
Ref: #iadd128055
|
Ref: #iadd128049
|
||||||
Node: interest128137
|
Node: interest128131
|
||||||
Ref: #interest128244
|
Ref: #interest128238
|
||||||
Node: ENVIRONMENT128484
|
Node: ENVIRONMENT128478
|
||||||
Ref: #environment128596
|
Ref: #environment128590
|
||||||
Node: FILES129425
|
Node: FILES129419
|
||||||
Ref: #files-1129528
|
Ref: #files-1129522
|
||||||
Node: LIMITATIONS129741
|
Node: LIMITATIONS129735
|
||||||
Ref: #limitations129860
|
Ref: #limitations129854
|
||||||
Node: TROUBLESHOOTING130602
|
Node: TROUBLESHOOTING130596
|
||||||
Ref: #troubleshooting130715
|
Ref: #troubleshooting130709
|
||||||
|
|
||||||
End Tag Table
|
End Tag Table
|
||||||
|
|
||||||
|
|||||||
@ -3231,4 +3231,4 @@ SEE ALSO
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
hledger 1.17.99 June 2020 hledger(1)
|
hledger 1.18 June 2020 hledger(1)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user