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 | ||||
| 
 | ||||
| ```{.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), | ||||
| which includes a `hledger-autosync` alias, downloads transactions | ||||
| from your bank(s) via OFX, and prints just the new ones as journal | ||||
| @ -1861,6 +1913,29 @@ download. | ||||
| 
 | ||||
| #### 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) | ||||
| compares two journal files. Given an account name, it prints out the | ||||
| transactions affecting that account which are in one journal file but | ||||
| @ -1869,6 +1944,87 @@ journals with bank statements. | ||||
| 
 | ||||
| #### 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) | ||||
| computes interests for a given account. Using command line flags, | ||||
| 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 | ||||
| 
 | ||||
| ```{.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) | ||||
| computes the internal rate of return, also known as the effective | ||||
| interest rate, of a given investment. After specifying what account | ||||
| @ -1889,50 +2103,64 @@ See the package page for more. | ||||
| 
 | ||||
| #### web | ||||
| 
 | ||||
| ```{.shell .bold .right} | ||||
| $ hledger-web | ||||
| $ hledger-web -E -B --depth 2 -f some.journal | ||||
| $ hledger-web --server --port 5010 --base-url http://some.vhost.com --debug=1 | ||||
| <style> | ||||
| .highslide img {max-width:250px; float:right; margin:0 0 1em 1em;} | ||||
| .highslide-caption {color:white; background-color:black;} | ||||
| </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) | ||||
| provides a web-based user interface for viewing and modifying your ledger. | ||||
| It includes an account register view that is more useful than the command-line register, and basic data entry. | ||||
| You can see it running at [demo.hledger.org](http://demo.hledger.org). | ||||
| By default, `hledger web` starts the web app, displays it in your | ||||
| default web browser if possible, keeps it running for as long as you | ||||
| have it open in a browser window, and then exits. | ||||
| 
 | ||||
| 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 | ||||
|     --port=N            serve on tcp port N (default 5000) | ||||
|     --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) | ||||
| <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> | ||||
| <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> | ||||
| 
 | ||||
| By default, the web command starts a transient local web app and displays it in your default web browser ("local ui mode"). | ||||
| With `--server`, it starts the web app, leaves it running, and also logs requests to the console ("server mode"). | ||||
| You can use `--port` to listen on a different TCP port, eg if you are | ||||
| 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 | ||||
| `--base-url` to set the protocol/hostname/port/path to be used in | ||||
| hyperlinks. | ||||
| Note there is no built-in access control, so you will need to hide | ||||
| hledger-web behind an authenticating proxy (such as apache or nginx) | ||||
| 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 | ||||
| instances.  Note `--port`'s argument need not be the same as the PORT | ||||
| in the base url. | ||||
| 
 | ||||
| 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 | ||||
| With [journal](#journal) and [timelog](#timelog) files (but not [CSV](#csv) files, currently) | ||||
| the web app detects changes and will show the new data on the next request. | ||||
| If a change makes the file unparseable, hledger-web will show an error | ||||
| 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 --> | ||||
| <!-- 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 --> | ||||
| @ -1956,23 +2184,66 @@ robustness). | ||||
| 
 | ||||
| #### equity | ||||
| 
 | ||||
| Like ledger's equity command, this prints a single journal entry with | ||||
| postings matching the current balance in each account (or the | ||||
| specified accounts) in the default journal. An entry like this is | ||||
| useful to carry over asset and liability balances when beginning a new | ||||
| journal file, eg at the start of the year. | ||||
| ```{.shell .right} | ||||
| $ hledger balance --flat -E assets liabilities | ||||
|                    0  assets:bank:checking | ||||
|                   $1  assets:bank:saving | ||||
|                  $-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 | ||||
| old file, resetting balances to 0. This means you'll see the correct | ||||
| asset/liability balances whether you use one file or a whole sequence | ||||
| of files as input to hledger. | ||||
| 2015/05/23 | ||||
|     assets:bank:saving                 $1 | ||||
|     assets:cash                       $-2 | ||||
|     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 | ||||
| 
 | ||||
| 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 | ||||
| 
 | ||||
| ```{.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. | ||||
| 
 | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user