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