;doc: update manuals

This commit is contained in:
Simon Michael 2022-11-03 08:31:47 -10:00
parent 14c31cc23d
commit 80eb461063
12 changed files with 2862 additions and 2656 deletions

View File

@ -1,2 +1,2 @@
m4_dnl Date to show in man pages. Updated by "Shake manuals" m4_dnl Date to show in man pages. Updated by "Shake manuals"
m4_define({{_monthyear_}}, {{October 2022}})m4_dnl m4_define({{_monthyear_}}, {{November 2022}})m4_dnl

View File

@ -1,2 +1,2 @@
m4_dnl Date to show in man pages. Updated by "Shake manuals" m4_dnl Date to show in man pages. Updated by "Shake manuals"
m4_define({{_monthyear_}}, {{October 2022}})m4_dnl m4_define({{_monthyear_}}, {{November 2022}})m4_dnl

View File

@ -1,5 +1,5 @@
.TH "HLEDGER-UI" "1" "October 2022" "hledger-ui-1.27.99 " "hledger User Manuals" .TH "HLEDGER-UI" "1" "November 2022" "hledger-ui-1.27.99 " "hledger User Manuals"

View File

@ -574,4 +574,4 @@ SEE ALSO
hledger-ui-1.27.99 October 2022 HLEDGER-UI(1) hledger-ui-1.27.99 November 2022 HLEDGER-UI(1)

View File

@ -1,2 +1,2 @@
m4_dnl Date to show in man pages. Updated by "Shake manuals" m4_dnl Date to show in man pages. Updated by "Shake manuals"
m4_define({{_monthyear_}}, {{October 2022}})m4_dnl m4_define({{_monthyear_}}, {{November 2022}})m4_dnl

View File

@ -1,5 +1,5 @@
.TH "HLEDGER-WEB" "1" "October 2022" "hledger-web-1.27.99 " "hledger User Manuals" .TH "HLEDGER-WEB" "1" "November 2022" "hledger-web-1.27.99 " "hledger User Manuals"
@ -9,11 +9,18 @@ hledger-web is a web interface (WUI) for the hledger accounting tool.
This manual is for hledger-web 1.27.99. This manual is for hledger-web 1.27.99.
.SH SYNOPSIS .SH SYNOPSIS
.PP .PP
\f[C]hledger-web [OPTIONS]\f[R] \f[C]hledger-web [OPTIONS] # run temporarily & browse\f[R]
.PD 0
.P
.PD
\f[C]hledger-web --serve [OPTIONS] # run without stopping\f[R]
.PD 0
.P
.PD
\f[C]hledger-web --serve-api [OPTIONS] # run JSON server only\f[R]
.PD 0 .PD 0
.P .P
.PD .PD
\f[C]hledger web -- [OPTIONS]\f[R]
.SH DESCRIPTION .SH DESCRIPTION
.PP .PP
hledger is a reliable, cross-platform set of programs for tracking hledger is a reliable, cross-platform set of programs for tracking
@ -21,27 +28,41 @@ money, time, or any other commodity, using double-entry accounting and a
simple, editable file format. simple, editable file format.
hledger is inspired by and largely compatible with ledger(1). hledger is inspired by and largely compatible with ledger(1).
.PP .PP
hledger-web is hledger\[aq]s web interface. hledger-web is a simple web application for browsing and adding
It starts a simple web application for browsing and adding transactions, 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, TUI, 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. searching, and bookmarking.
.PP .PP
hledger-web also lets you share a ledger with multiple users, or even hledger-web also lets you share a journal with multiple users, or even
the public web. the public web.
There is no access control, so if you need that you should put it behind There is no access control, so if you need that you should put it behind
a suitable web proxy. a suitable web proxy.
As a small protection against data loss when running an unprotected As a small protection against data loss when running an unprotected
instance, it writes a numbered backup of the main journal file (only ?) instance, it writes a numbered backup of the main journal file (only) on
on every edit. every edit.
.PP .PP
Like hledger, it reads data from one or more files in hledger journal, Like hledger, it reads data from one or more files in hledger journal,
timeclock, timedot, or CSV format specified with \f[C]-f\f[R], or 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, \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]). perhaps \f[C]C:/Users/USER/.hledger.journal\f[R]).
For more about this see hledger(1). For more about this see hledger(1).
.PP
hledger-web can be run in three modes:
.IP \[bu] 2
Transient mode (the default): your default web browser will be opened to
show the app if possible, and the app exits automatically after two
minutes of inactivity (no requests received and no open browser windows
viewing it).
.IP \[bu] 2
With \f[C]--serve\f[R]: the app runs without stopping, and without
opening a browser.
.IP \[bu] 2
With \f[C]--serve-api\f[R]: only the JSON API is served.
.PP
In all cases hledger-web runs as a foreground process, logging requests
to stdout.
.SH OPTIONS .SH OPTIONS
.PP .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
@ -53,7 +74,7 @@ Note: if invoking hledger-web as a hledger subcommand, write
\f[C]--\f[R] before options, as shown in the synopsis above. \f[C]--\f[R] before options, as shown in the synopsis above.
.TP .TP
\f[B]\f[CB]--serve\f[B]\f[R] \f[B]\f[CB]--serve\f[B]\f[R]
serve and log requests, don\[aq]t browse or auto-exit serve and log requests, don\[aq]t browse or auto-exit after timeout
.TP .TP
\f[B]\f[CB]--serve-api\f[B]\f[R] \f[B]\f[CB]--serve-api\f[B]\f[R]
like --serve, but serve only the JSON web API, without the server-side like --serve, but serve only the JSON web API, without the server-side
@ -249,16 +270,6 @@ A \[at]FILE argument will be expanded to the contents of FILE, which
should contain one command line option/argument per line. should contain one command line option/argument per line.
(To prevent this, insert a \f[C]--\f[R] argument before.) (To prevent this, insert a \f[C]--\f[R] argument before.)
.PP .PP
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[R], it just runs the web app without exiting, and
logs requests to the console.
With \f[C]--serve-api\f[R], only the JSON web api (see below) is served,
with the usual HTML server-side web UI disabled.
.PP
By default the server listens on IP address 127.0.0.1, accessible only By default the server listens on IP address 127.0.0.1, accessible only
to local requests. to local requests.
You can use \f[C]--host\f[R] to change this, eg \f[C]--host 0.0.0.0\f[R] You can use \f[C]--host\f[R] to change this, eg \f[C]--host 0.0.0.0\f[R]

View File

@ -14,33 +14,47 @@ hledger-web(1)
hledger-web is a web interface (WUI) for the hledger accounting tool. hledger-web is a web interface (WUI) for the hledger accounting tool.
This manual is for hledger-web 1.27.99. This manual is for hledger-web 1.27.99.
'hledger-web [OPTIONS]' 'hledger-web [OPTIONS] # run temporarily & browse'
'hledger web -- [OPTIONS]' 'hledger-web --serve [OPTIONS] # run without stopping'
'hledger-web --serve-api [OPTIONS] # run JSON server only'
hledger is a reliable, cross-platform set of programs for tracking hledger is a reliable, cross-platform set of programs for tracking
money, time, or any other commodity, using double-entry accounting and a money, time, or any other commodity, using double-entry accounting and a
simple, editable file format. hledger is inspired by and largely simple, editable file format. hledger is inspired by and largely
compatible with ledger(1). compatible with ledger(1).
hledger-web is hledger's web interface. It starts a simple web hledger-web is a simple web application for browsing and adding
application for browsing and adding transactions, and optionally opens transactions. It provides a more user-friendly UI than the hledger CLI
it in a web browser window if possible. It provides a more or hledger-ui TUI, showing more at once (accounts, the current account
user-friendly UI than the hledger CLI or hledger-ui interface, showing register, balance charts) and allowing history-aware data entry,
more at once (accounts, the current account register, balance charts) interactive searching, and bookmarking.
and allowing history-aware data entry, interactive searching, and
bookmarking.
hledger-web also lets you share a ledger with multiple users, or even hledger-web also lets you share a journal with multiple users, or
the public web. There is no access control, so if you need that you even the public web. There is no access control, so if you need that
should put it behind a suitable web proxy. As a small protection you should put it behind a suitable web proxy. As a small protection
against data loss when running an unprotected instance, it writes a against data loss when running an unprotected instance, it writes a
numbered backup of the main journal file (only ?) on every edit. numbered backup of the main journal file (only) on every edit.
Like hledger, it reads data from one or more files in hledger Like hledger, it reads data from one or more files in hledger
journal, timeclock, timedot, or CSV format specified with '-f', or journal, timeclock, timedot, or CSV format specified with '-f', or
'$LEDGER_FILE', or '$HOME/.hledger.journal' (on windows, perhaps '$LEDGER_FILE', or '$HOME/.hledger.journal' (on windows, perhaps
'C:/Users/USER/.hledger.journal'). For more about this see hledger(1). 'C:/Users/USER/.hledger.journal'). For more about this see hledger(1).
hledger-web can be run in three modes:
* Transient mode (the default): your default web browser will be
opened to show the app if possible, and the app exits automatically
after two minutes of inactivity (no requests received and no open
browser windows viewing it).
* With '--serve': the app runs without stopping, and without opening
a browser.
* With '--serve-api': only the JSON API is served.
In all cases hledger-web runs as a foreground process, logging
requests to stdout.
* Menu: * Menu:
* OPTIONS:: * OPTIONS::
@ -67,7 +81,7 @@ before options, as shown in the synopsis above.
'--serve' '--serve'
serve and log requests, don't browse or auto-exit serve and log requests, don't browse or auto-exit after timeout
'--serve-api' '--serve-api'
like -serve, but serve only the JSON web API, without the like -serve, but serve only the JSON web API, without the
@ -264,15 +278,6 @@ the last one takes precedence.
should contain one command line option/argument per line. (To prevent should contain one command line option/argument per line. (To prevent
this, insert a '--' argument before.) this, insert a '--' argument before.)
By default, hledger-web starts the web app in "transient mode" 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 '--serve', it just runs the web
app without exiting, and logs requests to the console. With
'--serve-api', only the JSON web api (see below) is served, with the
usual HTML server-side web UI disabled.
By default the server listens on IP address 127.0.0.1, accessible 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 only to local requests. You can use '--host' to change this, eg '--host
0.0.0.0' to listen on all configured addresses. 0.0.0.0' to listen on all configured addresses.
@ -632,22 +637,22 @@ awkward.
 
Tag Table: Tag Table:
Node: Top223 Node: Top223
Node: OPTIONS1889 Node: OPTIONS2419
Ref: #options1994 Ref: #options2524
Node: PERMISSIONS9905 Node: PERMISSIONS9923
Ref: #permissions10044 Ref: #permissions10062
Node: EDITING UPLOADING DOWNLOADING11256 Node: EDITING UPLOADING DOWNLOADING11274
Ref: #editing-uploading-downloading11437 Ref: #editing-uploading-downloading11455
Node: RELOADING12271 Node: RELOADING12289
Ref: #reloading12405 Ref: #reloading12423
Node: JSON API12838 Node: JSON API12856
Ref: #json-api12952 Ref: #json-api12970
Node: ENVIRONMENT18442 Node: ENVIRONMENT18460
Ref: #environment18558 Ref: #environment18576
Node: FILES19869 Node: FILES19887
Ref: #files19969 Ref: #files19987
Node: BUGS20182 Node: BUGS20200
Ref: #bugs20260 Ref: #bugs20278
 
End Tag Table End Tag Table

View File

@ -8,8 +8,9 @@ NAME
This manual is for hledger-web 1.27.99. This manual is for hledger-web 1.27.99.
SYNOPSIS SYNOPSIS
hledger-web [OPTIONS] hledger-web [OPTIONS] # run temporarily & browse
hledger web -- [OPTIONS] hledger-web --serve [OPTIONS] # run without stopping
hledger-web --serve-api [OPTIONS] # run JSON server only
DESCRIPTION DESCRIPTION
hledger is a reliable, cross-platform set of programs for tracking hledger is a reliable, cross-platform set of programs for tracking
@ -17,24 +18,38 @@ DESCRIPTION
a simple, editable file format. hledger is inspired by and largely a simple, editable file format. hledger is inspired by and largely
compatible with ledger(1). compatible with ledger(1).
hledger-web is hledger's web interface. It starts a simple web appli- hledger-web is a simple web application for browsing and adding trans-
cation for browsing and adding transactions, and optionally opens it in actions. It provides a more user-friendly UI than the hledger CLI or
a web browser window if possible. It provides a more user-friendly UI hledger-ui TUI, showing more at once (accounts, the current account
than the hledger CLI or hledger-ui interface, showing more at once register, balance charts) and allowing history-aware data entry, inter-
(accounts, the current account register, balance charts) and allowing active searching, and bookmarking.
history-aware data entry, interactive searching, and bookmarking.
hledger-web also lets you share a ledger with multiple users, or even hledger-web also lets you share a journal with multiple users, or even
the public web. There is no access control, so if you need that you the public web. There is no access control, so if you need that you
should put it behind a suitable web proxy. As a small protection should put it behind a suitable web proxy. As a small protection
against data loss when running an unprotected instance, it writes a against data loss when running an unprotected instance, it writes a
numbered backup of the main journal file (only ?) on every edit. numbered backup of the main journal file (only) on every edit.
Like hledger, it reads data from one or more files in hledger journal, Like hledger, it reads data from one or more files in hledger journal,
timeclock, timedot, or CSV format specified with -f, or $LEDGER_FILE, timeclock, timedot, or CSV format specified with -f, or $LEDGER_FILE,
or $HOME/.hledger.journal (on windows, perhaps or $HOME/.hledger.journal (on windows, perhaps
C:/Users/USER/.hledger.journal). For more about this see hledger(1). C:/Users/USER/.hledger.journal). For more about this see hledger(1).
hledger-web can be run in three modes:
o Transient mode (the default): your default web browser will be opened
to show the app if possible, and the app exits automatically after
two minutes of inactivity (no requests received and no open browser
windows viewing it).
o With --serve: the app runs without stopping, and without opening a
browser.
o With --serve-api: only the JSON API is served.
In all cases hledger-web runs as a foreground process, logging requests
to stdout.
OPTIONS OPTIONS
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 on the data. These filter options are not shown in the web UI, but it
@ -44,7 +59,7 @@ OPTIONS
options, as shown in the synopsis above. options, as shown in the synopsis above.
--serve --serve
serve and log requests, don't browse or auto-exit serve and log requests, don't browse or auto-exit after timeout
--serve-api --serve-api
like --serve, but serve only the JSON web API, without the like --serve, but serve only the JSON web API, without the
@ -234,51 +249,42 @@ OPTIONS
contain one command line option/argument per line. (To prevent this, contain one command line option/argument per line. (To prevent this,
insert a -- argument before.) insert a -- argument before.)
By default, hledger-web starts the web app in "transient mode" and also By default the server listens on IP address 127.0.0.1, accessible only
opens it in your default web browser if possible. In this mode the web to local requests. You can use --host to change this, eg --host
app will keep running for as long as you have it open in a browser win-
dow, and will exit after two minutes of inactivity (no requests and no
browser windows viewing it). With --serve, it just runs the web app
without exiting, and logs requests to the console. With --serve-api,
only the JSON web api (see below) is served, with the usual HTML
server-side web UI disabled.
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. 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 Similarly, use --port to set a TCP port other than 5000, eg if you are
running multiple hledger-web instances. running multiple hledger-web instances.
Both of these options are ignored when --socket is used. In this case, Both of these options are ignored when --socket is used. In this case,
it creates an AF_UNIX socket file at the supplied path and uses that it creates an AF_UNIX socket file at the supplied path and uses that
for communication. This is an alternative way of running multiple for communication. This is an alternative way of running multiple
hledger-web instances behind a reverse proxy that handles authentica- hledger-web instances behind a reverse proxy that handles authentica-
tion for different users. The path can be derived in a predictable tion for different users. The path can be derived in a predictable
way, eg by using the username within the path. As an example, nginx as way, eg by using the username within the path. As an example, nginx as
reverse proxy can use the variable $remote_user to derive a path from reverse proxy can use the variable $remote_user to derive a path from
the username used in a HTTP basic authentication. The following the username used in a HTTP basic authentication. The following
proxy_pass directive allows access to all hledger-web instances that proxy_pass directive allows access to all hledger-web instances that
created a socket in /tmp/hledger/: created a socket in /tmp/hledger/:
proxy_pass http://unix:/tmp/hledger/${remote_user}.socket; proxy_pass http://unix:/tmp/hledger/${remote_user}.socket;
You can use --base-url to change the protocol, hostname, port and path You can use --base-url to change the protocol, hostname, port and path
that appear in hyperlinks, useful eg for integrating hledger-web within that appear in hyperlinks, useful eg for integrating hledger-web within
a larger website. The default is http://HOST:PORT/ using the server's a larger website. The default is http://HOST:PORT/ using the server's
configured host address and TCP port (or http://HOST if PORT is 80). configured host address and TCP port (or http://HOST if PORT is 80).
With --file-url you can set a different base url for static files, eg With --file-url you can set a different base url for static files, eg
for better caching or cookie-less serving on high performance websites. for better caching or cookie-less serving on high performance websites.
PERMISSIONS PERMISSIONS
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. journal and to add new transactions, but not to change existing data.
You can restrict who can reach it by You can restrict who can reach it by
o setting the IP address it listens on (see --host above). By default o setting the IP address it listens on (see --host above). By default
it listens on 127.0.0.1, accessible to all users on the local it listens on 127.0.0.1, accessible to all users on the local
machine. machine.
o putting it behind an authenticating proxy, using eg apache or nginx o putting it behind an authenticating proxy, using eg apache or nginx
@ -288,53 +294,53 @@ PERMISSIONS
You can restrict what the users who reach it can do, by You can restrict what the users who reach it can do, by
o using the --capabilities=CAP[,CAP..] flag when you start it, enabling o using the --capabilities=CAP[,CAP..] flag when you start it, enabling
one or more of the following capabilities. The default value is one or more of the following capabilities. The default value is
view,add: view,add:
o view - allows viewing the journal file and all included files o view - allows viewing the journal file and all included files
o add - allows adding new transactions to the main journal file o add - allows adding new transactions to the main journal file
o manage - allows editing, uploading or downloading the main or o manage - allows editing, uploading or downloading the main or
included files included files
o using the --capabilities-header=HTTPHEADER flag to specify a HTTP o using the --capabilities-header=HTTPHEADER flag to specify a HTTP
header from which it will read capabilities to enable. hledger-web header from which it will read capabilities to enable. hledger-web
on Sandstorm uses the X-Sandstorm-Permissions header to integrate on Sandstorm uses the X-Sandstorm-Permissions header to integrate
with Sandstorm's permissions. This is disabled by default. with Sandstorm's permissions. This is disabled by default.
EDITING, UPLOADING, DOWNLOADING EDITING, UPLOADING, DOWNLOADING
If you enable the manage capability mentioned above, you'll see a new If you enable the manage capability mentioned above, you'll see a new
"spanner" button to the right of the search form. Clicking this will "spanner" button to the right of the search form. Clicking this will
let you edit, upload, or download the journal file or any files it let you edit, upload, or download the journal file or any files it
includes. includes.
Note, unlike any other hledger command, in this mode you (or any visi- Note, unlike any other hledger command, in this mode you (or any visi-
tor) can alter or wipe the data files. tor) can alter or wipe the data files.
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 numbered backup (assuming file permissions allow it, the disk is not
full, etc.) hledger-web is not aware of version control systems, cur- full, etc.) hledger-web is not aware of version control systems, cur-
rently; if you use one, you'll have to arrange to commit the changes rently; if you use one, you'll have to arrange to commit the changes
yourself (eg with a cron job or a file watcher like entr). yourself (eg with a cron job or a file watcher like entr).
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 (eg with failing balance assertions) are prevented. (Probably. This
needs re-testing.) needs re-testing.)
RELOADING RELOADING
hledger-web detects changes made to the files by other means (eg if you 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 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 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 makes a file unparseable, hledger-web will display an error message
until the file has been fixed. until the file has been fixed.
(Note: if you are viewing files mounted from another machine, make sure (Note: if you are viewing files mounted from another machine, make sure
that both machine clocks are roughly in step.) that both machine clocks are roughly in step.)
JSON API JSON API
In addition to the web UI, hledger-web also serves a JSON API that can In addition to the web UI, hledger-web also serves a JSON API that can
be used to get data or add new transactions. If you want the JSON API be used to get data or add new transactions. If you want the JSON API
only, you can use the --serve-api flag. Eg: only, you can use the --serve-api flag. Eg:
$ hledger-web -f examples/sample.journal --serve-api $ hledger-web -f examples/sample.journal --serve-api
@ -351,7 +357,7 @@ JSON API
/accounttransactions/ACCOUNTNAME /accounttransactions/ACCOUNTNAME
Eg, all account names in the journal (similar to the accounts command). Eg, all account names in the journal (similar to the accounts command).
(hledger-web's JSON does not include newlines, here we use python to (hledger-web's JSON does not include newlines, here we use python to
prettify it): prettify it):
$ curl -s http://127.0.0.1:5000/accountnames | python -m json.tool $ curl -s http://127.0.0.1:5000/accountnames | python -m json.tool
@ -392,25 +398,25 @@ JSON API
"aprice": null, "aprice": null,
... ...
Most of the JSON corresponds to hledger's data types; for details of Most of the JSON corresponds to hledger's data types; for details of
what the fields mean, see the Hledger.Data.Json haddock docs and click what the fields mean, see the Hledger.Data.Json haddock docs and click
on the various data types, eg Transaction. And for a higher level on the various data types, eg Transaction. And for a higher level
understanding, see the journal manual. understanding, see the journal manual.
In some cases there is outer JSON corresponding to a "Report" type. To In some cases there is outer JSON corresponding to a "Report" type. To
understand that, go to the Hledger.Web.Handler.MiscR haddock and look understand that, go to the Hledger.Web.Handler.MiscR haddock and look
at the source for the appropriate handler to see what it returns. Eg at the source for the appropriate handler to see what it returns. Eg
for /accounttransactions it's getAccounttransactionsR, returning a for /accounttransactions it's getAccounttransactionsR, returning a
"accountTransactionsReport ...". Looking up the haddock for that we "accountTransactionsReport ...". Looking up the haddock for that we
can see that /accounttransactions returns an AccountTransactionsReport, can see that /accounttransactions returns an AccountTransactionsReport,
which consists of a report title and a list of AccountTransactionsRe- which consists of a report title and a list of AccountTransactionsRe-
portItem (etc). portItem (etc).
You can add a new transaction to the journal with a PUT request to You can add a new transaction to the journal with a PUT request to
/add, if hledger-web was started with the add capability (enabled by /add, if hledger-web was started with the add capability (enabled by
default). The payload must be the full, exact JSON representation of a default). The payload must be the full, exact JSON representation of a
hledger transaction (partial data won't do). You can get sample JSON hledger transaction (partial data won't do). You can get sample JSON
from hledger-web's /transactions or /accounttransactions, or you can from hledger-web's /transactions or /accounttransactions, or you can
export it with hledger-lib, eg like so: export it with hledger-lib, eg like so:
.../hledger$ stack ghci hledger-lib .../hledger$ stack ghci hledger-lib
@ -506,7 +512,7 @@ JSON API
"tstatus": "Unmarked" "tstatus": "Unmarked"
} }
And here's how to test adding it with curl. This should add a new And here's how to test adding it with curl. This should add a new
entry to your journal: entry to your journal:
$ curl http://127.0.0.1:5000/add -X PUT -H 'Content-Type: application/json' --data-binary @txn.json $ curl http://127.0.0.1:5000/add -X PUT -H 'Content-Type: application/json' --data-binary @txn.json
@ -516,17 +522,17 @@ ENVIRONMENT
On unix computers, the default value is: ~/.hledger.journal. On unix computers, the default value is: ~/.hledger.journal.
A more typical value is something like ~/finance/YYYY.journal, where A more typical value is something like ~/finance/YYYY.journal, where
~/finance is a version-controlled finance directory and YYYY is the ~/finance is a version-controlled finance directory and YYYY is the
current year. Or, ~/finance/current.journal, where current.journal is current year. Or, ~/finance/current.journal, where current.journal is
a symbolic link to YYYY.journal. a symbolic link to YYYY.journal.
The usual way to set this permanently is to add a command to one of The usual way to set this permanently is to add a command to one of
your shell's startup files (eg ~/.profile): your shell's startup files (eg ~/.profile):
export LEDGER_FILE=~/finance/current.journal` export LEDGER_FILE=~/finance/current.journal`
On some Mac computers, there is a more thorough way to set environment On some Mac computers, there is a more thorough way to set environment
variables, that will also affect applications started from the GUI (eg, variables, that will also affect applications started from the GUI (eg,
Emacs started from a dock icon): In ~/.MacOSX/environment.plist, add an Emacs started from a dock icon): In ~/.MacOSX/environment.plist, add an
entry like: entry like:
@ -537,24 +543,24 @@ ENVIRONMENT
For this to take effect you might need to killall Dock, or reboot. For this to take effect you might need to killall Dock, or reboot.
On Windows computers, the default value is probably C:\Users\YOUR- On Windows computers, the default value is probably C:\Users\YOUR-
NAME\.hledger.journal. You can change this by running a command like NAME\.hledger.journal. You can change this by running a command like
this in a powershell window (let us know if you need to be an Adminis- this in a powershell window (let us know if you need to be an Adminis-
trator, and if this persists across a reboot): trator, and if this persists across a reboot):
> setx LEDGER_FILE "C:\Users\MyUserName\finance\2021.journal" > setx LEDGER_FILE "C:\Users\MyUserName\finance\2021.journal"
Or, change it in settings: see https://www.java.com/en/down- Or, change it in settings: see https://www.java.com/en/down-
load/help/path.html. load/help/path.html.
FILES FILES
Reads data from one or more files in hledger journal, timeclock, time- Reads data from one or more files in hledger journal, timeclock, time-
dot, or CSV format specified with -f, or $LEDGER_FILE, or dot, or CSV format specified with -f, or $LEDGER_FILE, or
$HOME/.hledger.journal (on windows, perhaps $HOME/.hledger.journal (on windows, perhaps
C:/Users/USER/.hledger.journal). C:/Users/USER/.hledger.journal).
BUGS BUGS
The need to precede options with -- when invoked from hledger is awk- The need to precede options with -- when invoked from hledger is awk-
ward. ward.
-f- doesn't work (hledger-web can't read from stdin). -f- doesn't work (hledger-web can't read from stdin).
@ -568,7 +574,7 @@ BUGS
REPORTING BUGS REPORTING BUGS
Report bugs at http://bugs.hledger.org (or on the #hledger IRC channel Report bugs at http://bugs.hledger.org (or on the #hledger IRC channel
or hledger mail list) or hledger mail list)
@ -586,4 +592,4 @@ SEE ALSO
hledger-web-1.27.99 October 2022 HLEDGER-WEB(1) hledger-web-1.27.99 November 2022 HLEDGER-WEB(1)

View File

@ -1,2 +1,2 @@
m4_dnl Date to show in man pages. Updated by "Shake manuals" m4_dnl Date to show in man pages. Updated by "Shake manuals"
m4_define({{_monthyear_}}, {{October 2022}})m4_dnl m4_define({{_monthyear_}}, {{November 2022}})m4_dnl

View File

@ -1,6 +1,6 @@
.\"t .\"t
.TH "HLEDGER" "1" "October 2022" "hledger-1.27.99 " "hledger User Manuals" .TH "HLEDGER" "1" "November 2022" "hledger-1.27.99 " "hledger User Manuals"
@ -563,7 +563,7 @@ Default: the full terminal width.
\f[B]NO_COLOR\f[R] If this variable exists with any value, hledger will \f[B]NO_COLOR\f[R] If this variable exists with any value, hledger will
not use ANSI color codes in terminal output. not use ANSI color codes in terminal output.
This is overriden by the --color/--colour option. This is overriden by the --color/--colour option.
.SH DATA FILES .SH INPUT
.PP .PP
hledger reads transactions from one or more data files. hledger reads transactions from one or more data files.
The default data file is \f[C]$HOME/.hledger.journal\f[R] (or on The default data file is \f[C]$HOME/.hledger.journal\f[R] (or on
@ -710,6 +710,283 @@ Are all commodity conversions declared explicitly ?
.PP .PP
You can use the check command to run individual checks -- the ones You can use the check command to run individual checks -- the ones
listed above and some more. listed above and some more.
.SH OUTPUT
.PP
Some of this section may refer to things explained further below.
.SS Output destination
.PP
hledger commands send their output to the terminal by default.
You can of course redirect this, eg into a file, using standard shell
syntax:
.IP
.nf
\f[C]
$ hledger print > foo.txt
\f[R]
.fi
.PP
Some commands (print, register, stats, the balance commands) also
provide the \f[C]-o/--output-file\f[R] option, which does the same thing
without needing the shell.
Eg:
.IP
.nf
\f[C]
$ hledger print -o foo.txt
$ hledger print -o - # write to stdout (the default)
\f[R]
.fi
.SS Output styling
.PP
hledger commands can produce colour output when the terminal supports
it.
This is controlled by the \f[C]--color/--colour\f[R] option: - if the
\f[C]--color/--colour\f[R] option is given a value of \f[C]yes\f[R] or
\f[C]always\f[R] (or \f[C]no\f[R] or \f[C]never\f[R]), colour will (or
will not) be used; - otherwise, if the \f[C]NO_COLOR\f[R] environment
variable is set, colour will not be used; - otherwise, colour will be
used if the output (terminal or file) supports it.
.PP
hledger commands can also use unicode box-drawing characters to produce
prettier tables and output.
This is controlled by the \f[C]--pretty\f[R] option: - if the
\f[C]--pretty\f[R] option is given a value of \f[C]yes\f[R] or
\f[C]always\f[R] (or \f[C]no\f[R] or \f[C]never\f[R]), unicode
characters will (or will not) be used; - otherwise, unicode characters
will not be used.
.SS Output format
.PP
Some commands offer additional output formats, other than the usual
plain text terminal output.
Here are those commands and the formats currently supported:
.PP
.TS
tab(@);
l l l l l l.
T{
-
T}@T{
txt
T}@T{
csv
T}@T{
html
T}@T{
json
T}@T{
sql
T}
_
T{
aregister
T}@T{
Y
T}@T{
Y
T}@T{
T}@T{
Y
T}@T{
T}
T{
balance
T}@T{
Y \f[I]1\f[R]
T}@T{
Y \f[I]1\f[R]
T}@T{
Y \f[I]1,2\f[R]
T}@T{
Y
T}@T{
T}
T{
balancesheet
T}@T{
Y \f[I]1\f[R]
T}@T{
Y \f[I]1\f[R]
T}@T{
Y \f[I]1\f[R]
T}@T{
Y
T}@T{
T}
T{
balancesheetequity
T}@T{
Y \f[I]1\f[R]
T}@T{
Y \f[I]1\f[R]
T}@T{
Y \f[I]1\f[R]
T}@T{
Y
T}@T{
T}
T{
cashflow
T}@T{
Y \f[I]1\f[R]
T}@T{
Y \f[I]1\f[R]
T}@T{
Y \f[I]1\f[R]
T}@T{
Y
T}@T{
T}
T{
incomestatement
T}@T{
Y \f[I]1\f[R]
T}@T{
Y \f[I]1\f[R]
T}@T{
Y \f[I]1\f[R]
T}@T{
Y
T}@T{
T}
T{
print
T}@T{
Y
T}@T{
Y
T}@T{
T}@T{
Y
T}@T{
Y
T}
T{
register
T}@T{
Y
T}@T{
Y
T}@T{
T}@T{
Y
T}@T{
T}
.TE
.IP \[bu] 2
\f[I]1 Also affected by the balance commands\[aq] \f[CI]--layout\f[I]
option.\f[R]
.IP \[bu] 2
\f[I]2 \f[CI]balance\f[I] does not support html output without a report
interval or with \f[CI]--budget\f[I].\f[R]
.PP
The output format is selected by the \f[C]-O/--output-format=FMT\f[R]
option:
.IP
.nf
\f[C]
$ hledger print -O csv # print CSV on stdout
\f[R]
.fi
.PP
or by the filename extension of an output file specified with the
\f[C]-o/--output-file=FILE.FMT\f[R] option:
.IP
.nf
\f[C]
$ hledger balancesheet -o foo.csv # write CSV to foo.csv
\f[R]
.fi
.PP
The \f[C]-O\f[R] option can be combined with \f[C]-o\f[R] to override
the file extension, if needed:
.IP
.nf
\f[C]
$ hledger balancesheet -o foo.txt -O csv # write CSV to foo.txt
\f[R]
.fi
.SS CSV output
.IP \[bu] 2
In CSV output, digit group marks (such as thousands separators) are
disabled automatically.
.SS HTML output
.IP \[bu] 2
HTML output can be styled by an optional \f[C]hledger.css\f[R] file in
the same directory.
.SS JSON output
.IP \[bu] 2
Not yet much used; real-world feedback is welcome.
.IP \[bu] 2
Our JSON is rather large and verbose, as it is quite a faithful
representation of hledger\[aq]s internal data types.
To understand the JSON, read the Haskell type definitions, which are
mostly in
https://github.com/simonmichael/hledger/blob/master/hledger-lib/Hledger/Data/Types.hs.
.IP \[bu] 2
hledger represents quantities as Decimal values storing up to 255
significant digits, eg for repeating decimals.
Such numbers can arise in practice (from automatically-calculated
transaction prices), and would break most JSON consumers.
So in JSON, we show quantities as simple Numbers with at most 10 decimal
places.
We don\[aq]t limit the number of integer digits, but that part is under
your control.
We hope this approach will not cause problems in practice; if you find
otherwise, please let us know.
(Cf #1195)
.SS SQL output
.IP \[bu] 2
Not yet much used; real-world feedback is welcome.
.IP \[bu] 2
SQL output is expected to work with sqlite, MySQL and PostgreSQL
.IP \[bu] 2
SQL output is structured with the expectations that statements will be
executed in the empty database.
If you already have tables created via SQL output of hledger, you would
probably want to either clear tables of existing data (via
\f[C]delete\f[R] or \f[C]truncate\f[R] SQL statements) or drop tables
completely as otherwise your postings will be duped.
.SS Commodity styles
.PP
The display style of a commodity/currency is inferred according to the
rules described in Commodity display style.
The inferred display style can be overridden by an optional
\f[C]-c/--commodity-style\f[R] option (Exceptions: as is the case for
inferred styles, price amounts, and all amounts displayed by the
\f[C]print\f[R] command, will be displayed with all of their decimal
digits visible, regardless of the specified precision).
For example, the following will override the display style for dollars.
.IP
.nf
\f[C]
$ hledger print -c \[aq]$1.000,0\[aq]
\f[R]
.fi
.PP
The format specification of the style is identical to the commodity
display style specification for the commodity directive.
The command line option can be supplied repeatedly to override the
display style for multiple commodity/currency symbols.
.SS Debug output
.PP
We aim for hledger to be relatively easy to troubleshoot, introspect and
develop.
You can add \f[C]--debug[=N]\f[R] to any hledger command line to see
additional debug output.
N ranges from 1 (least output, the default) to 9 (maximum output).
Typically you would start with 1 and increase until you are seeing
enough.
Debug output goes to stderr, and is not affected by
\f[C]-o/--output-file\f[R] (unless you redirect stderr to stdout, eg:
\f[C]2>&1\f[R]).
It will be interleaved with normal output, which can help reveal when
parts of the code are evaluated.
To capture debug output in a log file instead, you can usually redirect
stderr, eg:
.PD 0
.P
.PD
\f[C]hledger bal --debug=3 2>hledger.log\f[R].
.SH TIME PERIODS .SH TIME PERIODS
.SS Smart dates .SS Smart dates
.PP .PP
@ -2790,267 +3067,6 @@ $ hledger balance --pivot member acct:.
-2 EUR -2 EUR
\f[R] \f[R]
.fi .fi
.SH OUTPUT
.SS Output destination
.PP
hledger commands send their output to the terminal by default.
You can of course redirect this, eg into a file, using standard shell
syntax:
.IP
.nf
\f[C]
$ hledger print > foo.txt
\f[R]
.fi
.PP
Some commands (print, register, stats, the balance commands) also
provide the \f[C]-o/--output-file\f[R] option, which does the same thing
without needing the shell.
Eg:
.IP
.nf
\f[C]
$ hledger print -o foo.txt
$ hledger print -o - # write to stdout (the default)
\f[R]
.fi
.PP
hledger can optionally produce debug output (if enabled with
\f[C]--debug=N\f[R]); this goes to stderr, and is not affected by
\f[C]-o/--output-file\f[R].
If you need to capture it, use shell redirects, eg:
\f[C]hledger bal --debug=3 >file 2>&1\f[R].
.SS Output styling
.PP
hledger commands can produce colour output when the terminal supports
it.
This is controlled by the \f[C]--color/--colour\f[R] option: - if the
\f[C]--color/--colour\f[R] option is given a value of \f[C]yes\f[R] or
\f[C]always\f[R] (or \f[C]no\f[R] or \f[C]never\f[R]), colour will (or
will not) be used; - otherwise, if the \f[C]NO_COLOR\f[R] environment
variable is set, colour will not be used; - otherwise, colour will be
used if the output (terminal or file) supports it.
.PP
hledger commands can also use unicode box-drawing characters to produce
prettier tables and output.
This is controlled by the \f[C]--pretty\f[R] option: - if the
\f[C]--pretty\f[R] option is given a value of \f[C]yes\f[R] or
\f[C]always\f[R] (or \f[C]no\f[R] or \f[C]never\f[R]), unicode
characters will (or will not) be used; - otherwise, unicode characters
will not be used.
.SS Output format
.PP
Some commands offer additional output formats, other than the usual
plain text terminal output.
Here are those commands and the formats currently supported:
.PP
.TS
tab(@);
l l l l l l.
T{
-
T}@T{
txt
T}@T{
csv
T}@T{
html
T}@T{
json
T}@T{
sql
T}
_
T{
aregister
T}@T{
Y
T}@T{
Y
T}@T{
T}@T{
Y
T}@T{
T}
T{
balance
T}@T{
Y \f[I]1\f[R]
T}@T{
Y \f[I]1\f[R]
T}@T{
Y \f[I]1,2\f[R]
T}@T{
Y
T}@T{
T}
T{
balancesheet
T}@T{
Y \f[I]1\f[R]
T}@T{
Y \f[I]1\f[R]
T}@T{
Y \f[I]1\f[R]
T}@T{
Y
T}@T{
T}
T{
balancesheetequity
T}@T{
Y \f[I]1\f[R]
T}@T{
Y \f[I]1\f[R]
T}@T{
Y \f[I]1\f[R]
T}@T{
Y
T}@T{
T}
T{
cashflow
T}@T{
Y \f[I]1\f[R]
T}@T{
Y \f[I]1\f[R]
T}@T{
Y \f[I]1\f[R]
T}@T{
Y
T}@T{
T}
T{
incomestatement
T}@T{
Y \f[I]1\f[R]
T}@T{
Y \f[I]1\f[R]
T}@T{
Y \f[I]1\f[R]
T}@T{
Y
T}@T{
T}
T{
print
T}@T{
Y
T}@T{
Y
T}@T{
T}@T{
Y
T}@T{
Y
T}
T{
register
T}@T{
Y
T}@T{
Y
T}@T{
T}@T{
Y
T}@T{
T}
.TE
.IP \[bu] 2
\f[I]1 Also affected by the balance commands\[aq] \f[CI]--layout\f[I]
option.\f[R]
.IP \[bu] 2
\f[I]2 \f[CI]balance\f[I] does not support html output without a report
interval or with \f[CI]--budget\f[I].\f[R]
.PP
The output format is selected by the \f[C]-O/--output-format=FMT\f[R]
option:
.IP
.nf
\f[C]
$ hledger print -O csv # print CSV on stdout
\f[R]
.fi
.PP
or by the filename extension of an output file specified with the
\f[C]-o/--output-file=FILE.FMT\f[R] option:
.IP
.nf
\f[C]
$ hledger balancesheet -o foo.csv # write CSV to foo.csv
\f[R]
.fi
.PP
The \f[C]-O\f[R] option can be combined with \f[C]-o\f[R] to override
the file extension, if needed:
.IP
.nf
\f[C]
$ hledger balancesheet -o foo.txt -O csv # write CSV to foo.txt
\f[R]
.fi
.SS CSV output
.IP \[bu] 2
In CSV output, digit group marks (such as thousands separators) are
disabled automatically.
.SS HTML output
.IP \[bu] 2
HTML output can be styled by an optional \f[C]hledger.css\f[R] file in
the same directory.
.SS JSON output
.IP \[bu] 2
Not yet much used; real-world feedback is welcome.
.IP \[bu] 2
Our JSON is rather large and verbose, as it is quite a faithful
representation of hledger\[aq]s internal data types.
To understand the JSON, read the Haskell type definitions, which are
mostly in
https://github.com/simonmichael/hledger/blob/master/hledger-lib/Hledger/Data/Types.hs.
.IP \[bu] 2
hledger represents quantities as Decimal values storing up to 255
significant digits, eg for repeating decimals.
Such numbers can arise in practice (from automatically-calculated
transaction prices), and would break most JSON consumers.
So in JSON, we show quantities as simple Numbers with at most 10 decimal
places.
We don\[aq]t limit the number of integer digits, but that part is under
your control.
We hope this approach will not cause problems in practice; if you find
otherwise, please let us know.
(Cf #1195)
.SS SQL output
.IP \[bu] 2
Not yet much used; real-world feedback is welcome.
.IP \[bu] 2
SQL output is expected to work with sqlite, MySQL and PostgreSQL
.IP \[bu] 2
SQL output is structured with the expectations that statements will be
executed in the empty database.
If you already have tables created via SQL output of hledger, you would
probably want to either clear tables of existing data (via
\f[C]delete\f[R] or \f[C]truncate\f[R] SQL statements) or drop tables
completely as otherwise your postings will be duped.
.SS Commodity styles
.PP
The display style of a commodity/currency is inferred according to the
rules described in Commodity display style.
The inferred display style can be overridden by an optional
\f[C]-c/--commodity-style\f[R] option (Exceptions: as is the case for
inferred styles, price amounts, and all amounts displayed by the
\f[C]print\f[R] command, will be displayed with all of their decimal
digits visible, regardless of the specified precision).
For example, the following will override the display style for dollars.
.IP
.nf
\f[C]
$ hledger print -c \[aq]$1.000,0\[aq]
\f[R]
.fi
.PP
The format specification of the style is identical to the commodity
display style specification for the commodity directive.
The command line option can be supplied repeatedly to override the
display style for multiple commodity/currency symbols.
.SH COMMANDS .SH COMMANDS
.PP .PP
hledger provides a number of commands for producing reports and managing hledger provides a number of commands for producing reports and managing
@ -3165,11 +3181,19 @@ accounts
.PD .PD
Show account names. Show account names.
.PP .PP
This command lists account names, either declared with account This command lists account names.
directives (--declared), posted to (--used), or both (the default). By default it shows all known accounts, either used in transactions or
declared with account directives.
.PP
With query arguments, only matched account names and account names With query arguments, only matched account names and account names
referenced by matched postings are shown. referenced by matched postings are shown.
.PP .PP
Or it can show just the used accounts (\f[C]--used\f[R]/\f[C]-u\f[R]),
the declared accounts (\f[C]--declared\f[R]/\f[C]-d\f[R]), the accounts
declared but not used (\f[C]--unused\f[R]), the accounts used but not
declared (\f[C]--undeclared\f[R]), or the first account matched by an
account name pattern, if any (\f[C]--find\f[R]).
.PP
It shows a flat list by default. It shows a flat list by default.
With \f[C]--tree\f[R], it uses indentation to show the account With \f[C]--tree\f[R], it uses indentation to show the account
hierarchy. hierarchy.
@ -3190,6 +3214,13 @@ display order.
With \f[C]--directives\f[R], it adds the \f[C]account\f[R] keyword, With \f[C]--directives\f[R], it adds the \f[C]account\f[R] keyword,
showing valid account directives which can be pasted into a journal showing valid account directives which can be pasted into a journal
file. file.
This is useful together with \f[C]--undeclared\f[R] when updating your
account declarations to satisfy \f[C]hledger check accounts\f[R].
.PP
The \f[C]--find\f[R] flag can be used to look up a single account name,
in the same way that the \f[C]aregister\f[R] command does.
It returns the alphanumerically-first matched account name, or if none
can be found, it fails with a non-zero exit code.
.PP .PP
Examples: Examples:
.IP .IP
@ -3206,6 +3237,13 @@ income:salary
liabilities:debts liabilities:debts
\f[R] \f[R]
.fi .fi
.IP
.nf
\f[C]
$ hledger accounts --undeclared --directives >> $LEDGER_FILE
$ hledger check accounts
\f[R]
.fi
.SS activity .SS activity
.PP .PP
activity activity
@ -8979,7 +9017,14 @@ T}
T{ T{
\f[B]\f[CB]newest-first\f[B]\f[R] \f[B]\f[CB]newest-first\f[B]\f[R]
T}@T{ T}@T{
disambiguate record order when there\[aq]s only one date improve txn order when there are multiple records, newest first, all
with the same date
T}
T{
\f[B]\f[CB]intra-day-reversed\f[B]\f[R]
T}@T{
improve txn order when each day\[aq]s txns are reverse of the overall
date order
T} T}
T{ T{
\f[B]\f[CB]include\f[B]\f[R] \f[B]\f[CB]include\f[B]\f[R]
@ -9842,7 +9887,7 @@ the TZ environment variable, eg:
.IP .IP
.nf .nf
\f[C] \f[C]
$ TZ=HST hledger print -f foo.csv # or TZ=HST hledger import foo.csv $ TZ=-1000 hledger print -f foo.csv # or TZ=-1000 hledger import foo.csv
\f[R] \f[R]
.fi .fi
.PP .PP
@ -9874,29 +9919,55 @@ thousand-separating commas, you should declare the decimal mark
explicitly with this rule, to avoid misparsed numbers. explicitly with this rule, to avoid misparsed numbers.
.SS \f[C]newest-first\f[R] .SS \f[C]newest-first\f[R]
.PP .PP
hledger always sorts the generated transactions by date. hledger tries to ensure that the generated transactions will be ordered
Transactions on the same date should appear in the same order as their chronologically, including intra-day transactions.
CSV records, as hledger can usually auto-detect whether the CSV\[aq]s Usually it can auto-detect how the CSV records are ordered.
normal order is oldest first or newest first. But if it encounters CSV where all records are on the same date, it
But if all of the following are true: assumes that the records are oldest first.
.IP \[bu] 2 If in fact the CSV\[aq]s records are normally newest first, like:
the CSV might sometimes contain just one day of data (all records having
the same date)
.IP \[bu] 2
the CSV records are normally in reverse chronological order (newest at
the top)
.IP \[bu] 2
and you care about preserving the order of same-day transactions
.PP
then, you should add the \f[C]newest-first\f[R] rule as a hint.
Eg:
.IP .IP
.nf .nf
\f[C] \f[C]
# tell hledger explicitly that the CSV is normally newest first 2022-10-01, txn 3...
2022-10-01, txn 2...
2022-10-01, txn 1...
\f[R]
.fi
.PP
you can add the \f[C]newest-first\f[R] rule to help hledger generate the
transactions in correct order.
.IP
.nf
\f[C]
# same-day CSV records are newest first
newest-first newest-first
\f[R] \f[R]
.fi .fi
.SS \f[C]intra-day-reversed\f[R]
.PP
CSV records for each day are sometimes ordered in reverse compared to
the overall date order.
Eg, here dates are newest first, but the transactions on each date are
oldest first:
.IP
.nf
\f[C]
2022-10-02, txn 3...
2022-10-02, txn 4...
2022-10-01, txn 1...
2022-10-01, txn 2...
\f[R]
.fi
.PP
In this situation, add the \f[C]intra-day-reversed\f[R] rule, and
hledger will compensate, improving the order of transactions.
.IP
.nf
\f[C]
# transactions within each day are reversed with respect to the overall date order
intra-day-reversed
\f[R]
.fi
.SS \f[C]include\f[R] .SS \f[C]include\f[R]
.IP .IP
.nf .nf

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff