;regen embedded manuals
This commit is contained in:
parent
7ef3ddd1e6
commit
5e54920160
@ -1,46 +1,46 @@
|
||||
|
||||
.TH "hledger\-api" "1" "March 2019" "hledger\-api 1.14" "hledger User Manuals"
|
||||
.TH "hledger-api" "1" "March 2019" "hledger-api 1.14.99" "hledger User Manuals"
|
||||
|
||||
|
||||
|
||||
.SH NAME
|
||||
.PP
|
||||
hledger\-api \- web API server for the hledger accounting tool
|
||||
hledger-api - web API server for the hledger accounting tool
|
||||
.SH SYNOPSIS
|
||||
.PP
|
||||
\f[C]hledger\-api\ [OPTIONS]\f[]
|
||||
\f[C]hledger-api [OPTIONS]\f[R]
|
||||
.PD 0
|
||||
.P
|
||||
.PD
|
||||
\f[C]hledger\ api\ \-\-\ [OPTIONS]\f[]
|
||||
\f[C]hledger api -- [OPTIONS]\f[R]
|
||||
.SH DESCRIPTION
|
||||
.PP
|
||||
hledger is a cross\-platform program for tracking money, time, or any
|
||||
other commodity, using double\-entry accounting and a simple, editable
|
||||
hledger is a cross-platform program for tracking money, time, or any
|
||||
other commodity, using double-entry accounting and a simple, editable
|
||||
file format.
|
||||
hledger is inspired by and largely compatible with ledger(1).
|
||||
.PP
|
||||
hledger\-api is a simple web API server, intended to support
|
||||
client\-side web apps operating on hledger data.
|
||||
It comes with a series of simple client\-side app examples, which drive
|
||||
hledger-api is a simple web API server, intended to support client-side
|
||||
web apps operating on hledger data.
|
||||
It comes with a series of simple client-side app examples, which drive
|
||||
its evolution.
|
||||
.PP
|
||||
Like hledger, it reads data from one or more files in hledger journal,
|
||||
timeclock, timedot, or CSV format specified with \f[C]\-f\f[], or
|
||||
\f[C]$LEDGER_FILE\f[], or \f[C]$HOME/.hledger.journal\f[] (on windows,
|
||||
perhaps \f[C]C:/Users/USER/.hledger.journal\f[]).
|
||||
timeclock, timedot, or CSV format specified with \f[C]-f\f[R], or
|
||||
\f[C]$LEDGER_FILE\f[R], or \f[C]$HOME/.hledger.journal\f[R] (on windows,
|
||||
perhaps \f[C]C:/Users/USER/.hledger.journal\f[R]).
|
||||
For more about this see hledger(1), hledger_journal(5) etc.
|
||||
.PP
|
||||
The server listens on IP address 127.0.0.1, accessible only to local
|
||||
requests, by default.
|
||||
You can change this with \f[C]\-\-host\f[], eg
|
||||
\f[C]\-\-host\ 0.0.0.0\f[] to listen on all addresses.
|
||||
Note there is no other access control, and hledger\-api allows file
|
||||
You can change this with \f[C]--host\f[R], eg \f[C]--host 0.0.0.0\f[R]
|
||||
to listen on all addresses.
|
||||
Note there is no other access control, and hledger-api allows file
|
||||
browsing, so on shared machines you will certainly need to put it behind
|
||||
an authenticating proxy to restrict access.
|
||||
.PP
|
||||
You can change the TCP port it listens on (default: 8001) with
|
||||
\f[C]\-p\ PORT\f[].
|
||||
\f[C]-p PORT\f[R].
|
||||
.PP
|
||||
API methods look like:
|
||||
.IP
|
||||
@ -52,73 +52,59 @@ API methods look like:
|
||||
/api/v1/commodities
|
||||
/api/v1/accounts
|
||||
/api/v1/accounts/ACCTNAME
|
||||
\f[]
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
See \f[C]/api/swagger.json\f[] for a full list in Swagger 2.0 format.
|
||||
(Or you can run \f[C]hledger\-api\ \-\-swagger\f[] to print this in the
|
||||
See \f[C]/api/swagger.json\f[R] for a full list in Swagger 2.0 format.
|
||||
(Or you can run \f[C]hledger-api --swagger\f[R] to print this in the
|
||||
console.)
|
||||
.PP
|
||||
hledger\-api also serves files, from the current directory by default,
|
||||
and the \f[C]/\f[] path will also show a directory listing.
|
||||
This is convenient for serving client\-side web code, in addition to the
|
||||
server\-side api.
|
||||
hledger-api also serves files, from the current directory by default,
|
||||
and the \f[C]/\f[R] path will also show a directory listing.
|
||||
This is convenient for serving client-side web code, in addition to the
|
||||
server-side api.
|
||||
.SH OPTIONS
|
||||
.PP
|
||||
Note: if invoking hledger\-api as a hledger subcommand, write
|
||||
\f[C]\-\-\f[] before options as shown above.
|
||||
Note: if invoking hledger-api as a hledger subcommand, write
|
||||
\f[C]--\f[R] before options as shown above.
|
||||
.TP
|
||||
.B \f[C]\-f\ \-\-file=FILE\f[]
|
||||
.B \f[C]-f --file=FILE\f[R]
|
||||
use a different input file.
|
||||
For stdin, use \- (default: \f[C]$LEDGER_FILE\f[] or
|
||||
\f[C]$HOME/.hledger.journal\f[])
|
||||
.RS
|
||||
.RE
|
||||
For stdin, use - (default: \f[C]$LEDGER_FILE\f[R] or
|
||||
\f[C]$HOME/.hledger.journal\f[R])
|
||||
.TP
|
||||
.B \f[C]\-d\ \-\-static\-dir=DIR\f[]
|
||||
serve files from a different directory (default: \f[C]\&.\f[])
|
||||
.RS
|
||||
.RE
|
||||
.B \f[C]-d --static-dir=DIR\f[R]
|
||||
serve files from a different directory (default: \f[C].\f[R])
|
||||
.TP
|
||||
.B \f[C]\-\-host=IPADDR\f[]
|
||||
.B \f[C]--host=IPADDR\f[R]
|
||||
listen on this IP address (default: 127.0.0.1)
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[C]\-p\ \-\-port=PORT\f[]
|
||||
.B \f[C]-p --port=PORT\f[R]
|
||||
listen on this TCP port (default: 8001)
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[C]\-\-swagger\f[]
|
||||
.B \f[C]--swagger\f[R]
|
||||
print API docs in Swagger 2.0 format, and exit
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[C]\-\-version\f[]
|
||||
.B \f[C]--version\f[R]
|
||||
show version
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[C]\-h\ \-\-help\f[]
|
||||
.B \f[C]-h --help\f[R]
|
||||
show usage
|
||||
.RS
|
||||
.RE
|
||||
.SH ENVIRONMENT
|
||||
.PP
|
||||
\f[B]LEDGER_FILE\f[] The journal file path when not specified with
|
||||
\f[C]\-f\f[].
|
||||
Default: \f[C]~/.hledger.journal\f[] (on windows, perhaps
|
||||
\f[C]C:/Users/USER/.hledger.journal\f[]).
|
||||
\f[B]LEDGER_FILE\f[R] The journal file path when not specified with
|
||||
\f[C]-f\f[R].
|
||||
Default: \f[C]\[ti]/.hledger.journal\f[R] (on windows, perhaps
|
||||
\f[C]C:/Users/USER/.hledger.journal\f[R]).
|
||||
.SH FILES
|
||||
.PP
|
||||
Reads data from one or more files in hledger journal, timeclock,
|
||||
timedot, or CSV format specified with \f[C]\-f\f[], or
|
||||
\f[C]$LEDGER_FILE\f[], or \f[C]$HOME/.hledger.journal\f[] (on windows,
|
||||
perhaps \f[C]C:/Users/USER/.hledger.journal\f[]).
|
||||
timedot, or CSV format specified with \f[C]-f\f[R], or
|
||||
\f[C]$LEDGER_FILE\f[R], or \f[C]$HOME/.hledger.journal\f[R] (on windows,
|
||||
perhaps \f[C]C:/Users/USER/.hledger.journal\f[R]).
|
||||
.SH BUGS
|
||||
.PP
|
||||
The need to precede options with \f[C]\-\-\f[] when invoked from hledger
|
||||
The need to precede options with \f[C]--\f[R] when invoked from hledger
|
||||
is awkward.
|
||||
|
||||
|
||||
|
||||
@ -3,8 +3,8 @@ This is hledger-api.info, produced by makeinfo version 6.5 from stdin.
|
||||
|
||||
File: hledger-api.info, Node: Top, Next: OPTIONS, Up: (dir)
|
||||
|
||||
hledger-api(1) hledger-api 1.14
|
||||
*******************************
|
||||
hledger-api(1) hledger-api 1.14.99
|
||||
**********************************
|
||||
|
||||
hledger-api is a simple web API server, intended to support client-side
|
||||
web apps operating on hledger data. It comes with a series of simple
|
||||
@ -41,6 +41,7 @@ you can run 'hledger-api --swagger' to print this in the console.)
|
||||
hledger-api also serves files, from the current directory by default,
|
||||
and the '/' path will also show a directory listing. This is convenient
|
||||
for serving client-side web code, in addition to the server-side api.
|
||||
|
||||
* Menu:
|
||||
|
||||
* OPTIONS::
|
||||
@ -80,7 +81,7 @@ options as shown above.
|
||||
|
||||
Tag Table:
|
||||
Node: Top72
|
||||
Node: OPTIONS1660
|
||||
Ref: #options1745
|
||||
Node: OPTIONS1667
|
||||
Ref: #options1752
|
||||
|
||||
End Tag Table
|
||||
|
||||
@ -27,11 +27,11 @@ DESCRIPTION
|
||||
hledger_journal(5) etc.
|
||||
|
||||
The server listens on IP address 127.0.0.1, accessible only to local
|
||||
requests, by default. You can change this with --host, eg
|
||||
--host 0.0.0.0 to listen on all addresses. Note there is no other
|
||||
access control, and hledger-api allows file browsing, so on shared
|
||||
machines you will certainly need to put it behind an authenticating
|
||||
proxy to restrict access.
|
||||
requests, by default. You can change this with --host, eg --host
|
||||
0.0.0.0 to listen on all addresses. Note there is no other access con-
|
||||
trol, and hledger-api allows file browsing, so on shared machines you
|
||||
will certainly need to put it behind an authenticating proxy to
|
||||
restrict access.
|
||||
|
||||
You can change the TCP port it listens on (default: 8001) with -p PORT.
|
||||
|
||||
@ -117,4 +117,4 @@ SEE ALSO
|
||||
|
||||
|
||||
|
||||
hledger-api 1.14 March 2019 hledger-api(1)
|
||||
hledger-api 1.14.99 March 2019 hledger-api(1)
|
||||
|
||||
@ -1,17 +1,17 @@
|
||||
|
||||
.TH "hledger_csv" "5" "March 2019" "hledger 1.14" "hledger User Manuals"
|
||||
.TH "hledger_csv" "5" "March 2019" "hledger 1.14.99" "hledger User Manuals"
|
||||
|
||||
|
||||
|
||||
.SH NAME
|
||||
.PP
|
||||
CSV \- how hledger reads CSV data, and the CSV rules file format
|
||||
CSV - how hledger reads CSV data, and the CSV rules file format
|
||||
.SH DESCRIPTION
|
||||
.PP
|
||||
hledger can read CSV (comma\-separated value) files as if they were
|
||||
hledger can read CSV (comma-separated value) files as if they were
|
||||
journal files, automatically converting each CSV record into a
|
||||
transaction.
|
||||
(To learn about \f[I]writing\f[] CSV, see CSV output.)
|
||||
(To learn about \f[I]writing\f[R] CSV, see CSV output.)
|
||||
.PP
|
||||
Converting CSV to transactions requires some special conversion rules.
|
||||
These do several things:
|
||||
@ -24,58 +24,57 @@ templating language
|
||||
they can add refinements based on patterns in the CSV data, eg
|
||||
categorizing transactions with more detailed account names.
|
||||
.PP
|
||||
When reading a CSV file named \f[C]FILE.csv\f[], hledger looks for a
|
||||
conversion rules file named \f[C]FILE.csv.rules\f[] in the same
|
||||
When reading a CSV file named \f[C]FILE.csv\f[R], hledger looks for a
|
||||
conversion rules file named \f[C]FILE.csv.rules\f[R] in the same
|
||||
directory.
|
||||
You can override this with the \f[C]\-\-rules\-file\f[] option.
|
||||
If the rules file does not exist, hledger will auto\-create one with
|
||||
some example rules, which you\[aq]ll need to adjust.
|
||||
You can override this with the \f[C]--rules-file\f[R] option.
|
||||
If the rules file does not exist, hledger will auto-create one with some
|
||||
example rules, which you\[aq]ll need to adjust.
|
||||
.PP
|
||||
At minimum, the rules file must identify the \f[C]date\f[] and
|
||||
\f[C]amount\f[] fields.
|
||||
It may also be necessary to specify the date format, and the number of
|
||||
header lines to skip.
|
||||
At minimum, the rules file must identify the date and amount fields.
|
||||
It\[aq]s often necessary to specify the date format, and the number of
|
||||
header lines to skip, also.
|
||||
Eg:
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
fields\ date,\ _,\ _,\ amount
|
||||
date\-format\ \ %d/%m/%Y
|
||||
skip\ 1
|
||||
\f[]
|
||||
fields date, _, _, amount
|
||||
date-format %d/%m/%Y
|
||||
skip 1
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
A more complete example:
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
#\ hledger\ CSV\ rules\ for\ amazon.com\ order\ history
|
||||
# hledger CSV rules for amazon.com order history
|
||||
|
||||
#\ sample:
|
||||
#\ "Date","Type","To/From","Name","Status","Amount","Fees","Transaction\ ID"
|
||||
#\ "Jul\ 29,\ 2012","Payment","To","Adapteva,\ Inc.","Completed","$25.00","$0.00","17LA58JSK6PRD4HDGLNJQPI1PB9N8DKPVHL"
|
||||
# sample:
|
||||
# \[dq]Date\[dq],\[dq]Type\[dq],\[dq]To/From\[dq],\[dq]Name\[dq],\[dq]Status\[dq],\[dq]Amount\[dq],\[dq]Fees\[dq],\[dq]Transaction ID\[dq]
|
||||
# \[dq]Jul 29, 2012\[dq],\[dq]Payment\[dq],\[dq]To\[dq],\[dq]Adapteva, Inc.\[dq],\[dq]Completed\[dq],\[dq]$25.00\[dq],\[dq]$0.00\[dq],\[dq]17LA58JSK6PRD4HDGLNJQPI1PB9N8DKPVHL\[dq]
|
||||
|
||||
#\ skip\ one\ header\ line
|
||||
skip\ 1
|
||||
# skip one header line
|
||||
skip 1
|
||||
|
||||
#\ name\ the\ csv\ fields\ (and\ assign\ the\ transaction\[aq]s\ date,\ amount\ and\ code)
|
||||
fields\ date,\ _,\ toorfrom,\ name,\ amzstatus,\ amount,\ fees,\ code
|
||||
# name the csv fields (and assign the transaction\[aq]s date, amount and code)
|
||||
fields date, _, toorfrom, name, amzstatus, amount, fees, code
|
||||
|
||||
#\ how\ to\ parse\ the\ date
|
||||
date\-format\ %b\ %\-d,\ %Y
|
||||
# how to parse the date
|
||||
date-format %b %-d, %Y
|
||||
|
||||
#\ combine\ two\ fields\ to\ make\ the\ description
|
||||
description\ %toorfrom\ %name
|
||||
# combine two fields to make the description
|
||||
description %toorfrom %name
|
||||
|
||||
#\ save\ these\ fields\ as\ tags
|
||||
comment\ \ \ \ \ status:%amzstatus,\ fees:%fees
|
||||
# save these fields as tags
|
||||
comment status:%amzstatus, fees:%fees
|
||||
|
||||
#\ set\ the\ base\ account\ for\ all\ transactions
|
||||
account1\ \ \ \ assets:amazon
|
||||
# set the base account for all transactions
|
||||
account1 assets:amazon
|
||||
|
||||
#\ flip\ the\ sign\ on\ the\ amount
|
||||
amount\ \ \ \ \ \ \-%amount
|
||||
\f[]
|
||||
# flip the sign on the amount
|
||||
amount -%amount
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
For more examples, see Convert CSV files.
|
||||
@ -83,11 +82,11 @@ For more examples, see Convert CSV files.
|
||||
.PP
|
||||
The following seven kinds of rule can appear in the rules file, in any
|
||||
order.
|
||||
Blank lines and lines beginning with \f[C]#\f[] or \f[C];\f[] are
|
||||
Blank lines and lines beginning with \f[C]#\f[R] or \f[C];\f[R] are
|
||||
ignored.
|
||||
.SS skip
|
||||
.PP
|
||||
\f[C]skip\f[]\f[I]\f[CI]N\f[I]\f[]
|
||||
\f[C]skip\f[R]\f[I]\f[CI]N\f[I]\f[R]
|
||||
.PP
|
||||
Skip this number of CSV records at the beginning.
|
||||
You\[aq]ll need this whenever your CSV data contains header lines.
|
||||
@ -95,122 +94,123 @@ Eg:
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
#\ ignore\ the\ first\ CSV\ line
|
||||
skip\ 1
|
||||
\f[]
|
||||
# ignore the first CSV line
|
||||
skip 1
|
||||
\f[R]
|
||||
.fi
|
||||
.SS date\-format
|
||||
.SS date-format
|
||||
.PP
|
||||
\f[C]date\-format\f[]\f[I]\f[CI]DATEFMT\f[I]\f[]
|
||||
\f[C]date-format\f[R]\f[I]\f[CI]DATEFMT\f[I]\f[R]
|
||||
.PP
|
||||
When your CSV date fields are not formatted like \f[C]YYYY/MM/DD\f[] (or
|
||||
\f[C]YYYY\-MM\-DD\f[] or \f[C]YYYY.MM.DD\f[]), you\[aq]ll need to
|
||||
When your CSV date fields are not formatted like \f[C]YYYY/MM/DD\f[R]
|
||||
(or \f[C]YYYY-MM-DD\f[R] or \f[C]YYYY.MM.DD\f[R]), you\[aq]ll need to
|
||||
specify the format.
|
||||
DATEFMT is a strptime\-like date parsing pattern, which must parse the
|
||||
DATEFMT is a strptime-like date parsing pattern, which must parse the
|
||||
date field values completely.
|
||||
Examples:
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
#\ for\ dates\ like\ "11/06/2013":
|
||||
date\-format\ %m/%d/%Y
|
||||
\f[]
|
||||
# for dates like \[dq]11/06/2013\[dq]:
|
||||
date-format %m/%d/%Y
|
||||
\f[R]
|
||||
.fi
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
#\ for\ dates\ like\ "6/11/2013"\ (note\ the\ \-\ to\ make\ leading\ zeros\ optional):
|
||||
date\-format\ %\-d/%\-m/%Y
|
||||
\f[]
|
||||
# for dates like \[dq]6/11/2013\[dq] (note the - to make leading zeros optional):
|
||||
date-format %-d/%-m/%Y
|
||||
\f[R]
|
||||
.fi
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
#\ for\ dates\ like\ "2013\-Nov\-06":
|
||||
date\-format\ %Y\-%h\-%d
|
||||
\f[]
|
||||
# for dates like \[dq]2013-Nov-06\[dq]:
|
||||
date-format %Y-%h-%d
|
||||
\f[R]
|
||||
.fi
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
#\ for\ dates\ like\ "11/6/2013\ 11:32\ PM":
|
||||
date\-format\ %\-m/%\-d/%Y\ %l:%M\ %p
|
||||
\f[]
|
||||
# for dates like \[dq]11/6/2013 11:32 PM\[dq]:
|
||||
date-format %-m/%-d/%Y %l:%M %p
|
||||
\f[R]
|
||||
.fi
|
||||
.SS field list
|
||||
.PP
|
||||
\f[C]fields\f[]\f[I]\f[CI]FIELDNAME1\f[I]\f[],
|
||||
\f[I]\f[CI]FIELDNAME2\f[I]\f[]...
|
||||
\f[C]fields\f[R]\f[I]\f[CI]FIELDNAME1\f[I]\f[R],
|
||||
\f[I]\f[CI]FIELDNAME2\f[I]\f[R]...
|
||||
.PP
|
||||
This (a) names the CSV fields, in order (names may not contain
|
||||
whitespace; uninteresting names may be left blank), and (b) assigns them
|
||||
to journal entry fields if you use any of these standard field names:
|
||||
\f[C]date\f[], \f[C]date2\f[], \f[C]status\f[], \f[C]code\f[],
|
||||
\f[C]description\f[], \f[C]comment\f[], \f[C]account1\f[],
|
||||
\f[C]account2\f[], \f[C]amount\f[], \f[C]amount\-in\f[],
|
||||
\f[C]amount\-out\f[], \f[C]currency\f[], \f[C]balance\f[].
|
||||
\f[C]date\f[R], \f[C]date2\f[R], \f[C]status\f[R], \f[C]code\f[R],
|
||||
\f[C]description\f[R], \f[C]comment\f[R], \f[C]account1\f[R],
|
||||
\f[C]account2\f[R], \f[C]amount\f[R], \f[C]amount-in\f[R],
|
||||
\f[C]amount-out\f[R], \f[C]currency\f[R], \f[C]balance\f[R],
|
||||
\f[C]balance1\f[R], \f[C]balance2\f[R].
|
||||
Eg:
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
#\ use\ the\ 1st,\ 2nd\ and\ 4th\ CSV\ fields\ as\ the\ entry\[aq]s\ date,\ description\ and\ amount,
|
||||
#\ and\ give\ the\ 7th\ and\ 8th\ fields\ meaningful\ names\ for\ later\ reference:
|
||||
# use the 1st, 2nd and 4th CSV fields as the entry\[aq]s date, description and amount,
|
||||
# and give the 7th and 8th fields meaningful names for later reference:
|
||||
#
|
||||
#\ CSV\ field:
|
||||
#\ \ \ \ \ \ 1\ \ \ \ \ 2\ \ \ \ \ \ \ \ \ \ \ \ 3\ 4\ \ \ \ \ \ \ 5\ 6\ 7\ \ \ \ \ \ \ \ \ \ 8
|
||||
#\ entry\ field:
|
||||
fields\ date,\ description,\ ,\ amount,\ ,\ ,\ somefield,\ anotherfield
|
||||
\f[]
|
||||
# CSV field:
|
||||
# 1 2 3 4 5 6 7 8
|
||||
# entry field:
|
||||
fields date, description, , amount, , , somefield, anotherfield
|
||||
\f[R]
|
||||
.fi
|
||||
.SS field assignment
|
||||
.PP
|
||||
\f[I]\f[CI]ENTRYFIELDNAME\f[I]\f[] \f[I]\f[CI]FIELDVALUE\f[I]\f[]
|
||||
\f[I]\f[CI]ENTRYFIELDNAME\f[I]\f[R] \f[I]\f[CI]FIELDVALUE\f[I]\f[R]
|
||||
.PP
|
||||
This sets a journal entry field (one of the standard names above) to the
|
||||
given text value, which can include CSV field values interpolated by
|
||||
name (\f[C]%CSVFIELDNAME\f[]) or 1\-based position (\f[C]%N\f[]).
|
||||
Eg:
|
||||
name (\f[C]%CSVFIELDNAME\f[R]) or 1-based position (\f[C]%N\f[R]).
|
||||
Eg:
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
#\ set\ the\ amount\ to\ the\ 4th\ CSV\ field\ with\ "USD\ "\ prepended
|
||||
amount\ USD\ %4
|
||||
\f[]
|
||||
# set the amount to the 4th CSV field with \[dq]USD \[dq] prepended
|
||||
amount USD %4
|
||||
\f[R]
|
||||
.fi
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
#\ combine\ three\ fields\ to\ make\ a\ comment\ (containing\ two\ tags)
|
||||
comment\ note:\ %somefield\ \-\ %anotherfield,\ date:\ %1
|
||||
\f[]
|
||||
# combine three fields to make a comment (containing two tags)
|
||||
comment note: %somefield - %anotherfield, date: %1
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
Field assignments can be used instead of or in addition to a field list.
|
||||
.SS conditional block
|
||||
.PP
|
||||
\f[C]if\f[] \f[I]\f[CI]PATTERN\f[I]\f[]
|
||||
\f[C]if\f[R] \f[I]\f[CI]PATTERN\f[I]\f[R]
|
||||
.PD 0
|
||||
.P
|
||||
.PD
|
||||
\ \ \ \ \f[I]\f[CI]FIELDASSIGNMENTS\f[I]\f[]...
|
||||
\ \ \ \ \f[I]\f[CI]FIELDASSIGNMENTS\f[I]\f[R]...
|
||||
.PP
|
||||
\f[C]if\f[]
|
||||
\f[C]if\f[R]
|
||||
.PD 0
|
||||
.P
|
||||
.PD
|
||||
\f[I]\f[CI]PATTERN\f[I]\f[]
|
||||
\f[I]\f[CI]PATTERN\f[I]\f[R]
|
||||
.PD 0
|
||||
.P
|
||||
.PD
|
||||
\f[I]\f[CI]PATTERN\f[I]\f[]...
|
||||
\f[I]\f[CI]PATTERN\f[I]\f[R]...
|
||||
.PD 0
|
||||
.P
|
||||
.PD
|
||||
\ \ \ \ \f[I]\f[CI]FIELDASSIGNMENTS\f[I]\f[]...
|
||||
\ \ \ \ \f[I]\f[CI]FIELDASSIGNMENTS\f[I]\f[R]...
|
||||
.PP
|
||||
This applies one or more field assignments, only to those CSV records
|
||||
matched by one of the PATTERNs.
|
||||
The patterns are case\-insensitive regular expressions which match
|
||||
The patterns are case-insensitive regular expressions which match
|
||||
anywhere within the whole CSV record (it\[aq]s not yet possible to match
|
||||
within a specific field).
|
||||
When there are multiple patterns they can be written on separate lines,
|
||||
@ -221,46 +221,46 @@ Examples:
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
#\ if\ the\ CSV\ record\ contains\ "groceries",\ set\ account2\ to\ "expenses:groceries"
|
||||
if\ groceries
|
||||
\ account2\ expenses:groceries
|
||||
\f[]
|
||||
# if the CSV record contains \[dq]groceries\[dq], set account2 to \[dq]expenses:groceries\[dq]
|
||||
if groceries
|
||||
account2 expenses:groceries
|
||||
\f[R]
|
||||
.fi
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
#\ if\ the\ CSV\ record\ contains\ any\ of\ these\ patterns,\ set\ account2\ and\ comment\ as\ shown
|
||||
# if the CSV record contains any of these patterns, set account2 and comment as shown
|
||||
if
|
||||
monthly\ service\ fee
|
||||
atm\ transaction\ fee
|
||||
banking\ thru\ software
|
||||
\ account2\ expenses:business:banking
|
||||
\ comment\ \ XXX\ deductible\ ?\ check\ it
|
||||
\f[]
|
||||
monthly service fee
|
||||
atm transaction fee
|
||||
banking thru software
|
||||
account2 expenses:business:banking
|
||||
comment XXX deductible ? check it
|
||||
\f[R]
|
||||
.fi
|
||||
.SS include
|
||||
.PP
|
||||
\f[C]include\f[]\f[I]\f[CI]RULESFILE\f[I]\f[]
|
||||
\f[C]include\f[R]\f[I]\f[CI]RULESFILE\f[I]\f[R]
|
||||
.PP
|
||||
Include another rules file at this point.
|
||||
\f[C]RULESFILE\f[] is either an absolute file path or a path relative to
|
||||
the current file\[aq]s directory.
|
||||
\f[C]RULESFILE\f[R] is either an absolute file path or a path relative
|
||||
to the current file\[aq]s directory.
|
||||
Eg:
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
#\ rules\ reused\ with\ several\ CSV\ files
|
||||
include\ common.rules
|
||||
\f[]
|
||||
# rules reused with several CSV files
|
||||
include common.rules
|
||||
\f[R]
|
||||
.fi
|
||||
.SS newest\-first
|
||||
.SS newest-first
|
||||
.PP
|
||||
\f[C]newest\-first\f[]
|
||||
\f[C]newest-first\f[R]
|
||||
.PP
|
||||
Consider adding this rule if all of the following are true: you might be
|
||||
processing just one day of data, your CSV records are in reverse
|
||||
chronological order (newest first), and you care about preserving the
|
||||
order of same\-day transactions.
|
||||
order of same-day transactions.
|
||||
It usually isn\[aq]t needed, because hledger autodetects the CSV order,
|
||||
but when all CSV records have the same date it will assume they are
|
||||
oldest first.
|
||||
@ -268,49 +268,69 @@ oldest first.
|
||||
.SS CSV ordering
|
||||
.PP
|
||||
The generated journal entries will be sorted by date.
|
||||
The order of same\-day entries will be preserved (except in the special
|
||||
case where you might need \f[C]newest\-first\f[], see above).
|
||||
The order of same-day entries will be preserved (except in the special
|
||||
case where you might need \f[C]newest-first\f[R], see above).
|
||||
.SS CSV accounts
|
||||
.PP
|
||||
Each journal entry will have two postings, to \f[C]account1\f[] and
|
||||
\f[C]account2\f[] respectively.
|
||||
Each journal entry will have two postings, to \f[C]account1\f[R] and
|
||||
\f[C]account2\f[R] respectively.
|
||||
It\[aq]s not yet possible to generate entries with more than two
|
||||
postings.
|
||||
It\[aq]s conventional and recommended to use \f[C]account1\f[] for the
|
||||
It\[aq]s conventional and recommended to use \f[C]account1\f[R] for the
|
||||
account whose CSV we are reading.
|
||||
.SS CSV amounts
|
||||
.PP
|
||||
The \f[C]amount\f[] field sets the amount of the \f[C]account1\f[]
|
||||
posting.
|
||||
.PP
|
||||
If the CSV has debit/credit amounts in separate fields, assign to the
|
||||
\f[C]amount\-in\f[] and \f[C]amount\-out\f[] pseudo fields instead.
|
||||
(Whichever one has a value will be used, with appropriate sign.
|
||||
If both contain a value, it may not work so well.)
|
||||
.PP
|
||||
If an amount value is parenthesised, it will be de\-parenthesised and
|
||||
sign\-flipped.
|
||||
A transaction amount must be set, in one of these ways:
|
||||
.IP \[bu] 2
|
||||
with an \f[C]amount\f[R] field assignment, which sets the first
|
||||
posting\[aq]s amount
|
||||
.IP \[bu] 2
|
||||
(When the CSV has debit and credit amounts in separate fields:)
|
||||
.PD 0
|
||||
.P
|
||||
.PD
|
||||
with field assignments for the \f[C]amount-in\f[R] and
|
||||
\f[C]amount-out\f[R] pseudo fields (both of them).
|
||||
Whichever one has a value will be used, with appropriate sign.
|
||||
If both contain a value, it might not work so well.
|
||||
.IP \[bu] 2
|
||||
or implicitly by means of a balance assignment (see below).
|
||||
.PP
|
||||
There is some special handling for sign in amounts:
|
||||
.IP \[bu] 2
|
||||
If an amount value is parenthesised, it will be de-parenthesised and
|
||||
sign-flipped.
|
||||
.IP \[bu] 2
|
||||
If an amount value begins with a double minus sign, those will cancel
|
||||
out and be removed.
|
||||
.PP
|
||||
If the CSV has the currency symbol in a separate field, assign that to
|
||||
the \f[C]currency\f[] pseudo field to have it prepended to the amount.
|
||||
Or, you can use a field assignment to \f[C]amount\f[] that interpolates
|
||||
both CSV fields (giving more control, eg to put the currency symbol on
|
||||
the right).
|
||||
.SS CSV balance assertions
|
||||
If the currency/commodity symbol is provided as a separate CSV field,
|
||||
assign it to the \f[C]currency\f[R] pseudo field; the symbol will be
|
||||
prepended to the amount (TODO: when there is an amount).
|
||||
Or, you can use an \f[C]amount\f[R] field assignment for more control,
|
||||
eg:
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
fields date,description,currency,amount
|
||||
amount %amount %currency
|
||||
\f[R]
|
||||
.fi
|
||||
.SS CSV balance assertions/assignments
|
||||
.PP
|
||||
If the CSV includes a running balance, you can assign that to the
|
||||
\f[C]balance\f[] pseudo field; whenever the running balance value is
|
||||
non\-empty, it will be asserted as the balance after the
|
||||
\f[C]account1\f[] posting.
|
||||
If the CSV includes a running balance, you can assign that to one of the
|
||||
pseudo fields \f[C]balance\f[R] (or \f[C]balance1\f[R]) or
|
||||
\f[C]balance2\f[R].
|
||||
This will generate a balance assertion (or if the amount is left empty,
|
||||
a balance assignment), on the first or second posting, whenever the
|
||||
running balance field is non-empty.
|
||||
(TODO: #1000)
|
||||
.SS Reading multiple CSV files
|
||||
.PP
|
||||
You can read multiple CSV files at once using multiple \f[C]\-f\f[]
|
||||
You can read multiple CSV files at once using multiple \f[C]-f\f[R]
|
||||
arguments on the command line, and hledger will look for a
|
||||
correspondingly\-named rules file for each.
|
||||
Note if you use the \f[C]\-\-rules\-file\f[] option, this one rules file
|
||||
correspondingly-named rules file for each.
|
||||
Note if you use the \f[C]--rules-file\f[R] option, this one rules file
|
||||
will be used for all the CSV files being read.
|
||||
|
||||
|
||||
|
||||
@ -3,8 +3,8 @@ This is hledger_csv.info, produced by makeinfo version 6.5 from stdin.
|
||||
|
||||
File: hledger_csv.info, Node: Top, Next: CSV RULES, Up: (dir)
|
||||
|
||||
hledger_csv(5) hledger 1.14
|
||||
***************************
|
||||
hledger_csv(5) hledger 1.14.99
|
||||
******************************
|
||||
|
||||
hledger can read CSV (comma-separated value) files as if they were
|
||||
journal files, automatically converting each CSV record into a
|
||||
@ -25,9 +25,9 @@ can override this with the '--rules-file' option. If the rules file
|
||||
does not exist, hledger will auto-create one with some example rules,
|
||||
which you'll need to adjust.
|
||||
|
||||
At minimum, the rules file must identify the 'date' and 'amount'
|
||||
fields. It may also be necessary to specify the date format, and the
|
||||
number of header lines to skip. Eg:
|
||||
At minimum, the rules file must identify the date and amount fields.
|
||||
It's often necessary to specify the date format, and the number of
|
||||
header lines to skip, also. Eg:
|
||||
|
||||
fields date, _, _, amount
|
||||
date-format %d/%m/%Y
|
||||
@ -63,6 +63,7 @@ account1 assets:amazon
|
||||
amount -%amount
|
||||
|
||||
For more examples, see Convert CSV files.
|
||||
|
||||
* Menu:
|
||||
|
||||
* CSV RULES::
|
||||
@ -76,6 +77,7 @@ File: hledger_csv.info, Node: CSV RULES, Next: CSV TIPS, Prev: Top, Up: Top
|
||||
|
||||
The following seven kinds of rule can appear in the rules file, in any
|
||||
order. Blank lines and lines beginning with '#' or ';' are ignored.
|
||||
|
||||
* Menu:
|
||||
|
||||
* skip::
|
||||
@ -137,8 +139,8 @@ File: hledger_csv.info, Node: field list, Next: field assignment, Prev: date-
|
||||
whitespace; uninteresting names may be left blank), and (b) assigns them
|
||||
to journal entry fields if you use any of these standard field names:
|
||||
'date', 'date2', 'status', 'code', 'description', 'comment', 'account1',
|
||||
'account2', 'amount', 'amount-in', 'amount-out', 'currency', 'balance'.
|
||||
Eg:
|
||||
'account2', 'amount', 'amount-in', 'amount-out', 'currency', 'balance',
|
||||
'balance1', 'balance2'. Eg:
|
||||
|
||||
# use the 1st, 2nd and 4th CSV fields as the entry's date, description and amount,
|
||||
# and give the 7th and 8th fields meaningful names for later reference:
|
||||
@ -244,7 +246,7 @@ File: hledger_csv.info, Node: CSV TIPS, Prev: CSV RULES, Up: Top
|
||||
* CSV ordering::
|
||||
* CSV accounts::
|
||||
* CSV amounts::
|
||||
* CSV balance assertions::
|
||||
* CSV balance assertions/assignments::
|
||||
* Reading multiple CSV files::
|
||||
|
||||
|
||||
@ -269,42 +271,53 @@ two postings. It's conventional and recommended to use 'account1' for
|
||||
the account whose CSV we are reading.
|
||||
|
||||
|
||||
File: hledger_csv.info, Node: CSV amounts, Next: CSV balance assertions, Prev: CSV accounts, Up: CSV TIPS
|
||||
File: hledger_csv.info, Node: CSV amounts, Next: CSV balance assertions/assignments, Prev: CSV accounts, Up: CSV TIPS
|
||||
|
||||
2.3 CSV amounts
|
||||
===============
|
||||
|
||||
The 'amount' field sets the amount of the 'account1' posting.
|
||||
A transaction amount must be set, in one of these ways:
|
||||
|
||||
If the CSV has debit/credit amounts in separate fields, assign to the
|
||||
'amount-in' and 'amount-out' pseudo fields instead. (Whichever one has
|
||||
a value will be used, with appropriate sign. If both contain a value,
|
||||
it may not work so well.)
|
||||
* with an 'amount' field assignment, which sets the first posting's
|
||||
amount
|
||||
|
||||
If an amount value is parenthesised, it will be de-parenthesised and
|
||||
sign-flipped.
|
||||
* (When the CSV has debit and credit amounts in separate fields:)
|
||||
with field assignments for the 'amount-in' and 'amount-out' pseudo
|
||||
fields (both of them). Whichever one has a value will be used,
|
||||
with appropriate sign. If both contain a value, it might not work
|
||||
so well.
|
||||
|
||||
If an amount value begins with a double minus sign, those will cancel
|
||||
out and be removed.
|
||||
* or implicitly by means of a balance assignment (see below).
|
||||
|
||||
If the CSV has the currency symbol in a separate field, assign that
|
||||
to the 'currency' pseudo field to have it prepended to the amount. Or,
|
||||
you can use a field assignment to 'amount' that interpolates both CSV
|
||||
fields (giving more control, eg to put the currency symbol on the
|
||||
right).
|
||||
There is some special handling for sign in amounts:
|
||||
|
||||
* If an amount value is parenthesised, it will be de-parenthesised
|
||||
and sign-flipped.
|
||||
* If an amount value begins with a double minus sign, those will
|
||||
cancel out and be removed.
|
||||
|
||||
If the currency/commodity symbol is provided as a separate CSV field,
|
||||
assign it to the 'currency' pseudo field; the symbol will be prepended
|
||||
to the amount (TODO: when there is an amount). Or, you can use an
|
||||
'amount' field assignment for more control, eg:
|
||||
|
||||
fields date,description,currency,amount
|
||||
amount %amount %currency
|
||||
|
||||
|
||||
File: hledger_csv.info, Node: CSV balance assertions, Next: Reading multiple CSV files, Prev: CSV amounts, Up: CSV TIPS
|
||||
File: hledger_csv.info, Node: CSV balance assertions/assignments, Next: Reading multiple CSV files, Prev: CSV amounts, Up: CSV TIPS
|
||||
|
||||
2.4 CSV balance assertions
|
||||
==========================
|
||||
2.4 CSV balance assertions/assignments
|
||||
======================================
|
||||
|
||||
If the CSV includes a running balance, you can assign that to the
|
||||
'balance' pseudo field; whenever the running balance value is non-empty,
|
||||
it will be asserted as the balance after the 'account1' posting.
|
||||
If the CSV includes a running balance, you can assign that to one of the
|
||||
pseudo fields 'balance' (or 'balance1') or 'balance2'. This will
|
||||
generate a balance assertion (or if the amount is left empty, a balance
|
||||
assignment), on the first or second posting, whenever the running
|
||||
balance field is non-empty. (TODO: #1000)
|
||||
|
||||
|
||||
File: hledger_csv.info, Node: Reading multiple CSV files, Prev: CSV balance assertions, Up: CSV TIPS
|
||||
File: hledger_csv.info, Node: Reading multiple CSV files, Prev: CSV balance assertions/assignments, Up: CSV TIPS
|
||||
|
||||
2.5 Reading multiple CSV files
|
||||
==============================
|
||||
@ -317,33 +330,33 @@ one rules file will be used for all the CSV files being read.
|
||||
|
||||
Tag Table:
|
||||
Node: Top72
|
||||
Node: CSV RULES2163
|
||||
Ref: #csv-rules2271
|
||||
Node: skip2533
|
||||
Ref: #skip2627
|
||||
Node: date-format2799
|
||||
Ref: #date-format2926
|
||||
Node: field list3476
|
||||
Ref: #field-list3613
|
||||
Node: field assignment4318
|
||||
Ref: #field-assignment4473
|
||||
Node: conditional block4977
|
||||
Ref: #conditional-block5131
|
||||
Node: include6027
|
||||
Ref: #include6157
|
||||
Node: newest-first6388
|
||||
Ref: #newest-first6502
|
||||
Node: CSV TIPS6913
|
||||
Ref: #csv-tips7007
|
||||
Node: CSV ordering7125
|
||||
Ref: #csv-ordering7243
|
||||
Node: CSV accounts7424
|
||||
Ref: #csv-accounts7562
|
||||
Node: CSV amounts7816
|
||||
Ref: #csv-amounts7962
|
||||
Node: CSV balance assertions8737
|
||||
Ref: #csv-balance-assertions8919
|
||||
Node: Reading multiple CSV files9124
|
||||
Ref: #reading-multiple-csv-files9294
|
||||
Node: CSV RULES2167
|
||||
Ref: #csv-rules2275
|
||||
Node: skip2538
|
||||
Ref: #skip2632
|
||||
Node: date-format2804
|
||||
Ref: #date-format2931
|
||||
Node: field list3481
|
||||
Ref: #field-list3618
|
||||
Node: field assignment4348
|
||||
Ref: #field-assignment4503
|
||||
Node: conditional block5007
|
||||
Ref: #conditional-block5161
|
||||
Node: include6057
|
||||
Ref: #include6187
|
||||
Node: newest-first6418
|
||||
Ref: #newest-first6532
|
||||
Node: CSV TIPS6943
|
||||
Ref: #csv-tips7037
|
||||
Node: CSV ordering7167
|
||||
Ref: #csv-ordering7285
|
||||
Node: CSV accounts7466
|
||||
Ref: #csv-accounts7604
|
||||
Node: CSV amounts7858
|
||||
Ref: #csv-amounts8016
|
||||
Node: CSV balance assertions/assignments9096
|
||||
Ref: #csv-balance-assertionsassignments9314
|
||||
Node: Reading multiple CSV files9635
|
||||
Ref: #reading-multiple-csv-files9817
|
||||
|
||||
End Tag Table
|
||||
|
||||
@ -29,8 +29,8 @@ DESCRIPTION
|
||||
you'll need to adjust.
|
||||
|
||||
At minimum, the rules file must identify the date and amount fields.
|
||||
It may also be necessary to specify the date format, and the number of
|
||||
header lines to skip. Eg:
|
||||
It's often necessary to specify the date format, and the number of
|
||||
header lines to skip, also. Eg:
|
||||
|
||||
fields date, _, _, amount
|
||||
date-format %d/%m/%Y
|
||||
@ -83,10 +83,10 @@ CSV RULES
|
||||
date-format
|
||||
date-formatDATEFMT
|
||||
|
||||
When your CSV date fields are not formatted like YYYY/MM/DD (or
|
||||
YYYY-MM-DD or YYYY.MM.DD), you'll need to specify the format. DATEFMT
|
||||
is a strptime-like date parsing pattern, which must parse the date
|
||||
field values completely. Examples:
|
||||
When your CSV date fields are not formatted like YYYY/MM/DD (or YYYY-
|
||||
MM-DD or YYYY.MM.DD), you'll need to specify the format. DATEFMT is a
|
||||
strptime-like date parsing pattern, which must parse the date field
|
||||
values completely. Examples:
|
||||
|
||||
# for dates like "11/06/2013":
|
||||
date-format %m/%d/%Y
|
||||
@ -107,7 +107,8 @@ CSV RULES
|
||||
space; uninteresting names may be left blank), and (b) assigns them to
|
||||
journal entry fields if you use any of these standard field names:
|
||||
date, date2, status, code, description, comment, account1, account2,
|
||||
amount, amount-in, amount-out, currency, balance. Eg:
|
||||
amount, amount-in, amount-out, currency, balance, balance1, balance2.
|
||||
Eg:
|
||||
|
||||
# use the 1st, 2nd and 4th CSV fields as the entry's date, description and amount,
|
||||
# and give the 7th and 8th fields meaningful names for later reference:
|
||||
@ -120,10 +121,9 @@ CSV RULES
|
||||
field assignment
|
||||
ENTRYFIELDNAME FIELDVALUE
|
||||
|
||||
This sets a journal entry field (one of the standard names above) to
|
||||
the given text value, which can include CSV field values interpolated
|
||||
by name (%CSVFIELDNAME) or 1-based position (%N).
|
||||
Eg:
|
||||
This sets a journal entry field (one of the standard names above) to
|
||||
the given text value, which can include CSV field values interpolated
|
||||
by name (%CSVFIELDNAME) or 1-based position (%N). Eg:
|
||||
|
||||
# set the amount to the 4th CSV field with "USD " prepended
|
||||
amount USD %4
|
||||
@ -131,7 +131,7 @@ CSV RULES
|
||||
# combine three fields to make a comment (containing two tags)
|
||||
comment note: %somefield - %anotherfield, date: %1
|
||||
|
||||
Field assignments can be used instead of or in addition to a field
|
||||
Field assignments can be used instead of or in addition to a field
|
||||
list.
|
||||
|
||||
conditional block
|
||||
@ -143,12 +143,12 @@ CSV RULES
|
||||
PATTERN...
|
||||
FIELDASSIGNMENTS...
|
||||
|
||||
This applies one or more field assignments, only to those CSV records
|
||||
This applies one or more field assignments, only to those CSV records
|
||||
matched by one of the PATTERNs. The patterns are case-insensitive reg-
|
||||
ular expressions which match anywhere within the whole CSV record (it's
|
||||
not yet possible to match within a specific field). When there are
|
||||
multiple patterns they can be written on separate lines, unindented.
|
||||
The field assignments are on separate lines indented by at least one
|
||||
not yet possible to match within a specific field). When there are
|
||||
multiple patterns they can be written on separate lines, unindented.
|
||||
The field assignments are on separate lines indented by at least one
|
||||
space. Examples:
|
||||
|
||||
# if the CSV record contains "groceries", set account2 to "expenses:groceries"
|
||||
@ -175,59 +175,71 @@ CSV RULES
|
||||
newest-first
|
||||
newest-first
|
||||
|
||||
Consider adding this rule if all of the following are true: you might
|
||||
be processing just one day of data, your CSV records are in reverse
|
||||
chronological order (newest first), and you care about preserving the
|
||||
order of same-day transactions. It usually isn't needed, because
|
||||
hledger autodetects the CSV order, but when all CSV records have the
|
||||
Consider adding this rule if all of the following are true: you might
|
||||
be processing just one day of data, your CSV records are in reverse
|
||||
chronological order (newest first), and you care about preserving the
|
||||
order of same-day transactions. It usually isn't needed, because
|
||||
hledger autodetects the CSV order, but when all CSV records have the
|
||||
same date it will assume they are oldest first.
|
||||
|
||||
CSV TIPS
|
||||
CSV ordering
|
||||
The generated journal entries will be sorted by date. The order of
|
||||
same-day entries will be preserved (except in the special case where
|
||||
The generated journal entries will be sorted by date. The order of
|
||||
same-day entries will be preserved (except in the special case where
|
||||
you might need newest-first, see above).
|
||||
|
||||
CSV accounts
|
||||
Each journal entry will have two postings, to account1 and account2
|
||||
Each journal entry will have two postings, to account1 and account2
|
||||
respectively. It's not yet possible to generate entries with more than
|
||||
two postings. It's conventional and recommended to use account1 for
|
||||
two postings. It's conventional and recommended to use account1 for
|
||||
the account whose CSV we are reading.
|
||||
|
||||
CSV amounts
|
||||
The amount field sets the amount of the account1 posting.
|
||||
A transaction amount must be set, in one of these ways:
|
||||
|
||||
If the CSV has debit/credit amounts in separate fields, assign to the
|
||||
amount-in and amount-out pseudo fields instead. (Whichever one has a
|
||||
value will be used, with appropriate sign. If both contain a value, it
|
||||
may not work so well.)
|
||||
o with an amount field assignment, which sets the first posting's
|
||||
amount
|
||||
|
||||
If an amount value is parenthesised, it will be de-parenthesised and
|
||||
sign-flipped.
|
||||
o (When the CSV has debit and credit amounts in separate fields:)
|
||||
with field assignments for the amount-in and amount-out pseudo fields
|
||||
(both of them). Whichever one has a value will be used, with appropri-
|
||||
ate sign. If both contain a value, it might not work so well.
|
||||
|
||||
If an amount value begins with a double minus sign, those will cancel
|
||||
out and be removed.
|
||||
o or implicitly by means of a balance assignment (see below).
|
||||
|
||||
If the CSV has the currency symbol in a separate field, assign that to
|
||||
the currency pseudo field to have it prepended to the amount. Or, you
|
||||
can use a field assignment to amount that interpolates both CSV fields
|
||||
(giving more control, eg to put the currency symbol on the right).
|
||||
There is some special handling for sign in amounts:
|
||||
|
||||
CSV balance assertions
|
||||
If the CSV includes a running balance, you can assign that to the bal-
|
||||
ance pseudo field; whenever the running balance value is non-empty, it
|
||||
will be asserted as the balance after the account1 posting.
|
||||
o If an amount value is parenthesised, it will be de-parenthesised and
|
||||
sign-flipped.
|
||||
|
||||
o If an amount value begins with a double minus sign, those will cancel
|
||||
out and be removed.
|
||||
|
||||
If the currency/commodity symbol is provided as a separate CSV field,
|
||||
assign it to the currency pseudo field; the symbol will be prepended to
|
||||
the amount (TODO: when there is an amount). Or, you can use an amount
|
||||
field assignment for more control, eg:
|
||||
|
||||
fields date,description,currency,amount
|
||||
amount %amount %currency
|
||||
|
||||
CSV balance assertions/assignments
|
||||
If the CSV includes a running balance, you can assign that to one of
|
||||
the pseudo fields balance (or balance1) or balance2. This will gener-
|
||||
ate a balance assertion (or if the amount is left empty, a balance
|
||||
assignment), on the first or second posting, whenever the running bal-
|
||||
ance field is non-empty. (TODO: #1000)
|
||||
|
||||
Reading multiple CSV files
|
||||
You can read multiple CSV files at once using multiple -f arguments on
|
||||
the command line, and hledger will look for a correspondingly-named
|
||||
You can read multiple CSV files at once using multiple -f arguments on
|
||||
the command line, and hledger will look for a correspondingly-named
|
||||
rules file for each. Note if you use the --rules-file option, this one
|
||||
rules file will be used for all the CSV files being read.
|
||||
|
||||
|
||||
|
||||
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)
|
||||
|
||||
|
||||
@ -241,7 +253,7 @@ COPYRIGHT
|
||||
|
||||
|
||||
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-
|
||||
dot(5), ledger(1)
|
||||
|
||||
@ -249,4 +261,4 @@ SEE ALSO
|
||||
|
||||
|
||||
|
||||
hledger 1.14 March 2019 hledger_csv(5)
|
||||
hledger 1.14.99 March 2019 hledger_csv(5)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -4,8 +4,8 @@ stdin.
|
||||
|
||||
File: hledger_journal.info, Node: Top, Next: FILE FORMAT, Up: (dir)
|
||||
|
||||
hledger_journal(5) hledger 1.14
|
||||
*******************************
|
||||
hledger_journal(5) hledger 1.14.99
|
||||
**********************************
|
||||
|
||||
hledger's usual data source is a plain text file containing journal
|
||||
entries in hledger journal format. This file represents a standard
|
||||
@ -82,7 +82,7 @@ File: hledger_journal.info, Node: FILE FORMAT, Next: EDITOR SUPPORT, Prev: To
|
||||
* Tags::
|
||||
* Directives::
|
||||
* Periodic transactions::
|
||||
* Transaction modifiers::
|
||||
* Auto postings / transaction modifiers::
|
||||
|
||||
|
||||
File: hledger_journal.info, Node: Transactions, Next: Postings, Up: FILE FORMAT
|
||||
@ -296,6 +296,7 @@ and status mark (or until a comment begins). Sometimes called the
|
||||
"narration" in traditional bookkeeping, it can be used for whatever you
|
||||
wish, or left blank. Transaction descriptions can be queried, unlike
|
||||
comments.
|
||||
|
||||
* Menu:
|
||||
|
||||
* Payee and note::
|
||||
@ -467,6 +468,7 @@ can protect you from, eg, inadvertently disrupting reconciled balances
|
||||
while cleaning up old entries. You can disable them temporarily with
|
||||
the '-I/--ignore-assertions' flag, which can be useful for
|
||||
troubleshooting or for reading Ledger files.
|
||||
|
||||
* Menu:
|
||||
|
||||
* Assertions and ordering::
|
||||
@ -655,6 +657,7 @@ of the commodity to that account since the last balance assertion or
|
||||
assignment). Note that using balance assignments makes your journal a
|
||||
little less explicit; to know the exact amount posted, you have to run
|
||||
hledger or do the calculations yourself, instead of just reading it.
|
||||
|
||||
* Menu:
|
||||
|
||||
* Balance assignments and prices::
|
||||
@ -914,6 +917,7 @@ typically last only until the end of their defining file. This provides
|
||||
more simplicity and predictability, eg reports are not changed by
|
||||
writing file options in a different order. It can be surprising at
|
||||
times though.
|
||||
|
||||
* Menu:
|
||||
|
||||
* Comment blocks::
|
||||
@ -1248,6 +1252,7 @@ They do not affect account names being entered via hledger add or
|
||||
hledger-web.
|
||||
|
||||
See also Cookbook: Rewrite account names.
|
||||
|
||||
* Menu:
|
||||
|
||||
* Basic aliases::
|
||||
@ -1372,7 +1377,7 @@ If account aliases are present, they are applied after the default
|
||||
parent account.
|
||||
|
||||
|
||||
File: hledger_journal.info, Node: Periodic transactions, Next: Transaction modifiers, Prev: Directives, Up: FILE FORMAT
|
||||
File: hledger_journal.info, Node: Periodic transactions, Next: Auto postings / transaction modifiers, Prev: Directives, Up: FILE FORMAT
|
||||
|
||||
1.15 Periodic transactions
|
||||
==========================
|
||||
@ -1398,6 +1403,7 @@ date must fall on a natural boundary of the interval. Eg 'monthly from
|
||||
expression can work (useful or not). They will be relative to today's
|
||||
date, unless a Y default year directive is in effect, in which case they
|
||||
will be relative to Y/1/1.
|
||||
|
||||
* Menu:
|
||||
|
||||
* Two spaces after the period expression::
|
||||
@ -1482,29 +1488,29 @@ compared in budget reports.
|
||||
and Forecasting.
|
||||
|
||||
|
||||
File: hledger_journal.info, Node: Transaction modifiers, Prev: Periodic transactions, Up: FILE FORMAT
|
||||
File: hledger_journal.info, Node: Auto postings / transaction modifiers, Prev: Periodic transactions, Up: FILE FORMAT
|
||||
|
||||
1.16 Transaction modifiers
|
||||
==========================
|
||||
1.16 Auto postings / transaction modifiers
|
||||
==========================================
|
||||
|
||||
Transaction modifier rules describe changes that should be applied
|
||||
automatically to certain transactions. They can be enabled by using the
|
||||
'--auto' flag. Currently, just one kind of change is possible: adding
|
||||
extra postings. These rule-generated postings are known as "automated
|
||||
postings" or "auto postings".
|
||||
Transaction modifier rules describe changes to be applied automatically
|
||||
to certain matched transactions. Currently just one kind of change is
|
||||
possible - adding extra postings, which we call "automated postings" or
|
||||
just "auto postings". These rules become active when you use the
|
||||
'--auto' flag.
|
||||
|
||||
A transaction modifier rule looks quite like a normal transaction,
|
||||
except the first line is an equals sign followed by a query that matches
|
||||
certain postings (mnemonic: '=' suggests matching). And each "posting"
|
||||
is actually a posting-generating rule:
|
||||
A transaction modifier, AKA auto posting rule, looks much like a
|
||||
normal transaction except the first line is an equals sign followed by a
|
||||
query that matches certain postings (mnemonic: '=' suggests matching).
|
||||
And each "posting" is actually a posting-generating rule:
|
||||
|
||||
= QUERY
|
||||
ACCT AMT
|
||||
ACCT [AMT]
|
||||
...
|
||||
|
||||
These posting rules look like normal postings, except the amount can
|
||||
be:
|
||||
These posting-generating rules look like normal postings, except the
|
||||
amount can be:
|
||||
|
||||
* a normal amount with a commodity symbol, eg '$2'. This will be
|
||||
used as-is.
|
||||
@ -1517,6 +1523,10 @@ be:
|
||||
and symbol S). The matched posting's amount will be multiplied by
|
||||
N, and its commodity symbol will be replaced with S.
|
||||
|
||||
These rules have global effect - a rule appearing anywhere in your
|
||||
data can potentially affect any transaction, including transactions
|
||||
recorded above it or in another file.
|
||||
|
||||
Some examples:
|
||||
|
||||
; every time I buy food, schedule a dollar donation
|
||||
@ -1553,7 +1563,7 @@ $ hledger print --auto
|
||||
* Auto postings and transaction balancing / inferred amounts / balance assertions::
|
||||
|
||||
|
||||
File: hledger_journal.info, Node: Auto postings and transaction balancing / inferred amounts / balance assertions, Up: Transaction modifiers
|
||||
File: hledger_journal.info, Node: Auto postings and transaction balancing / inferred amounts / balance assertions, Up: Auto postings / transaction modifiers
|
||||
|
||||
1.16.1 Auto postings and transaction balancing / inferred amounts /
|
||||
-------------------------------------------------------------------
|
||||
@ -1585,109 +1595,109 @@ See the [[Cookbook]] at hledger.org for the latest information.
|
||||
|
||||
Tag Table:
|
||||
Node: Top76
|
||||
Node: FILE FORMAT2372
|
||||
Ref: #file-format2496
|
||||
Node: Transactions2783
|
||||
Ref: #transactions2904
|
||||
Node: Postings3588
|
||||
Ref: #postings3715
|
||||
Node: Dates4710
|
||||
Ref: #dates4825
|
||||
Node: Simple dates4890
|
||||
Ref: #simple-dates5016
|
||||
Node: Secondary dates5382
|
||||
Ref: #secondary-dates5536
|
||||
Node: Posting dates7099
|
||||
Ref: #posting-dates7228
|
||||
Node: Status8602
|
||||
Ref: #status8722
|
||||
Node: Description10430
|
||||
Ref: #description10568
|
||||
Node: Payee and note10887
|
||||
Ref: #payee-and-note11001
|
||||
Node: Account names11243
|
||||
Ref: #account-names11386
|
||||
Node: Amounts11873
|
||||
Ref: #amounts12009
|
||||
Node: Virtual Postings15026
|
||||
Ref: #virtual-postings15185
|
||||
Node: Balance Assertions16405
|
||||
Ref: #balance-assertions16580
|
||||
Node: Assertions and ordering17538
|
||||
Ref: #assertions-and-ordering17724
|
||||
Node: Assertions and included files18424
|
||||
Ref: #assertions-and-included-files18665
|
||||
Node: Assertions and multiple -f options18998
|
||||
Ref: #assertions-and-multiple--f-options19252
|
||||
Node: Assertions and commodities19384
|
||||
Ref: #assertions-and-commodities19614
|
||||
Node: Assertions and prices20770
|
||||
Ref: #assertions-and-prices20982
|
||||
Node: Assertions and subaccounts21422
|
||||
Ref: #assertions-and-subaccounts21649
|
||||
Node: Assertions and virtual postings21973
|
||||
Ref: #assertions-and-virtual-postings22213
|
||||
Node: Assertions and precision22355
|
||||
Ref: #assertions-and-precision22546
|
||||
Node: Balance Assignments22813
|
||||
Ref: #balance-assignments22994
|
||||
Node: Balance assignments and prices24158
|
||||
Ref: #balance-assignments-and-prices24330
|
||||
Node: Transaction prices24554
|
||||
Ref: #transaction-prices24723
|
||||
Node: Comments26991
|
||||
Ref: #comments27125
|
||||
Node: Tags28295
|
||||
Ref: #tags28413
|
||||
Node: Directives29815
|
||||
Ref: #directives29958
|
||||
Node: Comment blocks35565
|
||||
Ref: #comment-blocks35710
|
||||
Node: Including other files35886
|
||||
Ref: #including-other-files36066
|
||||
Node: Default year36474
|
||||
Ref: #default-year36643
|
||||
Node: Declaring commodities37066
|
||||
Ref: #declaring-commodities37249
|
||||
Node: Default commodity38476
|
||||
Ref: #default-commodity38652
|
||||
Node: Market prices39288
|
||||
Ref: #market-prices39453
|
||||
Node: Declaring accounts40294
|
||||
Ref: #declaring-accounts40470
|
||||
Node: Account comments41395
|
||||
Ref: #account-comments41558
|
||||
Node: Account subdirectives41953
|
||||
Ref: #account-subdirectives42148
|
||||
Node: Account types42461
|
||||
Ref: #account-types42645
|
||||
Node: Account display order44289
|
||||
Ref: #account-display-order44459
|
||||
Node: Rewriting accounts45588
|
||||
Ref: #rewriting-accounts45773
|
||||
Node: Basic aliases46507
|
||||
Ref: #basic-aliases46653
|
||||
Node: Regex aliases47357
|
||||
Ref: #regex-aliases47528
|
||||
Node: Multiple aliases48246
|
||||
Ref: #multiple-aliases48421
|
||||
Node: end aliases48919
|
||||
Ref: #end-aliases49066
|
||||
Node: Default parent account49167
|
||||
Ref: #default-parent-account49333
|
||||
Node: Periodic transactions50217
|
||||
Ref: #periodic-transactions50399
|
||||
Node: Two spaces after the period expression51524
|
||||
Ref: #two-spaces-after-the-period-expression51769
|
||||
Node: Forecasting with periodic transactions52254
|
||||
Ref: #forecasting-with-periodic-transactions52544
|
||||
Node: Budgeting with periodic transactions54231
|
||||
Ref: #budgeting-with-periodic-transactions54470
|
||||
Node: Transaction modifiers54929
|
||||
Ref: #transaction-modifiers55092
|
||||
Node: Auto postings and transaction balancing / inferred amounts / balance assertions57076
|
||||
Ref: #auto-postings-and-transaction-balancing-inferred-amounts-balance-assertions57377
|
||||
Node: EDITOR SUPPORT57755
|
||||
Ref: #editor-support57873
|
||||
Node: FILE FORMAT2378
|
||||
Ref: #file-format2502
|
||||
Node: Transactions2805
|
||||
Ref: #transactions2926
|
||||
Node: Postings3610
|
||||
Ref: #postings3737
|
||||
Node: Dates4732
|
||||
Ref: #dates4847
|
||||
Node: Simple dates4912
|
||||
Ref: #simple-dates5038
|
||||
Node: Secondary dates5404
|
||||
Ref: #secondary-dates5558
|
||||
Node: Posting dates7121
|
||||
Ref: #posting-dates7250
|
||||
Node: Status8624
|
||||
Ref: #status8744
|
||||
Node: Description10452
|
||||
Ref: #description10590
|
||||
Node: Payee and note10910
|
||||
Ref: #payee-and-note11024
|
||||
Node: Account names11266
|
||||
Ref: #account-names11409
|
||||
Node: Amounts11896
|
||||
Ref: #amounts12032
|
||||
Node: Virtual Postings15049
|
||||
Ref: #virtual-postings15208
|
||||
Node: Balance Assertions16428
|
||||
Ref: #balance-assertions16603
|
||||
Node: Assertions and ordering17562
|
||||
Ref: #assertions-and-ordering17748
|
||||
Node: Assertions and included files18448
|
||||
Ref: #assertions-and-included-files18689
|
||||
Node: Assertions and multiple -f options19022
|
||||
Ref: #assertions-and-multiple--f-options19276
|
||||
Node: Assertions and commodities19408
|
||||
Ref: #assertions-and-commodities19638
|
||||
Node: Assertions and prices20794
|
||||
Ref: #assertions-and-prices21006
|
||||
Node: Assertions and subaccounts21446
|
||||
Ref: #assertions-and-subaccounts21673
|
||||
Node: Assertions and virtual postings21997
|
||||
Ref: #assertions-and-virtual-postings22237
|
||||
Node: Assertions and precision22379
|
||||
Ref: #assertions-and-precision22570
|
||||
Node: Balance Assignments22837
|
||||
Ref: #balance-assignments23018
|
||||
Node: Balance assignments and prices24183
|
||||
Ref: #balance-assignments-and-prices24355
|
||||
Node: Transaction prices24579
|
||||
Ref: #transaction-prices24748
|
||||
Node: Comments27016
|
||||
Ref: #comments27150
|
||||
Node: Tags28320
|
||||
Ref: #tags28438
|
||||
Node: Directives29840
|
||||
Ref: #directives29983
|
||||
Node: Comment blocks35591
|
||||
Ref: #comment-blocks35736
|
||||
Node: Including other files35912
|
||||
Ref: #including-other-files36092
|
||||
Node: Default year36500
|
||||
Ref: #default-year36669
|
||||
Node: Declaring commodities37092
|
||||
Ref: #declaring-commodities37275
|
||||
Node: Default commodity38502
|
||||
Ref: #default-commodity38678
|
||||
Node: Market prices39314
|
||||
Ref: #market-prices39479
|
||||
Node: Declaring accounts40320
|
||||
Ref: #declaring-accounts40496
|
||||
Node: Account comments41421
|
||||
Ref: #account-comments41584
|
||||
Node: Account subdirectives41979
|
||||
Ref: #account-subdirectives42174
|
||||
Node: Account types42487
|
||||
Ref: #account-types42671
|
||||
Node: Account display order44315
|
||||
Ref: #account-display-order44485
|
||||
Node: Rewriting accounts45614
|
||||
Ref: #rewriting-accounts45799
|
||||
Node: Basic aliases46534
|
||||
Ref: #basic-aliases46680
|
||||
Node: Regex aliases47384
|
||||
Ref: #regex-aliases47555
|
||||
Node: Multiple aliases48273
|
||||
Ref: #multiple-aliases48448
|
||||
Node: end aliases48946
|
||||
Ref: #end-aliases49093
|
||||
Node: Default parent account49194
|
||||
Ref: #default-parent-account49360
|
||||
Node: Periodic transactions50244
|
||||
Ref: #periodic-transactions50442
|
||||
Node: Two spaces after the period expression51568
|
||||
Ref: #two-spaces-after-the-period-expression51813
|
||||
Node: Forecasting with periodic transactions52298
|
||||
Ref: #forecasting-with-periodic-transactions52588
|
||||
Node: Budgeting with periodic transactions54275
|
||||
Ref: #budgeting-with-periodic-transactions54514
|
||||
Node: Auto postings / transaction modifiers54973
|
||||
Ref: #auto-postings-transaction-modifiers55184
|
||||
Node: Auto postings and transaction balancing / inferred amounts / balance assertions57356
|
||||
Ref: #auto-postings-and-transaction-balancing-inferred-amounts-balance-assertions57673
|
||||
Node: EDITOR SUPPORT58051
|
||||
Ref: #editor-support58169
|
||||
|
||||
End Tag Table
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -1,74 +1,74 @@
|
||||
|
||||
.TH "hledger_timeclock" "5" "March 2019" "hledger 1.14" "hledger User Manuals"
|
||||
.TH "hledger_timeclock" "5" "March 2019" "hledger 1.14.99" "hledger User Manuals"
|
||||
|
||||
|
||||
|
||||
.SH NAME
|
||||
.PP
|
||||
Timeclock \- the time logging format of timeclock.el, as read by hledger
|
||||
Timeclock - the time logging format of timeclock.el, as read by hledger
|
||||
.SH DESCRIPTION
|
||||
.PP
|
||||
hledger can read timeclock files.
|
||||
As with Ledger, these are (a subset of) timeclock.el\[aq]s format,
|
||||
containing clock\-in and clock\-out entries as in the example below.
|
||||
containing clock-in and clock-out entries as in the example below.
|
||||
The date is a simple date.
|
||||
The time format is HH:MM[:SS][+\-ZZZZ].
|
||||
The time format is HH:MM[:SS][+-ZZZZ].
|
||||
Seconds and timezone are optional.
|
||||
The timezone, if present, must be four digits and is ignored (currently
|
||||
the time is always interpreted as a local time).
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
i\ 2015/03/30\ 09:00:00\ some:account\ name\ \ optional\ description\ after\ two\ spaces
|
||||
o\ 2015/03/30\ 09:20:00
|
||||
i\ 2015/03/31\ 22:21:45\ another\ account
|
||||
o\ 2015/04/01\ 02:00:34
|
||||
\f[]
|
||||
i 2015/03/30 09:00:00 some:account name optional description after two spaces
|
||||
o 2015/03/30 09:20:00
|
||||
i 2015/03/31 22:21:45 another account
|
||||
o 2015/04/01 02:00:34
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
hledger treats each clock\-in/clock\-out pair as a transaction posting
|
||||
hledger treats each clock-in/clock-out pair as a transaction posting
|
||||
some number of hours to an account.
|
||||
Or if the session spans more than one day, it is split into several
|
||||
transactions, one for each day.
|
||||
For the above time log, \f[C]hledger\ print\f[] generates these journal
|
||||
For the above time log, \f[C]hledger print\f[R] generates these journal
|
||||
entries:
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
$\ hledger\ \-f\ t.timeclock\ print
|
||||
2015/03/30\ *\ optional\ description\ after\ two\ spaces
|
||||
\ \ \ \ (some:account\ name)\ \ \ \ \ \ \ \ \ 0.33h
|
||||
$ hledger -f t.timeclock print
|
||||
2015/03/30 * optional description after two spaces
|
||||
(some:account name) 0.33h
|
||||
|
||||
2015/03/31\ *\ 22:21\-23:59
|
||||
\ \ \ \ (another\ account)\ \ \ \ \ \ \ \ \ 1.64h
|
||||
2015/03/31 * 22:21-23:59
|
||||
(another account) 1.64h
|
||||
|
||||
2015/04/01\ *\ 00:00\-02:00
|
||||
\ \ \ \ (another\ account)\ \ \ \ \ \ \ \ \ 2.01h
|
||||
\f[]
|
||||
2015/04/01 * 00:00-02:00
|
||||
(another account) 2.01h
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
Here is a sample.timeclock to download and some queries to try:
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
$\ hledger\ \-f\ sample.timeclock\ balance\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ #\ current\ time\ balances
|
||||
$\ hledger\ \-f\ sample.timeclock\ register\ \-p\ 2009/3\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ #\ sessions\ in\ march\ 2009
|
||||
$\ hledger\ \-f\ sample.timeclock\ register\ \-p\ weekly\ \-\-depth\ 1\ \-\-empty\ \ #\ time\ summary\ by\ week
|
||||
\f[]
|
||||
$ hledger -f sample.timeclock balance # current time balances
|
||||
$ hledger -f sample.timeclock register -p 2009/3 # sessions in march 2009
|
||||
$ hledger -f sample.timeclock register -p weekly --depth 1 --empty # time summary by week
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
To generate time logs, ie to clock in and clock out, you could:
|
||||
.IP \[bu] 2
|
||||
use emacs and the built\-in timeclock.el, or the extended
|
||||
timeclock\-x.el and perhaps the extras in ledgerutils.el
|
||||
use emacs and the built-in timeclock.el, or the extended timeclock-x.el
|
||||
and perhaps the extras in ledgerutils.el
|
||||
.IP \[bu] 2
|
||||
at the command line, use these bash aliases:
|
||||
\f[C]shell\ \ \ alias\ ti="echo\ i\ `date\ \[aq]+%Y\-%m\-%d\ %H:%M:%S\[aq]`\ \\$*\ >>$TIMELOG"\ \ \ alias\ to="echo\ o\ `date\ \[aq]+%Y\-%m\-%d\ %H:%M:%S\[aq]`\ >>$TIMELOG"\f[]
|
||||
\f[C]shell alias ti=\[dq]echo i \[ga]date \[aq]+%Y-%m-%d %H:%M:%S\[aq]\[ga] \[rs]$* >>$TIMELOG\[dq] alias to=\[dq]echo o \[ga]date \[aq]+%Y-%m-%d %H:%M:%S\[aq]\[ga] >>$TIMELOG\[dq]\f[R]
|
||||
.IP \[bu] 2
|
||||
or use the old \f[C]ti\f[] and \f[C]to\f[] scripts in the ledger 2.x
|
||||
or use the old \f[C]ti\f[R] and \f[C]to\f[R] scripts in the ledger 2.x
|
||||
repository.
|
||||
These rely on a "timeclock" executable which I think is just the ledger
|
||||
2 executable renamed.
|
||||
These rely on a \[dq]timeclock\[dq] executable which I think is just the
|
||||
ledger 2 executable renamed.
|
||||
|
||||
|
||||
.SH "REPORTING BUGS"
|
||||
|
||||
@ -4,8 +4,8 @@ stdin.
|
||||
|
||||
File: hledger_timeclock.info, Node: Top, Up: (dir)
|
||||
|
||||
hledger_timeclock(5) hledger 1.14
|
||||
*********************************
|
||||
hledger_timeclock(5) hledger 1.14.99
|
||||
************************************
|
||||
|
||||
hledger can read timeclock files. As with Ledger, these are (a subset
|
||||
of) timeclock.el's format, containing clock-in and clock-out entries as
|
||||
@ -48,6 +48,7 @@ $ hledger -f sample.timeclock register -p weekly --depth 1 --empty # time summa
|
||||
* at the command line, use these bash aliases: 'shell alias ti="echo
|
||||
i `date '+%Y-%m-%d %H:%M:%S'` \$* >>$TIMELOG" alias to="echo o
|
||||
`date '+%Y-%m-%d %H:%M:%S'` >>$TIMELOG"'
|
||||
|
||||
* or use the old 'ti' and 'to' scripts in the ledger 2.x repository.
|
||||
These rely on a "timeclock" executable which I think is just the
|
||||
ledger 2 executable renamed.
|
||||
|
||||
@ -42,11 +42,12 @@ DESCRIPTION
|
||||
|
||||
To generate time logs, ie to clock in and clock out, you could:
|
||||
|
||||
o use emacs and the built-in timeclock.el, or the extended time-
|
||||
clock-x.el and perhaps the extras in ledgerutils.el
|
||||
o use emacs and the built-in timeclock.el, or the extended timeclock-
|
||||
x.el and perhaps the extras in ledgerutils.el
|
||||
|
||||
o at the command line, use these bash aliases:
|
||||
shell alias ti="echo i `date '+%Y-%m-%d %H:%M:%S'` \$* >>$TIMELOG" alias to="echo o `date '+%Y-%m-%d %H:%M:%S'` >>$TIMELOG"
|
||||
o at the command line, use these bash aliases: shell alias ti="echo i
|
||||
`date '+%Y-%m-%d %H:%M:%S'` \$* >>$TIMELOG" alias to="echo o `date
|
||||
'+%Y-%m-%d %H:%M:%S'` >>$TIMELOG"
|
||||
|
||||
o or use the old ti and to scripts in the ledger 2.x repository. These
|
||||
rely on a "timeclock" executable which I think is just the ledger 2
|
||||
@ -77,4 +78,4 @@ SEE ALSO
|
||||
|
||||
|
||||
|
||||
hledger 1.14 March 2019 hledger_timeclock(5)
|
||||
hledger 1.14.99 March 2019 hledger_timeclock(5)
|
||||
|
||||
@ -1,32 +1,32 @@
|
||||
|
||||
.TH "hledger_timedot" "5" "March 2019" "hledger 1.14" "hledger User Manuals"
|
||||
.TH "hledger_timedot" "5" "March 2019" "hledger 1.14.99" "hledger User Manuals"
|
||||
|
||||
|
||||
|
||||
.SH NAME
|
||||
.PP
|
||||
Timedot \- hledger\[aq]s human\-friendly time logging format
|
||||
Timedot - hledger\[aq]s human-friendly time logging format
|
||||
.SH DESCRIPTION
|
||||
.PP
|
||||
Timedot is a plain text format for logging dated, categorised quantities
|
||||
(of time, usually), supported by hledger.
|
||||
It is convenient for approximate and retroactive time logging, eg when
|
||||
the real\-time clock\-in/out required with a timeclock file is too
|
||||
precise or too interruptive.
|
||||
the real-time clock-in/out required with a timeclock file is too precise
|
||||
or too interruptive.
|
||||
It can be formatted like a bar chart, making clear at a glance where
|
||||
time was spent.
|
||||
.PP
|
||||
Though called "timedot", this format is read by hledger as commodityless
|
||||
quantities, so it could be used to represent dated quantities other than
|
||||
time.
|
||||
Though called \[dq]timedot\[dq], this format is read by hledger as
|
||||
commodityless quantities, so it could be used to represent dated
|
||||
quantities other than time.
|
||||
In the docs below we\[aq]ll assume it\[aq]s time.
|
||||
.SH FILE FORMAT
|
||||
.PP
|
||||
A timedot file contains a series of day entries.
|
||||
A day entry begins with a date, and is followed by category/quantity
|
||||
pairs, one per line.
|
||||
Dates are hledger\-style simple dates (see hledger_journal(5)).
|
||||
Categories are hledger\-style account names, optionally indented.
|
||||
Dates are hledger-style simple dates (see hledger_journal(5)).
|
||||
Categories are hledger-style account names, optionally indented.
|
||||
As in a hledger journal, there must be at least two spaces between the
|
||||
category (account name) and the quantity.
|
||||
.PP
|
||||
@ -41,9 +41,9 @@ an integral or decimal number, representing hours.
|
||||
Eg: 1.5
|
||||
.IP \[bu] 2
|
||||
an integral or decimal number immediately followed by a unit symbol
|
||||
\f[C]s\f[], \f[C]m\f[], \f[C]h\f[], \f[C]d\f[], \f[C]w\f[], \f[C]mo\f[],
|
||||
or \f[C]y\f[], representing seconds, minutes, hours, days weeks, months
|
||||
or years respectively.
|
||||
\f[C]s\f[R], \f[C]m\f[R], \f[C]h\f[R], \f[C]d\f[R], \f[C]w\f[R],
|
||||
\f[C]mo\f[R], or \f[C]y\f[R], representing seconds, minutes, hours, days
|
||||
weeks, months or years respectively.
|
||||
Eg: 90m.
|
||||
The following equivalencies are assumed, currently: 1m = 60s, 1h = 60m,
|
||||
1d = 24h, 1w = 7d, 1mo = 30d, 1y=365d.
|
||||
@ -53,16 +53,16 @@ An example:
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
#\ on\ this\ day,\ 6h\ was\ spent\ on\ client\ work,\ 1.5h\ on\ haskell\ FOSS\ work,\ etc.
|
||||
# on this day, 6h was spent on client work, 1.5h on haskell FOSS work, etc.
|
||||
2016/2/1
|
||||
inc:client1\ \ \ ....\ ....\ ....\ ....\ ....\ ....
|
||||
fos:haskell\ \ \ ....\ ..\
|
||||
biz:research\ \ .
|
||||
inc:client1 .... .... .... .... .... ....
|
||||
fos:haskell .... ..
|
||||
biz:research .
|
||||
|
||||
2016/2/2
|
||||
inc:client1\ \ \ ....\ ....
|
||||
biz:research\ \ .
|
||||
\f[]
|
||||
inc:client1 .... ....
|
||||
biz:research .
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
Or with numbers:
|
||||
@ -70,42 +70,42 @@ Or with numbers:
|
||||
.nf
|
||||
\f[C]
|
||||
2016/2/3
|
||||
inc:client1\ \ \ 4
|
||||
fos:hledger\ \ \ 3
|
||||
biz:research\ \ 1
|
||||
\f[]
|
||||
inc:client1 4
|
||||
fos:hledger 3
|
||||
biz:research 1
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
Reporting:
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
$\ hledger\ \-f\ t.timedot\ print\ date:2016/2/2
|
||||
2016/02/02\ *
|
||||
\ \ \ \ (inc:client1)\ \ \ \ \ \ \ \ \ \ 2.00
|
||||
$ hledger -f t.timedot print date:2016/2/2
|
||||
2016/02/02 *
|
||||
(inc:client1) 2.00
|
||||
|
||||
2016/02/02\ *
|
||||
\ \ \ \ (biz:research)\ \ \ \ \ \ \ \ \ \ 0.25
|
||||
\f[]
|
||||
2016/02/02 *
|
||||
(biz:research) 0.25
|
||||
\f[R]
|
||||
.fi
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
$\ hledger\ \-f\ t.timedot\ bal\ \-\-daily\ \-\-tree
|
||||
Balance\ changes\ in\ 2016/02/01\-2016/02/03:
|
||||
$ hledger -f t.timedot bal --daily --tree
|
||||
Balance changes in 2016/02/01-2016/02/03:
|
||||
|
||||
\ \ \ \ \ \ \ \ \ \ \ \ ||\ \ 2016/02/01d\ \ 2016/02/02d\ \ 2016/02/03d\
|
||||
|| 2016/02/01d 2016/02/02d 2016/02/03d
|
||||
============++========================================
|
||||
\ biz\ \ \ \ \ \ \ \ ||\ \ \ \ \ \ \ \ \ 0.25\ \ \ \ \ \ \ \ \ 0.25\ \ \ \ \ \ \ \ \ 1.00\
|
||||
\ \ \ research\ ||\ \ \ \ \ \ \ \ \ 0.25\ \ \ \ \ \ \ \ \ 0.25\ \ \ \ \ \ \ \ \ 1.00\
|
||||
\ fos\ \ \ \ \ \ \ \ ||\ \ \ \ \ \ \ \ \ 1.50\ \ \ \ \ \ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ \ 3.00\
|
||||
\ \ \ haskell\ \ ||\ \ \ \ \ \ \ \ \ 1.50\ \ \ \ \ \ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ \ \ \ \ 0\
|
||||
\ \ \ hledger\ \ ||\ \ \ \ \ \ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ \ 3.00\
|
||||
\ inc\ \ \ \ \ \ \ \ ||\ \ \ \ \ \ \ \ \ 6.00\ \ \ \ \ \ \ \ \ 2.00\ \ \ \ \ \ \ \ \ 4.00\
|
||||
\ \ \ client1\ \ ||\ \ \ \ \ \ \ \ \ 6.00\ \ \ \ \ \ \ \ \ 2.00\ \ \ \ \ \ \ \ \ 4.00\
|
||||
\-\-\-\-\-\-\-\-\-\-\-\-++\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
|
||||
\ \ \ \ \ \ \ \ \ \ \ \ ||\ \ \ \ \ \ \ \ \ 7.75\ \ \ \ \ \ \ \ \ 2.25\ \ \ \ \ \ \ \ \ 8.00\
|
||||
\f[]
|
||||
biz || 0.25 0.25 1.00
|
||||
research || 0.25 0.25 1.00
|
||||
fos || 1.50 0 3.00
|
||||
haskell || 1.50 0 0
|
||||
hledger || 0 0 3.00
|
||||
inc || 6.00 2.00 4.00
|
||||
client1 || 6.00 2.00 4.00
|
||||
------------++----------------------------------------
|
||||
|| 7.75 2.25 8.00
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
I prefer to use period for separating account components.
|
||||
@ -114,20 +114,20 @@ We can make this work with an account alias:
|
||||
.nf
|
||||
\f[C]
|
||||
2016/2/4
|
||||
fos.hledger.timedot\ \ 4
|
||||
fos.ledger\ \ \ \ \ \ \ \ \ \ \ ..
|
||||
\f[]
|
||||
fos.hledger.timedot 4
|
||||
fos.ledger ..
|
||||
\f[R]
|
||||
.fi
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
$\ hledger\ \-f\ t.timedot\ \-\-alias\ /\\\\./=:\ bal\ date:2016/2/4
|
||||
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 4.50\ \ fos
|
||||
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 4.00\ \ \ \ hledger:timedot
|
||||
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0.50\ \ \ \ ledger
|
||||
\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
|
||||
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 4.50
|
||||
\f[]
|
||||
$ hledger -f t.timedot --alias /\[rs]\[rs]./=: bal date:2016/2/4
|
||||
4.50 fos
|
||||
4.00 hledger:timedot
|
||||
0.50 ledger
|
||||
--------------------
|
||||
4.50
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
Here is a sample.timedot.
|
||||
|
||||
@ -4,8 +4,8 @@ stdin.
|
||||
|
||||
File: hledger_timedot.info, Node: Top, Next: FILE FORMAT, Up: (dir)
|
||||
|
||||
hledger_timedot(5) hledger 1.14
|
||||
*******************************
|
||||
hledger_timedot(5) hledger 1.14.99
|
||||
**********************************
|
||||
|
||||
Timedot is a plain text format for logging dated, categorised quantities
|
||||
(of time, usually), supported by hledger. It is convenient for
|
||||
@ -17,6 +17,7 @@ glance where time was spent.
|
||||
Though called "timedot", this format is read by hledger as
|
||||
commodityless quantities, so it could be used to represent dated
|
||||
quantities other than time. In the docs below we'll assume it's time.
|
||||
|
||||
* Menu:
|
||||
|
||||
* FILE FORMAT::
|
||||
@ -110,7 +111,7 @@ $ hledger -f t.timedot --alias /\\./=: bal date:2016/2/4
|
||||
|
||||
Tag Table:
|
||||
Node: Top76
|
||||
Node: FILE FORMAT807
|
||||
Ref: #file-format908
|
||||
Node: FILE FORMAT814
|
||||
Ref: #file-format915
|
||||
|
||||
End Tag Table
|
||||
|
||||
@ -9,10 +9,10 @@ NAME
|
||||
DESCRIPTION
|
||||
Timedot is a plain text format for logging dated, categorised quanti-
|
||||
ties (of time, usually), supported by hledger. It is convenient for
|
||||
approximate and retroactive time logging, eg when the real-time
|
||||
clock-in/out required with a timeclock file is too precise or too
|
||||
interruptive. It can be formatted like a bar chart, making clear at a
|
||||
glance where time was spent.
|
||||
approximate and retroactive time logging, eg when the real-time clock-
|
||||
in/out required with a timeclock file is too precise or too interrup-
|
||||
tive. It can be formatted like a bar chart, making clear at a glance
|
||||
where time was spent.
|
||||
|
||||
Though called "timedot", this format is read by hledger as commodity-
|
||||
less quantities, so it could be used to represent dated quantities
|
||||
@ -124,4 +124,4 @@ SEE ALSO
|
||||
|
||||
|
||||
|
||||
hledger 1.14 March 2019 hledger_timedot(5)
|
||||
hledger 1.14.99 March 2019 hledger_timedot(5)
|
||||
|
||||
@ -1,227 +1,161 @@
|
||||
|
||||
.TH "hledger\-ui" "1" "March 2019" "hledger\-ui 1.14" "hledger User Manuals"
|
||||
.TH "hledger-ui" "1" "March 2019" "hledger-ui 1.14.99" "hledger User Manuals"
|
||||
|
||||
|
||||
|
||||
.SH NAME
|
||||
.PP
|
||||
hledger\-ui \- curses\-style interface for the hledger accounting tool
|
||||
hledger-ui - curses-style interface for the hledger accounting tool
|
||||
.SH SYNOPSIS
|
||||
.PP
|
||||
\f[C]hledger\-ui\ [OPTIONS]\ [QUERYARGS]\f[]
|
||||
\f[C]hledger-ui [OPTIONS] [QUERYARGS]\f[R]
|
||||
.PD 0
|
||||
.P
|
||||
.PD
|
||||
\f[C]hledger\ ui\ \-\-\ [OPTIONS]\ [QUERYARGS]\f[]
|
||||
\f[C]hledger ui -- [OPTIONS] [QUERYARGS]\f[R]
|
||||
.SH DESCRIPTION
|
||||
.PP
|
||||
hledger is a cross\-platform program for tracking money, time, or any
|
||||
other commodity, using double\-entry accounting and a simple, editable
|
||||
hledger is a cross-platform program for tracking money, time, or any
|
||||
other commodity, using double-entry accounting and a simple, editable
|
||||
file format.
|
||||
hledger is inspired by and largely compatible with ledger(1).
|
||||
.PP
|
||||
hledger\-ui is hledger\[aq]s curses\-style interface, providing an
|
||||
efficient full\-window text UI for viewing accounts and transactions,
|
||||
and some limited data entry capability.
|
||||
It is easier than hledger\[aq]s command\-line interface, and sometimes
|
||||
hledger-ui is hledger\[aq]s curses-style interface, providing an
|
||||
efficient full-window text UI for viewing accounts and transactions, and
|
||||
some limited data entry capability.
|
||||
It is easier than hledger\[aq]s command-line interface, and sometimes
|
||||
quicker and more convenient than the web interface.
|
||||
.PP
|
||||
Note hledger\-ui has some different defaults (experimental):
|
||||
Note hledger-ui has some different defaults (experimental):
|
||||
.IP \[bu] 2
|
||||
it generates rule\-based transactions and postings by default
|
||||
(\-\-forecast and \-\-auto are always on).
|
||||
it generates rule-based transactions and postings by default (--forecast
|
||||
and --auto are always on).
|
||||
.IP \[bu] 2
|
||||
it hides transactions dated in the future by default (change this with
|
||||
\-\-future or the F key).
|
||||
--future or the F key).
|
||||
.PP
|
||||
Like hledger, it reads data from one or more files in hledger journal,
|
||||
timeclock, timedot, or CSV format specified with \f[C]\-f\f[], or
|
||||
\f[C]$LEDGER_FILE\f[], or \f[C]$HOME/.hledger.journal\f[] (on windows,
|
||||
perhaps \f[C]C:/Users/USER/.hledger.journal\f[]).
|
||||
timeclock, timedot, or CSV format specified with \f[C]-f\f[R], or
|
||||
\f[C]$LEDGER_FILE\f[R], or \f[C]$HOME/.hledger.journal\f[R] (on windows,
|
||||
perhaps \f[C]C:/Users/USER/.hledger.journal\f[R]).
|
||||
For more about this see hledger(1), hledger_journal(5) etc.
|
||||
.SH OPTIONS
|
||||
.PP
|
||||
Note: if invoking hledger\-ui as a hledger subcommand, write
|
||||
\f[C]\-\-\f[] before options as shown above.
|
||||
Note: if invoking hledger-ui as a hledger subcommand, write \f[C]--\f[R]
|
||||
before options as shown above.
|
||||
.PP
|
||||
Any QUERYARGS are interpreted as a hledger search query which filters
|
||||
the data.
|
||||
.TP
|
||||
.B \f[C]\-\-watch\f[]
|
||||
.B \f[C]--watch\f[R]
|
||||
watch for data and date changes and reload automatically
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[C]\-\-theme=default|terminal|greenterm\f[]
|
||||
.B \f[C]--theme=default|terminal|greenterm\f[R]
|
||||
use this custom display theme
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[C]\-\-register=ACCTREGEX\f[]
|
||||
.B \f[C]--register=ACCTREGEX\f[R]
|
||||
start in the (first) matched account\[aq]s register screen
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[C]\-\-change\f[]
|
||||
.B \f[C]--change\f[R]
|
||||
show period balances (changes) at startup instead of historical balances
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[C]\-F\ \-\-flat\f[]
|
||||
.B \f[C]-F --flat\f[R]
|
||||
show accounts as a list (default)
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[C]\-T\ \-\-tree\f[]
|
||||
.B \f[C]-T --tree\f[R]
|
||||
show accounts as a tree
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[C]\-\-future\f[]
|
||||
.B \f[C]--future\f[R]
|
||||
show transactions dated later than today (normally hidden)
|
||||
.RS
|
||||
.RE
|
||||
.PP
|
||||
hledger input options:
|
||||
.TP
|
||||
.B \f[C]\-f\ FILE\ \-\-file=FILE\f[]
|
||||
.B \f[C]-f FILE --file=FILE\f[R]
|
||||
use a different input file.
|
||||
For stdin, use \- (default: \f[C]$LEDGER_FILE\f[] or
|
||||
\f[C]$HOME/.hledger.journal\f[])
|
||||
.RS
|
||||
.RE
|
||||
For stdin, use - (default: \f[C]$LEDGER_FILE\f[R] or
|
||||
\f[C]$HOME/.hledger.journal\f[R])
|
||||
.TP
|
||||
.B \f[C]\-\-rules\-file=RULESFILE\f[]
|
||||
.B \f[C]--rules-file=RULESFILE\f[R]
|
||||
Conversion rules file to use when reading CSV (default: FILE.rules)
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[C]\-\-separator=CHAR\f[]
|
||||
.B \f[C]--separator=CHAR\f[R]
|
||||
Field separator to expect when reading CSV (default: \[aq],\[aq])
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[C]\-\-alias=OLD=NEW\f[]
|
||||
.B \f[C]--alias=OLD=NEW\f[R]
|
||||
rename accounts named OLD to NEW
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[C]\-\-anon\f[]
|
||||
.B \f[C]--anon\f[R]
|
||||
anonymize accounts and payees
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[C]\-\-pivot\ FIELDNAME\f[]
|
||||
.B \f[C]--pivot FIELDNAME\f[R]
|
||||
use some other field or tag for the account name
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[C]\-I\ \-\-ignore\-assertions\f[]
|
||||
.B \f[C]-I --ignore-assertions\f[R]
|
||||
ignore any failing balance assertions
|
||||
.RS
|
||||
.RE
|
||||
.PP
|
||||
hledger reporting options:
|
||||
.TP
|
||||
.B \f[C]\-b\ \-\-begin=DATE\f[]
|
||||
.B \f[C]-b --begin=DATE\f[R]
|
||||
include postings/txns on or after this date
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[C]\-e\ \-\-end=DATE\f[]
|
||||
.B \f[C]-e --end=DATE\f[R]
|
||||
include postings/txns before this date
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[C]\-D\ \-\-daily\f[]
|
||||
.B \f[C]-D --daily\f[R]
|
||||
multiperiod/multicolumn report by day
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[C]\-W\ \-\-weekly\f[]
|
||||
.B \f[C]-W --weekly\f[R]
|
||||
multiperiod/multicolumn report by week
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[C]\-M\ \-\-monthly\f[]
|
||||
.B \f[C]-M --monthly\f[R]
|
||||
multiperiod/multicolumn report by month
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[C]\-Q\ \-\-quarterly\f[]
|
||||
.B \f[C]-Q --quarterly\f[R]
|
||||
multiperiod/multicolumn report by quarter
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[C]\-Y\ \-\-yearly\f[]
|
||||
.B \f[C]-Y --yearly\f[R]
|
||||
multiperiod/multicolumn report by year
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[C]\-p\ \-\-period=PERIODEXP\f[]
|
||||
.B \f[C]-p --period=PERIODEXP\f[R]
|
||||
set start date, end date, and/or reporting interval all at once using
|
||||
period expressions syntax (overrides the flags above)
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[C]\-\-date2\f[]
|
||||
.B \f[C]--date2\f[R]
|
||||
match the secondary date instead (see command help for other effects)
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[C]\-U\ \-\-unmarked\f[]
|
||||
include only unmarked postings/txns (can combine with \-P or \-C)
|
||||
.RS
|
||||
.RE
|
||||
.B \f[C]-U --unmarked\f[R]
|
||||
include only unmarked postings/txns (can combine with -P or -C)
|
||||
.TP
|
||||
.B \f[C]\-P\ \-\-pending\f[]
|
||||
.B \f[C]-P --pending\f[R]
|
||||
include only pending postings/txns
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[C]\-C\ \-\-cleared\f[]
|
||||
.B \f[C]-C --cleared\f[R]
|
||||
include only cleared postings/txns
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[C]\-R\ \-\-real\f[]
|
||||
include only non\-virtual postings
|
||||
.RS
|
||||
.RE
|
||||
.B \f[C]-R --real\f[R]
|
||||
include only non-virtual postings
|
||||
.TP
|
||||
.B \f[C]\-NUM\ \-\-depth=NUM\f[]
|
||||
.B \f[C]-NUM --depth=NUM\f[R]
|
||||
hide/aggregate accounts or postings more than NUM levels deep
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[C]\-E\ \-\-empty\f[]
|
||||
show items with zero amount, normally hidden (and vice\-versa in
|
||||
hledger\-ui/hledger\-web)
|
||||
.RS
|
||||
.RE
|
||||
.B \f[C]-E --empty\f[R]
|
||||
show items with zero amount, normally hidden (and vice-versa in
|
||||
hledger-ui/hledger-web)
|
||||
.TP
|
||||
.B \f[C]\-B\ \-\-cost\f[]
|
||||
.B \f[C]-B --cost\f[R]
|
||||
convert amounts to their cost at transaction time (using the transaction
|
||||
price, if any)
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[C]\-V\ \-\-value\f[]
|
||||
.B \f[C]-V --value\f[R]
|
||||
convert amounts to their market value on the report end date (using the
|
||||
most recent applicable market price, if any)
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[C]\-\-auto\f[]
|
||||
.B \f[C]--auto\f[R]
|
||||
apply automated posting rules to modify transactions.
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[C]\-\-forecast\f[]
|
||||
.B \f[C]--forecast\f[R]
|
||||
apply periodic transaction rules to generate future transactions, to 6
|
||||
months from now or report end date.
|
||||
.RS
|
||||
.RE
|
||||
.PP
|
||||
When a reporting option appears more than once in the command line, the
|
||||
last one takes precedence.
|
||||
@ -230,38 +164,33 @@ Some reporting options can also be written as query arguments.
|
||||
.PP
|
||||
hledger help options:
|
||||
.TP
|
||||
.B \f[C]\-h\ \-\-help\f[]
|
||||
.B \f[C]-h --help\f[R]
|
||||
show general usage (or after COMMAND, command usage)
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[C]\-\-version\f[]
|
||||
.B \f[C]--version\f[R]
|
||||
show version
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[C]\-\-debug[=N]\f[]
|
||||
show debug output (levels 1\-9, default: 1)
|
||||
.RS
|
||||
.RE
|
||||
.B \f[C]--debug[=N]\f[R]
|
||||
show debug output (levels 1-9, default: 1)
|
||||
.PP
|
||||
A \@FILE argument will be expanded to the contents of FILE, which should
|
||||
contain one command line option/argument per line.
|
||||
(To prevent this, insert a \f[C]\-\-\f[] argument before.)
|
||||
A \[at]FILE argument will be expanded to the contents of FILE, which
|
||||
should contain one command line option/argument per line.
|
||||
(To prevent this, insert a \f[C]--\f[R] argument before.)
|
||||
.SH KEYS
|
||||
.PP
|
||||
\f[C]?\f[] shows a help dialog listing all keys.
|
||||
\f[C]?\f[R] shows a help dialog listing all keys.
|
||||
(Some of these also appear in the quick help at the bottom of each
|
||||
screen.) Press \f[C]?\f[] again (or \f[C]ESCAPE\f[], or \f[C]LEFT\f[])
|
||||
to close it.
|
||||
screen.) Press \f[C]?\f[R] again (or \f[C]ESCAPE\f[R], or
|
||||
\f[C]LEFT\f[R]) to close it.
|
||||
The following keys work on most screens:
|
||||
.PP
|
||||
The cursor keys navigate: \f[C]right\f[] (or \f[C]enter\f[]) goes
|
||||
deeper, \f[C]left\f[] returns to the previous screen,
|
||||
\f[C]up\f[]/\f[C]down\f[]/\f[C]page\ up\f[]/\f[C]page\ down\f[]/\f[C]home\f[]/\f[C]end\f[]
|
||||
The cursor keys navigate: \f[C]right\f[R] (or \f[C]enter\f[R]) goes
|
||||
deeper, \f[C]left\f[R] returns to the previous screen,
|
||||
\f[C]up\f[R]/\f[C]down\f[R]/\f[C]page up\f[R]/\f[C]page down\f[R]/\f[C]home\f[R]/\f[C]end\f[R]
|
||||
move up and down through lists.
|
||||
Vi\-style (\f[C]h\f[]/\f[C]j\f[]/\f[C]k\f[]/\f[C]l\f[]) and Emacs\-style
|
||||
(\f[C]CTRL\-p\f[]/\f[C]CTRL\-n\f[]/\f[C]CTRL\-f\f[]/\f[C]CTRL\-b\f[])
|
||||
Vi-style (\f[C]h\f[R]/\f[C]j\f[R]/\f[C]k\f[R]/\f[C]l\f[R]) and
|
||||
Emacs-style
|
||||
(\f[C]CTRL-p\f[R]/\f[C]CTRL-n\f[R]/\f[C]CTRL-f\f[R]/\f[C]CTRL-b\f[R])
|
||||
movement keys are also supported.
|
||||
A tip: movement speed is limited by your keyboard repeat rate, to move
|
||||
faster you may want to adjust it.
|
||||
@ -269,67 +198,67 @@ faster you may want to adjust it.
|
||||
.PP
|
||||
With shift pressed, the cursor keys adjust the report period, limiting
|
||||
the transactions to be shown (by default, all are shown).
|
||||
\f[C]shift\-down/up\f[] steps downward and upward through these standard
|
||||
\f[C]shift-down/up\f[R] steps downward and upward through these standard
|
||||
report period durations: year, quarter, month, week, day.
|
||||
Then, \f[C]shift\-left/right\f[] moves to the previous/next period.
|
||||
\f[C]t\f[] sets the report period to today.
|
||||
With the \f[C]\-\-watch\f[] option, when viewing a "current" period (the
|
||||
current day, week, month, quarter, or year), the period will move
|
||||
automatically to track the current date.
|
||||
To set a non\-standard period, you can use \f[C]/\f[] and a
|
||||
\f[C]date:\f[] query.
|
||||
Then, \f[C]shift-left/right\f[R] moves to the previous/next period.
|
||||
\f[C]t\f[R] sets the report period to today.
|
||||
With the \f[C]--watch\f[R] option, when viewing a \[dq]current\[dq]
|
||||
period (the current day, week, month, quarter, or year), the period will
|
||||
move automatically to track the current date.
|
||||
To set a non-standard period, you can use \f[C]/\f[R] and a
|
||||
\f[C]date:\f[R] query.
|
||||
.PP
|
||||
\f[C]/\f[] lets you set a general filter query limiting the data shown,
|
||||
using the same query terms as in hledger and hledger\-web.
|
||||
While editing the query, you can use CTRL\-a/e/d/k, BS, cursor keys;
|
||||
press \f[C]ENTER\f[] to set it, or \f[C]ESCAPE\f[]to cancel.
|
||||
\f[C]/\f[R] lets you set a general filter query limiting the data shown,
|
||||
using the same query terms as in hledger and hledger-web.
|
||||
While editing the query, you can use CTRL-a/e/d/k, BS, cursor keys;
|
||||
press \f[C]ENTER\f[R] to set it, or \f[C]ESCAPE\f[R]to cancel.
|
||||
There are also keys for quickly adjusting some common filters like
|
||||
account depth and transaction status (see below).
|
||||
\f[C]BACKSPACE\f[] or \f[C]DELETE\f[] removes all filters, showing all
|
||||
\f[C]BACKSPACE\f[R] or \f[C]DELETE\f[R] removes all filters, showing all
|
||||
transactions.
|
||||
.PP
|
||||
As mentioned above, hledger\-ui shows auto\-generated periodic
|
||||
transactions, and hides future transactions (auto\-generated or not) by
|
||||
As mentioned above, hledger-ui shows auto-generated periodic
|
||||
transactions, and hides future transactions (auto-generated or not) by
|
||||
default.
|
||||
\f[C]F\f[] toggles showing and hiding these future transactions.
|
||||
This is similar to using a query like \f[C]date:\-tomorrow\f[], but more
|
||||
\f[C]F\f[R] toggles showing and hiding these future transactions.
|
||||
This is similar to using a query like \f[C]date:-tomorrow\f[R], but more
|
||||
convenient.
|
||||
(experimental)
|
||||
.PP
|
||||
\f[C]ESCAPE\f[] removes all filters and jumps back to the top screen.
|
||||
\f[C]ESCAPE\f[R] removes all filters and jumps back to the top screen.
|
||||
Or, it cancels a minibuffer edit or help dialog in progress.
|
||||
.PP
|
||||
\f[C]CTRL\-l\f[] redraws the screen and centers the selection if
|
||||
\f[C]CTRL-l\f[R] redraws the screen and centers the selection if
|
||||
possible (selections near the top won\[aq]t be centered, since we
|
||||
don\[aq]t scroll above the top).
|
||||
.PP
|
||||
\f[C]g\f[] reloads from the data file(s) and updates the current screen
|
||||
\f[C]g\f[R] reloads from the data file(s) and updates the current screen
|
||||
and any previous screens.
|
||||
(With large files, this could cause a noticeable pause.)
|
||||
.PP
|
||||
\f[C]I\f[] toggles balance assertion checking.
|
||||
\f[C]I\f[R] toggles balance assertion checking.
|
||||
Disabling balance assertions temporarily can be useful for
|
||||
troubleshooting.
|
||||
.PP
|
||||
\f[C]a\f[] runs command\-line hledger\[aq]s add command, and reloads the
|
||||
\f[C]a\f[R] runs command-line hledger\[aq]s add command, and reloads the
|
||||
updated file.
|
||||
This allows some basic data entry.
|
||||
.PP
|
||||
\f[C]A\f[] is like \f[C]a\f[], but runs the hledger\-iadd tool, which
|
||||
provides a curses\-style interface.
|
||||
This key will be available if \f[C]hledger\-iadd\f[] is installed in
|
||||
\f[C]A\f[R] is like \f[C]a\f[R], but runs the hledger-iadd tool, which
|
||||
provides a curses-style interface.
|
||||
This key will be available if \f[C]hledger-iadd\f[R] is installed in
|
||||
$PATH.
|
||||
.PP
|
||||
\f[C]E\f[] runs $HLEDGER_UI_EDITOR, or $EDITOR, or a default
|
||||
(\f[C]emacsclient\ \-a\ ""\ \-nw\f[]) on the journal file.
|
||||
\f[C]E\f[R] runs $HLEDGER_UI_EDITOR, or $EDITOR, or a default
|
||||
(\f[C]emacsclient -a \[dq]\[dq] -nw\f[R]) on the journal file.
|
||||
With some editors (emacs, vi), the cursor will be positioned at the
|
||||
current transaction when invoked from the register and transaction
|
||||
screens, and at the error location (if possible) when invoked from the
|
||||
error screen.
|
||||
.PP
|
||||
\f[C]q\f[] quits the application.
|
||||
\f[C]q\f[R] quits the application.
|
||||
.PP
|
||||
Additional screen\-specific keys are described below.
|
||||
Additional screen-specific keys are described below.
|
||||
.SH SCREENS
|
||||
.SS Accounts screen
|
||||
.PP
|
||||
@ -342,21 +271,21 @@ if you specify a query on the command line, it shows just the matched
|
||||
accounts and the balances from matched transactions.
|
||||
.PP
|
||||
Account names are shown as a flat list by default.
|
||||
Press \f[C]T\f[] to toggle tree mode.
|
||||
Press \f[C]T\f[R] to toggle tree mode.
|
||||
In flat mode, account balances are exclusive of subaccounts, except
|
||||
where subaccounts are hidden by a depth limit (see below).
|
||||
In tree mode, all account balances are inclusive of subaccounts.
|
||||
.PP
|
||||
To see less detail, press a number key, \f[C]1\f[] to \f[C]9\f[], to set
|
||||
a depth limit.
|
||||
Or use \f[C]\-\f[] to decrease and \f[C]+\f[]/\f[C]=\f[] to increase the
|
||||
depth limit.
|
||||
\f[C]0\f[] shows even less detail, collapsing all accounts to a single
|
||||
To see less detail, press a number key, \f[C]1\f[R] to \f[C]9\f[R], to
|
||||
set a depth limit.
|
||||
Or use \f[C]-\f[R] to decrease and \f[C]+\f[R]/\f[C]=\f[R] to increase
|
||||
the depth limit.
|
||||
\f[C]0\f[R] shows even less detail, collapsing all accounts to a single
|
||||
total.
|
||||
To remove the depth limit, set it higher than the maximum account depth,
|
||||
or press \f[C]ESCAPE\f[].
|
||||
or press \f[C]ESCAPE\f[R].
|
||||
.PP
|
||||
\f[C]H\f[] toggles between showing historical balances or period
|
||||
\f[C]H\f[R] toggles between showing historical balances or period
|
||||
balances.
|
||||
Historical balances (the default) are ending balances at the end of the
|
||||
report period, taking into account all transactions before that date
|
||||
@ -368,21 +297,21 @@ Period balances ignore transactions before the report start date, so
|
||||
they show the change in balance during the report period.
|
||||
They are more useful eg when viewing a time log.
|
||||
.PP
|
||||
\f[C]U\f[] toggles filtering by unmarked status, including or excluding
|
||||
\f[C]U\f[R] toggles filtering by unmarked status, including or excluding
|
||||
unmarked postings in the balances.
|
||||
Similarly, \f[C]P\f[] toggles pending postings, and \f[C]C\f[] toggles
|
||||
Similarly, \f[C]P\f[R] toggles pending postings, and \f[C]C\f[R] toggles
|
||||
cleared postings.
|
||||
(By default, balances include all postings; if you activate one or two
|
||||
status filters, only those postings are included; and if you activate
|
||||
all three, the filter is removed.)
|
||||
.PP
|
||||
\f[C]R\f[] toggles real mode, in which virtual postings are ignored.
|
||||
\f[C]R\f[R] toggles real mode, in which virtual postings are ignored.
|
||||
.PP
|
||||
\f[C]Z\f[] toggles nonzero mode, in which only accounts with nonzero
|
||||
balances are shown (hledger\-ui shows zero items by default, unlike
|
||||
command\-line hledger).
|
||||
\f[C]Z\f[R] toggles nonzero mode, in which only accounts with nonzero
|
||||
balances are shown (hledger-ui shows zero items by default, unlike
|
||||
command-line hledger).
|
||||
.PP
|
||||
Press \f[C]right\f[] or \f[C]enter\f[] to view an account\[aq]s
|
||||
Press \f[C]right\f[R] or \f[C]enter\f[R] to view an account\[aq]s
|
||||
transactions register.
|
||||
.SS Register screen
|
||||
.PP
|
||||
@ -399,7 +328,7 @@ inflow to this account, negative for an outflow.
|
||||
.IP \[bu] 2
|
||||
the running historical total or period total for the current account,
|
||||
after the transaction.
|
||||
This can be toggled with \f[C]H\f[].
|
||||
This can be toggled with \f[C]H\f[R].
|
||||
Similar to the accounts screen, the historical total is affected by
|
||||
transactions (filtered by the filter query) before the report start
|
||||
date, while the period total is not.
|
||||
@ -416,23 +345,23 @@ to the balance shown on the accounts screen.
|
||||
.PD 0
|
||||
.P
|
||||
.PD
|
||||
Tree mode/flat mode can be toggled with \f[C]T\f[] here also.
|
||||
Tree mode/flat mode can be toggled with \f[C]T\f[R] here also.
|
||||
.PP
|
||||
\f[C]U\f[] toggles filtering by unmarked status, showing or hiding
|
||||
\f[C]U\f[R] toggles filtering by unmarked status, showing or hiding
|
||||
unmarked transactions.
|
||||
Similarly, \f[C]P\f[] toggles pending transactions, and \f[C]C\f[]
|
||||
Similarly, \f[C]P\f[R] toggles pending transactions, and \f[C]C\f[R]
|
||||
toggles cleared transactions.
|
||||
(By default, transactions with all statuses are shown; if you activate
|
||||
one or two status filters, only those transactions are shown; and if you
|
||||
activate all three, the filter is removed.)
|
||||
.PP
|
||||
\f[C]R\f[] toggles real mode, in which virtual postings are ignored.
|
||||
\f[C]R\f[R] toggles real mode, in which virtual postings are ignored.
|
||||
.PP
|
||||
\f[C]Z\f[] toggles nonzero mode, in which only transactions posting a
|
||||
nonzero change are shown (hledger\-ui shows zero items by default,
|
||||
unlike command\-line hledger).
|
||||
\f[C]Z\f[R] toggles nonzero mode, in which only transactions posting a
|
||||
nonzero change are shown (hledger-ui shows zero items by default, unlike
|
||||
command-line hledger).
|
||||
.PP
|
||||
Press \f[C]right\f[] (or \f[C]enter\f[]) to view the selected
|
||||
Press \f[C]right\f[R] (or \f[C]enter\f[R]) to view the selected
|
||||
transaction in detail.
|
||||
.SS Transaction screen
|
||||
.PP
|
||||
@ -445,8 +374,8 @@ description, comments, along with all of its account postings are shown.
|
||||
Simple transactions have two postings, but there can be more (or in
|
||||
certain cases, fewer).
|
||||
.PP
|
||||
\f[C]up\f[] and \f[C]down\f[] will step through all transactions listed
|
||||
in the previous account register screen.
|
||||
\f[C]up\f[R] and \f[C]down\f[R] will step through all transactions
|
||||
listed in the previous account register screen.
|
||||
In the title bar, the numbers in parentheses show your position within
|
||||
that account register.
|
||||
They will vary depending on which account register you came from
|
||||
@ -463,39 +392,39 @@ normal operation.
|
||||
(Or, you can press escape to cancel the reload attempt.)
|
||||
.SH ENVIRONMENT
|
||||
.PP
|
||||
\f[B]COLUMNS\f[] The screen width to use.
|
||||
\f[B]COLUMNS\f[R] The screen width to use.
|
||||
Default: the full terminal width.
|
||||
.PP
|
||||
\f[B]LEDGER_FILE\f[] The journal file path when not specified with
|
||||
\f[C]\-f\f[].
|
||||
Default: \f[C]~/.hledger.journal\f[] (on windows, perhaps
|
||||
\f[C]C:/Users/USER/.hledger.journal\f[]).
|
||||
\f[B]LEDGER_FILE\f[R] The journal file path when not specified with
|
||||
\f[C]-f\f[R].
|
||||
Default: \f[C]\[ti]/.hledger.journal\f[R] (on windows, perhaps
|
||||
\f[C]C:/Users/USER/.hledger.journal\f[R]).
|
||||
.SH FILES
|
||||
.PP
|
||||
Reads data from one or more files in hledger journal, timeclock,
|
||||
timedot, or CSV format specified with \f[C]\-f\f[], or
|
||||
\f[C]$LEDGER_FILE\f[], or \f[C]$HOME/.hledger.journal\f[] (on windows,
|
||||
perhaps \f[C]C:/Users/USER/.hledger.journal\f[]).
|
||||
timedot, or CSV format specified with \f[C]-f\f[R], or
|
||||
\f[C]$LEDGER_FILE\f[R], or \f[C]$HOME/.hledger.journal\f[R] (on windows,
|
||||
perhaps \f[C]C:/Users/USER/.hledger.journal\f[R]).
|
||||
.SH BUGS
|
||||
.PP
|
||||
The need to precede options with \f[C]\-\-\f[] when invoked from hledger
|
||||
The need to precede options with \f[C]--\f[R] when invoked from hledger
|
||||
is awkward.
|
||||
.PP
|
||||
\f[C]\-f\-\f[] doesn\[aq]t work (hledger\-ui can\[aq]t read from stdin).
|
||||
\f[C]-f-\f[R] doesn\[aq]t work (hledger-ui can\[aq]t read from stdin).
|
||||
.PP
|
||||
\f[C]\-V\f[] affects only the accounts screen.
|
||||
\f[C]-V\f[R] affects only the accounts screen.
|
||||
.PP
|
||||
When you press \f[C]g\f[], the current and all previous screens are
|
||||
When you press \f[C]g\f[R], the current and all previous screens are
|
||||
regenerated, which may cause a noticeable pause with large files.
|
||||
Also there is no visual indication that this is in progress.
|
||||
.PP
|
||||
\f[C]\-\-watch\f[] is not yet fully robust.
|
||||
\f[C]--watch\f[R] is not yet fully robust.
|
||||
It works well for normal usage, but many file changes in a short time
|
||||
(eg saving the file thousands of times with an editor macro) can cause
|
||||
problems at least on OSX.
|
||||
Symptoms include: unresponsive UI, periodic resetting of the cursor
|
||||
position, momentary display of parse errors, high CPU usage eventually
|
||||
subsiding, and possibly a small but persistent build\-up of CPU usage
|
||||
subsiding, and possibly a small but persistent build-up of CPU usage
|
||||
until the program is restarted.
|
||||
|
||||
|
||||
|
||||
@ -3,8 +3,8 @@ This is hledger-ui.info, produced by makeinfo version 6.5 from stdin.
|
||||
|
||||
File: hledger-ui.info, Node: Top, Next: OPTIONS, Up: (dir)
|
||||
|
||||
hledger-ui(1) hledger-ui 1.14
|
||||
*****************************
|
||||
hledger-ui(1) hledger-ui 1.14.99
|
||||
********************************
|
||||
|
||||
hledger-ui is hledger's curses-style interface, providing an efficient
|
||||
full-window text UI for viewing accounts and transactions, and some
|
||||
@ -24,6 +24,7 @@ journal, timeclock, timedot, or CSV format specified with '-f', or
|
||||
'$LEDGER_FILE', or '$HOME/.hledger.journal' (on windows, perhaps
|
||||
'C:/Users/USER/.hledger.journal'). For more about this see hledger(1),
|
||||
hledger_journal(5) etc.
|
||||
|
||||
* Menu:
|
||||
|
||||
* OPTIONS::
|
||||
@ -398,19 +399,19 @@ to cancel the reload attempt.)
|
||||
|
||||
Tag Table:
|
||||
Node: Top71
|
||||
Node: OPTIONS1100
|
||||
Ref: #options1197
|
||||
Node: KEYS4616
|
||||
Ref: #keys4711
|
||||
Node: SCREENS7967
|
||||
Ref: #screens8052
|
||||
Node: Accounts screen8142
|
||||
Ref: #accounts-screen8270
|
||||
Node: Register screen10486
|
||||
Ref: #register-screen10641
|
||||
Node: Transaction screen12637
|
||||
Ref: #transaction-screen12795
|
||||
Node: Error screen13665
|
||||
Ref: #error-screen13787
|
||||
Node: OPTIONS1107
|
||||
Ref: #options1204
|
||||
Node: KEYS4623
|
||||
Ref: #keys4718
|
||||
Node: SCREENS7974
|
||||
Ref: #screens8059
|
||||
Node: Accounts screen8149
|
||||
Ref: #accounts-screen8277
|
||||
Node: Register screen10493
|
||||
Ref: #register-screen10648
|
||||
Node: Transaction screen12644
|
||||
Ref: #transaction-screen12802
|
||||
Node: Error screen13672
|
||||
Ref: #error-screen13794
|
||||
|
||||
End Tag Table
|
||||
|
||||
@ -18,9 +18,9 @@ DESCRIPTION
|
||||
|
||||
hledger-ui is hledger's curses-style interface, providing an efficient
|
||||
full-window text UI for viewing accounts and transactions, and some
|
||||
limited data entry capability. It is easier than hledger's com-
|
||||
mand-line interface, and sometimes quicker and more convenient than the
|
||||
web interface.
|
||||
limited data entry capability. It is easier than hledger's command-
|
||||
line interface, and sometimes quicker and more convenient than the web
|
||||
interface.
|
||||
|
||||
Note hledger-ui has some different defaults (experimental):
|
||||
|
||||
@ -179,22 +179,22 @@ KEYS
|
||||
or LEFT) to close it. The following keys work on most screens:
|
||||
|
||||
The cursor keys navigate: right (or enter) goes deeper, left returns to
|
||||
the previous screen, up/down/page up/page down/home/end move up and
|
||||
down through lists. Vi-style (h/j/k/l) and Emacs-style
|
||||
(CTRL-p/CTRL-n/CTRL-f/CTRL-b) movement keys are also supported. A tip:
|
||||
movement speed is limited by your keyboard repeat rate, to move faster
|
||||
you may want to adjust it. (If you're on a mac, the Karabiner app is
|
||||
one way to do that.)
|
||||
the previous screen, up/down/page up/page down/home/end move up and
|
||||
down through lists. Vi-style (h/j/k/l) and Emacs-style (CTRL-p/CTRL-
|
||||
n/CTRL-f/CTRL-b) movement keys are also supported. A tip: movement
|
||||
speed is limited by your keyboard repeat rate, to move faster you may
|
||||
want to adjust it. (If you're on a mac, the Karabiner app is one way
|
||||
to do that.)
|
||||
|
||||
With shift pressed, the cursor keys adjust the report period, limiting
|
||||
the transactions to be shown (by default, all are shown).
|
||||
shift-down/up steps downward and upward through these standard report
|
||||
period durations: year, quarter, month, week, day. Then,
|
||||
shift-left/right moves to the previous/next period. t sets the report
|
||||
period to today. With the --watch option, when viewing a "current"
|
||||
period (the current day, week, month, quarter, or year), the period
|
||||
will move automatically to track the current date. To set a non-stan-
|
||||
dard period, you can use / and a date: query.
|
||||
the transactions to be shown (by default, all are shown). shift-
|
||||
down/up steps downward and upward through these standard report period
|
||||
durations: year, quarter, month, week, day. Then, shift-left/right
|
||||
moves to the previous/next period. t sets the report period to today.
|
||||
With the --watch option, when viewing a "current" period (the current
|
||||
day, week, month, quarter, or year), the period will move automatically
|
||||
to track the current date. To set a non-standard period, you can use /
|
||||
and a date: query.
|
||||
|
||||
/ lets you set a general filter query limiting the data shown, using
|
||||
the same query terms as in hledger and hledger-web. While editing the
|
||||
@ -226,15 +226,15 @@ KEYS
|
||||
a runs command-line hledger's add command, and reloads the updated
|
||||
file. This allows some basic data entry.
|
||||
|
||||
A is like a, but runs the hledger-iadd tool, which provides a
|
||||
curses-style interface. This key will be available if hledger-iadd is
|
||||
A is like a, but runs the hledger-iadd tool, which provides a curses-
|
||||
style interface. This key will be available if hledger-iadd is
|
||||
installed in $PATH.
|
||||
|
||||
E runs $HLEDGER_UI_EDITOR, or $EDITOR, or a default (emac-
|
||||
sclient -a "" -nw) on the journal file. With some editors (emacs, vi),
|
||||
the cursor will be positioned at the current transaction when invoked
|
||||
from the register and transaction screens, and at the error location
|
||||
(if possible) when invoked from the error screen.
|
||||
E runs $HLEDGER_UI_EDITOR, or $EDITOR, or a default (emacsclient -a ""
|
||||
-nw) on the journal file. With some editors (emacs, vi), the cursor
|
||||
will be positioned at the current transaction when invoked from the
|
||||
register and transaction screens, and at the error location (if possi-
|
||||
ble) when invoked from the error screen.
|
||||
|
||||
q quits the application.
|
||||
|
||||
@ -406,4 +406,4 @@ SEE ALSO
|
||||
|
||||
|
||||
|
||||
hledger-ui 1.14 March 2019 hledger-ui(1)
|
||||
hledger-ui 1.14.99 March 2019 hledger-ui(1)
|
||||
|
||||
@ -1,34 +1,34 @@
|
||||
|
||||
.TH "hledger\-web" "1" "March 2019" "hledger\-web 1.14" "hledger User Manuals"
|
||||
.TH "hledger-web" "1" "March 2019" "hledger-web 1.14.99" "hledger User Manuals"
|
||||
|
||||
|
||||
|
||||
.SH NAME
|
||||
.PP
|
||||
hledger\-web \- web interface for the hledger accounting tool
|
||||
hledger-web - web interface for the hledger accounting tool
|
||||
.SH SYNOPSIS
|
||||
.PP
|
||||
\f[C]hledger\-web\ [OPTIONS]\f[]
|
||||
\f[C]hledger-web [OPTIONS]\f[R]
|
||||
.PD 0
|
||||
.P
|
||||
.PD
|
||||
\f[C]hledger\ web\ \-\-\ [OPTIONS]\f[]
|
||||
\f[C]hledger web -- [OPTIONS]\f[R]
|
||||
.SH DESCRIPTION
|
||||
.PP
|
||||
hledger is a cross\-platform program for tracking money, time, or any
|
||||
other commodity, using double\-entry accounting and a simple, editable
|
||||
hledger is a cross-platform program for tracking money, time, or any
|
||||
other commodity, using double-entry accounting and a simple, editable
|
||||
file format.
|
||||
hledger is inspired by and largely compatible with ledger(1).
|
||||
.PP
|
||||
hledger\-web is hledger\[aq]s web interface.
|
||||
hledger-web is hledger\[aq]s web interface.
|
||||
It starts a simple web application for browsing and adding transactions,
|
||||
and optionally opens it in a web browser window if possible.
|
||||
It provides a more user\-friendly UI than the hledger CLI or hledger\-ui
|
||||
It provides a more user-friendly UI than the hledger CLI or hledger-ui
|
||||
interface, showing more at once (accounts, the current account register,
|
||||
balance charts) and allowing history\-aware data entry, interactive
|
||||
balance charts) and allowing history-aware data entry, interactive
|
||||
searching, and bookmarking.
|
||||
.PP
|
||||
hledger\-web also lets you share a ledger with multiple users, or even
|
||||
hledger-web also lets you share a ledger with multiple users, or even
|
||||
the public web.
|
||||
There is no access control, so if you need that you should put it behind
|
||||
a suitable web proxy.
|
||||
@ -37,201 +37,135 @@ instance, it writes a numbered backup of the main journal file (only ?)
|
||||
on every edit.
|
||||
.PP
|
||||
Like hledger, it reads data from one or more files in hledger journal,
|
||||
timeclock, timedot, or CSV format specified with \f[C]\-f\f[], or
|
||||
\f[C]$LEDGER_FILE\f[], or \f[C]$HOME/.hledger.journal\f[] (on windows,
|
||||
perhaps \f[C]C:/Users/USER/.hledger.journal\f[]).
|
||||
timeclock, timedot, or CSV format specified with \f[C]-f\f[R], or
|
||||
\f[C]$LEDGER_FILE\f[R], or \f[C]$HOME/.hledger.journal\f[R] (on windows,
|
||||
perhaps \f[C]C:/Users/USER/.hledger.journal\f[R]).
|
||||
For more about this see hledger(1), hledger_journal(5) etc.
|
||||
.SH OPTIONS
|
||||
.PP
|
||||
Command\-line options and arguments may be used to set an initial filter
|
||||
Command-line options and arguments may be used to set an initial filter
|
||||
on the data.
|
||||
These filter options are not shown in the web UI, but it will be applied
|
||||
in addition to any search query entered there.
|
||||
.PP
|
||||
Note: if invoking hledger\-web as a hledger subcommand, write
|
||||
\f[C]\-\-\f[] before options, as shown in the synopsis above.
|
||||
Note: if invoking hledger-web as a hledger subcommand, write
|
||||
\f[C]--\f[R] before options, as shown in the synopsis above.
|
||||
.TP
|
||||
.B \f[C]\-\-serve\f[]
|
||||
serve and log requests, don\[aq]t browse or auto\-exit
|
||||
.RS
|
||||
.RE
|
||||
.B \f[C]--serve\f[R]
|
||||
serve and log requests, don\[aq]t browse or auto-exit
|
||||
.TP
|
||||
.B \f[C]\-\-host=IPADDR\f[]
|
||||
.B \f[C]--host=IPADDR\f[R]
|
||||
listen on this IP address (default: 127.0.0.1)
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[C]\-\-port=PORT\f[]
|
||||
.B \f[C]--port=PORT\f[R]
|
||||
listen on this TCP port (default: 5000)
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[C]\-\-base\-url=URL\f[]
|
||||
.B \f[C]--base-url=URL\f[R]
|
||||
set the base url (default: http://IPADDR:PORT).
|
||||
You would change this when sharing over the network, or integrating
|
||||
within a larger website.
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[C]\-\-file\-url=URL\f[]
|
||||
.B \f[C]--file-url=URL\f[R]
|
||||
set the static files url (default: BASEURL/static).
|
||||
hledger\-web normally serves static files itself, but if you wanted to
|
||||
hledger-web normally serves static files itself, but if you wanted to
|
||||
serve them from another server for efficiency, you would set the url
|
||||
with this.
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[C]\-\-capabilities=CAP[,CAP..]\f[]
|
||||
.B \f[C]--capabilities=CAP[,CAP..]\f[R]
|
||||
enable the view, add, and/or manage capabilities (default: view,add)
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[C]\-\-capabilities\-header=HTTPHEADER\f[]
|
||||
.B \f[C]--capabilities-header=HTTPHEADER\f[R]
|
||||
read capabilities to enable from a HTTP header, like
|
||||
X\-Sandstorm\-Permissions (default: disabled)
|
||||
.RS
|
||||
.RE
|
||||
X-Sandstorm-Permissions (default: disabled)
|
||||
.PP
|
||||
hledger input options:
|
||||
.TP
|
||||
.B \f[C]\-f\ FILE\ \-\-file=FILE\f[]
|
||||
.B \f[C]-f FILE --file=FILE\f[R]
|
||||
use a different input file.
|
||||
For stdin, use \- (default: \f[C]$LEDGER_FILE\f[] or
|
||||
\f[C]$HOME/.hledger.journal\f[])
|
||||
.RS
|
||||
.RE
|
||||
For stdin, use - (default: \f[C]$LEDGER_FILE\f[R] or
|
||||
\f[C]$HOME/.hledger.journal\f[R])
|
||||
.TP
|
||||
.B \f[C]\-\-rules\-file=RULESFILE\f[]
|
||||
.B \f[C]--rules-file=RULESFILE\f[R]
|
||||
Conversion rules file to use when reading CSV (default: FILE.rules)
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[C]\-\-separator=CHAR\f[]
|
||||
.B \f[C]--separator=CHAR\f[R]
|
||||
Field separator to expect when reading CSV (default: \[aq],\[aq])
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[C]\-\-alias=OLD=NEW\f[]
|
||||
.B \f[C]--alias=OLD=NEW\f[R]
|
||||
rename accounts named OLD to NEW
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[C]\-\-anon\f[]
|
||||
.B \f[C]--anon\f[R]
|
||||
anonymize accounts and payees
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[C]\-\-pivot\ FIELDNAME\f[]
|
||||
.B \f[C]--pivot FIELDNAME\f[R]
|
||||
use some other field or tag for the account name
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[C]\-I\ \-\-ignore\-assertions\f[]
|
||||
.B \f[C]-I --ignore-assertions\f[R]
|
||||
ignore any failing balance assertions
|
||||
.RS
|
||||
.RE
|
||||
.PP
|
||||
hledger reporting options:
|
||||
.TP
|
||||
.B \f[C]\-b\ \-\-begin=DATE\f[]
|
||||
.B \f[C]-b --begin=DATE\f[R]
|
||||
include postings/txns on or after this date
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[C]\-e\ \-\-end=DATE\f[]
|
||||
.B \f[C]-e --end=DATE\f[R]
|
||||
include postings/txns before this date
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[C]\-D\ \-\-daily\f[]
|
||||
.B \f[C]-D --daily\f[R]
|
||||
multiperiod/multicolumn report by day
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[C]\-W\ \-\-weekly\f[]
|
||||
.B \f[C]-W --weekly\f[R]
|
||||
multiperiod/multicolumn report by week
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[C]\-M\ \-\-monthly\f[]
|
||||
.B \f[C]-M --monthly\f[R]
|
||||
multiperiod/multicolumn report by month
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[C]\-Q\ \-\-quarterly\f[]
|
||||
.B \f[C]-Q --quarterly\f[R]
|
||||
multiperiod/multicolumn report by quarter
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[C]\-Y\ \-\-yearly\f[]
|
||||
.B \f[C]-Y --yearly\f[R]
|
||||
multiperiod/multicolumn report by year
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[C]\-p\ \-\-period=PERIODEXP\f[]
|
||||
.B \f[C]-p --period=PERIODEXP\f[R]
|
||||
set start date, end date, and/or reporting interval all at once using
|
||||
period expressions syntax (overrides the flags above)
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[C]\-\-date2\f[]
|
||||
.B \f[C]--date2\f[R]
|
||||
match the secondary date instead (see command help for other effects)
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[C]\-U\ \-\-unmarked\f[]
|
||||
include only unmarked postings/txns (can combine with \-P or \-C)
|
||||
.RS
|
||||
.RE
|
||||
.B \f[C]-U --unmarked\f[R]
|
||||
include only unmarked postings/txns (can combine with -P or -C)
|
||||
.TP
|
||||
.B \f[C]\-P\ \-\-pending\f[]
|
||||
.B \f[C]-P --pending\f[R]
|
||||
include only pending postings/txns
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[C]\-C\ \-\-cleared\f[]
|
||||
.B \f[C]-C --cleared\f[R]
|
||||
include only cleared postings/txns
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[C]\-R\ \-\-real\f[]
|
||||
include only non\-virtual postings
|
||||
.RS
|
||||
.RE
|
||||
.B \f[C]-R --real\f[R]
|
||||
include only non-virtual postings
|
||||
.TP
|
||||
.B \f[C]\-NUM\ \-\-depth=NUM\f[]
|
||||
.B \f[C]-NUM --depth=NUM\f[R]
|
||||
hide/aggregate accounts or postings more than NUM levels deep
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[C]\-E\ \-\-empty\f[]
|
||||
show items with zero amount, normally hidden (and vice\-versa in
|
||||
hledger\-ui/hledger\-web)
|
||||
.RS
|
||||
.RE
|
||||
.B \f[C]-E --empty\f[R]
|
||||
show items with zero amount, normally hidden (and vice-versa in
|
||||
hledger-ui/hledger-web)
|
||||
.TP
|
||||
.B \f[C]\-B\ \-\-cost\f[]
|
||||
.B \f[C]-B --cost\f[R]
|
||||
convert amounts to their cost at transaction time (using the transaction
|
||||
price, if any)
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[C]\-V\ \-\-value\f[]
|
||||
.B \f[C]-V --value\f[R]
|
||||
convert amounts to their market value on the report end date (using the
|
||||
most recent applicable market price, if any)
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[C]\-\-auto\f[]
|
||||
.B \f[C]--auto\f[R]
|
||||
apply automated posting rules to modify transactions.
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[C]\-\-forecast\f[]
|
||||
.B \f[C]--forecast\f[R]
|
||||
apply periodic transaction rules to generate future transactions, to 6
|
||||
months from now or report end date.
|
||||
.RS
|
||||
.RE
|
||||
.PP
|
||||
When a reporting option appears more than once in the command line, the
|
||||
last one takes precedence.
|
||||
@ -240,59 +174,53 @@ Some reporting options can also be written as query arguments.
|
||||
.PP
|
||||
hledger help options:
|
||||
.TP
|
||||
.B \f[C]\-h\ \-\-help\f[]
|
||||
.B \f[C]-h --help\f[R]
|
||||
show general usage (or after COMMAND, command usage)
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[C]\-\-version\f[]
|
||||
.B \f[C]--version\f[R]
|
||||
show version
|
||||
.RS
|
||||
.RE
|
||||
.TP
|
||||
.B \f[C]\-\-debug[=N]\f[]
|
||||
show debug output (levels 1\-9, default: 1)
|
||||
.RS
|
||||
.RE
|
||||
.B \f[C]--debug[=N]\f[R]
|
||||
show debug output (levels 1-9, default: 1)
|
||||
.PP
|
||||
A \@FILE argument will be expanded to the contents of FILE, which should
|
||||
contain one command line option/argument per line.
|
||||
(To prevent this, insert a \f[C]\-\-\f[] argument before.)
|
||||
A \[at]FILE argument will be expanded to the contents of FILE, which
|
||||
should contain one command line option/argument per line.
|
||||
(To prevent this, insert a \f[C]--\f[R] argument before.)
|
||||
.PP
|
||||
By default, hledger\-web starts the web app in "transient mode" and also
|
||||
opens it in your default web browser if possible.
|
||||
By default, hledger-web starts the web app in \[dq]transient mode\[dq]
|
||||
and also opens it in your default web browser if possible.
|
||||
In this mode the web app will keep running for as long as you have it
|
||||
open in a browser window, and will exit after two minutes of inactivity
|
||||
(no requests and no browser windows viewing it).
|
||||
With \f[C]\-\-serve\f[], it just runs the web app without exiting, and
|
||||
With \f[C]--serve\f[R], it just runs the web app without exiting, and
|
||||
logs requests to the console.
|
||||
.PP
|
||||
By default the server listens on IP address 127.0.0.1, accessible only
|
||||
to local requests.
|
||||
You can use \f[C]\-\-host\f[] to change this, eg
|
||||
\f[C]\-\-host\ 0.0.0.0\f[] to listen on all configured addresses.
|
||||
You can use \f[C]--host\f[R] to change this, eg \f[C]--host 0.0.0.0\f[R]
|
||||
to listen on all configured addresses.
|
||||
.PP
|
||||
Similarly, use \f[C]\-\-port\f[] to set a TCP port other than 5000, eg
|
||||
if you are running multiple hledger\-web instances.
|
||||
Similarly, use \f[C]--port\f[R] to set a TCP port other than 5000, eg if
|
||||
you are running multiple hledger-web instances.
|
||||
.PP
|
||||
You can use \f[C]\-\-base\-url\f[] to change the protocol, hostname,
|
||||
port and path that appear in hyperlinks, useful eg for integrating
|
||||
hledger\-web within a larger website.
|
||||
The default is \f[C]http://HOST:PORT/\f[] using the server\[aq]s
|
||||
configured host address and TCP port (or \f[C]http://HOST\f[] if PORT is
|
||||
80).
|
||||
You can use \f[C]--base-url\f[R] to change the protocol, hostname, port
|
||||
and path that appear in hyperlinks, useful eg for integrating
|
||||
hledger-web within a larger website.
|
||||
The default is \f[C]http://HOST:PORT/\f[R] using the server\[aq]s
|
||||
configured host address and TCP port (or \f[C]http://HOST\f[R] if PORT
|
||||
is 80).
|
||||
.PP
|
||||
With \f[C]\-\-file\-url\f[] you can set a different base url for static
|
||||
files, eg for better caching or cookie\-less serving on high performance
|
||||
With \f[C]--file-url\f[R] you can set a different base url for static
|
||||
files, eg for better caching or cookie-less serving on high performance
|
||||
websites.
|
||||
.SH PERMISSIONS
|
||||
.PP
|
||||
By default, hledger\-web allows anyone who can reach it to view the
|
||||
By default, hledger-web allows anyone who can reach it to view the
|
||||
journal and to add new transactions, but not to change existing data.
|
||||
.PP
|
||||
You can restrict who can reach it by
|
||||
.IP \[bu] 2
|
||||
setting the IP address it listens on (see \f[C]\-\-host\f[] above).
|
||||
setting the IP address it listens on (see \f[C]--host\f[R] above).
|
||||
By default it listens on 127.0.0.1, accessible to all users on the local
|
||||
machine.
|
||||
.IP \[bu] 2
|
||||
@ -302,56 +230,59 @@ custom firewall rules
|
||||
.PP
|
||||
You can restrict what the users who reach it can do, by
|
||||
.IP \[bu] 2
|
||||
using the \f[C]\-\-capabilities=CAP[,CAP..]\f[] flag when you start it,
|
||||
using the \f[C]--capabilities=CAP[,CAP..]\f[R] flag when you start it,
|
||||
enabling one or more of the following capabilities.
|
||||
The default value is \f[C]view,add\f[]:
|
||||
The default value is \f[C]view,add\f[R]:
|
||||
.RS 2
|
||||
.IP \[bu] 2
|
||||
\f[C]view\f[] \- allows viewing the journal file and all included files
|
||||
\f[C]view\f[R] - allows viewing the journal file and all included files
|
||||
.IP \[bu] 2
|
||||
\f[C]add\f[] \- allows adding new transactions to the main journal file
|
||||
\f[C]add\f[R] - allows adding new transactions to the main journal file
|
||||
.IP \[bu] 2
|
||||
\f[C]manage\f[] \- allows editing, uploading or downloading the main or
|
||||
\f[C]manage\f[R] - allows editing, uploading or downloading the main or
|
||||
included files
|
||||
.RE
|
||||
.IP \[bu] 2
|
||||
using the \f[C]\-\-capabilities\-header=HTTPHEADER\f[] flag to specify a
|
||||
using the \f[C]--capabilities-header=HTTPHEADER\f[R] flag to specify a
|
||||
HTTP header from which it will read capabilities to enable.
|
||||
hledger\-web on Sandstorm uses the X\-Sandstorm\-Permissions header to
|
||||
hledger-web on Sandstorm uses the X-Sandstorm-Permissions header to
|
||||
integrate with Sandstorm\[aq]s permissions.
|
||||
This is disabled by default.
|
||||
.SH EDITING, UPLOADING, DOWNLOADING
|
||||
.PP
|
||||
If you enable the \f[C]manage\f[] capability mentioned above, you\[aq]ll
|
||||
see a new "spanner" button to the right of the search form.
|
||||
If you enable the \f[C]manage\f[R] capability mentioned above,
|
||||
you\[aq]ll see a new \[dq]spanner\[dq] button to the right of the search
|
||||
form.
|
||||
Clicking this will let you edit, upload, or download the journal file or
|
||||
any files it includes.
|
||||
.PP
|
||||
Note, unlike any other hledger command, in this mode you (or any
|
||||
visitor) can alter or wipe the data files.
|
||||
.PP
|
||||
Normally whenever a file is changed in this way, hledger\-web saves a
|
||||
Normally whenever a file is changed in this way, hledger-web saves a
|
||||
numbered backup (assuming file permissions allow it, the disk is not
|
||||
full, etc.) hledger\-web is not aware of version control systems,
|
||||
full, etc.) hledger-web is not aware of version control systems,
|
||||
currently; if you use one, you\[aq]ll have to arrange to commit the
|
||||
changes yourself (eg with a cron job or a file watcher like entr).
|
||||
.PP
|
||||
Changes which would leave the journal file(s) unparseable or non\-valid
|
||||
Changes which would leave the journal file(s) unparseable or non-valid
|
||||
(eg with failing balance assertions) are prevented.
|
||||
(Probably.
|
||||
This needs re\-testing.)
|
||||
This needs re-testing.)
|
||||
.SH RELOADING
|
||||
.PP
|
||||
hledger\-web detects changes made to the files by other means (eg if you
|
||||
edit it directly, outside of hledger\-web), and it will show the new
|
||||
data when you reload the page or navigate to a new page.
|
||||
If a change makes a file unparseable, hledger\-web will display an error
|
||||
hledger-web detects changes made to the files by other means (eg if you
|
||||
edit it directly, outside of hledger-web), and it will show the new data
|
||||
when you reload the page or navigate to a new page.
|
||||
If a change makes a file unparseable, hledger-web will display an error
|
||||
message until the file has been fixed.
|
||||
.SH JSON API
|
||||
.PP
|
||||
In addition to the web UI, hledger\-web provides some JSON API routes.
|
||||
These are similar to the API provided by the hledger\-api tool, but it
|
||||
may be convenient to have them in hledger\-web also.
|
||||
In addition to the web UI, hledger-web provides some API routes that
|
||||
serve JSON in response to GET requests.
|
||||
Currently these are same ones provided by the hledger-api tool, but
|
||||
hledger-web will likely receive more attention than hledger-api in
|
||||
future:
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
@ -361,31 +292,65 @@ may be convenient to have them in hledger\-web also.
|
||||
/commodities
|
||||
/accounts
|
||||
/accounttransactions/#AccountName
|
||||
\f[]
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
Also, you can append a new transaction to the journal by sending a PUT
|
||||
request to \f[C]/add\f[R] (hledger-web only).
|
||||
As with the web UI\[aq]s add form, hledger-web must be started with the
|
||||
\f[C]add\f[R] capability for this (enabled by default).
|
||||
.PP
|
||||
The payload should be a valid hledger transaction as JSON, similar to
|
||||
what you get from \f[C]/transactions\f[R] or
|
||||
\f[C]/accounttransactions\f[R].
|
||||
.PP
|
||||
Another way to generate test data is with the
|
||||
\f[C]readJsonFile\f[R]/\f[C]writeJsonFile\f[R] helpers in
|
||||
Hledger.Web.Json, which read or write any of hledger\[aq]s JSON-capable
|
||||
types from or to a file.
|
||||
Eg here we write the first transaction of a sample journal:
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
$ make ghci-web
|
||||
>>> :m +*Hledger.Web.Json
|
||||
>>> writeJsonFile \[dq]txn.json\[dq] (head $ jtxns samplejournal)
|
||||
>>> :q
|
||||
$ python -m json.tool <txn.json >txn.pretty.json # optional: make human-readable
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
(sample output & discussion)
|
||||
.PP
|
||||
And here\[aq]s how to test adding that with curl:
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
$ curl -s http://127.0.0.1:5000/add -X PUT -H \[aq]Content-Type: application/json\[aq] --data-binary \[at]txn.pretty.json; echo
|
||||
\f[R]
|
||||
.fi
|
||||
.SH ENVIRONMENT
|
||||
.PP
|
||||
\f[B]LEDGER_FILE\f[] The journal file path when not specified with
|
||||
\f[C]\-f\f[].
|
||||
Default: \f[C]~/.hledger.journal\f[] (on windows, perhaps
|
||||
\f[C]C:/Users/USER/.hledger.journal\f[]).
|
||||
\f[B]LEDGER_FILE\f[R] The journal file path when not specified with
|
||||
\f[C]-f\f[R].
|
||||
Default: \f[C]\[ti]/.hledger.journal\f[R] (on windows, perhaps
|
||||
\f[C]C:/Users/USER/.hledger.journal\f[R]).
|
||||
.SH FILES
|
||||
.PP
|
||||
Reads data from one or more files in hledger journal, timeclock,
|
||||
timedot, or CSV format specified with \f[C]\-f\f[], or
|
||||
\f[C]$LEDGER_FILE\f[], or \f[C]$HOME/.hledger.journal\f[] (on windows,
|
||||
perhaps \f[C]C:/Users/USER/.hledger.journal\f[]).
|
||||
timedot, or CSV format specified with \f[C]-f\f[R], or
|
||||
\f[C]$LEDGER_FILE\f[R], or \f[C]$HOME/.hledger.journal\f[R] (on windows,
|
||||
perhaps \f[C]C:/Users/USER/.hledger.journal\f[R]).
|
||||
.SH BUGS
|
||||
.PP
|
||||
The need to precede options with \f[C]\-\-\f[] when invoked from hledger
|
||||
The need to precede options with \f[C]--\f[R] when invoked from hledger
|
||||
is awkward.
|
||||
.PP
|
||||
\f[C]\-f\-\f[] doesn\[aq]t work (hledger\-web can\[aq]t read from
|
||||
stdin).
|
||||
\f[C]-f-\f[R] doesn\[aq]t work (hledger-web can\[aq]t read from stdin).
|
||||
.PP
|
||||
Query arguments and some hledger options are ignored.
|
||||
.PP
|
||||
Does not work in text\-mode browsers.
|
||||
Does not work in text-mode browsers.
|
||||
.PP
|
||||
Does not work well on small screens.
|
||||
|
||||
|
||||
@ -3,8 +3,8 @@ This is hledger-web.info, produced by makeinfo version 6.5 from stdin.
|
||||
|
||||
File: hledger-web.info, Node: Top, Next: OPTIONS, Up: (dir)
|
||||
|
||||
hledger-web(1) hledger-web 1.14
|
||||
*******************************
|
||||
hledger-web(1) hledger-web 1.14.99
|
||||
**********************************
|
||||
|
||||
hledger-web is hledger's web interface. It starts a simple web
|
||||
application for browsing and adding transactions, and optionally opens
|
||||
@ -25,6 +25,7 @@ journal, timeclock, timedot, or CSV format specified with '-f', or
|
||||
'$LEDGER_FILE', or '$HOME/.hledger.journal' (on windows, perhaps
|
||||
'C:/Users/USER/.hledger.journal'). For more about this see hledger(1),
|
||||
hledger_journal(5) etc.
|
||||
|
||||
* Menu:
|
||||
|
||||
* OPTIONS::
|
||||
@ -287,9 +288,10 @@ File: hledger-web.info, Node: JSON API, Prev: RELOADING, Up: Top
|
||||
5 JSON API
|
||||
**********
|
||||
|
||||
In addition to the web UI, hledger-web provides some JSON API routes.
|
||||
These are similar to the API provided by the hledger-api tool, but it
|
||||
may be convenient to have them in hledger-web also.
|
||||
In addition to the web UI, hledger-web provides some API routes that
|
||||
serve JSON in response to GET requests. Currently these are same ones
|
||||
provided by the hledger-api tool, but hledger-web will likely receive
|
||||
more attention than hledger-api in future:
|
||||
|
||||
/accountnames
|
||||
/transactions
|
||||
@ -298,18 +300,43 @@ may be convenient to have them in hledger-web also.
|
||||
/accounts
|
||||
/accounttransactions/#AccountName
|
||||
|
||||
Also, you can append a new transaction to the journal by sending a
|
||||
PUT request to '/add' (hledger-web only). As with the web UI's add
|
||||
form, hledger-web must be started with the 'add' capability for this
|
||||
(enabled by default).
|
||||
|
||||
The payload should be a valid hledger transaction as JSON, similar to
|
||||
what you get from '/transactions' or '/accounttransactions'.
|
||||
|
||||
Another way to generate test data is with the
|
||||
'readJsonFile'/'writeJsonFile' helpers in Hledger.Web.Json, which read
|
||||
or write any of hledger's JSON-capable types from or to a file. Eg here
|
||||
we write the first transaction of a sample journal:
|
||||
|
||||
$ make ghci-web
|
||||
>>> :m +*Hledger.Web.Json
|
||||
>>> writeJsonFile "txn.json" (head $ jtxns samplejournal)
|
||||
>>> :q
|
||||
$ python -m json.tool <txn.json >txn.pretty.json # optional: make human-readable
|
||||
|
||||
(sample output & discussion)
|
||||
|
||||
And here's how to test adding that with curl:
|
||||
|
||||
$ curl -s http://127.0.0.1:5000/add -X PUT -H 'Content-Type: application/json' --data-binary @txn.pretty.json; echo
|
||||
|
||||
|
||||
Tag Table:
|
||||
Node: Top72
|
||||
Node: OPTIONS1354
|
||||
Ref: #options1459
|
||||
Node: PERMISSIONS6549
|
||||
Ref: #permissions6688
|
||||
Node: EDITING UPLOADING DOWNLOADING7900
|
||||
Ref: #editing-uploading-downloading8081
|
||||
Node: RELOADING8915
|
||||
Ref: #reloading9049
|
||||
Node: JSON API9359
|
||||
Ref: #json-api9453
|
||||
Node: OPTIONS1361
|
||||
Ref: #options1466
|
||||
Node: PERMISSIONS6556
|
||||
Ref: #permissions6695
|
||||
Node: EDITING UPLOADING DOWNLOADING7907
|
||||
Ref: #editing-uploading-downloading8088
|
||||
Node: RELOADING8922
|
||||
Ref: #reloading9056
|
||||
Node: JSON API9366
|
||||
Ref: #json-api9460
|
||||
|
||||
End Tag Table
|
||||
|
||||
@ -187,8 +187,8 @@ OPTIONS
|
||||
without exiting, and logs requests to the console.
|
||||
|
||||
By default the server listens on IP address 127.0.0.1, accessible only
|
||||
to local requests. You can use --host to change this, eg
|
||||
--host 0.0.0.0 to listen on all configured addresses.
|
||||
to local requests. You can use --host to change this, eg --host
|
||||
0.0.0.0 to listen on all configured addresses.
|
||||
|
||||
Similarly, use --port to set a TCP port other than 5000, eg if you are
|
||||
running multiple hledger-web instances.
|
||||
@ -260,9 +260,10 @@ RELOADING
|
||||
until the file has been fixed.
|
||||
|
||||
JSON API
|
||||
In addition to the web UI, hledger-web provides some JSON API routes.
|
||||
These are similar to the API provided by the hledger-api tool, but it
|
||||
may be convenient to have them in hledger-web also.
|
||||
In addition to the web UI, hledger-web provides some API routes that
|
||||
serve JSON in response to GET requests. Currently these are same ones
|
||||
provided by the hledger-api tool, but hledger-web will likely receive
|
||||
more attention than hledger-api in future:
|
||||
|
||||
/accountnames
|
||||
/transactions
|
||||
@ -271,6 +272,31 @@ JSON API
|
||||
/accounts
|
||||
/accounttransactions/#AccountName
|
||||
|
||||
Also, you can append a new transaction to the journal by sending a PUT
|
||||
request to /add (hledger-web only). As with the web UI's add form,
|
||||
hledger-web must be started with the add capability for this (enabled
|
||||
by default).
|
||||
|
||||
The payload should be a valid hledger transaction as JSON, similar to
|
||||
what you get from /transactions or /accounttransactions.
|
||||
|
||||
Another way to generate test data is with the readJsonFile/writeJson-
|
||||
File helpers in Hledger.Web.Json, which read or write any of hledger's
|
||||
JSON-capable types from or to a file. Eg here we write the first
|
||||
transaction of a sample journal:
|
||||
|
||||
$ make ghci-web
|
||||
>>> :m +*Hledger.Web.Json
|
||||
>>> writeJsonFile "txn.json" (head $ jtxns samplejournal)
|
||||
>>> :q
|
||||
$ python -m json.tool <txn.json >txn.pretty.json # optional: make human-readable
|
||||
|
||||
(sample output & discussion)
|
||||
|
||||
And here's how to test adding that with curl:
|
||||
|
||||
$ curl -s http://127.0.0.1:5000/add -X PUT -H 'Content-Type: application/json' --data-binary @txn.pretty.json; echo
|
||||
|
||||
ENVIRONMENT
|
||||
LEDGER_FILE The journal file path when not specified with -f. Default:
|
||||
~/.hledger.journal (on windows, perhaps C:/Users/USER/.hledger.jour-
|
||||
@ -319,4 +345,4 @@ SEE ALSO
|
||||
|
||||
|
||||
|
||||
hledger-web 1.14 March 2019 hledger-web(1)
|
||||
hledger-web 1.14.99 March 2019 hledger-web(1)
|
||||
|
||||
2850
hledger/hledger.1
2850
hledger/hledger.1
File diff suppressed because it is too large
Load Diff
@ -3,8 +3,8 @@ This is hledger.info, produced by makeinfo version 6.5 from stdin.
|
||||
|
||||
File: hledger.info, Node: Top, Next: EXAMPLES, Up: (dir)
|
||||
|
||||
hledger(1) hledger 1.14.1
|
||||
*************************
|
||||
hledger(1) hledger 1.14.99
|
||||
**************************
|
||||
|
||||
This is hledger's command-line interface (there are also curses and web
|
||||
interfaces). Its basic function is to read a plain text file describing
|
||||
@ -40,6 +40,7 @@ hledger never changes existing transactions.
|
||||
'~/.hledger.journal', or run 'hledger add' and follow the prompts. Then
|
||||
try some commands like 'hledger print' or 'hledger balance'. Run
|
||||
'hledger' with no arguments for a list of commands.
|
||||
|
||||
* Menu:
|
||||
|
||||
* EXAMPLES::
|
||||
@ -131,7 +132,7 @@ File: hledger.info, Node: OPTIONS, Next: QUERIES, Prev: EXAMPLES, Up: Top
|
||||
* Pivoting::
|
||||
* Cost::
|
||||
* Market value::
|
||||
* Combining -B and -V::
|
||||
* Combining -B -V --value::
|
||||
* Output destination::
|
||||
* Output format::
|
||||
* Regular expressions::
|
||||
@ -303,6 +304,7 @@ characters. Eg:
|
||||
|
||||
'hledger register -p 'last year' "accounts receivable
|
||||
(receivable|payable)" amt:\>100'.
|
||||
|
||||
* Menu:
|
||||
|
||||
* More escaping::
|
||||
@ -393,24 +395,38 @@ File: hledger.info, Node: Unicode characters, Next: Input files, Prev: Comman
|
||||
2.7 Unicode characters
|
||||
======================
|
||||
|
||||
hledger is expected to handle unicode (non-ascii) characters, but this
|
||||
requires a well-configured environment.
|
||||
hledger is expected to handle non-ascii characters correctly:
|
||||
|
||||
To handle unicode characters in the command line or input data, a
|
||||
system locale that can decode them must be configured (POSIX's default
|
||||
'C' locale will not work). Eg in bash, you could do:
|
||||
* they should be parsed correctly in input files and on the command
|
||||
line, by all hledger tools (add, iadd, hledger-web's
|
||||
search/add/edit forms, etc.)
|
||||
|
||||
export LANG=en_US.UTF-8
|
||||
* they should be displayed correctly by all hledger tools, and
|
||||
on-screen alignment should be preserved.
|
||||
|
||||
See Troubleshooting for more about this.
|
||||
This requires a well-configured environment. Here are some tips:
|
||||
|
||||
Unicode characters should appear correctly in hledger's output. For
|
||||
the hledger and hledger-ui tools, this requires that
|
||||
* A system locale must be configured, and it must be one that can
|
||||
decode the characters being used. In bash, you can set a locale
|
||||
like this: 'export LANG=en_US.UTF-8'. There are some more details
|
||||
in Troubleshooting. This step is essential - without it, hledger
|
||||
will quit on encountering a non-ascii character (as with all
|
||||
GHC-compiled programs).
|
||||
|
||||
* your terminal supports unicode
|
||||
* the terminal's font includes the required unicode glyphs
|
||||
* the terminal is configured to display "wide" characters as double
|
||||
width (otherwise report alignment will be off)
|
||||
* your terminal software (eg Terminal.app, iTerm, CMD.exe, xterm..)
|
||||
must support unicode
|
||||
|
||||
* the terminal must be using a font which includes the required
|
||||
unicode glyphs
|
||||
|
||||
* the terminal should be configured to display wide characters as
|
||||
double width (for report alignment)
|
||||
|
||||
* on Windows, for best results you should run hledger in the same
|
||||
kind of environment in which it was built. Eg hledger built in the
|
||||
standard CMD.EXE environment (like the binaries on our download
|
||||
page) might show display problems when run in a cygwin or msys
|
||||
terminal, and vice versa. (See eg #961).
|
||||
|
||||
|
||||
File: hledger.info, Node: Input files, Next: Smart dates, Prev: Unicode characters, Up: OPTIONS
|
||||
@ -729,22 +745,15 @@ The '-B/--cost' flag converts amounts to their cost at transaction time,
|
||||
if they have a transaction price specified.
|
||||
|
||||
|
||||
File: hledger.info, Node: Market value, Next: Combining -B and -V, Prev: Cost, Up: OPTIONS
|
||||
File: hledger.info, Node: Market value, Next: Combining -B -V --value, Prev: Cost, Up: OPTIONS
|
||||
|
||||
2.16 Market value
|
||||
=================
|
||||
|
||||
The '-V/--value' flag converts reported amounts to their current market
|
||||
value.
|
||||
Specifically, when there is a market price (P directive) for the
|
||||
amount's commodity, dated on or before today's date (or the report end
|
||||
date if specified), the amount will be converted to the price's
|
||||
commodity.
|
||||
|
||||
When there are multiple applicable P directives, -V chooses the most
|
||||
recent one, or in case of equal dates, the last-parsed one.
|
||||
|
||||
For example:
|
||||
The '-V/--market' flag converts reported amounts to their market value
|
||||
in another commodity. It uses the commodity referenced in the latest
|
||||
market price (P directive) dated on or before the valuation date. The
|
||||
default valuation date is today. For example:
|
||||
|
||||
# one euro is worth this many dollars from nov 1
|
||||
P 2016/11/01 € $1.10
|
||||
@ -773,25 +782,211 @@ specified, defaults to today)
|
||||
$ hledger -f t.j bal -N euros -V
|
||||
$103.00 assets:euros
|
||||
|
||||
Currently, hledger's -V only uses market prices recorded with P
|
||||
directives, not transaction prices (unlike Ledger).
|
||||
Ledger users: Ledger's -V also infers market prices from journal
|
||||
entries, but we don't do that. hledger's -V uses only market prices
|
||||
declared explicitly, with P directives. (Mnemonic: -B/-cost uses
|
||||
transaction prices, -V/-market uses market prices.)
|
||||
|
||||
Currently, -V has a limitation in multicolumn balance reports: it
|
||||
uses the market prices on the report end date for all columns. (Instead
|
||||
of the prices on each column's end date.)
|
||||
* Menu:
|
||||
|
||||
* More control over valuation::
|
||||
* Effect of --value on reports::
|
||||
* Some useful value reports::
|
||||
|
||||
|
||||
File: hledger.info, Node: Combining -B and -V, Next: Output destination, Prev: Market value, Up: OPTIONS
|
||||
File: hledger.info, Node: More control over valuation, Next: Effect of --value on reports, Up: Market value
|
||||
|
||||
2.17 Combining -B and -V
|
||||
========================
|
||||
2.16.1 More control over valuation
|
||||
----------------------------------
|
||||
|
||||
Using -B/-cost and -V/-value together is currently allowed, but the
|
||||
results are probably not meaningful. Let us know if you find a use for
|
||||
this.
|
||||
_(experimental, added 201905)_
|
||||
|
||||
You can control valuation more precisely with the '--value' option.
|
||||
|
||||
--value=TYPE which type of valuation should be done ? cost|end|now|YYYY-MM-DD
|
||||
|
||||
The argument is one of the keywords shown, or their first letter, or
|
||||
a custom date. The precise effect of the keywords is command-specific,
|
||||
but here is their general meaning:
|
||||
|
||||
'--value=cost' (or 'c')
|
||||
|
||||
Convert amounts to cost, using the prices recorded in transactions.
|
||||
'-B'/'--cost' does this.
|
||||
'--value=end' (or 'e')
|
||||
|
||||
Convert amounts to their value in default valuation commodity using
|
||||
market prices on the last day of the report period (or of each
|
||||
subperiod in a multiperiod report). When no report period is
|
||||
specified, uses the journal's last transaction date.
|
||||
'--value=now' (or 'n')
|
||||
|
||||
Convert amounts to their value in default valuation commodity using
|
||||
current market prices (as of when report is generated).
|
||||
'-V'/'--market' does this.
|
||||
'--value=YYYY-MM-DD'
|
||||
|
||||
Convert amounts to their value in default valuation commodity using
|
||||
market prices on the given date (which must be 8 digits with '-' or
|
||||
'/' or '.' separators). Eg '--value=2019-04-25'.
|
||||
|
||||
Here are the effects of '--value' as seen with 'print':
|
||||
|
||||
P 2000-01-01 A 1 B
|
||||
P 2000-02-01 A 2 B
|
||||
P 2000-03-01 A 3 B
|
||||
P 2000-04-01 A 4 B
|
||||
|
||||
2000-01-01
|
||||
(a) 1 A @ 5 B
|
||||
|
||||
2000-02-01
|
||||
(a) 1 A @ 6 B
|
||||
|
||||
2000-03-01
|
||||
(a) 1 A @ 7 B
|
||||
|
||||
Show the cost of each posting:
|
||||
|
||||
$ hledger -f- print --value=cost
|
||||
2000/01/01
|
||||
(a) 5 B
|
||||
|
||||
2000/02/01
|
||||
(a) 6 B
|
||||
|
||||
2000/03/01
|
||||
(a) 7 B
|
||||
|
||||
Show the value as of the last day of the report period (2000-02-29):
|
||||
|
||||
$ hledger -f- print --value=end date:2000/01-2000/03
|
||||
2000-01-01
|
||||
(a) 2 B
|
||||
|
||||
2000-02-01
|
||||
(a) 2 B
|
||||
|
||||
With no report period specified, that shows the value as of the last
|
||||
day of the journal (2000-03-01):
|
||||
|
||||
$ hledger -f- print --value=end
|
||||
2000/01/01
|
||||
(a) 3 B
|
||||
|
||||
2000/02/01
|
||||
(a) 3 B
|
||||
|
||||
2000/03/01
|
||||
(a) 3 B
|
||||
|
||||
Show the current value (the 2000-04-01 price is still in effect
|
||||
today):
|
||||
|
||||
$ hledger -f- print --value=now
|
||||
2000-01-01
|
||||
(a) 4 B
|
||||
|
||||
2000-02-01
|
||||
(a) 4 B
|
||||
|
||||
2000-03-01
|
||||
(a) 4 B
|
||||
|
||||
Show the value on 2000/01/15:
|
||||
|
||||
$ hledger -f- print --value=2000-01-15
|
||||
2000/01/01
|
||||
(a) 1 B
|
||||
|
||||
2000/02/01
|
||||
(a) 1 B
|
||||
|
||||
2000/03/01
|
||||
(a) 1 B
|
||||
|
||||
|
||||
File: hledger.info, Node: Output destination, Next: Output format, Prev: Combining -B and -V, Up: OPTIONS
|
||||
File: hledger.info, Node: Effect of --value on reports, Next: Some useful value reports, Prev: More control over valuation, Up: Market value
|
||||
|
||||
2.16.2 Effect of -value on reports
|
||||
----------------------------------
|
||||
|
||||
Below is how '--value' affects each of hledger's reports, currently.
|
||||
You're not expected to remember all this, but when troubleshooting a
|
||||
report, look here. If you find problems - useless reports, misbehaving
|
||||
reports, or error messages being printed - please report them (with
|
||||
reproducible examples) eg at #329.
|
||||
|
||||
Report type '--value' '--value' 'end' '--value'
|
||||
'cost' 'DATE'/'now'
|
||||
----------------------------------------------------------------------------
|
||||
*print*
|
||||
posting cost, as market value at report market value at
|
||||
amounts recorded in end DATE
|
||||
transaction
|
||||
balance show show unvalued show unvalued
|
||||
assertions/assignmentsunvalued
|
||||
*register*
|
||||
starting cost of market value at day market value at
|
||||
balance starting before report start DATE
|
||||
with -H balance
|
||||
posting cost market value at report market value at
|
||||
amounts end DATE
|
||||
posting summarised market value each market value each
|
||||
amounts, cost summary posting at summary posting
|
||||
multiperiod period end at DATE
|
||||
running sum/average sum/average of the sum/average of
|
||||
total/average of the displayed values the displayed
|
||||
displayed values
|
||||
values
|
||||
*balance
|
||||
(bs, cf,
|
||||
is..)*
|
||||
starting costs of market value at day market value at
|
||||
balances starting before report start of DATE of sum of
|
||||
with -H balances sum of previous postings previous postings
|
||||
balances, summed costs market value at period market value at
|
||||
simple end of sum of postings DATE of sum of
|
||||
balance postings
|
||||
report
|
||||
balances, summed costs market value at period market value at
|
||||
multiperiod end of sum of postings DATE of sum of
|
||||
report postings
|
||||
budget costs of budget-setting periodic budget-setting
|
||||
amounts budget txns are valued at periodic txns are
|
||||
with amounts period end valued at DATE
|
||||
-budget
|
||||
column/row/grandsum/average market value at period market value at
|
||||
totals/averagesof the end of sum/average of DATE of
|
||||
displayed postings sum/average of
|
||||
values postings
|
||||
|
||||
|
||||
File: hledger.info, Node: Some useful value reports, Prev: Effect of --value on reports, Up: Market value
|
||||
|
||||
2.16.3 Some useful value reports
|
||||
--------------------------------
|
||||
|
||||
Here are some probably useful reports - please send suggestions if you
|
||||
find out more:
|
||||
|
||||
Command: Description of report: Could answer:
|
||||
---------------------------------------------------------------------------
|
||||
'hledger bs -M Monthly historical value How are my investments
|
||||
--value=p' of assets/liabilities performing ?
|
||||
'hledger is -M Monthly contemporaneous How much foreign currency
|
||||
--value=t' value of revenues/expenses have I been spending ?
|
||||
|
||||
|
||||
File: hledger.info, Node: Combining -B -V --value, Next: Output destination, Prev: Market value, Up: OPTIONS
|
||||
|
||||
2.17 Combining -B, -V, -value
|
||||
=============================
|
||||
|
||||
The rightmost of these flags wins.
|
||||
|
||||
|
||||
File: hledger.info, Node: Output destination, Next: Output format, Prev: Combining -B -V --value, Up: OPTIONS
|
||||
|
||||
2.18 Output destination
|
||||
=======================
|
||||
@ -987,6 +1182,7 @@ unambiguous prefix of a command name ('hledger inc').
|
||||
Here are all the builtin commands in alphabetical order. See also
|
||||
'hledger' for a more organised command list, and 'hledger CMD -h' for
|
||||
detailed command help.
|
||||
|
||||
* Menu:
|
||||
|
||||
* accounts::
|
||||
@ -1162,6 +1358,7 @@ show real-world account balances. In some cases the -H/-historical flag
|
||||
is used to ensure this (more below).
|
||||
|
||||
The balance command can produce several styles of report:
|
||||
|
||||
* Menu:
|
||||
|
||||
* Classic balance report::
|
||||
@ -1250,7 +1447,9 @@ with data fields interpolated like so:
|
||||
'%[MIN][.MAX](FIELDNAME)'
|
||||
|
||||
* MIN pads with spaces to at least this width (optional)
|
||||
|
||||
* MAX truncates at this width (optional)
|
||||
|
||||
* FIELDNAME must be enclosed in parentheses, and can be one of:
|
||||
|
||||
* 'depth_spacer' - a number of spaces equal to the account's
|
||||
@ -1390,6 +1589,10 @@ different information:
|
||||
----------------------++-------------------------------------
|
||||
|| 0 0 0
|
||||
|
||||
Note that '--cumulative' or '--historical/-H' disable
|
||||
'--row-total/-T', since summing end balances generally does not make
|
||||
sense.
|
||||
|
||||
Multicolumn balance reports display accounts in flat mode by default;
|
||||
to see the hierarchy, use '--tree'.
|
||||
|
||||
@ -1557,6 +1760,7 @@ Budget performance in 2017/11/01-2017/12/31:
|
||||
|| 0 [ 0] 0 [ 0]
|
||||
|
||||
For more examples, see Budgeting and Forecasting.
|
||||
|
||||
* Menu:
|
||||
|
||||
* Nested budgets::
|
||||
@ -1696,7 +1900,9 @@ Total:
|
||||
each report period. As with multicolumn balance reports, you can alter
|
||||
the report mode with '--change'/'--cumulative'/'--historical'. Normally
|
||||
balancesheet shows historical ending balances, which is what you need
|
||||
for a balance sheet; note this means it ignores report begin dates.
|
||||
for a balance sheet; note this means it ignores report begin dates (and
|
||||
'-T/--row-total', since summing end balances generally does not make
|
||||
sense).
|
||||
|
||||
This command also supports output destination and output format
|
||||
selection.
|
||||
@ -1815,7 +2021,7 @@ end of a period.
|
||||
|
||||
The closing transaction transfers balances to "equity:closing
|
||||
balances". The opening transaction transfers balances from
|
||||
"equity:opening balances". You can chose to print just one of the
|
||||
"equity:opening balances". You can choose to print just one of the
|
||||
transactions by using the '--opening' or '--closing' flag.
|
||||
|
||||
If you split your journal files by time (eg yearly), you will
|
||||
@ -1959,6 +2165,29 @@ see only uncategorised transactions:
|
||||
|
||||
$ hledger import --dry ... | hledger -f- print unknown --ignore-assertions
|
||||
|
||||
* Menu:
|
||||
|
||||
* Importing balance assignments::
|
||||
|
||||
|
||||
File: hledger.info, Node: Importing balance assignments, Up: import
|
||||
|
||||
4.13.1 Importing balance assignments
|
||||
------------------------------------
|
||||
|
||||
Entries added by import will have their posting amounts made explicit
|
||||
(like 'hledger print -x'). This means that any balance assignments in
|
||||
imported files must be evaluated; but, imported files don't get to see
|
||||
the main file's account balances. As a result, importing entries with
|
||||
balance assignments (eg from an institution that provides only balances
|
||||
and not posting amounts) will probably generate incorrect posting
|
||||
amounts. To avoid this problem, use print instead of import:
|
||||
|
||||
$ hledger print IMPORTFILE [--new] >> $LEDGER_FILE
|
||||
|
||||
(If you think import should leave amounts implicit like print does,
|
||||
please test it and send a pull request.)
|
||||
|
||||
|
||||
File: hledger.info, Node: incomestatement, Next: prices, Prev: import, Up: COMMANDS
|
||||
|
||||
@ -2225,6 +2454,7 @@ $ hledger register --monthly assets --depth 1h
|
||||
these will be adjusted outward if necessary to contain a whole number of
|
||||
intervals. This ensures that the first and last intervals are full
|
||||
length and comparable to the others in the report.
|
||||
|
||||
* Menu:
|
||||
|
||||
* Custom register output::
|
||||
@ -2292,9 +2522,9 @@ transaction's first posting amount.
|
||||
|
||||
Examples:
|
||||
|
||||
hledger-rewrite.hs ^income --add-posting '(liabilities:tax) *.33 ; income tax' --add-posting '(reserve:gifts) $100'
|
||||
hledger-rewrite.hs expenses:gifts --add-posting '(reserve:gifts) *-1"'
|
||||
hledger-rewrite.hs -f rewrites.hledger
|
||||
$ hledger-rewrite.hs ^income --add-posting '(liabilities:tax) *.33 ; income tax' --add-posting '(reserve:gifts) $100'
|
||||
$ hledger-rewrite.hs expenses:gifts --add-posting '(reserve:gifts) *-1"'
|
||||
$ hledger-rewrite.hs -f rewrites.hledger
|
||||
|
||||
rewrites.hledger may consist of entries like:
|
||||
|
||||
@ -2557,6 +2787,7 @@ haskell) library functions that built-in commands do, for command-line
|
||||
options, journal parsing, reporting, etc.
|
||||
|
||||
Here are some hledger add-ons available:
|
||||
|
||||
* Menu:
|
||||
|
||||
* Official add-ons::
|
||||
@ -2570,6 +2801,7 @@ File: hledger.info, Node: Official add-ons, Next: Third party add-ons, Up: AD
|
||||
====================
|
||||
|
||||
These are maintained and released along with hledger.
|
||||
|
||||
* Menu:
|
||||
|
||||
* api::
|
||||
@ -2608,6 +2840,7 @@ File: hledger.info, Node: Third party add-ons, Next: Experimental add-ons, Pr
|
||||
|
||||
These are maintained separately, and usually updated shortly after a
|
||||
hledger release.
|
||||
|
||||
* Menu:
|
||||
|
||||
* diff::
|
||||
@ -2661,6 +2894,7 @@ These are available in source form in the hledger repo's bin/ directory;
|
||||
installing them is pretty easy. They may be less mature and documented
|
||||
than built-in commands. Reading and tweaking these is a good way to
|
||||
start making your own!
|
||||
|
||||
* Menu:
|
||||
|
||||
* autosync::
|
||||
@ -2697,160 +2931,168 @@ hledger-check.hs checks more powerful account balance assertions.
|
||||
|
||||
Tag Table:
|
||||
Node: Top68
|
||||
Node: EXAMPLES1888
|
||||
Ref: #examples1988
|
||||
Node: OPTIONS3634
|
||||
Ref: #options3736
|
||||
Node: General options4171
|
||||
Ref: #general-options4296
|
||||
Node: Command options6978
|
||||
Ref: #command-options7129
|
||||
Node: Command arguments7527
|
||||
Ref: #command-arguments7681
|
||||
Node: Argument files7802
|
||||
Ref: #argument-files7978
|
||||
Node: Special characters in arguments and queries8244
|
||||
Ref: #special-characters-in-arguments-and-queries8478
|
||||
Node: More escaping8928
|
||||
Ref: #more-escaping9090
|
||||
Node: Even more escaping9386
|
||||
Ref: #even-more-escaping9580
|
||||
Node: Less escaping10251
|
||||
Ref: #less-escaping10413
|
||||
Node: Command line tips10658
|
||||
Ref: #command-line-tips10844
|
||||
Node: Unicode characters11221
|
||||
Ref: #unicode-characters11377
|
||||
Node: Input files12102
|
||||
Ref: #input-files12238
|
||||
Node: Smart dates14208
|
||||
Ref: #smart-dates14349
|
||||
Node: Report start & end date15755
|
||||
Ref: #report-start-end-date15927
|
||||
Node: Report intervals16993
|
||||
Ref: #report-intervals17158
|
||||
Node: Period expressions17559
|
||||
Ref: #period-expressions17719
|
||||
Node: Depth limiting21676
|
||||
Ref: #depth-limiting21820
|
||||
Node: Pivoting22162
|
||||
Ref: #pivoting22280
|
||||
Node: Cost23956
|
||||
Ref: #cost24064
|
||||
Node: Market value24182
|
||||
Ref: #market-value24317
|
||||
Node: Combining -B and -V25683
|
||||
Ref: #combining--b-and--v25846
|
||||
Node: Output destination25993
|
||||
Ref: #output-destination26155
|
||||
Node: Output format26438
|
||||
Ref: #output-format26590
|
||||
Node: Regular expressions26975
|
||||
Ref: #regular-expressions27112
|
||||
Node: QUERIES28473
|
||||
Ref: #queries28575
|
||||
Node: COMMANDS32537
|
||||
Ref: #commands32649
|
||||
Node: accounts33649
|
||||
Ref: #accounts33747
|
||||
Node: activity34446
|
||||
Ref: #activity34556
|
||||
Node: add34939
|
||||
Ref: #add35038
|
||||
Node: balance37625
|
||||
Ref: #balance37736
|
||||
Node: Classic balance report39177
|
||||
Ref: #classic-balance-report39350
|
||||
Node: Customising the classic balance report40719
|
||||
Ref: #customising-the-classic-balance-report40947
|
||||
Node: Colour support43021
|
||||
Ref: #colour-support43188
|
||||
Node: Flat mode43361
|
||||
Ref: #flat-mode43509
|
||||
Node: Depth limited balance reports43922
|
||||
Ref: #depth-limited-balance-reports44122
|
||||
Node: Multicolumn balance report44578
|
||||
Ref: #multicolumn-balance-report44776
|
||||
Node: Budget report49956
|
||||
Ref: #budget-report50099
|
||||
Node: Nested budgets55300
|
||||
Ref: #nested-budgets55412
|
||||
Ref: #output-format-158892
|
||||
Node: balancesheet58970
|
||||
Ref: #balancesheet59106
|
||||
Node: balancesheetequity60340
|
||||
Ref: #balancesheetequity60489
|
||||
Node: cashflow61050
|
||||
Ref: #cashflow61178
|
||||
Node: check-dates62206
|
||||
Ref: #check-dates62333
|
||||
Node: check-dupes62612
|
||||
Ref: #check-dupes62736
|
||||
Node: close63029
|
||||
Ref: #close63137
|
||||
Node: files66550
|
||||
Ref: #files66651
|
||||
Node: help66798
|
||||
Ref: #help66898
|
||||
Node: import67991
|
||||
Ref: #import68105
|
||||
Node: incomestatement68849
|
||||
Ref: #incomestatement68983
|
||||
Node: prices70319
|
||||
Ref: #prices70434
|
||||
Node: print70713
|
||||
Ref: #print70823
|
||||
Node: print-unique75316
|
||||
Ref: #print-unique75442
|
||||
Node: register75727
|
||||
Ref: #register75854
|
||||
Node: Custom register output80025
|
||||
Ref: #custom-register-output80154
|
||||
Node: register-match81416
|
||||
Ref: #register-match81550
|
||||
Node: rewrite81901
|
||||
Ref: #rewrite82016
|
||||
Node: Re-write rules in a file83865
|
||||
Ref: #re-write-rules-in-a-file83999
|
||||
Node: Diff output format85209
|
||||
Ref: #diff-output-format85378
|
||||
Node: rewrite vs print --auto86470
|
||||
Ref: #rewrite-vs.-print---auto86649
|
||||
Node: roi87205
|
||||
Ref: #roi87303
|
||||
Node: stats88315
|
||||
Ref: #stats88414
|
||||
Node: tags89168
|
||||
Ref: #tags89266
|
||||
Node: test89496
|
||||
Ref: #test89580
|
||||
Node: ADD-ON COMMANDS90341
|
||||
Ref: #add-on-commands90451
|
||||
Node: Official add-ons91738
|
||||
Ref: #official-add-ons91878
|
||||
Node: api91965
|
||||
Ref: #api92054
|
||||
Node: ui92106
|
||||
Ref: #ui92205
|
||||
Node: web92263
|
||||
Ref: #web92352
|
||||
Node: Third party add-ons92398
|
||||
Ref: #third-party-add-ons92573
|
||||
Node: diff92708
|
||||
Ref: #diff92805
|
||||
Node: iadd92904
|
||||
Ref: #iadd93018
|
||||
Node: interest93101
|
||||
Ref: #interest93222
|
||||
Node: irr93317
|
||||
Ref: #irr93415
|
||||
Node: Experimental add-ons93546
|
||||
Ref: #experimental-add-ons93698
|
||||
Node: autosync93978
|
||||
Ref: #autosync94089
|
||||
Node: chart94328
|
||||
Ref: #chart94447
|
||||
Node: check94518
|
||||
Ref: #check94620
|
||||
Node: EXAMPLES1891
|
||||
Ref: #examples1991
|
||||
Node: OPTIONS3637
|
||||
Ref: #options3739
|
||||
Node: General options4178
|
||||
Ref: #general-options4303
|
||||
Node: Command options6985
|
||||
Ref: #command-options7136
|
||||
Node: Command arguments7534
|
||||
Ref: #command-arguments7688
|
||||
Node: Argument files7809
|
||||
Ref: #argument-files7985
|
||||
Node: Special characters in arguments and queries8251
|
||||
Ref: #special-characters-in-arguments-and-queries8485
|
||||
Node: More escaping8936
|
||||
Ref: #more-escaping9098
|
||||
Node: Even more escaping9394
|
||||
Ref: #even-more-escaping9588
|
||||
Node: Less escaping10259
|
||||
Ref: #less-escaping10421
|
||||
Node: Command line tips10666
|
||||
Ref: #command-line-tips10852
|
||||
Node: Unicode characters11229
|
||||
Ref: #unicode-characters11385
|
||||
Node: Input files12797
|
||||
Ref: #input-files12933
|
||||
Node: Smart dates14903
|
||||
Ref: #smart-dates15044
|
||||
Node: Report start & end date16450
|
||||
Ref: #report-start-end-date16622
|
||||
Node: Report intervals17688
|
||||
Ref: #report-intervals17853
|
||||
Node: Period expressions18254
|
||||
Ref: #period-expressions18414
|
||||
Node: Depth limiting22371
|
||||
Ref: #depth-limiting22515
|
||||
Node: Pivoting22857
|
||||
Ref: #pivoting22975
|
||||
Node: Cost24651
|
||||
Ref: #cost24759
|
||||
Node: Market value24877
|
||||
Ref: #market-value25016
|
||||
Node: More control over valuation26257
|
||||
Ref: #more-control-over-valuation26442
|
||||
Node: Effect of --value on reports28897
|
||||
Ref: #effect-of---value-on-reports29116
|
||||
Node: Some useful value reports31807
|
||||
Ref: #some-useful-value-reports31986
|
||||
Node: Combining -B -V --value32484
|
||||
Ref: #combining--b--v---value32661
|
||||
Node: Output destination32697
|
||||
Ref: #output-destination32863
|
||||
Node: Output format33146
|
||||
Ref: #output-format33298
|
||||
Node: Regular expressions33683
|
||||
Ref: #regular-expressions33820
|
||||
Node: QUERIES35181
|
||||
Ref: #queries35283
|
||||
Node: COMMANDS39245
|
||||
Ref: #commands39357
|
||||
Node: accounts40358
|
||||
Ref: #accounts40456
|
||||
Node: activity41155
|
||||
Ref: #activity41265
|
||||
Node: add41648
|
||||
Ref: #add41747
|
||||
Node: balance44334
|
||||
Ref: #balance44445
|
||||
Node: Classic balance report45887
|
||||
Ref: #classic-balance-report46060
|
||||
Node: Customising the classic balance report47429
|
||||
Ref: #customising-the-classic-balance-report47657
|
||||
Node: Colour support49733
|
||||
Ref: #colour-support49900
|
||||
Node: Flat mode50073
|
||||
Ref: #flat-mode50221
|
||||
Node: Depth limited balance reports50634
|
||||
Ref: #depth-limited-balance-reports50834
|
||||
Node: Multicolumn balance report51290
|
||||
Ref: #multicolumn-balance-report51488
|
||||
Node: Budget report56802
|
||||
Ref: #budget-report56945
|
||||
Node: Nested budgets62147
|
||||
Ref: #nested-budgets62259
|
||||
Ref: #output-format-165739
|
||||
Node: balancesheet65817
|
||||
Ref: #balancesheet65953
|
||||
Node: balancesheetequity67268
|
||||
Ref: #balancesheetequity67417
|
||||
Node: cashflow67978
|
||||
Ref: #cashflow68106
|
||||
Node: check-dates69134
|
||||
Ref: #check-dates69261
|
||||
Node: check-dupes69540
|
||||
Ref: #check-dupes69664
|
||||
Node: close69957
|
||||
Ref: #close70065
|
||||
Node: files73479
|
||||
Ref: #files73580
|
||||
Node: help73727
|
||||
Ref: #help73827
|
||||
Node: import74920
|
||||
Ref: #import75034
|
||||
Node: Importing balance assignments75822
|
||||
Ref: #importing-balance-assignments75970
|
||||
Node: incomestatement76619
|
||||
Ref: #incomestatement76753
|
||||
Node: prices78089
|
||||
Ref: #prices78204
|
||||
Node: print78483
|
||||
Ref: #print78593
|
||||
Node: print-unique83086
|
||||
Ref: #print-unique83212
|
||||
Node: register83497
|
||||
Ref: #register83624
|
||||
Node: Custom register output87796
|
||||
Ref: #custom-register-output87925
|
||||
Node: register-match89187
|
||||
Ref: #register-match89321
|
||||
Node: rewrite89672
|
||||
Ref: #rewrite89787
|
||||
Node: Re-write rules in a file91642
|
||||
Ref: #re-write-rules-in-a-file91776
|
||||
Node: Diff output format92986
|
||||
Ref: #diff-output-format93155
|
||||
Node: rewrite vs print --auto94247
|
||||
Ref: #rewrite-vs.-print---auto94426
|
||||
Node: roi94982
|
||||
Ref: #roi95080
|
||||
Node: stats96092
|
||||
Ref: #stats96191
|
||||
Node: tags96945
|
||||
Ref: #tags97043
|
||||
Node: test97273
|
||||
Ref: #test97357
|
||||
Node: ADD-ON COMMANDS98118
|
||||
Ref: #add-on-commands98228
|
||||
Node: Official add-ons99516
|
||||
Ref: #official-add-ons99656
|
||||
Node: api99744
|
||||
Ref: #api99833
|
||||
Node: ui99885
|
||||
Ref: #ui99984
|
||||
Node: web100042
|
||||
Ref: #web100131
|
||||
Node: Third party add-ons100177
|
||||
Ref: #third-party-add-ons100352
|
||||
Node: diff100488
|
||||
Ref: #diff100585
|
||||
Node: iadd100684
|
||||
Ref: #iadd100798
|
||||
Node: interest100881
|
||||
Ref: #interest101002
|
||||
Node: irr101097
|
||||
Ref: #irr101195
|
||||
Node: Experimental add-ons101326
|
||||
Ref: #experimental-add-ons101478
|
||||
Node: autosync101759
|
||||
Ref: #autosync101870
|
||||
Node: chart102109
|
||||
Ref: #chart102228
|
||||
Node: check102299
|
||||
Ref: #check102401
|
||||
|
||||
End Tag Table
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user