;regen manuals
This commit is contained in:
parent
c8a84e3c96
commit
368297102d
@ -610,7 +610,7 @@ separator TAB
|
|||||||
.fi
|
.fi
|
||||||
.PP
|
.PP
|
||||||
See also: File Extension.
|
See also: File Extension.
|
||||||
.SS \f[C]if\f[R]
|
.SS \f[C]if\f[R] block
|
||||||
.IP
|
.IP
|
||||||
.nf
|
.nf
|
||||||
\f[C]
|
\f[C]
|
||||||
@ -702,6 +702,76 @@ banking thru software
|
|||||||
comment XXX deductible ? check it
|
comment XXX deductible ? check it
|
||||||
\f[R]
|
\f[R]
|
||||||
.fi
|
.fi
|
||||||
|
.SS \f[C]if\f[R] table
|
||||||
|
.IP
|
||||||
|
.nf
|
||||||
|
\f[C]
|
||||||
|
if,CSVFIELDNAME1,CSVFIELDNAME2,...,CSVFIELDNAMEn
|
||||||
|
MATCHER1,VALUE11,VALUE12,...,VALUE1n
|
||||||
|
MATCHER2,VALUE21,VALUE22,...,VALUE2n
|
||||||
|
MATCHER3,VALUE31,VALUE32,...,VALUE3n
|
||||||
|
<empty line>
|
||||||
|
\f[R]
|
||||||
|
.fi
|
||||||
|
.PP
|
||||||
|
Conditional tables (\[dq]if tables\[dq]) are a different syntax to
|
||||||
|
specify field assignments that will be applied only to CSV records which
|
||||||
|
match certain patterns.
|
||||||
|
.PP
|
||||||
|
MATCHER could be either field or record matcher, as described above.
|
||||||
|
When MATCHER matches, values from that row would be assigned to the CSV
|
||||||
|
fields named on the \f[C]if\f[R] line, in the same order.
|
||||||
|
.PP
|
||||||
|
Therefore \f[C]if\f[R] table is exactly equivalent to a sequence of of
|
||||||
|
\f[C]if\f[R] blocks:
|
||||||
|
.IP
|
||||||
|
.nf
|
||||||
|
\f[C]
|
||||||
|
if MATCHER1
|
||||||
|
CSVFIELDNAME1 VALUE11
|
||||||
|
CSVFIELDNAME2 VALUE12
|
||||||
|
...
|
||||||
|
CSVFIELDNAMEn VALUE1n
|
||||||
|
|
||||||
|
if MATCHER2
|
||||||
|
CSVFIELDNAME1 VALUE21
|
||||||
|
CSVFIELDNAME2 VALUE22
|
||||||
|
...
|
||||||
|
CSVFIELDNAMEn VALUE2n
|
||||||
|
|
||||||
|
if MATCHER3
|
||||||
|
CSVFIELDNAME1 VALUE31
|
||||||
|
CSVFIELDNAME2 VALUE32
|
||||||
|
...
|
||||||
|
CSVFIELDNAMEn VALUE3n
|
||||||
|
\f[R]
|
||||||
|
.fi
|
||||||
|
.PP
|
||||||
|
Each line starting with MATCHER should contain enough (possibly empty)
|
||||||
|
values for all the listed fields.
|
||||||
|
.PP
|
||||||
|
Rules would be checked and applied in the order they are listed in the
|
||||||
|
table and, like with \f[C]if\f[R] blocks, later rules (in the same or
|
||||||
|
another table) or \f[C]if\f[R] blocks could override the effect of any
|
||||||
|
rule.
|
||||||
|
.PP
|
||||||
|
Instead of \[aq],\[aq] you can use a variety of other non-alphanumeric
|
||||||
|
characters as a separator.
|
||||||
|
First character after \f[C]if\f[R] is taken to be the separator for the
|
||||||
|
rest of the table.
|
||||||
|
It is the responsibility of the user to ensure that separator does not
|
||||||
|
occur inside MATCHERs and values - there is no way to escape separator.
|
||||||
|
.PP
|
||||||
|
Example:
|
||||||
|
.IP
|
||||||
|
.nf
|
||||||
|
\f[C]
|
||||||
|
if,account2,comment
|
||||||
|
atm transaction fee,expenses:business:banking,deductible? check it
|
||||||
|
%description groceries,expenses:groceries,
|
||||||
|
2020/01/12.*Plumbing LLC,expenses:house:upkeep,emergency plumbing call-out
|
||||||
|
\f[R]
|
||||||
|
.fi
|
||||||
.SS \f[C]end\f[R]
|
.SS \f[C]end\f[R]
|
||||||
.PP
|
.PP
|
||||||
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
|
||||||
|
|||||||
@ -374,7 +374,8 @@ Blank lines and lines beginning with '#' or ';' are ignored.
|
|||||||
* fields::
|
* fields::
|
||||||
* field assignment::
|
* field assignment::
|
||||||
* separator::
|
* separator::
|
||||||
* if::
|
* if block::
|
||||||
|
* if table::
|
||||||
* end::
|
* end::
|
||||||
* date-format::
|
* date-format::
|
||||||
* newest-first::
|
* newest-first::
|
||||||
@ -567,7 +568,7 @@ becomes '1' when interpolated) (#1051). See TIPS below for more about
|
|||||||
referencing other fields.
|
referencing other fields.
|
||||||
|
|
||||||
|
|
||||||
File: hledger_csv.info, Node: separator, Next: if, Prev: field assignment, Up: CSV RULES
|
File: hledger_csv.info, Node: separator, Next: if block, Prev: field assignment, Up: CSV RULES
|
||||||
|
|
||||||
2.4 'separator'
|
2.4 'separator'
|
||||||
===============
|
===============
|
||||||
@ -587,10 +588,10 @@ separator TAB
|
|||||||
See also: File Extension.
|
See also: File Extension.
|
||||||
|
|
||||||
|
|
||||||
File: hledger_csv.info, Node: if, Next: end, Prev: separator, Up: CSV RULES
|
File: hledger_csv.info, Node: if block, Next: if table, Prev: separator, Up: CSV RULES
|
||||||
|
|
||||||
2.5 'if'
|
2.5 'if' block
|
||||||
========
|
==============
|
||||||
|
|
||||||
if MATCHER
|
if MATCHER
|
||||||
RULE
|
RULE
|
||||||
@ -659,9 +660,70 @@ banking thru software
|
|||||||
comment XXX deductible ? check it
|
comment XXX deductible ? check it
|
||||||
|
|
||||||
|
|
||||||
File: hledger_csv.info, Node: end, Next: date-format, Prev: if, Up: CSV RULES
|
File: hledger_csv.info, Node: if table, Next: end, Prev: if block, Up: CSV RULES
|
||||||
|
|
||||||
2.6 'end'
|
2.6 'if' table
|
||||||
|
==============
|
||||||
|
|
||||||
|
if,CSVFIELDNAME1,CSVFIELDNAME2,...,CSVFIELDNAMEn
|
||||||
|
MATCHER1,VALUE11,VALUE12,...,VALUE1n
|
||||||
|
MATCHER2,VALUE21,VALUE22,...,VALUE2n
|
||||||
|
MATCHER3,VALUE31,VALUE32,...,VALUE3n
|
||||||
|
<empty line>
|
||||||
|
|
||||||
|
Conditional tables ("if tables") are a different syntax to specify
|
||||||
|
field assignments that will be applied only to CSV records which match
|
||||||
|
certain patterns.
|
||||||
|
|
||||||
|
MATCHER could be either field or record matcher, as described above.
|
||||||
|
When MATCHER matches, values from that row would be assigned to the CSV
|
||||||
|
fields named on the 'if' line, in the same order.
|
||||||
|
|
||||||
|
Therefore 'if' table is exactly equivalent to a sequence of of 'if'
|
||||||
|
blocks:
|
||||||
|
|
||||||
|
if MATCHER1
|
||||||
|
CSVFIELDNAME1 VALUE11
|
||||||
|
CSVFIELDNAME2 VALUE12
|
||||||
|
...
|
||||||
|
CSVFIELDNAMEn VALUE1n
|
||||||
|
|
||||||
|
if MATCHER2
|
||||||
|
CSVFIELDNAME1 VALUE21
|
||||||
|
CSVFIELDNAME2 VALUE22
|
||||||
|
...
|
||||||
|
CSVFIELDNAMEn VALUE2n
|
||||||
|
|
||||||
|
if MATCHER3
|
||||||
|
CSVFIELDNAME1 VALUE31
|
||||||
|
CSVFIELDNAME2 VALUE32
|
||||||
|
...
|
||||||
|
CSVFIELDNAMEn VALUE3n
|
||||||
|
|
||||||
|
Each line starting with MATCHER should contain enough (possibly
|
||||||
|
empty) values for all the listed fields.
|
||||||
|
|
||||||
|
Rules would be checked and applied in the order they are listed in
|
||||||
|
the table and, like with 'if' blocks, later rules (in the same or
|
||||||
|
another table) or 'if' blocks could override the effect of any rule.
|
||||||
|
|
||||||
|
Instead of ',' you can use a variety of other non-alphanumeric
|
||||||
|
characters as a separator. First character after 'if' is taken to be
|
||||||
|
the separator for the rest of the table. It is the responsibility of
|
||||||
|
the user to ensure that separator does not occur inside MATCHERs and
|
||||||
|
values - there is no way to escape separator.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
if,account2,comment
|
||||||
|
atm transaction fee,expenses:business:banking,deductible? check it
|
||||||
|
%description groceries,expenses:groceries,
|
||||||
|
2020/01/12.*Plumbing LLC,expenses:house:upkeep,emergency plumbing call-out
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger_csv.info, Node: end, Next: date-format, Prev: if table, Up: CSV RULES
|
||||||
|
|
||||||
|
2.7 '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
|
||||||
@ -675,7 +737,7 @@ if ,,,,
|
|||||||
|
|
||||||
File: hledger_csv.info, Node: date-format, Next: newest-first, Prev: end, Up: CSV RULES
|
File: hledger_csv.info, Node: date-format, Next: newest-first, Prev: end, Up: CSV RULES
|
||||||
|
|
||||||
2.7 'date-format'
|
2.8 'date-format'
|
||||||
=================
|
=================
|
||||||
|
|
||||||
date-format DATEFMT
|
date-format DATEFMT
|
||||||
@ -706,7 +768,7 @@ https://hackage.haskell.org/package/time/docs/Data-Time-Format.html#v:formatTime
|
|||||||
|
|
||||||
File: hledger_csv.info, Node: newest-first, Next: include, Prev: date-format, Up: CSV RULES
|
File: hledger_csv.info, Node: newest-first, Next: include, Prev: date-format, Up: CSV RULES
|
||||||
|
|
||||||
2.8 'newest-first'
|
2.9 'newest-first'
|
||||||
==================
|
==================
|
||||||
|
|
||||||
hledger always sorts the generated transactions by date. Transactions
|
hledger always sorts the generated transactions by date. Transactions
|
||||||
@ -728,8 +790,8 @@ newest-first
|
|||||||
|
|
||||||
File: hledger_csv.info, Node: include, Next: balance-type, Prev: newest-first, Up: CSV RULES
|
File: hledger_csv.info, Node: include, Next: balance-type, Prev: newest-first, Up: CSV RULES
|
||||||
|
|
||||||
2.9 'include'
|
2.10 'include'
|
||||||
=============
|
==============
|
||||||
|
|
||||||
include RULESFILE
|
include RULESFILE
|
||||||
|
|
||||||
@ -751,7 +813,7 @@ include categorisation.rules
|
|||||||
|
|
||||||
File: hledger_csv.info, Node: balance-type, Prev: include, Up: CSV RULES
|
File: hledger_csv.info, Node: balance-type, Prev: include, Up: CSV RULES
|
||||||
|
|
||||||
2.10 'balance-type'
|
2.11 'balance-type'
|
||||||
===================
|
===================
|
||||||
|
|
||||||
Balance assertions generated by assigning to balanceN are of the simple
|
Balance assertions generated by assigning to balanceN are of the simple
|
||||||
@ -1048,62 +1110,64 @@ Node: Paypal6570
|
|||||||
Ref: #paypal6664
|
Ref: #paypal6664
|
||||||
Node: CSV RULES14308
|
Node: CSV RULES14308
|
||||||
Ref: #csv-rules14417
|
Ref: #csv-rules14417
|
||||||
Node: skip14693
|
Node: skip14712
|
||||||
Ref: #skip14786
|
Ref: #skip14805
|
||||||
Node: fields15161
|
Node: fields15180
|
||||||
Ref: #fields15283
|
Ref: #fields15302
|
||||||
Node: Transaction field names16448
|
Node: Transaction field names16467
|
||||||
Ref: #transaction-field-names16608
|
Ref: #transaction-field-names16627
|
||||||
Node: Posting field names16719
|
Node: Posting field names16738
|
||||||
Ref: #posting-field-names16871
|
Ref: #posting-field-names16890
|
||||||
Node: account16941
|
Node: account16960
|
||||||
Ref: #account17057
|
Ref: #account17076
|
||||||
Node: amount17594
|
Node: amount17613
|
||||||
Ref: #amount17725
|
Ref: #amount17744
|
||||||
Node: currency18832
|
Node: currency18851
|
||||||
Ref: #currency18967
|
Ref: #currency18986
|
||||||
Node: balance19173
|
Node: balance19192
|
||||||
Ref: #balance19307
|
Ref: #balance19326
|
||||||
Node: comment19624
|
Node: comment19643
|
||||||
Ref: #comment19741
|
Ref: #comment19760
|
||||||
Node: field assignment19904
|
Node: field assignment19923
|
||||||
Ref: #field-assignment20047
|
Ref: #field-assignment20066
|
||||||
Node: separator20865
|
Node: separator20884
|
||||||
Ref: #separator20994
|
Ref: #separator21019
|
||||||
Node: if21405
|
Node: if block21430
|
||||||
Ref: #if21507
|
Ref: #if-block21555
|
||||||
Node: end23663
|
Node: if table23711
|
||||||
Ref: #end23769
|
Ref: #if-table23830
|
||||||
Node: date-format23993
|
Node: end25568
|
||||||
Ref: #date-format24125
|
Ref: #end25680
|
||||||
Node: newest-first24874
|
Node: date-format25904
|
||||||
Ref: #newest-first25012
|
Ref: #date-format26036
|
||||||
Node: include25695
|
Node: newest-first26785
|
||||||
Ref: #include25824
|
Ref: #newest-first26923
|
||||||
Node: balance-type26268
|
Node: include27606
|
||||||
Ref: #balance-type26388
|
Ref: #include27737
|
||||||
Node: TIPS27088
|
Node: balance-type28181
|
||||||
Ref: #tips27170
|
Ref: #balance-type28301
|
||||||
Node: Rapid feedback27426
|
Node: TIPS29001
|
||||||
Ref: #rapid-feedback27543
|
Ref: #tips29083
|
||||||
Node: Valid CSV28003
|
Node: Rapid feedback29339
|
||||||
Ref: #valid-csv28133
|
Ref: #rapid-feedback29456
|
||||||
Node: File Extension28325
|
Node: Valid CSV29916
|
||||||
Ref: #file-extension28477
|
Ref: #valid-csv30046
|
||||||
Node: Reading multiple CSV files28887
|
Node: File Extension30238
|
||||||
Ref: #reading-multiple-csv-files29072
|
Ref: #file-extension30390
|
||||||
Node: Valid transactions29313
|
Node: Reading multiple CSV files30800
|
||||||
Ref: #valid-transactions29491
|
Ref: #reading-multiple-csv-files30985
|
||||||
Node: Deduplicating importing30119
|
Node: Valid transactions31226
|
||||||
Ref: #deduplicating-importing30298
|
Ref: #valid-transactions31404
|
||||||
Node: Setting amounts31331
|
Node: Deduplicating importing32032
|
||||||
Ref: #setting-amounts31500
|
Ref: #deduplicating-importing32211
|
||||||
Node: Setting currency/commodity32487
|
Node: Setting amounts33244
|
||||||
Ref: #setting-currencycommodity32679
|
Ref: #setting-amounts33413
|
||||||
Node: Referencing other fields33482
|
Node: Setting currency/commodity34400
|
||||||
Ref: #referencing-other-fields33682
|
Ref: #setting-currencycommodity34592
|
||||||
Node: How CSV rules are evaluated34579
|
Node: Referencing other fields35395
|
||||||
Ref: #how-csv-rules-are-evaluated34752
|
Ref: #referencing-other-fields35595
|
||||||
|
Node: How CSV rules are evaluated36492
|
||||||
|
Ref: #how-csv-rules-are-evaluated36665
|
||||||
|
|
||||||
End Tag Table
|
End Tag Table
|
||||||
|
|
||||||
|
|||||||
@ -467,7 +467,7 @@ CSV RULES
|
|||||||
|
|
||||||
See also: File Extension.
|
See also: File Extension.
|
||||||
|
|
||||||
if
|
if block
|
||||||
if MATCHER
|
if MATCHER
|
||||||
RULE
|
RULE
|
||||||
|
|
||||||
@ -535,8 +535,63 @@ CSV RULES
|
|||||||
account2 expenses:business:banking
|
account2 expenses:business:banking
|
||||||
comment XXX deductible ? check it
|
comment XXX deductible ? check it
|
||||||
|
|
||||||
|
if table
|
||||||
|
if,CSVFIELDNAME1,CSVFIELDNAME2,...,CSVFIELDNAMEn
|
||||||
|
MATCHER1,VALUE11,VALUE12,...,VALUE1n
|
||||||
|
MATCHER2,VALUE21,VALUE22,...,VALUE2n
|
||||||
|
MATCHER3,VALUE31,VALUE32,...,VALUE3n
|
||||||
|
<empty line>
|
||||||
|
|
||||||
|
Conditional tables ("if tables") are a different syntax to specify
|
||||||
|
field assignments that will be applied only to CSV records which match
|
||||||
|
certain patterns.
|
||||||
|
|
||||||
|
MATCHER could be either field or record matcher, as described above.
|
||||||
|
When MATCHER matches, values from that row would be assigned to the CSV
|
||||||
|
fields named on the if line, in the same order.
|
||||||
|
|
||||||
|
Therefore if table is exactly equivalent to a sequence of of if blocks:
|
||||||
|
|
||||||
|
if MATCHER1
|
||||||
|
CSVFIELDNAME1 VALUE11
|
||||||
|
CSVFIELDNAME2 VALUE12
|
||||||
|
...
|
||||||
|
CSVFIELDNAMEn VALUE1n
|
||||||
|
|
||||||
|
if MATCHER2
|
||||||
|
CSVFIELDNAME1 VALUE21
|
||||||
|
CSVFIELDNAME2 VALUE22
|
||||||
|
...
|
||||||
|
CSVFIELDNAMEn VALUE2n
|
||||||
|
|
||||||
|
if MATCHER3
|
||||||
|
CSVFIELDNAME1 VALUE31
|
||||||
|
CSVFIELDNAME2 VALUE32
|
||||||
|
...
|
||||||
|
CSVFIELDNAMEn VALUE3n
|
||||||
|
|
||||||
|
Each line starting with MATCHER should contain enough (possibly empty)
|
||||||
|
values for all the listed fields.
|
||||||
|
|
||||||
|
Rules would be checked and applied in the order they are listed in the
|
||||||
|
table and, like with if blocks, later rules (in the same or another ta-
|
||||||
|
ble) or if blocks could override the effect of any rule.
|
||||||
|
|
||||||
|
Instead of ',' you can use a variety of other non-alphanumeric charac-
|
||||||
|
ters as a separator. First character after if is taken to be the sepa-
|
||||||
|
rator for the rest of the table. It is the responsibility of the user
|
||||||
|
to ensure that separator does not occur inside MATCHERs and values -
|
||||||
|
there is no way to escape separator.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
if,account2,comment
|
||||||
|
atm transaction fee,expenses:business:banking,deductible? check it
|
||||||
|
%description groceries,expenses:groceries,
|
||||||
|
2020/01/12.*Plumbing LLC,expenses:house:upkeep,emergency plumbing call-out
|
||||||
|
|
||||||
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:
|
||||||
|
|
||||||
@ -547,10 +602,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
|
||||||
@ -572,15 +627,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
|
||||||
@ -593,9 +648,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
|
||||||
@ -610,10 +665,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
|
||||||
@ -628,19 +683,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)
|
||||||
@ -648,9 +703,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
|
||||||
@ -662,44 +717,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:
|
||||||
|
|
||||||
@ -710,43 +765,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 assignment) to amountN
|
o by assigning (with a fields list or field assignment) 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
|
||||||
@ -754,9 +809,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"
|
||||||
@ -768,7 +823,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
|
||||||
@ -776,7 +831,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:
|
||||||
|
|
||||||
@ -786,14 +841,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)
|
||||||
@ -807,30 +862,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)
|
||||||
|
|
||||||
|
|
||||||
@ -844,7 +899,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)
|
||||||
|
|
||||||
|
|||||||
@ -72,7 +72,7 @@ reordered. See also the import command.
|
|||||||
|
|
||||||
This command also supports the output destination and output format
|
This command also supports the output destination and output format
|
||||||
options The output formats supported are txt, csv, and (experimental)
|
options The output formats supported are txt, csv, and (experimental)
|
||||||
json.
|
json and sql.
|
||||||
|
|
||||||
Here's an example of print's CSV output:
|
Here's an example of print's CSV output:
|
||||||
|
|
||||||
|
|||||||
@ -1070,7 +1070,8 @@ $ hledger print -o - # write to stdout (the default)
|
|||||||
Some commands (print, register, the balance commands) offer a choice of
|
Some commands (print, register, the balance commands) offer a choice of
|
||||||
output format.
|
output format.
|
||||||
In addition to the usual plain text format (\f[C]txt\f[R]), there are
|
In addition to the usual plain text format (\f[C]txt\f[R]), there are
|
||||||
CSV (\f[C]csv\f[R]), HTML (\f[C]html\f[R]) and JSON (\f[C]json\f[R]).
|
CSV (\f[C]csv\f[R]), HTML (\f[C]html\f[R]), JSON (\f[C]json\f[R]) and
|
||||||
|
SQL (\f[C]sql\f[R]).
|
||||||
This is controlled by the \f[C]-O/--output-format\f[R] option:
|
This is controlled by the \f[C]-O/--output-format\f[R] option:
|
||||||
.IP
|
.IP
|
||||||
.nf
|
.nf
|
||||||
@ -1119,6 +1120,20 @@ your control.
|
|||||||
We hope this approach will not cause problems in practice; if you find
|
We hope this approach will not cause problems in practice; if you find
|
||||||
otherwise, please let us know.
|
otherwise, please let us know.
|
||||||
(Cf #1195)
|
(Cf #1195)
|
||||||
|
.PP
|
||||||
|
Notes about SQL output:
|
||||||
|
.IP \[bu] 2
|
||||||
|
SQL output is also marked experimental, and much like JSON could use
|
||||||
|
real-world feedback.
|
||||||
|
.IP \[bu] 2
|
||||||
|
SQL output is expected to work with sqlite, MySQL and PostgreSQL
|
||||||
|
.IP \[bu] 2
|
||||||
|
SQL output is structured with the expectations that statements will be
|
||||||
|
executed in the empty database.
|
||||||
|
If you already have tables created via SQL output of hledger, you would
|
||||||
|
probably want to either clear tables of existing data (via
|
||||||
|
\f[C]delete\f[R] or \f[C]truncate\f[R] SQL statements) or drop tables
|
||||||
|
completely as otherwise your postings will be duped.
|
||||||
.SS Regular expressions
|
.SS Regular expressions
|
||||||
.PP
|
.PP
|
||||||
hledger uses regular expressions in a number of places:
|
hledger uses regular expressions in a number of places:
|
||||||
@ -3763,7 +3778,7 @@ See also the import command.
|
|||||||
.PP
|
.PP
|
||||||
This command also supports the output destination and output format
|
This command also supports the output destination and output format
|
||||||
options The output formats supported are \f[C]txt\f[R], \f[C]csv\f[R],
|
options The output formats supported are \f[C]txt\f[R], \f[C]csv\f[R],
|
||||||
and (experimental) \f[C]json\f[R].
|
and (experimental) \f[C]json\f[R] and \f[C]sql\f[R].
|
||||||
.PP
|
.PP
|
||||||
Here\[aq]s an example of print\[aq]s CSV output:
|
Here\[aq]s an example of print\[aq]s CSV output:
|
||||||
.IP
|
.IP
|
||||||
|
|||||||
@ -1007,8 +1007,8 @@ File: hledger.info, Node: Output format, Next: Regular expressions, Prev: Out
|
|||||||
|
|
||||||
Some commands (print, register, the balance commands) offer a choice of
|
Some commands (print, register, the balance commands) offer a choice of
|
||||||
output format. In addition to the usual plain text format ('txt'),
|
output format. In addition to the usual plain text format ('txt'),
|
||||||
there are CSV ('csv'), HTML ('html') and JSON ('json'). This is
|
there are CSV ('csv'), HTML ('html'), JSON ('json') and SQL ('sql').
|
||||||
controlled by the '-O/--output-format' option:
|
This is controlled by the '-O/--output-format' option:
|
||||||
|
|
||||||
$ hledger print -O csv
|
$ hledger print -O csv
|
||||||
|
|
||||||
@ -1039,6 +1039,20 @@ $ hledger balancesheet -o foo.txt -O html # write HTML to foo.txt
|
|||||||
your control. We hope this approach will not cause problems in
|
your control. We hope this approach will not cause problems in
|
||||||
practice; if you find otherwise, please let us know. (Cf #1195)
|
practice; if you find otherwise, please let us know. (Cf #1195)
|
||||||
|
|
||||||
|
Notes about SQL output:
|
||||||
|
|
||||||
|
* SQL output is also marked experimental, and much like JSON could
|
||||||
|
use real-world feedback.
|
||||||
|
|
||||||
|
* SQL output is expected to work with sqlite, MySQL and PostgreSQL
|
||||||
|
|
||||||
|
* SQL output is structured with the expectations that statements will
|
||||||
|
be executed in the empty database. If you already have tables
|
||||||
|
created via SQL output of hledger, you would probably want to
|
||||||
|
either clear tables of existing data (via 'delete' or 'truncate'
|
||||||
|
SQL statements) or drop tables completely as otherwise your
|
||||||
|
postings will be duped.
|
||||||
|
|
||||||
|
|
||||||
File: hledger.info, Node: Regular expressions, Next: Smart dates, Prev: Output format, Up: OPTIONS
|
File: hledger.info, Node: Regular expressions, Next: Smart dates, Prev: Output format, Up: OPTIONS
|
||||||
|
|
||||||
@ -3192,7 +3206,7 @@ reordered. See also the import command.
|
|||||||
|
|
||||||
This command also supports the output destination and output format
|
This command also supports the output destination and output format
|
||||||
options The output formats supported are 'txt', 'csv', and
|
options The output formats supported are 'txt', 'csv', and
|
||||||
(experimental) 'json'.
|
(experimental) 'json' and 'sql'.
|
||||||
|
|
||||||
Here's an example of print's CSV output:
|
Here's an example of print's CSV output:
|
||||||
|
|
||||||
@ -3902,153 +3916,153 @@ Node: Output destination32183
|
|||||||
Ref: #output-destination32335
|
Ref: #output-destination32335
|
||||||
Node: Output format32760
|
Node: Output format32760
|
||||||
Ref: #output-format32910
|
Ref: #output-format32910
|
||||||
Node: Regular expressions34492
|
Node: Regular expressions35077
|
||||||
Ref: #regular-expressions34649
|
Ref: #regular-expressions35234
|
||||||
Node: Smart dates36385
|
Node: Smart dates36970
|
||||||
Ref: #smart-dates36536
|
Ref: #smart-dates37121
|
||||||
Node: Report start & end date37897
|
Node: Report start & end date38482
|
||||||
Ref: #report-start-end-date38069
|
Ref: #report-start-end-date38654
|
||||||
Node: Report intervals39566
|
Node: Report intervals40151
|
||||||
Ref: #report-intervals39731
|
Ref: #report-intervals40316
|
||||||
Node: Period expressions40121
|
Node: Period expressions40706
|
||||||
Ref: #period-expressions40281
|
Ref: #period-expressions40866
|
||||||
Node: Depth limiting44417
|
Node: Depth limiting45002
|
||||||
Ref: #depth-limiting44561
|
Ref: #depth-limiting45146
|
||||||
Node: Pivoting44893
|
Node: Pivoting45478
|
||||||
Ref: #pivoting45016
|
Ref: #pivoting45601
|
||||||
Node: Valuation46692
|
Node: Valuation47277
|
||||||
Ref: #valuation46794
|
Ref: #valuation47379
|
||||||
Node: -B Cost47483
|
Node: -B Cost48068
|
||||||
Ref: #b-cost47587
|
Ref: #b-cost48172
|
||||||
Node: -V Value47720
|
Node: -V Value48305
|
||||||
Ref: #v-value47866
|
Ref: #v-value48451
|
||||||
Node: -X Value in specified commodity48061
|
Node: -X Value in specified commodity48646
|
||||||
Ref: #x-value-in-specified-commodity48260
|
Ref: #x-value-in-specified-commodity48845
|
||||||
Node: Valuation date48409
|
Node: Valuation date48994
|
||||||
Ref: #valuation-date48577
|
Ref: #valuation-date49162
|
||||||
Node: Market prices48987
|
Node: Market prices49572
|
||||||
Ref: #market-prices49167
|
Ref: #market-prices49752
|
||||||
Node: --infer-value market prices from transactions49944
|
Node: --infer-value market prices from transactions50529
|
||||||
Ref: #infer-value-market-prices-from-transactions50193
|
Ref: #infer-value-market-prices-from-transactions50778
|
||||||
Node: Valuation commodity51475
|
Node: Valuation commodity52060
|
||||||
Ref: #valuation-commodity51684
|
Ref: #valuation-commodity52269
|
||||||
Node: Simple valuation examples52910
|
Node: Simple valuation examples53495
|
||||||
Ref: #simple-valuation-examples53112
|
Ref: #simple-valuation-examples53697
|
||||||
Node: --value Flexible valuation53771
|
Node: --value Flexible valuation54356
|
||||||
Ref: #value-flexible-valuation53979
|
Ref: #value-flexible-valuation54564
|
||||||
Node: More valuation examples55926
|
Node: More valuation examples56511
|
||||||
Ref: #more-valuation-examples56135
|
Ref: #more-valuation-examples56720
|
||||||
Node: Effect of valuation on reports58140
|
Node: Effect of valuation on reports58725
|
||||||
Ref: #effect-of-valuation-on-reports58328
|
Ref: #effect-of-valuation-on-reports58913
|
||||||
Node: COMMANDS63849
|
Node: COMMANDS64434
|
||||||
Ref: #commands63957
|
Ref: #commands64542
|
||||||
Node: accounts65041
|
Node: accounts65626
|
||||||
Ref: #accounts65139
|
Ref: #accounts65724
|
||||||
Node: activity65838
|
Node: activity66423
|
||||||
Ref: #activity65948
|
Ref: #activity66533
|
||||||
Node: add66331
|
Node: add66916
|
||||||
Ref: #add66430
|
Ref: #add67015
|
||||||
Node: balance69169
|
Node: balance69754
|
||||||
Ref: #balance69280
|
Ref: #balance69865
|
||||||
Node: Classic balance report70738
|
Node: Classic balance report71323
|
||||||
Ref: #classic-balance-report70911
|
Ref: #classic-balance-report71496
|
||||||
Node: Customising the classic balance report72280
|
Node: Customising the classic balance report72865
|
||||||
Ref: #customising-the-classic-balance-report72508
|
Ref: #customising-the-classic-balance-report73093
|
||||||
Node: Colour support74584
|
Node: Colour support75169
|
||||||
Ref: #colour-support74751
|
Ref: #colour-support75336
|
||||||
Node: Flat mode74924
|
Node: Flat mode75509
|
||||||
Ref: #flat-mode75072
|
Ref: #flat-mode75657
|
||||||
Node: Depth limited balance reports75485
|
Node: Depth limited balance reports76070
|
||||||
Ref: #depth-limited-balance-reports75670
|
Ref: #depth-limited-balance-reports76255
|
||||||
Node: Percentages76126
|
Node: Percentages76711
|
||||||
Ref: #percentages76292
|
Ref: #percentages76877
|
||||||
Node: Multicolumn balance report77429
|
Node: Multicolumn balance report78014
|
||||||
Ref: #multicolumn-balance-report77609
|
Ref: #multicolumn-balance-report78194
|
||||||
Node: Budget report82871
|
Node: Budget report83456
|
||||||
Ref: #budget-report83014
|
Ref: #budget-report83599
|
||||||
Node: Nested budgets88280
|
Node: Nested budgets88865
|
||||||
Ref: #nested-budgets88392
|
Ref: #nested-budgets88977
|
||||||
Ref: #output-format-191873
|
Ref: #output-format-192458
|
||||||
Node: balancesheet92070
|
Node: balancesheet92655
|
||||||
Ref: #balancesheet92206
|
Ref: #balancesheet92791
|
||||||
Node: balancesheetequity93672
|
Node: balancesheetequity94257
|
||||||
Ref: #balancesheetequity93821
|
Ref: #balancesheetequity94406
|
||||||
Node: cashflow94544
|
Node: cashflow95129
|
||||||
Ref: #cashflow94672
|
Ref: #cashflow95257
|
||||||
Node: check-dates95851
|
Node: check-dates96436
|
||||||
Ref: #check-dates95978
|
Ref: #check-dates96563
|
||||||
Node: check-dupes96257
|
Node: check-dupes96842
|
||||||
Ref: #check-dupes96381
|
Ref: #check-dupes96966
|
||||||
Node: close96674
|
Node: close97259
|
||||||
Ref: #close96788
|
Ref: #close97373
|
||||||
Node: close usage98310
|
Node: close usage98895
|
||||||
Ref: #close-usage98403
|
Ref: #close-usage98988
|
||||||
Node: commodities101216
|
Node: commodities101801
|
||||||
Ref: #commodities101343
|
Ref: #commodities101928
|
||||||
Node: descriptions101425
|
Node: descriptions102010
|
||||||
Ref: #descriptions101553
|
Ref: #descriptions102138
|
||||||
Node: diff101734
|
Node: diff102319
|
||||||
Ref: #diff101840
|
Ref: #diff102425
|
||||||
Node: files102887
|
Node: files103472
|
||||||
Ref: #files102987
|
Ref: #files103572
|
||||||
Node: help103134
|
Node: help103719
|
||||||
Ref: #help103234
|
Ref: #help103819
|
||||||
Node: import104315
|
Node: import104900
|
||||||
Ref: #import104429
|
Ref: #import105014
|
||||||
Node: Importing balance assignments105322
|
Node: Importing balance assignments105907
|
||||||
Ref: #importing-balance-assignments105470
|
Ref: #importing-balance-assignments106055
|
||||||
Node: incomestatement106119
|
Node: incomestatement106704
|
||||||
Ref: #incomestatement106252
|
Ref: #incomestatement106837
|
||||||
Node: notes107739
|
Node: notes108324
|
||||||
Ref: #notes107852
|
Ref: #notes108437
|
||||||
Node: payees107978
|
Node: payees108563
|
||||||
Ref: #payees108084
|
Ref: #payees108669
|
||||||
Node: prices108242
|
Node: prices108827
|
||||||
Ref: #prices108348
|
Ref: #prices108933
|
||||||
Node: print108689
|
Node: print109274
|
||||||
Ref: #print108799
|
Ref: #print109384
|
||||||
Node: print-unique113585
|
Node: print-unique114180
|
||||||
Ref: #print-unique113711
|
Ref: #print-unique114306
|
||||||
Node: register113996
|
Node: register114591
|
||||||
Ref: #register114123
|
Ref: #register114718
|
||||||
Node: Custom register output118295
|
Node: Custom register output118890
|
||||||
Ref: #custom-register-output118424
|
Ref: #custom-register-output119019
|
||||||
Node: register-match119761
|
Node: register-match120356
|
||||||
Ref: #register-match119895
|
Ref: #register-match120490
|
||||||
Node: rewrite120246
|
Node: rewrite120841
|
||||||
Ref: #rewrite120361
|
Ref: #rewrite120956
|
||||||
Node: Re-write rules in a file122216
|
Node: Re-write rules in a file122811
|
||||||
Ref: #re-write-rules-in-a-file122350
|
Ref: #re-write-rules-in-a-file122945
|
||||||
Node: Diff output format123560
|
Node: Diff output format124155
|
||||||
Ref: #diff-output-format123729
|
Ref: #diff-output-format124324
|
||||||
Node: rewrite vs print --auto124821
|
Node: rewrite vs print --auto125416
|
||||||
Ref: #rewrite-vs.-print---auto125000
|
Ref: #rewrite-vs.-print---auto125595
|
||||||
Node: roi125556
|
Node: roi126151
|
||||||
Ref: #roi125654
|
Ref: #roi126249
|
||||||
Node: stats126666
|
Node: stats127261
|
||||||
Ref: #stats126765
|
Ref: #stats127360
|
||||||
Node: tags127553
|
Node: tags128148
|
||||||
Ref: #tags127651
|
Ref: #tags128246
|
||||||
Node: test127945
|
Node: test128540
|
||||||
Ref: #test128053
|
Ref: #test128648
|
||||||
Node: Add-on commands128800
|
Node: Add-on commands129395
|
||||||
Ref: #add-on-commands128917
|
Ref: #add-on-commands129512
|
||||||
Node: ui130260
|
Node: ui130855
|
||||||
Ref: #ui130348
|
Ref: #ui130943
|
||||||
Node: web130402
|
Node: web130997
|
||||||
Ref: #web130505
|
Ref: #web131100
|
||||||
Node: iadd130621
|
Node: iadd131216
|
||||||
Ref: #iadd130732
|
Ref: #iadd131327
|
||||||
Node: interest130814
|
Node: interest131409
|
||||||
Ref: #interest130921
|
Ref: #interest131516
|
||||||
Node: ENVIRONMENT131161
|
Node: ENVIRONMENT131756
|
||||||
Ref: #environment131273
|
Ref: #environment131868
|
||||||
Node: FILES132102
|
Node: FILES132697
|
||||||
Ref: #files-1132205
|
Ref: #files-1132800
|
||||||
Node: LIMITATIONS132418
|
Node: LIMITATIONS133013
|
||||||
Ref: #limitations132537
|
Ref: #limitations133132
|
||||||
Node: TROUBLESHOOTING133279
|
Node: TROUBLESHOOTING133874
|
||||||
Ref: #troubleshooting133392
|
Ref: #troubleshooting133987
|
||||||
|
|
||||||
End Tag Table
|
End Tag Table
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user