doc: web rewrites/screenshots, add-on examples
This commit is contained in:
parent
96343bf615
commit
5df44c711e
361
doc/manual.md
361
doc/manual.md
@ -1851,6 +1851,58 @@ have different release schedules and platform support.
|
|||||||
|
|
||||||
#### autosync
|
#### autosync
|
||||||
|
|
||||||
|
```{.shell .right}
|
||||||
|
$ hledger autosync --help
|
||||||
|
usage: hledger-autosync [-h] [-m MAX] [-r] [-a ACCOUNT] [-l LEDGER] [-i INDENT]
|
||||||
|
[--initial] [--fid FID] [--assertions] [-d] [--hledger]
|
||||||
|
[--slow] [--which]
|
||||||
|
[PATH]
|
||||||
|
|
||||||
|
Synchronize ledger.
|
||||||
|
|
||||||
|
positional arguments:
|
||||||
|
PATH do not sync; import from OFX file
|
||||||
|
|
||||||
|
optional arguments:
|
||||||
|
-h, --help show this help message and exit
|
||||||
|
-m MAX, --max MAX maximum number of days to process
|
||||||
|
-r, --resync do not stop until max days reached
|
||||||
|
-a ACCOUNT, --account ACCOUNT
|
||||||
|
set account name for import
|
||||||
|
-l LEDGER, --ledger LEDGER
|
||||||
|
specify ledger file to READ for syncing
|
||||||
|
-i INDENT, --indent INDENT
|
||||||
|
number of spaces to use for indentation
|
||||||
|
--initial create initial balance entries
|
||||||
|
--fid FID pass in fid value for OFX files that do not supply it
|
||||||
|
--assertions create balance assertion entries
|
||||||
|
-d, --debug enable debug logging
|
||||||
|
--hledger force use of hledger (on by default if invoked as hledger-
|
||||||
|
autosync)
|
||||||
|
--slow use slow, but possibly more robust, method of calling ledger
|
||||||
|
(no subprocess)
|
||||||
|
--which display which version of ledger/hledger/ledger-python will
|
||||||
|
be used by ledger-autosync to check for previous
|
||||||
|
transactions
|
||||||
|
$ head acct1.ofx
|
||||||
|
OFXHEADER:100
|
||||||
|
DATA:OFXSGML
|
||||||
|
VERSION:102
|
||||||
|
SECURITY:NONE
|
||||||
|
ENCODING:USASCII
|
||||||
|
CHARSET:1252
|
||||||
|
COMPRESSION:NONE
|
||||||
|
OLDFILEUID:NONE
|
||||||
|
NEWFILEUIDe:8509488b59d1bb45
|
||||||
|
|
||||||
|
$ hledger autosync acct1.ofx
|
||||||
|
2013/08/30 MONTHLY SERVICE FEE
|
||||||
|
; ofxid: 3000.4303001832.201308301
|
||||||
|
WF:4303001832 -$6.00
|
||||||
|
[assets:business:bank:wf:bchecking:banking] $6.00
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
[ledger-autosync](https://bitbucket.org/egh/ledger-autosync/commits/all),
|
[ledger-autosync](https://bitbucket.org/egh/ledger-autosync/commits/all),
|
||||||
which includes a `hledger-autosync` alias, downloads transactions
|
which includes a `hledger-autosync` alias, downloads transactions
|
||||||
from your bank(s) via OFX, and prints just the new ones as journal
|
from your bank(s) via OFX, and prints just the new ones as journal
|
||||||
@ -1861,6 +1913,29 @@ download.
|
|||||||
|
|
||||||
#### diff
|
#### diff
|
||||||
|
|
||||||
|
```{.shell .right}
|
||||||
|
$ hledger diff --help
|
||||||
|
Usage: hledger-diff account:name left.journal right.journal
|
||||||
|
$ cat a.journal
|
||||||
|
1/1
|
||||||
|
(acct:one) 1
|
||||||
|
|
||||||
|
$ cat b.journal
|
||||||
|
1/1
|
||||||
|
(acct:one) 1
|
||||||
|
2/2
|
||||||
|
(acct:two) 2
|
||||||
|
|
||||||
|
$ hledger diff acct:two a.journal b.journal
|
||||||
|
Unmatched transactions in the first journal:
|
||||||
|
|
||||||
|
Unmatched transactions in the second journal:
|
||||||
|
|
||||||
|
2015/02/02
|
||||||
|
(acct:two) $2
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
[hledger-diff](http://hackage.haskell.org/package/hledger-diff)
|
[hledger-diff](http://hackage.haskell.org/package/hledger-diff)
|
||||||
compares two journal files. Given an account name, it prints out the
|
compares two journal files. Given an account name, it prints out the
|
||||||
transactions affecting that account which are in one journal file but
|
transactions affecting that account which are in one journal file but
|
||||||
@ -1869,6 +1944,87 @@ journals with bank statements.
|
|||||||
|
|
||||||
#### interest
|
#### interest
|
||||||
|
|
||||||
|
```{.shell .right}
|
||||||
|
$ hledger interest --help
|
||||||
|
Usage: hledger-interest [OPTION...] ACCOUNT
|
||||||
|
-h --help print this message and exit
|
||||||
|
-V --version show version number and exit
|
||||||
|
-v --verbose echo input ledger to stdout (default)
|
||||||
|
-q --quiet don't echo input ledger to stdout
|
||||||
|
--today compute interest up until today
|
||||||
|
-f FILE --file=FILE input ledger file (pass '-' for stdin)
|
||||||
|
-s ACCOUNT --source=ACCOUNT interest source account
|
||||||
|
-t ACCOUNT --target=ACCOUNT interest target account
|
||||||
|
--act use 'act' day counting convention
|
||||||
|
--30-360 use '30/360' day counting convention
|
||||||
|
--30E-360 use '30E/360' day counting convention
|
||||||
|
--30E-360isda use '30E/360isda' day counting convention
|
||||||
|
--constant=RATE constant interest rate
|
||||||
|
--annual=RATE annual interest rate
|
||||||
|
--bgb288 compute interest according to German BGB288
|
||||||
|
--ing-diba compute interest according for Ing-Diba Tagesgeld account
|
||||||
|
```
|
||||||
|
|
||||||
|
```{.shell .right .clear}
|
||||||
|
$ cat interest.journal
|
||||||
|
2008/09/26 Loan
|
||||||
|
Assets:Bank EUR 10000.00
|
||||||
|
Liabilities:Bank
|
||||||
|
|
||||||
|
2008/11/27 Payment
|
||||||
|
Assets:Bank EUR -3771.12
|
||||||
|
Liabilities:Bank
|
||||||
|
|
||||||
|
2009/05/03 Payment
|
||||||
|
Assets:Bank EUR -1200.00
|
||||||
|
Liabilities:Bank
|
||||||
|
|
||||||
|
2010/12/10 Payment
|
||||||
|
Assets:Bank EUR -3700.00
|
||||||
|
Liabilities:Bank
|
||||||
|
```
|
||||||
|
|
||||||
|
```{.shell .right .clear}
|
||||||
|
$ hledger interest -- -f interest.journal --source=Expenses:Interest \
|
||||||
|
--target=Liabilities:Bank --30-360 --annual=0.05 Liabilities:Bank
|
||||||
|
2008/09/26 Loan
|
||||||
|
Assets:Bank EUR 10000.00
|
||||||
|
Liabilities:Bank EUR -10000.00
|
||||||
|
|
||||||
|
2008/11/27 0.05% interest for EUR -10000.00 over 61 days
|
||||||
|
Liabilities:Bank EUR -84.72
|
||||||
|
Expenses:Interest EUR 84.72
|
||||||
|
|
||||||
|
2008/11/27 Payment
|
||||||
|
Assets:Bank EUR -3771.12
|
||||||
|
Liabilities:Bank EUR 3771.12
|
||||||
|
|
||||||
|
2008/12/31 0.05% interest for EUR -6313.60 over 34 days
|
||||||
|
Liabilities:Bank EUR -29.81
|
||||||
|
Expenses:Interest EUR 29.81
|
||||||
|
|
||||||
|
2009/05/03 0.05% interest for EUR -6343.42 over 123 days
|
||||||
|
Liabilities:Bank EUR -108.37
|
||||||
|
Expenses:Interest EUR 108.37
|
||||||
|
|
||||||
|
2009/05/03 Payment
|
||||||
|
Assets:Bank EUR -1200.00
|
||||||
|
Liabilities:Bank EUR 1200.00
|
||||||
|
|
||||||
|
2009/12/31 0.05% interest for EUR -5251.78 over 238 days
|
||||||
|
Liabilities:Bank EUR -173.60
|
||||||
|
Expenses:Interest EUR 173.60
|
||||||
|
|
||||||
|
2010/12/10 0.05% interest for EUR -5425.38 over 340 days
|
||||||
|
Liabilities:Bank EUR -256.20
|
||||||
|
Expenses:Interest EUR 256.20
|
||||||
|
|
||||||
|
2010/12/10 Payment
|
||||||
|
Assets:Bank EUR -3700.00
|
||||||
|
Liabilities:Bank EUR 3700.00
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
[hledger-interest](http://hackage.haskell.org/package/hledger-interest)
|
[hledger-interest](http://hackage.haskell.org/package/hledger-interest)
|
||||||
computes interests for a given account. Using command line flags,
|
computes interests for a given account. Using command line flags,
|
||||||
the program can be configured to use various schemes for day-counting,
|
the program can be configured to use various schemes for day-counting,
|
||||||
@ -1879,6 +2035,64 @@ with a fixed rate and the scheme mandated by the German BGB288
|
|||||||
|
|
||||||
#### irr
|
#### irr
|
||||||
|
|
||||||
|
```{.shell .right}
|
||||||
|
$ hledger irr --help
|
||||||
|
Usage: hledger-irr [OPTION...]
|
||||||
|
-h --help print this message and exit
|
||||||
|
-V --version show version number and exit
|
||||||
|
-c --cashflow also show all revant transactions
|
||||||
|
-f FILE --file=FILE input ledger file (pass '-' for stdin)
|
||||||
|
-i ACCOUNT --investment-account=ACCOUNT investment account
|
||||||
|
-t ACCOUNT --interest-account=ACCOUNT interest/gain/fees/losses account
|
||||||
|
-b DATE --begin=DATE calculate interest from this date
|
||||||
|
-e DATE --end=DATE calculate interest until this date
|
||||||
|
-D --daily calculate interest for each day
|
||||||
|
-W --weekly calculate interest for each week
|
||||||
|
-M --monthly calculate interest for each month
|
||||||
|
-Y --yearly calculate interest for each year
|
||||||
|
```
|
||||||
|
|
||||||
|
```{.shell .right .clear}
|
||||||
|
$ cat irr.journal
|
||||||
|
2011-01-01 Some wild speculation – I wonder if it pays off
|
||||||
|
Speculation €100.00
|
||||||
|
Cash
|
||||||
|
|
||||||
|
2011-02-01 More speculation (and adjustment of value)
|
||||||
|
Cash -€10.00
|
||||||
|
Rate Gain -€1.00
|
||||||
|
Speculation
|
||||||
|
|
||||||
|
2011-03-01 Lets pull out some money (and adjustment of value)
|
||||||
|
Cash €30.00
|
||||||
|
Rate Gain -€3.00
|
||||||
|
Speculation
|
||||||
|
|
||||||
|
2011-04-01 More speculation (and it lost some money!)
|
||||||
|
Cash -€50.00
|
||||||
|
Rate Gain € 5.00
|
||||||
|
Speculation
|
||||||
|
|
||||||
|
2011-05-01 Getting some money out (and adjustment of value)
|
||||||
|
Speculation -€44.00
|
||||||
|
Rate Gain -€ 3.00
|
||||||
|
Cash
|
||||||
|
|
||||||
|
2011-06-01 Emptying the account (after adjusting the value)
|
||||||
|
Speculation -€85.00
|
||||||
|
Cash €90.00
|
||||||
|
Rate Gain -€ 5.00
|
||||||
|
```
|
||||||
|
|
||||||
|
```{.shell .right .clear}
|
||||||
|
$ hledger-irr -f irr.journal -t "Rate Gain" -i Speculation --monthly
|
||||||
|
2011/01/01 - 2011/02/01: 12.49%
|
||||||
|
2011/02/01 - 2011/03/01: 41.55%
|
||||||
|
2011/03/01 - 2011/04/01: -51.44%
|
||||||
|
2011/04/01 - 2011/05/01: 32.24%
|
||||||
|
2011/05/01 - 2011/06/01: 95.92%
|
||||||
|
```
|
||||||
|
|
||||||
[hledger-irr](http://hackage.haskell.org/package/hledger-irr)
|
[hledger-irr](http://hackage.haskell.org/package/hledger-irr)
|
||||||
computes the internal rate of return, also known as the effective
|
computes the internal rate of return, also known as the effective
|
||||||
interest rate, of a given investment. After specifying what account
|
interest rate, of a given investment. After specifying what account
|
||||||
@ -1889,50 +2103,64 @@ See the package page for more.
|
|||||||
|
|
||||||
#### web
|
#### web
|
||||||
|
|
||||||
```{.shell .bold .right}
|
<style>
|
||||||
$ hledger-web
|
.highslide img {max-width:250px; float:right; margin:0 0 1em 1em;}
|
||||||
$ hledger-web -E -B --depth 2 -f some.journal
|
.highslide-caption {color:white; background-color:black;}
|
||||||
$ hledger-web --server --port 5010 --base-url http://some.vhost.com --debug=1
|
</style>
|
||||||
|
<a href="images/hledger-web/normal/register.png" class="highslide" onclick="return hs.expand(this)"><img src="images/hledger-web/normal/register.png" title="Account register view with accounts sidebar" /></a>
|
||||||
|
<a href="images/hledger-web/normal/journal-sidebar.png" class="highslide" onclick="return hs.expand(this)"><img src="images/hledger-web/normal/journal-sidebar.png" title="Journal view with accounts sidebar" /></a>
|
||||||
|
|
||||||
|
[hledger-web](http://hackage.haskell.org/package/hledger-web) provides
|
||||||
|
a web-based user interface for hledger. You can add new journal
|
||||||
|
entries with basic auto-completion, and easily browse your accounts,
|
||||||
|
with a more useful account register view and historical balance
|
||||||
|
charts. You can see a live demo (with junk data) at
|
||||||
|
[demo.hledger.org](http://demo.hledger.org).
|
||||||
|
|
||||||
|
```{.shell .noclear}
|
||||||
|
$ hledger web --help
|
||||||
|
hledger-web [OPTIONS] [PATTERNS]
|
||||||
|
start serving the hledger web interface
|
||||||
|
|
||||||
|
Flags:
|
||||||
|
--server log requests, and don't browse or auto-exit
|
||||||
|
--port=PORT set the tcp port (default: 5000)
|
||||||
|
--base-url=BASEURL set the base url (default: http://localhost:PORT)
|
||||||
|
--file-url=FILEURL set the static files url (default: BASEURL/static)
|
||||||
|
...
|
||||||
|
$ hledger web
|
||||||
|
Starting web app on port 5000 with base url http://localhost:5000
|
||||||
|
Starting web browser if possible
|
||||||
|
Web app will auto-exit after a few minutes with no browsers (or press ctrl-c)
|
||||||
```
|
```
|
||||||
|
|
||||||
[hledger-web](http://hackage.haskell.org/package/hledger-web)
|
By default, `hledger web` starts the web app, displays it in your
|
||||||
provides a web-based user interface for viewing and modifying your ledger.
|
default web browser if possible, keeps it running for as long as you
|
||||||
It includes an account register view that is more useful than the command-line register, and basic data entry.
|
have it open in a browser window, and then exits.
|
||||||
You can see it running at [demo.hledger.org](http://demo.hledger.org).
|
|
||||||
|
|
||||||
web-specific options:
|
With `--server`, it starts the web app in non-transient mode and logs
|
||||||
|
requests to the console. Typically when running hledger web as part
|
||||||
|
of a website you'll want to use `--base-url` to set the
|
||||||
|
protocol/hostname/port/path to be used in hyperlinks. The
|
||||||
|
`--file-url` option allows static files to be served from a different
|
||||||
|
url, eg for better caching or cookie-less serving.
|
||||||
|
|
||||||
--server log requests, don't exit on inactivity
|
<a href="images/hledger-web/normal/help.png" class="highslide" onclick="return hs.expand(this)"><img src="images/hledger-web/normal/help.png" title="Help dialog" /></a>
|
||||||
--port=N serve on tcp port N (default 5000)
|
<a href="images/hledger-web/normal/add.png" class="highslide" onclick="return hs.expand(this)"><img src="images/hledger-web/normal/add.png" title="Add form" /></a>
|
||||||
--base-url=URL use this base url (default http://localhost:PORT/)
|
|
||||||
--static-root=URL use this base url for static files (default http://localhost:PORT/static)
|
|
||||||
|
|
||||||
By default, the web command starts a transient local web app and displays it in your default web browser ("local ui mode").
|
You can use `--port` to listen on a different TCP port, eg if you are
|
||||||
With `--server`, it starts the web app, leaves it running, and also logs requests to the console ("server mode").
|
running multiple hledger-web instances. This need not be the same as
|
||||||
|
the PORT in the base url.
|
||||||
|
|
||||||
Typically in server mode you'll also want to use
|
Note there is no built-in access control, so you will need to hide
|
||||||
`--base-url` to set the protocol/hostname/port/path to be used in
|
hledger-web behind an authenticating proxy (such as apache or nginx)
|
||||||
hyperlinks.
|
if you want to restrict who can see and add entries to your journal.
|
||||||
|
|
||||||
You can use `--port` to listen on a different TCP port, eg if you are running multiple hledger-web
|
With [journal](#journal) and [timelog](#timelog) files (but not [CSV](#csv) files, currently)
|
||||||
instances. Note `--port`'s argument need not be the same as the PORT
|
the web app detects changes and will show the new data on the next request.
|
||||||
in the base url.
|
If a change makes the file unparseable, hledger-web will show an error
|
||||||
|
|
||||||
The more advanced option `--static-root` allows the static files served from a
|
|
||||||
separate base url. This enables the optimization that the static files can be
|
|
||||||
served from a generic web server like apache, which is good at handling static
|
|
||||||
files and caching. One can also serve the files in a separate domain to reduce
|
|
||||||
cookies overhead.
|
|
||||||
|
|
||||||
The web app detects changes in journal files (but not CSV or rules
|
|
||||||
files, currently), showing the new data on the next request. If such
|
|
||||||
a change makes the file unparseable, hledger-web will show an error
|
|
||||||
until the file has been fixed.
|
until the file has been fixed.
|
||||||
|
|
||||||
Note there is no built-in access control, so unless you run it behind
|
|
||||||
an authenticating proxy (such as apache or nginx), any visitor to your
|
|
||||||
server will be able to see and add entries to the journal.
|
|
||||||
|
|
||||||
<!-- edit form -->
|
<!-- edit form -->
|
||||||
<!-- Note: unlike any other hledger command, `web` can alter existing journal -->
|
<!-- Note: unlike any other hledger command, `web` can alter existing journal -->
|
||||||
<!-- data, via the edit form. A numbered backup of the file is saved on -->
|
<!-- data, via the edit form. A numbered backup of the file is saved on -->
|
||||||
@ -1956,23 +2184,66 @@ robustness).
|
|||||||
|
|
||||||
#### equity
|
#### equity
|
||||||
|
|
||||||
Like ledger's equity command, this prints a single journal entry with
|
```{.shell .right}
|
||||||
postings matching the current balance in each account (or the
|
$ hledger balance --flat -E assets liabilities
|
||||||
specified accounts) in the default journal. An entry like this is
|
0 assets:bank:checking
|
||||||
useful to carry over asset and liability balances when beginning a new
|
$1 assets:bank:saving
|
||||||
journal file, eg at the start of the year.
|
$-2 assets:cash
|
||||||
|
$1 liabilities:debts
|
||||||
|
--------------------
|
||||||
|
0
|
||||||
|
$ hledger equity assets liabilities
|
||||||
|
2015/05/23
|
||||||
|
assets:bank:saving $-1
|
||||||
|
assets:cash $2
|
||||||
|
liabilities:debts $-1
|
||||||
|
equity:closing balances 0
|
||||||
|
|
||||||
You can also use the same entry with signs reversed to close out the
|
2015/05/23
|
||||||
old file, resetting balances to 0. This means you'll see the correct
|
assets:bank:saving $1
|
||||||
asset/liability balances whether you use one file or a whole sequence
|
assets:cash $-2
|
||||||
of files as input to hledger.
|
liabilities:debts $1
|
||||||
|
equity:opening balances 0
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
This prints a journal entry which zeroes out the specified accounts
|
||||||
|
(or all accounts) with a transfer to/from "equity:closing balances"
|
||||||
|
(like Ledger's equity command). Also, it prints an similar entry with
|
||||||
|
opposite sign for restoring the balances from "equity:opening
|
||||||
|
balances".
|
||||||
|
|
||||||
|
These can be useful for ending one journal file and starting a new
|
||||||
|
one, respectively. By zeroing your asset and liability accounts at the
|
||||||
|
end of a file and restoring them at the start of the next one, you
|
||||||
|
will see correct asset/liability balances whether you run hledger on
|
||||||
|
just one file, or on several files concatenated with [include](#include).
|
||||||
|
|
||||||
#### print-unique
|
#### print-unique
|
||||||
|
|
||||||
Prints only journal entries which are unique (by description).
|
```{.shell .right}
|
||||||
|
$ cat unique.journal
|
||||||
|
1/1 test
|
||||||
|
(acct:one) 1
|
||||||
|
2/2 test
|
||||||
|
(acct:two) 2
|
||||||
|
$ LEDGER_FILE=unique.journal hledger print-unique
|
||||||
|
(-f option not supported)
|
||||||
|
2015/01/01 test
|
||||||
|
(acct:one) 1
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
Print only only journal entries which have a unique description.
|
||||||
|
|
||||||
#### rewrite
|
#### rewrite
|
||||||
|
|
||||||
|
```{.shell .right .bold}
|
||||||
|
$ hledger rewrite -- [QUERY] --add-posting "ACCT AMTEXPR" ...
|
||||||
|
$ hledger rewrite -- ^income --add-posting '(liabilities:tax) *.33'
|
||||||
|
$ hledger rewrite -- expenses:gifts --add-posting '(budget:gifts) *-1"'
|
||||||
|
```
|
||||||
|
|
||||||
Prints all journal entries, adding specified custom postings to matched entries.
|
Prints all journal entries, adding specified custom postings to matched entries.
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user