doc: hledger: add more content from old manual
This commit is contained in:
		
							parent
							
								
									db96d54ec0
								
							
						
					
					
						commit
						b69b149d39
					
				| @ -13,6 +13,8 @@ hledger\-web \- web interface for the hledger accounting tool | ||||
| .P | ||||
| .PD | ||||
| \f[C]hledger\ web\ \-\-\ [OPTIONS]\f[] | ||||
| .PP | ||||
| .PP | ||||
| .SH DESCRIPTION | ||||
| .PP | ||||
| hledger is a cross\-platform program for tracking money, time, or any | ||||
| @ -45,6 +47,15 @@ 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). | ||||
| .IP | ||||
| .nf | ||||
| \f[C] | ||||
| $\ 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) | ||||
| \f[] | ||||
| .fi | ||||
| .PP | ||||
| With \f[C]\-\-server\f[], it starts the web app in non\-transient mode | ||||
| and logs requests to the console. | ||||
|  | ||||
| @ -15,6 +15,16 @@ hledger-web - web interface for the hledger accounting tool | ||||
| `hledger-web [OPTIONS]`\ | ||||
| `hledger web -- [OPTIONS]` | ||||
| 
 | ||||
| <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.png" class="highslide" onclick="return hs.expand(this)"><img src="images/hledger-web/normal/journal.png" title="Journal view" /></a> | ||||
| 
 | ||||
| <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> | ||||
| 
 | ||||
| # DESCRIPTION | ||||
| 
 | ||||
| hledger is a cross-platform program for tracking money, time, or any other commodity, | ||||
| @ -45,6 +55,13 @@ 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). | ||||
| 
 | ||||
| ```shell | ||||
| $ 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) | ||||
| ``` | ||||
| 
 | ||||
| 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 | ||||
| @ -65,6 +82,21 @@ 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. | ||||
| 
 | ||||
| --- | ||||
| # disabled | ||||
| # 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 | ||||
| # each edit, normally (ie if file permissions allow, disk is not full, etc.) | ||||
| # Also, there is no built-in access control. So unless you run it behind an | ||||
| # authenticating proxy, any visitor to your server will be able to see and | ||||
| # overwrite the journal file (and included files.) | ||||
| # hledger-web disallows edits which would leave the journal file not in | ||||
| # valid [journal format](#journal). If the file becomes unparseable | ||||
| # by other means, hledger-web will show an error until the file has been | ||||
| # fixed. | ||||
| ... | ||||
| 
 | ||||
| # OPTIONS | ||||
| 
 | ||||
| Note: if invoking hledger-web as a hledger subcommand, write `--` before options as shown above. | ||||
|  | ||||
							
								
								
									
										342
									
								
								hledger/doc/commands-balance.m4.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										342
									
								
								hledger/doc/commands-balance.m4.md
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,342 @@ | ||||
| ## balance | ||||
| Show accounts and their balances. Alias: bal. | ||||
| 
 | ||||
| `--tree` | ||||
| : show short account names, as a tree | ||||
| 
 | ||||
| `--flat` | ||||
| : show full account names, as a list (default) | ||||
| 
 | ||||
| `--drop=N` | ||||
| : in flat mode: omit N leading account name parts | ||||
| 
 | ||||
| `--format=LINEFORMAT` | ||||
| : in single-column balance reports: use this custom line format | ||||
| 
 | ||||
| `--no-elide` | ||||
| : in tree mode: don't squash boring parent accounts | ||||
| 
 | ||||
| `-H --historical` | ||||
| : in multicolumn mode: show historical ending balances | ||||
| 
 | ||||
| `--cumulative` | ||||
| : in multicolumn mode: show accumulated ending balances | ||||
| 
 | ||||
| `-A --average` | ||||
| : in multicolumn mode: show a row average column | ||||
| 
 | ||||
| `-T --row-total` | ||||
| : in multicolumn mode: show a row total column | ||||
| 
 | ||||
| `-N --no-total` | ||||
| : don't show the final total row | ||||
| 
 | ||||
| `-V --value` | ||||
| : show amounts as their current market value in their default valuation commodity | ||||
| 
 | ||||
| `-o FILE[.FMT] --output-file=FILE[.FMT]` | ||||
| : write output to FILE instead of stdout. A recognised FMT suffix influences the format. | ||||
| 
 | ||||
| `-O FMT --output-format=FMT     ` | ||||
| : select the output format. Supported formats: | ||||
| txt, csv. | ||||
| 
 | ||||
| The balance command displays accounts and balances. | ||||
| It is hledger's most featureful and most useful command. | ||||
| 
 | ||||
| ``` {.shell .right} | ||||
| $ hledger balance | ||||
|                  $-1  assets | ||||
|                   $1    bank:saving | ||||
|                  $-2    cash | ||||
|                   $2  expenses | ||||
|                   $1    food | ||||
|                   $1    supplies | ||||
|                  $-2  income | ||||
|                  $-1    gifts | ||||
|                  $-1    salary | ||||
|                   $1  liabilities:debts | ||||
| -------------------- | ||||
|                    0 | ||||
| ``` | ||||
| 
 | ||||
| More precisely, the balance command shows the *change* to each account's balance caused by all (matched) postings. | ||||
| In the common case where you do not filter by date and your journal sets the correct opening balances, this is the same as the account's ending balance. | ||||
| 
 | ||||
| By default, accounts are displayed hierarchically, with subaccounts | ||||
| indented below their parent. | ||||
| "Boring" accounts, which contain a single interesting | ||||
| subaccount and no balance of their own, are elided into the following | ||||
| line for more compact output. (Use `--no-elide` to prevent this.) | ||||
| 
 | ||||
| Each account's balance is the "inclusive" balance - it includes the | ||||
| balances of any subaccounts. | ||||
| 
 | ||||
| 
 | ||||
| Accounts which have zero balance (and no non-zero subaccounts) are | ||||
| omitted. Use `-E/--empty` to show them. | ||||
| 
 | ||||
| ``` {.shell .right .clear} | ||||
| $ hledger balance -p 2008/6 expenses --no-total | ||||
|                   $2  expenses | ||||
|                   $1    food | ||||
|                   $1    supplies | ||||
| ``` | ||||
| 
 | ||||
| A final total is displayed by default; use `-N/--no-total` to suppress it. | ||||
| 
 | ||||
| ### Flat mode | ||||
| 
 | ||||
| ``` {.shell .right} | ||||
| $ hledger balance -p 2008/6 expenses -N --flat --drop 1 | ||||
|                   $1  food | ||||
|                   $1  supplies | ||||
| ``` | ||||
| 
 | ||||
| To see a flat list of full account names instead of the default hierarchical display, use `--flat`. | ||||
| In this mode, accounts (unless depth-clipped) show their "exclusive" balance, excluding any subaccount balances. | ||||
| In this mode, you can also use `--drop N` to omit the first few account name components. | ||||
| 
 | ||||
| ### Depth limiting | ||||
| 
 | ||||
| ``` {.shell .right} | ||||
| $ hledger balance -N --depth 1 | ||||
|                  $-1  assets | ||||
|                   $2  expenses | ||||
|                  $-2  income | ||||
|                   $1  liabilities | ||||
| ``` | ||||
| 
 | ||||
| With `--depth N`, balance shows accounts only to the specified depth. | ||||
| This is very useful to show a complex charts of accounts in less detail. | ||||
| In flat mode, balances from accounts below the depth limit will be shown as part of a parent account at the depth limit. | ||||
| 
 | ||||
| <!-- $ for y in 2006 2007 2008 2009 2010; do echo; echo $y; hledger -f $y.journal balance ^expenses --depth 2; done --> | ||||
| 
 | ||||
| ### Multicolumn balance reports | ||||
| 
 | ||||
| With a [reporting interval](#reporting-interval), multiple balance | ||||
| columns will be shown, one for each report period. | ||||
| There are three types of multi-column balance report, showing different information: | ||||
| 
 | ||||
| ``` {.shell .right} | ||||
| $ hledger balance --quarterly income expenses -E | ||||
| Balance changes in 2008: | ||||
| 
 | ||||
|                    ||  2008q1  2008q2  2008q3  2008q4  | ||||
| ===================++================================= | ||||
|  expenses:food     ||       0      $1       0       0  | ||||
|  expenses:supplies ||       0      $1       0       0  | ||||
|  income:gifts      ||       0     $-1       0       0  | ||||
|  income:salary     ||     $-1       0       0       0  | ||||
| -------------------++--------------------------------- | ||||
|                    ||     $-1      $1       0       0  | ||||
| 
 | ||||
| ``` | ||||
| 
 | ||||
| 1. By default: each column shows the sum of postings in that period, | ||||
| ie the account's change of balance in that period. This is useful eg | ||||
| for a monthly income statement. | ||||
| <!-- | ||||
| multi-column income statement:  | ||||
| 
 | ||||
|    $ hledger balance ^income ^expense -p 'monthly this year' --depth 3 | ||||
| 
 | ||||
| or cashflow statement: | ||||
| 
 | ||||
|    $ hledger balance ^assets ^liabilities 'not:(receivable|payable)' -p 'weekly this month' | ||||
| --> | ||||
| 
 | ||||
| <div style="clear:both;"></div> | ||||
| ``` {.shell .right} | ||||
| $ hledger balance --quarterly income expenses -E --cumulative | ||||
| Ending balances (cumulative) in 2008: | ||||
| 
 | ||||
|                    ||  2008/03/31  2008/06/30  2008/09/30  2008/12/31  | ||||
| ===================++================================================= | ||||
|  expenses:food     ||           0          $1          $1          $1  | ||||
|  expenses:supplies ||           0          $1          $1          $1  | ||||
|  income:gifts      ||           0         $-1         $-1         $-1  | ||||
|  income:salary     ||         $-1         $-1         $-1         $-1  | ||||
| -------------------++------------------------------------------------- | ||||
|                    ||         $-1           0           0           0  | ||||
| 
 | ||||
| ``` | ||||
| 
 | ||||
| 2. With `--cumulative`: each column shows the ending balance for that | ||||
| period, accumulating the changes across periods, starting from 0 at | ||||
| the report start date. This mode is not often used. | ||||
| 
 | ||||
| <div style="clear:both;"></div> | ||||
| ``` {.shell .right} | ||||
| $ hledger balance ^assets ^liabilities -Q  | ||||
| Balance changes in 2008: | ||||
| 
 | ||||
|                       ||  2008q1  2008q2  2008q3  2008q4  | ||||
| ======================++================================= | ||||
|  assets:bank:checking ||      $1       0       0     $-1  | ||||
|  assets:bank:saving   ||       0      $1       0       0  | ||||
|  assets:cash          ||       0     $-2       0       0  | ||||
|  liabilities:debts    ||       0       0       0      $1  | ||||
| ----------------------++--------------------------------- | ||||
|                       ||      $1     $-1       0       0  | ||||
| 
 | ||||
| $ hledger balance ^assets ^liabilities --quarterly --historical --begin 2008/4/1 | ||||
| Ending balances (historical) in 2008/04/01-2008/12/31: | ||||
| 
 | ||||
|                       ||  2008/06/30  2008/09/30  2008/12/31  | ||||
| ======================++===================================== | ||||
|  assets:bank:checking ||          $1          $1           0  | ||||
|  assets:bank:saving   ||          $1          $1          $1  | ||||
|  assets:cash          ||         $-2         $-2         $-2  | ||||
|  liabilities:debts    ||           0           0          $1  | ||||
| ----------------------++------------------------------------- | ||||
|                       ||           0           0           0  | ||||
| 
 | ||||
| ``` | ||||
| 
 | ||||
| 3. With `--historical/-H`: each column shows the actual historical | ||||
| ending balance for that period, accumulating the changes across | ||||
| periods, starting from the actual balance at the report start date. | ||||
| This is useful eg for a multi-period balance sheet, and when | ||||
| you are showing only the data after a certain start date. | ||||
| 
 | ||||
| <div style="clear:both;"></div> | ||||
| ``` {.shell .right} | ||||
| $ hledger balance -Q income expenses --tree -E -TA | ||||
| Balance changes in 2008: | ||||
| 
 | ||||
|             ||  2008q1  2008q2  2008q3  2008q4    Total  Average  | ||||
| ============++=================================================== | ||||
|  expenses   ||       0      $2       0       0       $2       $1  | ||||
|    food     ||       0      $1       0       0       $1        0  | ||||
|    supplies ||       0      $1       0       0       $1        0  | ||||
|  income     ||     $-1     $-1       0       0      $-2      $-1  | ||||
|    gifts    ||       0     $-1       0       0      $-1        0  | ||||
|    salary   ||     $-1       0       0       0      $-1        0  | ||||
| ------------++--------------------------------------------------- | ||||
|             ||     $-1      $1       0       0        0        0  | ||||
| 
 | ||||
| # Average is rounded to the dollar here since all journal amounts are | ||||
| 
 | ||||
| ``` | ||||
| 
 | ||||
| Multi-column balance reports display accounts in flat mode by default; | ||||
| to see the hierarchy, use `--tree`. | ||||
| 
 | ||||
| Note that with a reporting interval, the report start/end dates will | ||||
| be "enlarged" if necessary so that they encompass the displayed report | ||||
| periods. This is so that the first and last periods will be "full" and | ||||
| comparable to the others. | ||||
| 
 | ||||
| The `-E/--empty` flag does two things here: first, the report will | ||||
| show all columns within the specified report period (without -E, | ||||
| leading and trailing columns with all zeroes are not shown). Second, | ||||
| all accounts which existed at the report start date will be | ||||
| considered, not just the ones with activity during the report period | ||||
| (use -E to include low-activity accounts which would otherwise would | ||||
| be omitted). | ||||
| 
 | ||||
| The `-T/--row-total` flag adds an additional column showing the total | ||||
| for each row.  The `-A/--average` flag adds a column showing the | ||||
| average value in each row. Note in `--H/--historical` mode only the | ||||
| average is useful, and in `--cumulative` mode neither is useful. | ||||
| 
 | ||||
| ### Market value | ||||
| 
 | ||||
| The `-V/--value` flag converts all the reported amounts to their | ||||
| "current market value" using their default market price. That is the | ||||
| latest [market price](#market-prices) (P directive) found in the | ||||
| journal (or an included file), for the amount's commodity, dated on or | ||||
| before the report end date. | ||||
|      | ||||
| Unlike Ledger, hledger's -V only uses the market prices recorded with | ||||
| P directives, ignoring transaction prices recorded as part of posting | ||||
| amounts (which -B/--cost uses). Using -B and -V together is allowed. | ||||
| 
 | ||||
| <!-- | ||||
| ``` {.shell .right} | ||||
| $ hledger balance -V ... | ||||
| ``` | ||||
| --> | ||||
| 
 | ||||
| ### Custom balance output | ||||
| 
 | ||||
| ``` {.shell .right} | ||||
| $ hledger balance --format "%20(account) %12(total)" | ||||
|               assets          $-1 | ||||
|          bank:saving           $1 | ||||
|                 cash          $-2 | ||||
|             expenses           $2 | ||||
|                 food           $1 | ||||
|             supplies           $1 | ||||
|               income          $-2 | ||||
|                gifts          $-1 | ||||
|               salary          $-1 | ||||
|    liabilities:debts           $1 | ||||
| --------------------------------- | ||||
|                                 0 | ||||
| ``` | ||||
| 
 | ||||
| In simple (non-multi-column) balance reports, you can customise the | ||||
| output with `--format FMT`. FMT (plus a newline) will be displayed for | ||||
| each account/balance pair. It is a format string with data fields | ||||
| interpolated by | ||||
| 
 | ||||
| `%[MIN][.MAX](FIELDNAME)` | ||||
| 
 | ||||
| where MIN means pad with spaces to at least this width, and MAX means | ||||
| truncate at this width. The field name must be enclosed in | ||||
| parentheses. Three fields are available: | ||||
| 
 | ||||
| - `depth_spacer` - a number of spaces equal to the account's depth, or if MIN is specified, MIN * depth spaces. | ||||
| - `account`      - the account's name | ||||
| - `total`        - the account's balance/posted total, right justified | ||||
| 
 | ||||
| When the total has multiple commodities, by default each commodity is | ||||
| displayed on a separate line, and the report item will be bottom | ||||
| aligned.  You can change how such multi-line values are rendered by | ||||
| beginning the format with a special prefix: | ||||
| 
 | ||||
| - `%_` - render on multiple lines, bottom-aligned (the default) | ||||
| - `%^` - render on multiple lines, top-aligned | ||||
| - `%,` - render on one line, with multi-line values comma-separated | ||||
| 
 | ||||
| There are some quirks, and experimentation may be needed to get pleasing output. | ||||
| In one-line mode, `%(depth_spacer)` has no effect, instead `%(account)` has indentation built in. | ||||
| <!-- XXX retest: | ||||
| Consistent column widths are not well enforced, causing ragged edges unless you set suitable widths. | ||||
| Beware of specifying a maximum width; it will clip account names and amounts that are too wide, with no visible indication. | ||||
| --> | ||||
| 
 | ||||
| Examples: | ||||
| 
 | ||||
| - `%(total)`         - the account's total | ||||
| - `%-20.20(account)` - the account's name, left justified, padded to 20 characters and clipped at 20 characters | ||||
| - `%20(total)  %2(depth_spacer)%-(account)` - default format for the single-column balance report | ||||
| - `%,%-50(account)  %25(total)` - account name padded to 50 characters, total padded to 20 characters, with multiple commodities rendered on one line | ||||
| 
 | ||||
| ### Output destination | ||||
| 
 | ||||
| ```{.shell .bold .right} | ||||
| $ hledger balance -o -     # write to stdout (the default) | ||||
| $ hledger balance -o FILE  # write to FILE | ||||
| ``` | ||||
| 
 | ||||
| The balance, print, register and stats commands can write their output to a | ||||
| destination other than the console. This is controlled by the | ||||
| `-o/--output-file` option. | ||||
| 
 | ||||
| ### CSV output | ||||
| 
 | ||||
| ```{.shell .bold .right} | ||||
| $ hledger balance -O csv       # write CSV to stdout | ||||
| $ hledger balance -o FILE.csv  # write CSV to FILE.csv | ||||
| ``` | ||||
| 
 | ||||
| The balance, print and register commands can write their output as | ||||
| CSV. This is useful for exporting data to other applications, eg to | ||||
| make charts in a spreadsheet. This is controlled by the | ||||
| `-O/--output-format` option, or by specifying a `.csv` file extension | ||||
| with `-o/--output-file`. | ||||
| 
 | ||||
| @ -1,71 +1,23 @@ | ||||
| # COMMANDS | ||||
| 
 | ||||
| hledger provides a number of subcommands; `hledger` with no arguments shows a list. | ||||
| hledger provides a number of subcommands; `hledger` with no arguments | ||||
| shows a list. | ||||
| 
 | ||||
| Select a subcommand by writing its name as first argument (eg `hledger incomestatement`). You can also write any unambiguous prefix of a command name (`hledger inc`), or one of the standard short aliases displayed in the command list (`hledger is`). | ||||
| If you install additional `hledger-*` packages, or if you put programs | ||||
| or scripts named `hledger-NAME` in your PATH, these will also be | ||||
| listed as subcommands. | ||||
| 
 | ||||
| If you install additional `hledger-*` packages, | ||||
| or if you put programs or scripts named `hledger-NAME` in your PATH, these will also be listed as hledger subcommands. | ||||
| Run a subcommand by writing its name as first argument (eg `hledger | ||||
| incomestatement`). You can also write any unambiguous prefix of a | ||||
| command name (`hledger inc`), or one of the standard short aliases | ||||
| displayed in the command list (`hledger is`). | ||||
| 
 | ||||
| Here is a summary (see http://hledger.org/manual#commands for the full command help): | ||||
| --- | ||||
| # for each command: name, synopsis, description, examples. | ||||
| ... | ||||
| 
 | ||||
| ## Data entry | ||||
| 
 | ||||
| ### add | ||||
| prompt for transactions and add them to the journal. | ||||
| 
 | ||||
| This is the only hledger command that writes to the journal file. | ||||
| It appends only, existing transactions are not changed. | ||||
| 
 | ||||
| `--no-new-accounts` | ||||
| : don't allow creating new accounts; helps prevent typos when entering account names | ||||
| 
 | ||||
| ## Reporting | ||||
| 
 | ||||
| ### accounts | ||||
| 
 | ||||
| ``` {.shell .right} | ||||
| $ hledger accounts --tree | ||||
| assets | ||||
|   bank | ||||
|     checking | ||||
|     saving | ||||
|   cash | ||||
| expenses | ||||
|   food | ||||
|   supplies | ||||
| income | ||||
|   gifts | ||||
|   salary | ||||
| liabilities | ||||
|   debts | ||||
| ``` | ||||
| 
 | ||||
| ``` {.shell .right} | ||||
| $ hledger accounts --drop 1 | ||||
| bank:checking | ||||
| bank:saving | ||||
| cash | ||||
| food | ||||
| supplies | ||||
| gifts | ||||
| salary | ||||
| debts | ||||
| ``` | ||||
| 
 | ||||
| ``` {.shell .right} | ||||
| $ hledger accounts | ||||
| assets:bank:checking | ||||
| assets:bank:saving | ||||
| assets:cash | ||||
| expenses:food | ||||
| expenses:supplies | ||||
| income:gifts | ||||
| income:salary | ||||
| liabilities:debts | ||||
| ``` | ||||
| 
 | ||||
| show account names | ||||
| ## accounts | ||||
| Show account names. | ||||
| 
 | ||||
| `--tree` | ||||
| : show short account names, as a tree | ||||
| @ -80,20 +32,140 @@ This command lists all account names that are in use (ie, all the | ||||
| accounts which have at least one transaction posting to them).  With | ||||
| query arguments, only matched account names are shown. | ||||
| 
 | ||||
| It shows a flat list by default. In this mode you can add `--drop N` | ||||
| to omit the first few account name components. | ||||
| It shows a flat list by default. With `--tree`, it uses indentation to | ||||
| show the account hierarchy. | ||||
| 
 | ||||
| With `--tree`, it shows the account hierarchy. | ||||
| In flat mode you can add `--drop N` to omit the first few account name | ||||
| components. | ||||
| 
 | ||||
| ### activity | ||||
| show an ascii barchart of posting counts per interval | ||||
| (default: daily) | ||||
| Examples: | ||||
| 
 | ||||
| ### balance, bal | ||||
| show accounts and balances | ||||
| _col3_({{ | ||||
| _shell_({{ | ||||
| $ hledger accounts --tree | ||||
| assets | ||||
|   bank | ||||
|     checking | ||||
|     saving | ||||
|   cash | ||||
| expenses | ||||
|   food | ||||
|   supplies | ||||
| income | ||||
|   gifts | ||||
|   salary | ||||
| liabilities | ||||
|   debts | ||||
| }}) | ||||
| }},{{ | ||||
| _shell_({{ | ||||
| $ hledger accounts --drop 1 | ||||
| bank:checking | ||||
| bank:saving | ||||
| cash | ||||
| food | ||||
| supplies | ||||
| gifts | ||||
| salary | ||||
| debts | ||||
| }}) | ||||
| }},{{ | ||||
| _shell_({{ | ||||
| $ hledger accounts | ||||
| assets:bank:checking | ||||
| assets:bank:saving | ||||
| assets:cash | ||||
| expenses:food | ||||
| expenses:supplies | ||||
| income:gifts | ||||
| income:salary | ||||
| liabilities:debts | ||||
| }}) | ||||
| }}) | ||||
| 
 | ||||
| `--tree` | ||||
| : show short account names, as a tree | ||||
| ## activity | ||||
| Show an ascii barchart of posting counts per interval. | ||||
| 
 | ||||
| The activity command displays an ascii histogram showing | ||||
| transaction counts by day, week, month or other reporting interval | ||||
| (by day is the default). With query arguments, it counts only matched transactions. | ||||
| 
 | ||||
| _col3_({{ | ||||
| _shell_({{ | ||||
| $ hledger activity --quarterly | ||||
| 2008-01-01 ** | ||||
| 2008-04-01 ******* | ||||
| 2008-07-01  | ||||
| 2008-10-01 ** | ||||
| }}) | ||||
| }}) | ||||
| 
 | ||||
| ## add | ||||
| Prompt for transactions and add them to the journal. | ||||
| 
 | ||||
| `--no-new-accounts` | ||||
| : don't allow creating new accounts; helps prevent typos when entering account names | ||||
| 
 | ||||
| Many hledger users edit their journals directly with a text editor, or generate them from CSV. | ||||
| For more interactive data entry, there is the `add` command,  | ||||
| which prompts interactively on the console for new transactions, and appends | ||||
| them to the journal file (existing transactions are not changed). | ||||
| This is the only hledger command that writes to the journal file. | ||||
| 
 | ||||
| To use it, just run `hledger add` and follow the prompts. | ||||
| You can add as many transactions as you like; when you are finished, | ||||
| enter `.` or press control-d or control-c to exit. | ||||
| 
 | ||||
| Features: | ||||
| 
 | ||||
| - add tries to provide useful defaults, using the most similar recent | ||||
|   transaction (by description) as a template. | ||||
| - You can also set the initial defaults with command line arguments. | ||||
| - [Readline-style edit keys](http://tiswww.case.edu/php/chet/readline/rluserman.html#SEC3) | ||||
|   can be used during data entry. | ||||
| - The tab key will auto-complete whenever possible - accounts, | ||||
|   descriptions, dates (`yesterday`, `today`, `tomorrow`). If the input | ||||
|   area is empty, it will insert the default value. | ||||
| - If the journal defines a [default commodity](#default-commodity), | ||||
|   it will be added to any bare numbers entered. | ||||
| - A parenthesised transaction [code](#entries) may be entered following a date. | ||||
| - [Comments](#comments) and tags may be entered following a description or amount. | ||||
| - If you make a mistake, enter `<` at any prompt to restart the transaction. | ||||
| - Input prompts are displayed in a different colour when the terminal supports it. | ||||
| 
 | ||||
| Example (see the [tutorial](step-by-step.html#record-a-transaction-with-hledger-add) for a detailed explanation): | ||||
| 
 | ||||
| _shell_({{ | ||||
| $ hledger add | ||||
| Adding transactions to journal file /src/hledger/data/sample.journal | ||||
| Any command line arguments will be used as defaults. | ||||
| Use tab key to complete, readline keys to edit, enter to accept defaults. | ||||
| An optional (CODE) may follow transaction dates. | ||||
| An optional ; COMMENT may follow descriptions or amounts. | ||||
| If you make a mistake, enter < at any prompt to restart the transaction. | ||||
| To end a transaction, enter . when prompted. | ||||
| To quit, enter . at a date prompt or press control-d or control-c. | ||||
| Date [2015/05/22]:  | ||||
| Description: supermarket | ||||
| Account 1: expenses:food | ||||
| Amount  1: $10 | ||||
| Account 2: assets:checking | ||||
| Amount  2 [$-10.0]:  | ||||
| Account 3 (or . or enter to finish this transaction): . | ||||
| 2015/05/22 supermarket | ||||
|     expenses:food             $10 | ||||
|     assets:checking        $-10.0 | ||||
| 
 | ||||
| Save this transaction to the journal ? [y]:  | ||||
| Saved. | ||||
| Starting the next transaction (. or ctrl-D/ctrl-C to quit) | ||||
| Date [2015/05/22]: <CTRL-D> $ | ||||
| }}) | ||||
| 
 | ||||
| _include_({{commands-balance.m4.md}}) | ||||
| 
 | ||||
| ## balancesheet | ||||
| Show a balance sheet. Alias: bs. | ||||
| 
 | ||||
| `--flat` | ||||
| : show full account names, as a list (default) | ||||
| @ -101,39 +173,36 @@ show accounts and balances | ||||
| `--drop=N` | ||||
| : in flat mode: omit N leading account name parts | ||||
| 
 | ||||
| `--format=LINEFORMAT` | ||||
| : in single-column balance reports: use this custom line format | ||||
| This command displays a simple | ||||
| [balance sheet](http://en.wikipedia.org/wiki/Balance_sheet). It currently | ||||
| assumes that you have top-level accounts named `asset` and `liability` | ||||
| (plural forms also allowed.) | ||||
| 
 | ||||
| `--no-elide` | ||||
| : in tree mode: don't squash boring parent accounts | ||||
| _col3_({{ | ||||
| _shell_({{ | ||||
| $ hledger balancesheet | ||||
| Balance Sheet | ||||
| 
 | ||||
| `-H --historical` | ||||
| : in multicolumn mode: show historical ending balances | ||||
| Assets: | ||||
|                  $-1  assets | ||||
|                   $1    bank:saving | ||||
|                  $-2    cash | ||||
| -------------------- | ||||
|                  $-1 | ||||
| 
 | ||||
| `--cumulative` | ||||
| : in multicolumn mode: show accumulated ending balances | ||||
| Liabilities: | ||||
|                   $1  liabilities:debts | ||||
| -------------------- | ||||
|                   $1 | ||||
| 
 | ||||
| `-A --average` | ||||
| : in multicolumn mode: show a row average column | ||||
| Total: | ||||
| -------------------- | ||||
|                    0 | ||||
| }}) | ||||
| }}) | ||||
| 
 | ||||
| `-T --row-total` | ||||
| : in multicolumn mode: show a row total column | ||||
| 
 | ||||
| `-N --no-total` | ||||
| : don't show the final total row | ||||
| 
 | ||||
| `-V --value` | ||||
| : show amounts as their current market value in their default valuation commodity | ||||
| 
 | ||||
| `-o FILE[.FMT] --output-file=FILE[.FMT]` | ||||
| : write output to FILE instead of stdout. A recognised FMT suffix influences the format. | ||||
| 
 | ||||
| `-O FMT --output-format=FMT     ` | ||||
| : select the output format. Supported formats: | ||||
| txt, csv. | ||||
| 
 | ||||
| ### balancesheet, bs | ||||
| show a balance sheet | ||||
| ## cashflow | ||||
| Show a cashflow statement. Alias: cf. | ||||
| 
 | ||||
| `--flat` | ||||
| : show full account names, as a list (default) | ||||
| @ -141,8 +210,33 @@ show a balance sheet | ||||
| `--drop=N` | ||||
| : in flat mode: omit N leading account name parts | ||||
| 
 | ||||
| ### cashflow, cf | ||||
| show a cashflow statement | ||||
| This command displays a simple | ||||
| [cashflow statement](http://en.wikipedia.org/wiki/Cash_flow_statement) | ||||
| It shows the change in all "cash" (ie, liquid assets) accounts for the | ||||
| period. It currently assumes that cash accounts are under a top-level | ||||
| account named `asset` and do not contain `receivable` or `A/R` (plural | ||||
| forms also allowed.) | ||||
| 
 | ||||
| _col3_({{ | ||||
| _shell_({{ | ||||
| $ hledger cashflow | ||||
| Cashflow Statement | ||||
| 
 | ||||
| Cash flows: | ||||
|                  $-1  assets | ||||
|                   $1    bank:saving | ||||
|                  $-2    cash | ||||
| -------------------- | ||||
|                  $-1 | ||||
| 
 | ||||
| Total: | ||||
| -------------------- | ||||
|                  $-1 | ||||
| }}) | ||||
| }}) | ||||
| 
 | ||||
| ## incomestatement | ||||
| Show an income statement. Alias: is. | ||||
| 
 | ||||
| `--flat` | ||||
| : show full account names, as a list (default) | ||||
| @ -150,17 +244,38 @@ show a cashflow statement | ||||
| `--drop=N` | ||||
| : in flat mode: omit N leading account name parts | ||||
| 
 | ||||
| ### incomestatement, is | ||||
| show an income statement | ||||
| This command displays a simple | ||||
| [income statement](http://en.wikipedia.org/wiki/Income_statement).  It | ||||
| currently assumes that you have top-level accounts named `income` (or | ||||
| `revenue`) and `expense` (plural forms also allowed.) | ||||
| 
 | ||||
| `--flat` | ||||
| : show full account names, as a list (default) | ||||
| _col3_({{ | ||||
| _shell_({{ | ||||
| $ hledger incomestatement | ||||
| Income Statement | ||||
| 
 | ||||
| `--drop=N` | ||||
| : in flat mode: omit N leading account name parts | ||||
| Revenues: | ||||
|                  $-2  income | ||||
|                  $-1    gifts | ||||
|                  $-1    salary | ||||
| -------------------- | ||||
|                  $-2 | ||||
| 
 | ||||
| ### print | ||||
| show transactions from the journal | ||||
| Expenses: | ||||
|                   $2  expenses | ||||
|                   $1    food | ||||
|                   $1    supplies | ||||
| -------------------- | ||||
|                   $2 | ||||
| 
 | ||||
| Total: | ||||
| -------------------- | ||||
|                    0 | ||||
| }}) | ||||
| }}) | ||||
| 
 | ||||
| ## print | ||||
| Show transactions from the journal. | ||||
| 
 | ||||
| `-m STR --match=STR             ` | ||||
| : show the transaction whose description is most similar to STR, and is most recent | ||||
| @ -172,8 +287,48 @@ show transactions from the journal | ||||
| : select the output format. Supported formats: | ||||
| txt, csv. | ||||
| 
 | ||||
| ### register, reg | ||||
| show postings and running total | ||||
| The print command displays full transactions from the journal file, | ||||
| tidily formatted and showing all amounts explicitly. The output of | ||||
| print is always a valid hledger journal, but it does always not | ||||
| preserve all original content exactly (eg directives). | ||||
| 
 | ||||
| hledger's print command also shows all unit prices in effect, or (with | ||||
| -B/--cost) shows cost amounts. | ||||
| 
 | ||||
| The print command also supports  | ||||
| [output destination](#output-destination) | ||||
| and | ||||
| [CSV output](#csv-output). | ||||
| 
 | ||||
| _col3_({{ | ||||
| _shell_({{ | ||||
| $ hledger print | ||||
| 2008/01/01 income | ||||
|     assets:bank:checking            $1 | ||||
|     income:salary                  $-1 | ||||
| 
 | ||||
| 2008/06/01 gift | ||||
|     assets:bank:checking            $1 | ||||
|     income:gifts                   $-1 | ||||
| 
 | ||||
| 2008/06/02 save | ||||
|     assets:bank:saving              $1 | ||||
|     assets:bank:checking           $-1 | ||||
| 
 | ||||
| 2008/06/03 * eat & shop | ||||
|     expenses:food                $1 | ||||
|     expenses:supplies            $1 | ||||
|     assets:cash                 $-2 | ||||
| 
 | ||||
| 2008/12/31 * pay off | ||||
|     liabilities:debts               $1 | ||||
|     assets:bank:checking           $-1 | ||||
| 
 | ||||
| }}) | ||||
| }}) | ||||
| 
 | ||||
| ## register | ||||
| Show postings and their running total. Alias: reg. | ||||
| 
 | ||||
| `-H --historical` | ||||
| : include prior postings in the running total | ||||
| @ -194,35 +349,499 @@ show postings and running total | ||||
| : select the output format. Supported formats: | ||||
| txt, csv. | ||||
| 
 | ||||
| ### stats | ||||
| show some journal statistics | ||||
| ```{.shell .right} | ||||
| $ hledger register checking | ||||
| 2008/01/01 income               assets:bank:checking            $1            $1 | ||||
| 2008/06/01 gift                 assets:bank:checking            $1            $2 | ||||
| 2008/06/02 save                 assets:bank:checking           $-1            $1 | ||||
| 2008/12/31 pay off              assets:bank:checking           $-1             0 | ||||
| ``` | ||||
| 
 | ||||
| The register command displays postings, one per line, and their | ||||
| running total.  This is typically used with a [query](#queries) | ||||
| selecting a particular account, to see that account's activity. | ||||
| 
 | ||||
| ```{.shell .right .clear} | ||||
| $ hledger register checking -b 2008/6 --historical | ||||
| 2008/06/01 gift                 assets:bank:checking            $1            $2 | ||||
| 2008/06/02 save                 assets:bank:checking           $-1            $1 | ||||
| 2008/12/31 pay off              assets:bank:checking           $-1             0 | ||||
| ``` | ||||
| 
 | ||||
| The `--historical`/`-H` flag adds the balance from any prior postings | ||||
| to the running total, to show the actual historical running balance. | ||||
| This is useful when you want to see just the recent activity. | ||||
| 
 | ||||
| The `--depth` option limits the amount of sub-account detail displayed. | ||||
| 
 | ||||
| The `--average`/`-A` flag shows the running average posting amount | ||||
| instead of the running total (so, the final number displayed is the | ||||
| average for the whole report period). This flag implies `--empty` (see below). | ||||
| It works best when showing just one account and one commodity. | ||||
| 
 | ||||
| The `--related`/`-r` flag shows the *other* postings in the transactions | ||||
| of the postings which would normally be shown. | ||||
| 
 | ||||
| ```{.shell .right} | ||||
| $ hledger register --monthly income | ||||
| 2008/01                 income:salary                          $-1           $-1 | ||||
| 2008/06                 income:gifts                           $-1           $-2 | ||||
| ``` | ||||
| ```{.shell .right} | ||||
| $ hledger register --monthly income -E | ||||
| 2008/01                 income:salary                          $-1           $-1 | ||||
| 2008/02                                                          0           $-1 | ||||
| 2008/03                                                          0           $-1 | ||||
| 2008/04                                                          0           $-1 | ||||
| 2008/05                                                          0           $-1 | ||||
| 2008/06                 income:gifts                           $-1           $-2 | ||||
| 2008/07                                                          0           $-2 | ||||
| 2008/08                                                          0           $-2 | ||||
| 2008/09                                                          0           $-2 | ||||
| 2008/10                                                          0           $-2 | ||||
| 2008/11                                                          0           $-2 | ||||
| 2008/12                                                          0           $-2 | ||||
| ``` | ||||
| ```{.shell .right .clear} | ||||
| $ hledger register --monthly assets --depth 1  # cashflow (changes to assets) by month | ||||
| 2008/01                 assets                                  $1            $1 | ||||
| 2008/06                 assets                                 $-1             0 | ||||
| 2008/12                 assets                                 $-1           $-1 | ||||
| ``` | ||||
| 
 | ||||
| With a [reporting interval](#reporting-interval), register shows | ||||
| summary postings, one per interval, aggregating the postings to each account. | ||||
| 
 | ||||
| Periods with no activity, and summary postings with a zero amount, are | ||||
| not shown by default; use the `--empty`/`-E` flag to see them. | ||||
| 
 | ||||
| Often, you'll want to see just one line per interval. | ||||
| The `--depth` option helps with this, causing subaccounts to be aggregated. | ||||
| 
 | ||||
| Note when using report intervals, if you specify start/end dates these | ||||
| will be adjusted outward if necessary to contain a whole number of | ||||
| intervals. This ensures that the first and last intervals are full | ||||
| length and comparable to the others in the report. | ||||
| 
 | ||||
| ### Custom register output | ||||
| 
 | ||||
| register uses the full terminal width by default, except on windows. | ||||
| You can override this by setting the `COLUMNS` environment variable (not a bash shell variable) | ||||
| or by using the `--width`/`-w` option. | ||||
| 
 | ||||
| The description and account columns normally share the space equally | ||||
| (about half of (width - 40) each). You can adjust this by adding a | ||||
| description width as part of --width's argument, comma-separated: | ||||
| `--width W,D` . Here's a diagram: | ||||
| ``` | ||||
| <--------------------------------- width (W) ----------------------------------> | ||||
| date (10)  description (D)       account (W-41-D)     amount (12)   balance (12) | ||||
| DDDDDDDDDD dddddddddddddddddddd  aaaaaaaaaaaaaaaaaaa  AAAAAAAAAAAA  AAAAAAAAAAAA | ||||
| ``` | ||||
| and some examples: | ||||
| ```{.shell .bold} | ||||
| $ hledger reg                 # use terminal width (or 80 on windows) | ||||
| $ hledger reg -w 100          # use width 100 | ||||
| $ COLUMNS=100 hledger reg     # set with one-time environment variable | ||||
| $ export COLUMNS=100; hledger reg  # set till session end (or window resize) | ||||
| $ hledger reg -w 100,40       # set overall width 100, description width 40 | ||||
| $ hledger reg -w $COLUMNS,40  # use terminal width, and set description width | ||||
| ``` | ||||
| 
 | ||||
| The register command also supports the | ||||
| `-o/--output-file` and `-O/--output-format` options for controlling | ||||
| [output destination](#output-destination) and [CSV output](#csv-output). | ||||
| 
 | ||||
| ## stats | ||||
| Show some journal statistics. | ||||
| 
 | ||||
| `-o FILE[.FMT] --output-file=FILE[.FMT]` | ||||
| : write output to FILE instead of stdout. A recognised FMT suffix influences the format. | ||||
| 
 | ||||
| ## Add-on commands | ||||
| ```{.shell .right} | ||||
| $ hledger stats | ||||
| Main journal file        : /src/hledger/data/sample.journal | ||||
| Included journal files   :  | ||||
| Transactions span        : 2008-01-01 to 2009-01-01 (366 days) | ||||
| Last transaction         : 2008-12-31 (2333 days ago) | ||||
| Transactions             : 5 (0.0 per day) | ||||
| Transactions last 30 days: 0 (0.0 per day) | ||||
| Transactions last 7 days : 0 (0.0 per day) | ||||
| Payees/descriptions      : 5 | ||||
| Accounts                 : 8 (depth 3) | ||||
| Commodities              : 1 ($) | ||||
| ``` | ||||
| 
 | ||||
| Additional commands will be available when executables or scripts | ||||
| named "`hledger-`CMD" are installed in the PATH. These are often | ||||
| provided by a package of the same name, or you can make your own custom scripts | ||||
| (haskell scripts can use hledger-lib allowing tight integration). | ||||
| Some available add-ons are: | ||||
| The stats command displays summary information for the whole journal, or | ||||
| a matched part of it. With a [reporting interval](#reporting-interval), | ||||
| it shows a report for each report period. | ||||
| 
 | ||||
| ### autosync | ||||
| download OFX bank data and/or convert OFX to hledger journal format | ||||
| The stats command also supports `-o/--output-file` | ||||
| for controlling [output destination](#output-destination). | ||||
| 
 | ||||
| ### diff | ||||
| show transactions present in one journal file but not another | ||||
| ## test | ||||
| Run built-in unit tests. | ||||
| 
 | ||||
| ### interest | ||||
| generate interest transactions | ||||
| ```{.shell .right} | ||||
| $ hledger test | ||||
| Cases: 74  Tried: 74  Errors: 0  Failures: 0 | ||||
| ``` | ||||
| 
 | ||||
| ### irr | ||||
| calculate internal rate of return | ||||
| This command runs hledger's built-in unit tests and displays a quick report. | ||||
| With a regular expression argument, it selects only tests with matching names. | ||||
| It's mainly used in development, but it's also nice to be able to | ||||
| check your hledger executable for smoke at any time. | ||||
| 
 | ||||
| ### ui | ||||
| curses-style interface, see hledger-ui(1) | ||||
| # ADD-ON COMMANDS | ||||
| 
 | ||||
| ### web | ||||
| web interface, see hledger-web(1) | ||||
| Add-on commands are executables in your PATH whose name starts with | ||||
| `hledger-` and ends with any of these file extensions: | ||||
| none, `.hs`,`.lhs`,`.pl`,`.py`,`.rb`,`.rkt`,`.sh`,`.bat`,`.com`,`.exe`. | ||||
| Also, an add-on's name may not be the same as any built-in command or alias. | ||||
| 
 | ||||
| hledger will detect these and include them in the command list and let | ||||
| you invoke them with `hledger ADDONCMD`. However there are some limitations: | ||||
| 
 | ||||
| - Options appearing before ADDONCMD will be visible only to hledger and will not be passed to the add-on. | ||||
|   Eg: `hledger --help web` shows hledger's help, `hledger web --help` shows hledger-web's help. | ||||
| - Options understood only by the add-on must go after a `--` argument to hide them from hledger, which would otherwise reject them. | ||||
|   Eg: `hledger web -- --server`. | ||||
| 
 | ||||
| Sometimes it may be more convenient to just run the add-on directly, eg: `hledger-web --server`. | ||||
| 
 | ||||
| Add-ons which are written in haskell can take advantage of the hledger-lib library | ||||
| for journal parsing, reporting, command-line options, etc. | ||||
| 
 | ||||
| Here are some hledger add-ons available from Hackage,  | ||||
| the [extra](https://github.com/simonmichael/hledger/tree/master/extra) directory in the hledger source, | ||||
| or elsewhere: | ||||
| 
 | ||||
| ## api | ||||
| Web API server, see [hledger-api](hledger-api.html). | ||||
| 
 | ||||
| ## autosync | ||||
| Download OFX bank data and/or convert OFX to hledger journal format. | ||||
| 
 | ||||
| ``` {.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 | ||||
| entries which you can add to your journal. It can also operate on .OFX | ||||
| files which you've downloaded manually. It can be a nice alternative | ||||
| to hledger's built-in CSV reader, especially if your bank supports OFX | ||||
| download. | ||||
| 
 | ||||
| 
 | ||||
| ## diff | ||||
| Show transactions present in one journal file but not another | ||||
| 
 | ||||
| ```{.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 | ||||
| not in the other.  This can be useful for reconciling existing | ||||
| journals with bank statements. | ||||
| 
 | ||||
| ## equity | ||||
| Print a journal entry that resets account balances to zero. | ||||
| 
 | ||||
| ```{.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 | ||||
| 
 | ||||
| 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). | ||||
| 
 | ||||
| ## interest | ||||
| Generate interest transactions. | ||||
| 
 | ||||
| ```{.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, | ||||
| such as act/act, 30/360, 30E/360, and 30/360isda. Furthermore, it | ||||
| supports a (small) number of interest schemes, i.e. annual interest | ||||
| with a fixed rate and the scheme mandated by the German BGB288 | ||||
| (Basiszins für Verbrauchergeschäfte). See the package page for more. | ||||
| 
 | ||||
| ## irr | ||||
| Calculate internal rate of return. | ||||
| 
 | ||||
| ```{.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 | ||||
| holds the investment, and what account stores the gains (or losses, or | ||||
| fees, or cost), it calculates the hypothetical annual rate of fixed | ||||
| rate investment that would have provided the exact same cash flow. | ||||
| See the package page for more. | ||||
| 
 | ||||
| ## print-unique | ||||
| Print only only journal entries which have a unique 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 | ||||
| 
 | ||||
| ``` | ||||
| 
 | ||||
| ## rewrite | ||||
| Prints all journal entries, adding specified custom postings to matched entries. | ||||
| 
 | ||||
| ```{.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"' | ||||
| ``` | ||||
| 
 | ||||
| ## ui | ||||
| Curses-style interface, see [hledger-ui](hledger-ui.html). | ||||
| 
 | ||||
| ## web | ||||
| Web interface, see [hledger-web](hledger-web.html). | ||||
| 
 | ||||
|  | ||||
| @ -15,11 +15,11 @@ or standard input with `-f-`. | ||||
| Transactions are dated movements of money between two (or more) named | ||||
| accounts, and are recorded with journal entries like this: | ||||
| 
 | ||||
| ```journal | ||||
| _journal_({{ | ||||
| 2015/10/16 bought food | ||||
|  expenses:food          $10 | ||||
|  assets:cash | ||||
| ``` | ||||
| }}) | ||||
| 
 | ||||
| For more about the format, see hledger_journal(5). | ||||
| 
 | ||||
|  | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @ -27,10 +27,10 @@ http://hledger.org/manual. | ||||
| </div> | ||||
| 
 | ||||
| _include_(description.m4.md) | ||||
| _include_(options.m4.md) | ||||
| _include_(commands.m4.md) | ||||
| _include_(queries.m4.md) | ||||
| _include_(examples.m4.md) | ||||
| _include_(options.m4.md) | ||||
| _include_(queries.m4.md) | ||||
| _include_(commands.m4.md) | ||||
| 
 | ||||
| <div class="man"> | ||||
| 
 | ||||
|  | ||||
| @ -10,10 +10,10 @@ COMMAND, not before it. | ||||
| Also, when invoking external add-on commands, their options must be | ||||
| written after a double hyphen. (Or, you can invoke the external command | ||||
| directly.) Eg: | ||||
| ```{.shell .bold} | ||||
| _shellbold_({{ | ||||
| $ hledger ui -- --register cash | ||||
| $ hledger-ui --register cash | ||||
| ``` | ||||
| }}) | ||||
| 
 | ||||
| Options and command arguments can be intermixed. Arguments are usually | ||||
| interpreted as a search query which filters the data, see QUERIES. | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user