doc: bring embedded help files up to date
This commit is contained in:
		
							parent
							
								
									abf1bcbf36
								
							
						
					
					
						commit
						bd3212654c
					
				| @ -1,6 +1,6 @@ | |||||||
| .\"t | .\"t | ||||||
| 
 | 
 | ||||||
| .TH "hledger_journal" "5" "April 2016" "" "hledger User Manuals" | .TH "hledger_journal" "5" "May 2016" "" "hledger User Manuals" | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @ -85,25 +85,29 @@ inferred. | |||||||
| .SS Simple dates | .SS Simple dates | ||||||
| .PP | .PP | ||||||
| Within a journal file, transaction dates use Y/M/D (or Y\-M\-D or Y.M.D) | Within a journal file, transaction dates use Y/M/D (or Y\-M\-D or Y.M.D) | ||||||
| Leading zeroes are optional. | Leading zeros are optional. | ||||||
| The year may be omitted, in which case it defaults to the current year, | The year may be omitted, in which case it will be inferred from the | ||||||
| or you can set the default year with a default year directive. | context \- the current transaction, the default year set with a default | ||||||
| .PP | year directive, or the current date when the command is run. | ||||||
| Some examples: \f[C]2010/01/31\f[], \f[C]1/31\f[], | Some examples: \f[C]2010/01/31\f[], \f[C]1/31\f[], | ||||||
| \f[C]2010\-01\-31\f[], \f[C]2010.1.31\f[]. | \f[C]2010\-01\-31\f[], \f[C]2010.1.31\f[]. | ||||||
| .SS Secondary dates | .SS Secondary dates | ||||||
| .PP | .PP | ||||||
| Real\-life transactions sometimes involve more than one date \- eg the | Real\-life transactions sometimes involve more than one date \- eg the | ||||||
| date you write a cheque, and the date it clears in your bank. | date you write a cheque, and the date it clears in your bank. | ||||||
| When you want to model this, eg for more accurate balances, write both | When you want to model this, eg for more accurate balances, you can | ||||||
| dates separated by an equals sign. | specify individual #posting\-dates, which I recommend. | ||||||
| The \f[I]primary date\f[], on the left, is used by default; the | Or, you can use the secondary dates (aka auxiliary/effective dates) | ||||||
| \f[I]secondary date\f[], on the right, is used when the | feature, supported for compatibility with Ledger. | ||||||
| \f[C]\-\-date2\f[] flag is specified (For Ledger compatibility, |  | ||||||
| \f[C]\-\-aux\-date\f[] or \f[C]\-\-effective\f[] also work.) |  | ||||||
| .PP | .PP | ||||||
| Their meaning is up to you, but it\[aq]s best to follow a consistent | A secondary date can be written after the primary date, separated by an | ||||||
| rule. | equals sign. | ||||||
|  | The primary date, on the left, is used by default; the secondary date, | ||||||
|  | on the right, is used when the \f[C]\-\-date2\f[] flag is specified | ||||||
|  | (\f[C]\-\-aux\-date\f[] or \f[C]\-\-effective\f[] also work). | ||||||
|  | .PP | ||||||
|  | The meaning of secondary dates is up to you, but it\[aq]s best to follow | ||||||
|  | a consistent rule. | ||||||
| Eg write the bank\[aq]s clearing date as primary, and when needed, the | Eg write the bank\[aq]s clearing date as primary, and when needed, the | ||||||
| date the transaction was initiated as secondary. | date the transaction was initiated as secondary. | ||||||
| .PP | .PP | ||||||
| @ -133,15 +137,16 @@ $\ hledger\ register\ checking\ \-\-date2 | |||||||
| \f[] | \f[] | ||||||
| .fi | .fi | ||||||
| .PP | .PP | ||||||
| Secondary dates require some effort: you must use them consistently in | Secondary dates require some effort; you must use them consistently in | ||||||
| your journal entries and remember whether to use or not use the | your journal entries and remember whether to use or not use the | ||||||
| \f[C]\-\-date2\f[] flag for your reports. | \f[C]\-\-date2\f[] flag for your reports. | ||||||
| Arguably they are now obsolete, superseded by... | They are included in hledger for Ledger compatibility, but posting dates | ||||||
|  | are a more powerful and less confusing alternative. | ||||||
| .SS Posting dates | .SS Posting dates | ||||||
| .PP | .PP | ||||||
| You can give individual postings a different date from their parent | You can give individual postings a different date from their parent | ||||||
| transaction, by adding a posting tag (see below) like | transaction, by adding a posting comment containing a tag (see below) | ||||||
| \f[C]date:DATE\f[], where DATE is a simple date. | like \f[C]date:DATE\f[]. | ||||||
| This is probably the best way to control posting dates precisely. | This is probably the best way to control posting dates precisely. | ||||||
| Eg in this example the expense should appear in May reports, and the | Eg in this example the expense should appear in May reports, and the | ||||||
| deduction from checking should be reported on 6/1 for easy bank | deduction from checking should be reported on 6/1 for easy bank | ||||||
| @ -157,28 +162,31 @@ reconciliation: | |||||||
| .IP | .IP | ||||||
| .nf | .nf | ||||||
| \f[C] | \f[C] | ||||||
| $\ hledger\ \-f\ tt.j\ register\ food | $\ hledger\ \-f\ t.j\ register\ food | ||||||
| 2015/05/30\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ expenses:food\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $10\ \ \ \ \ \ \ \ \ \ \ $10 | 2015/05/30\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ expenses:food\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $10\ \ \ \ \ \ \ \ \ \ \ $10 | ||||||
| \f[] | \f[] | ||||||
| .fi | .fi | ||||||
| .IP | .IP | ||||||
| .nf | .nf | ||||||
| \f[C] | \f[C] | ||||||
| $\ hledger\ \-f\ tt.j\ register\ checking | $\ hledger\ \-f\ t.j\ register\ checking | ||||||
| 2015/06/01\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ assets:checking\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-10\ \ \ \ \ \ \ \ \ \ $\-10 | 2015/06/01\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ assets:checking\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-10\ \ \ \ \ \ \ \ \ \ $\-10 | ||||||
| \f[] | \f[] | ||||||
| .fi | .fi | ||||||
| .PP | .PP | ||||||
| A posting date will use the year of the transaction date if unspecified. | DATE should be a simple date; if the year is not specified it will use | ||||||
|  | the year of the transaction\[aq]s date. | ||||||
|  | You can set the secondary date similarly, with \f[C]date2:DATE2\f[]. | ||||||
|  | The \f[C]date:\f[] or \f[C]date2:\f[] tags must have a valid simple date | ||||||
|  | value if they are present, eg a \f[C]date:\f[] tag with no value is not | ||||||
|  | allowed. | ||||||
| .PP | .PP | ||||||
| You can also set the secondary date, with \f[C]date2:DATE2\f[]. | Ledger\[aq]s earlier, more compact bracketed date syntax is also | ||||||
| For compatibility, Ledger\[aq]s older posting date syntax is also | supported: \f[C][DATE]\f[], \f[C][DATE=DATE2]\f[] or \f[C][=DATE2]\f[]. | ||||||
| supported: \f[C][DATE]\f[], \f[C][DATE=DATE2]\f[] or \f[C][=DATE2]\f[] | hledger will attempt to parse any square\-bracketed sequence of the | ||||||
| in a posting comment. | \f[C]0123456789/\-.=\f[] characters in this way. | ||||||
| .PP | With this syntax, DATE infers its year from the transaction and DATE2 | ||||||
| When using any of these forms, be sure to provide a valid simple date or | infers its year from DATE. | ||||||
| you\[aq]ll get a parse error. |  | ||||||
| Eg a \f[C]date:\f[] tag with no value is not allowed. |  | ||||||
| .SS Account names | .SS Account names | ||||||
| .PP | .PP | ||||||
| Account names typically have several parts separated by a full colon, | Account names typically have several parts separated by a full colon, | ||||||
| @ -189,67 +197,87 @@ five top\-level accounts: \f[C]assets\f[], \f[C]liabilities\f[], | |||||||
| .PP | .PP | ||||||
| Account names may contain single spaces, eg: | Account names may contain single spaces, eg: | ||||||
| \f[C]assets:accounts\ receivable\f[]. | \f[C]assets:accounts\ receivable\f[]. | ||||||
| Because of this, they must always be followed by at least two spaces (or | Because of this, they must always be followed by \f[B]two or more | ||||||
| newline). | spaces\f[] (or newline). | ||||||
| .PP | .PP | ||||||
| Account names can be aliased. | Account names can be aliased. | ||||||
| .SS Amounts | .SS Amounts | ||||||
| .PP | .PP | ||||||
| After the account name, there is usually an amount. | After the account name, there is usually an amount. | ||||||
| Important: between account name and amount, there must be \f[B]two or | Important: between account name and amount, there must be \f[B]two or | ||||||
| more\f[] spaces. | more spaces\f[]. | ||||||
| .PP | .PP | ||||||
| The amount is a number, optionally with a currency symbol or commodity | Amounts consist of a number and (usually) a currency symbol or commodity | ||||||
| name on either the left or right. | name. | ||||||
| Negative amounts may have the minus sign either before or after the | Some examples: | ||||||
| currency symbol (\f[C]\-$1\f[] or \f[C]$\-1\f[]). |  | ||||||
| Commodity names which contain more than just letters should be enclosed |  | ||||||
| in double quotes (\f[C]1\ "person\ hours"\f[]). |  | ||||||
| .SS Decimal points and digit groups |  | ||||||
| .PP | .PP | ||||||
| hledger supports flexible decimal point and digit group separator | \f[C]2.00001\f[] | ||||||
| styles, to support international variations. | .PD 0 | ||||||
| Numbers can use either a period (\f[C]\&.\f[]) or a comma (\f[C],\f[]) | .P | ||||||
| as decimal point. | .PD | ||||||
| They can also have digit group separators at any position (eg thousands | \f[C]$1\f[] | ||||||
| separators) which can be comma or period \- whichever one you did not | .PD 0 | ||||||
| use as a decimal point. | .P | ||||||
| If you use digit group separators, you must also include a decimal point | .PD | ||||||
| in at least one number in the same commodity, so that hledger knows | \f[C]4000\ AAPL\f[] | ||||||
| which character is which. | .PD 0 | ||||||
| Eg, write \f[C]$1,000.00\f[] or \f[C]$1.000,00\f[]. | .P | ||||||
| .SS Amount display styles | .PD | ||||||
|  | \f[C]3\ "green\ apples"\f[] | ||||||
|  | .PD 0 | ||||||
|  | .P | ||||||
|  | .PD | ||||||
|  | \f[C]\-$1,000,000.00\f[] | ||||||
|  | .PD 0 | ||||||
|  | .P | ||||||
|  | .PD | ||||||
|  | \f[C]INR\ 9,99,99,999.00\f[] | ||||||
|  | .PD 0 | ||||||
|  | .P | ||||||
|  | .PD | ||||||
|  | \f[C]EUR\ \-2.000.000,00\f[] | ||||||
| .PP | .PP | ||||||
| Based on how you format amounts, hledger will infer canonical display | As you can see, the amount format is somewhat flexible: | ||||||
| styles for each commodity, and use these when displaying amounts in that | .IP \[bu] 2 | ||||||
|  | amounts are a number (the "quantity") and optionally a currency | ||||||
|  | symbol/commodity name (the "commodity"). | ||||||
|  | .IP \[bu] 2 | ||||||
|  | the commodity is a symbol, word, or double\-quoted phrase, on the left | ||||||
|  | or right, with or without a separating space | ||||||
|  | .IP \[bu] 2 | ||||||
|  | negative amounts with a commodity on the left can have the minus sign | ||||||
|  | before or after it | ||||||
|  | .IP \[bu] 2 | ||||||
|  | digit groups (thousands, or any other grouping) can be separated by | ||||||
|  | commas (in which case period is used for decimal point) or periods (in | ||||||
|  | which case comma is used for decimal point) | ||||||
|  | .PP | ||||||
|  | You can use any of these variations when recording data, but when | ||||||
|  | hledger displays amounts, it will choose a consistent format for each | ||||||
| commodity. | commodity. | ||||||
| Amount styles include: | (Except for price amounts, which are always formatted as written). | ||||||
|  | The display format is chosen as follows: | ||||||
| .IP \[bu] 2 | .IP \[bu] 2 | ||||||
| the position (left or right) and spacing (space or no separator) of the | if there is a commodity directive specifying the format, that is used | ||||||
| commodity symbol |  | ||||||
| .IP \[bu] 2 | .IP \[bu] 2 | ||||||
| the digit group separator character (comma or period) and digit group | otherwise the format is inferred from the first posting amount in that | ||||||
| sizes, if any | commodity in the journal, and the precision (number of decimal places) | ||||||
|  | will be the maximum from all posting amounts in that commmodity | ||||||
| .IP \[bu] 2 | .IP \[bu] 2 | ||||||
| the decimal point character (period or comma) | or if there are no such amounts in the journal, a default format is used | ||||||
| .IP \[bu] 2 | (like \f[C]$1000.00\f[]). | ||||||
| the display precision (number of decimal places displayed) |  | ||||||
| .PP | .PP | ||||||
| The canonical style is generally the style of the first posting amount | Price amounts and amounts in D directives usually don\[aq]t affect | ||||||
| seen in a commodity. | amount format inference, but in some situations they can do so | ||||||
| However the display precision will be the highest precision seen in all | indirectly. | ||||||
| posting amounts in that commmodity. | (Eg when D\[aq]s default commodity is applied to a commodity\-less | ||||||
| .PP | amount, or when an amountless posting is balanced using a price\[aq]s | ||||||
| The precisions used in a price amount, or a D directive, don\[aq]t | commodity, or when \-V is used.) If you find this causing problems, set | ||||||
| affect the canonical display precision directly, but they can affect it | the desired format with a commodity directive. | ||||||
| indirectly, eg when D\[aq]s default commodity is applied to a |  | ||||||
| commodity\-less amount or when an amountless posting is balanced using a |  | ||||||
| price\[aq]s commodity (actually this last case does not influence the |  | ||||||
| canonical display precision but probably should). |  | ||||||
| .SS Virtual Postings | .SS Virtual Postings | ||||||
| .PP | .PP | ||||||
| When you parenthesise the account name in a posting, that posting is | When you parenthesise the account name in a posting, we call that a | ||||||
| considered \f[I]virtual\f[], which means: | \f[I]virtual posting\f[], which means: | ||||||
| .IP \[bu] 2 | .IP \[bu] 2 | ||||||
| it is ignored when checking that the transaction is balanced | it is ignored when checking that the transaction is balanced | ||||||
| .IP \[bu] 2 | .IP \[bu] 2 | ||||||
| @ -265,20 +293,28 @@ needing to use the \f[C]equity:opening\ balances\f[] account: | |||||||
| \ \ (assets:checking)\ \ \ $1000 | \ \ (assets:checking)\ \ \ $1000 | ||||||
| \f[] | \f[] | ||||||
| .fi | .fi | ||||||
| .SS Balanced Virtual Postings |  | ||||||
| .PP | .PP | ||||||
| When the account name is bracketed, the posting is \f[I]balanced | When the account name is bracketed, we call it a \f[I]balanced virtual | ||||||
| virtual\f[], which is just like a virtual posting except the balanced | posting\f[]. | ||||||
| virtual postings in a transaction must balance to 0, like the real | This is like an ordinary virtual posting except the balanced virtual | ||||||
| postings (but separately from them). | postings in a transaction must balance to 0, like the real postings (but | ||||||
|  | separately from them). | ||||||
| Balanced virtual postings are also excluded by \f[C]\-\-real/\-R\f[] or | Balanced virtual postings are also excluded by \f[C]\-\-real/\-R\f[] or | ||||||
| \f[C]real:1\f[]. | \f[C]real:1\f[]. | ||||||
|  | .IP | ||||||
|  | .nf | ||||||
|  | \f[C] | ||||||
|  | 1/1\ buy\ food\ with\ cash,\ and\ update\ some\ budget\-tracking\ subaccounts\ elsewhere | ||||||
|  | \ \ expenses:food\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $10 | ||||||
|  | \ \ assets:cash\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-10 | ||||||
|  | \ \ [assets:checking:available]\ \ \ \ \ $10 | ||||||
|  | \ \ [assets:checking:budget:food]\ \ $\-10 | ||||||
|  | \f[] | ||||||
|  | .fi | ||||||
| .PP | .PP | ||||||
| Virtual postings are a feature inherited from Ledger can can | Virtual postings have some legitimate uses, but those are few. | ||||||
| occasionally be useful, but they can be a crutch and you should think | You can usually find an equivalent journal entry using real postings, | ||||||
| twice or three times before using them. | which is more correct and provides better error checking. | ||||||
| You can almost always find an equivalent journal entry using two or more |  | ||||||
| real postings that will be more correct and more error\-proof. |  | ||||||
| .SS Balance Assertions | .SS Balance Assertions | ||||||
| .PP | .PP | ||||||
| hledger supports ledger\-style balance assertions in journal files. | hledger supports ledger\-style balance assertions in journal files. | ||||||
| @ -547,7 +583,7 @@ posting\-tag): | |||||||
| .fi | .fi | ||||||
| .PP | .PP | ||||||
| Tags are like Ledger\[aq]s metadata feature, except hledger\[aq]s tag | Tags are like Ledger\[aq]s metadata feature, except hledger\[aq]s tag | ||||||
| values are always simple strings. | values are simple strings. | ||||||
| .SS Directives | .SS Directives | ||||||
| .SS Account aliases | .SS Account aliases | ||||||
| .PP | .PP | ||||||
| @ -721,46 +757,50 @@ spellings were also supported. | |||||||
| A line containing just \f[C]comment\f[] starts a multi\-line comment, | A line containing just \f[C]comment\f[] starts a multi\-line comment, | ||||||
| and a line containing just \f[C]end\ comment\f[] ends it. | and a line containing just \f[C]end\ comment\f[] ends it. | ||||||
| See comments. | See comments. | ||||||
|  | .SS commodity directive | ||||||
|  | .PP | ||||||
|  | The \f[C]commodity\f[] directive predefines commodities (currently this | ||||||
|  | is just informational), and also it may define the display format for | ||||||
|  | amounts in this commodity (overriding the automatically inferred | ||||||
|  | format). | ||||||
|  | .PP | ||||||
|  | It may be written on a single line, like this: | ||||||
|  | .IP | ||||||
|  | .nf | ||||||
|  | \f[C] | ||||||
|  | ;\ commodity\ EXAMPLEAMOUNT | ||||||
|  | 
 | ||||||
|  | ;\ display\ AAAA\ amounts\ with\ the\ symbol\ on\ the\ right,\ space\-separated, | ||||||
|  | ;\ using\ period\ as\ decimal\ point,\ with\ four\ decimal\ places,\ and | ||||||
|  | ;\ separating\ thousands\ with\ comma. | ||||||
|  | commodity\ 1,000.0000\ AAAA | ||||||
|  | \f[] | ||||||
|  | .fi | ||||||
|  | .PP | ||||||
|  | or on multiple lines, using the "format" subdirective. | ||||||
|  | In this case the commodity symbol appears twice and should be the same | ||||||
|  | in both places: | ||||||
|  | .IP | ||||||
|  | .nf | ||||||
|  | \f[C] | ||||||
|  | ;\ commodity\ SYMBOL | ||||||
|  | ;\ \ \ format\ EXAMPLEAMOUNT | ||||||
|  | 
 | ||||||
|  | ;\ display\ indian\ rupees\ with\ currency\ name\ on\ the\ left, | ||||||
|  | ;\ thousands,\ lakhs\ and\ crores\ comma\-separated, | ||||||
|  | ;\ period\ as\ decimal\ point,\ and\ two\ decimal\ places. | ||||||
|  | commodity\ INR | ||||||
|  | \ \ format\ INR\ 9,99,99,999.00 | ||||||
|  | \f[] | ||||||
|  | .fi | ||||||
| .SS Default commodity | .SS Default commodity | ||||||
| .PP | .PP | ||||||
| You can set a default commodity, to be used for amounts without one. | You can set a default commodity, to be used for amounts without one. | ||||||
| Use the D directive with a sample amount. | Use the D directive with a sample amount. | ||||||
| The commodity (and the sample amount\[aq]s display style) will be | The commodity (and the sample amount\[aq]s display format) will be | ||||||
| applied to all subsequent commodity\-less amounts, up to the next D | applied to all subsequent commodity\-less amounts, up to the next D | ||||||
| directive. | directive. | ||||||
| (Note this is different from Ledger\[aq]s default commodity directive.) | (Note this is different from Ledger\[aq]s default commodity directive.) | ||||||
| .PP |  | ||||||
| Also note the directive itself does not influence the commodity\[aq]s |  | ||||||
| default display style, but the amount it is applied to might. |  | ||||||
| Here\[aq]s an example: |  | ||||||
| .IP |  | ||||||
| .nf |  | ||||||
| \f[C] |  | ||||||
| ;\ set\ £\ as\ the\ default\ commodity |  | ||||||
| D\ £1,000.00 |  | ||||||
| 
 |  | ||||||
| 2010/1/1 |  | ||||||
| \ \ a\ \ 2340 |  | ||||||
| \ \ b |  | ||||||
| 
 |  | ||||||
| 2014/1/1 |  | ||||||
| \ \ c\ \ £1000 |  | ||||||
| \ \ d |  | ||||||
| \f[] |  | ||||||
| .fi |  | ||||||
| .IP |  | ||||||
| .nf |  | ||||||
| \f[C] |  | ||||||
| $\ hledger\ print |  | ||||||
| 2010/01/01 |  | ||||||
| \ \ \ \ a\ \ \ \ \ £2,340.00 |  | ||||||
| \ \ \ \ b\ \ \ \ £\-2,340.00 |  | ||||||
| 
 |  | ||||||
| 2014/01/01 |  | ||||||
| \ \ \ \ c\ \ \ \ \ £1,000.00 |  | ||||||
| \ \ \ \ d\ \ \ \ £\-1,000.00 |  | ||||||
| \f[] |  | ||||||
| .fi |  | ||||||
| .SS Default year | .SS Default year | ||||||
| .PP | .PP | ||||||
| You can set a default year to be used for subsequent dates which | You can set a default year to be used for subsequent dates which | ||||||
| @ -800,12 +840,10 @@ include\ path/to/file.journal | |||||||
| .PP | .PP | ||||||
| If the path does not begin with a slash, it is relative to the current | If the path does not begin with a slash, it is relative to the current | ||||||
| file. | file. | ||||||
| .PP |  | ||||||
| Glob patterns (\f[C]*\f[]) are not currently supported. | Glob patterns (\f[C]*\f[]) are not currently supported. | ||||||
| .PP | .PP | ||||||
| The \f[C]include\f[] directive may only be used in journal files, and | The \f[C]include\f[] directive can only be used in journal files. | ||||||
| currently it may only include other journal files (eg, not CSV or | It can include journal, timeclock or timedot files, but not CSV files. | ||||||
| timeclock files.) |  | ||||||
| .SH EDITOR SUPPORT | .SH EDITOR SUPPORT | ||||||
| .PP | .PP | ||||||
| Add\-on modes exist for various text editors, to make working with | Add\-on modes exist for various text editors, to make working with | ||||||
|  | |||||||
| @ -119,11 +119,11 @@ File: hledger_journal.5.info,  Node: Simple dates,  Next: Secondary dates,  Up: | |||||||
| ------------------ | ------------------ | ||||||
| 
 | 
 | ||||||
| Within a journal file, transaction dates use Y/M/D (or Y-M-D or Y.M.D) | Within a journal file, transaction dates use Y/M/D (or Y-M-D or Y.M.D) | ||||||
| Leading zeroes are optional. The year may be omitted, in which case it | Leading zeros are optional. The year may be omitted, in which case it | ||||||
| defaults to the current year, or you can set the default year with a | will be inferred from the context - the current transaction, the default | ||||||
| default year directive. | year set with a default year directive, or the current date when the | ||||||
| 
 | command is run. Some examples: `2010/01/31', `1/31', `2010-01-31', | ||||||
|    Some examples: `2010/01/31', `1/31', `2010-01-31', `2010.1.31'. | `2010.1.31'. | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
| File: hledger_journal.5.info,  Node: Secondary dates,  Next: Posting dates,  Prev: Simple dates,  Up: Dates | File: hledger_journal.5.info,  Node: Secondary dates,  Next: Posting dates,  Prev: Simple dates,  Up: Dates | ||||||
| @ -133,15 +133,19 @@ File: hledger_journal.5.info,  Node: Secondary dates,  Next: Posting dates,  Pre | |||||||
| 
 | 
 | ||||||
| Real-life transactions sometimes involve more than one date - eg the | Real-life transactions sometimes involve more than one date - eg the | ||||||
| date you write a cheque, and the date it clears in your bank. When you | date you write a cheque, and the date it clears in your bank. When you | ||||||
| want to model this, eg for more accurate balances, write both dates | want to model this, eg for more accurate balances, you can specify | ||||||
| separated by an equals sign. The _primary date_, on the left, is used | individual #posting-dates, which I recommend. Or, you can use the | ||||||
| by default; the _secondary date_, on the right, is used when the | secondary dates (aka auxiliary/effective dates) feature, supported for | ||||||
| `--date2' flag is specified (For Ledger compatibility, `--aux-date' or | compatibility with Ledger. | ||||||
| `--effective' also work.) |  | ||||||
| 
 | 
 | ||||||
|    Their meaning is up to you, but it's best to follow a consistent |    A secondary date can be written after the primary date, separated by | ||||||
| rule.  Eg write the bank's clearing date as primary, and when needed, | an equals sign. The primary date, on the left, is used by default; the | ||||||
| the date the transaction was initiated as secondary. | secondary date, on the right, is used when the `--date2' flag is | ||||||
|  | specified (`--aux-date' or `--effective' also work). | ||||||
|  | 
 | ||||||
|  |    The meaning of secondary dates is up to you, but it's best to follow | ||||||
|  | a consistent rule. Eg write the bank's clearing date as primary, and | ||||||
|  | when needed, the date the transaction was initiated as secondary. | ||||||
| 
 | 
 | ||||||
|    Here's an example. Note that a secondary date will use the year of |    Here's an example. Note that a secondary date will use the year of | ||||||
| the primary date if unspecified. | the primary date if unspecified. | ||||||
| @ -159,10 +163,11 @@ $ hledger register checking | |||||||
| $ hledger register checking --date2 | $ hledger register checking --date2 | ||||||
| 2010/02/19 movie ticket         assets:checking                $-10         $-10 | 2010/02/19 movie ticket         assets:checking                $-10         $-10 | ||||||
| 
 | 
 | ||||||
|    Secondary dates require some effort: you must use them consistently |    Secondary dates require some effort; you must use them consistently | ||||||
| in your journal entries and remember whether to use or not use the | in your journal entries and remember whether to use or not use the | ||||||
| `--date2' flag for your reports. Arguably they are now obsolete, | `--date2' flag for your reports. They are included in hledger for | ||||||
| superseded by... | Ledger compatibility, but posting dates are a more powerful and less | ||||||
|  | confusing alternative. | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
| File: hledger_journal.5.info,  Node: Posting dates,  Prev: Secondary dates,  Up: Dates | File: hledger_journal.5.info,  Node: Posting dates,  Prev: Secondary dates,  Up: Dates | ||||||
| @ -171,11 +176,11 @@ File: hledger_journal.5.info,  Node: Posting dates,  Prev: Secondary dates,  Up: | |||||||
| ------------------- | ------------------- | ||||||
| 
 | 
 | ||||||
| You can give individual postings a different date from their parent | You can give individual postings a different date from their parent | ||||||
| transaction, by adding a posting tag (see below) like `date:DATE', | transaction, by adding a posting comment containing a tag (see below) | ||||||
| where DATE is a simple date. This is probably the best way to control | like `date:DATE'. This is probably the best way to control posting | ||||||
| posting dates precisely. Eg in this example the expense should appear in | dates precisely. Eg in this example the expense should appear in May | ||||||
| May reports, and the deduction from checking should be reported on 6/1 | reports, and the deduction from checking should be reported on 6/1 for | ||||||
| for easy bank reconciliation: | easy bank reconciliation: | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 2015/5/30 | 2015/5/30 | ||||||
| @ -183,23 +188,24 @@ for easy bank reconciliation: | |||||||
|     assets:checking         ; bank cleared it on monday, date:6/1 |     assets:checking         ; bank cleared it on monday, date:6/1 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| $ hledger -f tt.j register food | $ hledger -f t.j register food | ||||||
| 2015/05/30                      expenses:food                  $10           $10 | 2015/05/30                      expenses:food                  $10           $10 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| $ hledger -f tt.j register checking | $ hledger -f t.j register checking | ||||||
| 2015/06/01                      assets:checking               $-10          $-10 | 2015/06/01                      assets:checking               $-10          $-10 | ||||||
| 
 | 
 | ||||||
|    A posting date will use the year of the transaction date if |    DATE should be a simple date; if the year is not specified it will | ||||||
| unspecified. | use the year of the transaction's date. You can set the secondary date | ||||||
|  | similarly, with `date2:DATE2'. The `date:' or `date2:' tags must have a | ||||||
|  | valid simple date value if they are present, eg a `date:' tag with no | ||||||
|  | value is not allowed. | ||||||
| 
 | 
 | ||||||
|    You can also set the secondary date, with `date2:DATE2'. For |    Ledger's earlier, more compact bracketed date syntax is also | ||||||
| compatibility, Ledger's older posting date syntax is also supported: | supported: `[DATE]', `[DATE=DATE2]' or `[=DATE2]'. hledger will attempt | ||||||
| `[DATE]', `[DATE=DATE2]' or `[=DATE2]' in a posting comment. | to parse any square-bracketed sequence of the `0123456789/-.=' | ||||||
| 
 | characters in this way. With this syntax, DATE infers its year from the | ||||||
|    When using any of these forms, be sure to provide a valid simple | transaction and DATE2 infers its year from DATE. | ||||||
| date or you'll get a parse error. Eg a `date:' tag with no value is not |  | ||||||
| allowed. |  | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
| File: hledger_journal.5.info,  Node: Account names,  Next: Amounts,  Prev: Dates,  Up: FILE FORMAT | File: hledger_journal.5.info,  Node: Account names,  Next: Amounts,  Prev: Dates,  Up: FILE FORMAT | ||||||
| @ -213,8 +219,8 @@ anything you like, but in finance there are traditionally five top-level | |||||||
| accounts: `assets', `liabilities', `income', `expenses', and `equity'. | accounts: `assets', `liabilities', `income', `expenses', and `equity'. | ||||||
| 
 | 
 | ||||||
|    Account names may contain single spaces, eg: `assets:accounts |    Account names may contain single spaces, eg: `assets:accounts | ||||||
| receivable'. Because of this, they must always be followed by at least | receivable'. Because of this, they must always be followed by *two or | ||||||
| two spaces (or newline). | more spaces* (or newline). | ||||||
| 
 | 
 | ||||||
|    Account names can be aliased. |    Account names can be aliased. | ||||||
| 
 | 
 | ||||||
| @ -225,65 +231,56 @@ File: hledger_journal.5.info,  Node: Amounts,  Next: Virtual Postings,  Prev: Ac | |||||||
| =========== | =========== | ||||||
| 
 | 
 | ||||||
| After the account name, there is usually an amount. Important: between | After the account name, there is usually an amount. Important: between | ||||||
| account name and amount, there must be *two or more* spaces. | account name and amount, there must be *two or more spaces*. | ||||||
| 
 | 
 | ||||||
|    The amount is a number, optionally with a currency symbol or |    Amounts consist of a number and (usually) a currency symbol or | ||||||
| commodity name on either the left or right. Negative amounts may have | commodity name. Some examples: | ||||||
| the minus sign either before or after the currency symbol (`-$1' or |  | ||||||
| `$-1'). Commodity names which contain more than just letters should be |  | ||||||
| enclosed in double quotes (`1 "person hours"'). |  | ||||||
| 
 | 
 | ||||||
| * Menu: |    `2.00001' | ||||||
|  | `$1' | ||||||
|  | `4000 AAPL' | ||||||
|  | `3 "green apples"' | ||||||
|  | `-$1,000,000.00' | ||||||
|  | `INR 9,99,99,999.00' | ||||||
|  | `EUR -2.000.000,00' | ||||||
| 
 | 
 | ||||||
| * Decimal points and digit groups:: |    As you can see, the amount format is somewhat flexible: | ||||||
| * Amount display styles:: |  | ||||||
| 
 | 
 | ||||||
|  |    * amounts are a number (the "quantity") and optionally a currency | ||||||
| File: hledger_journal.5.info,  Node: Decimal points and digit groups,  Next: Amount display styles,  Up: Amounts |      symbol/commodity name (the "commodity"). | ||||||
| 
 | 
 | ||||||
| 1.4.1 Decimal points and digit groups |    * the commodity is a symbol, word, or double-quoted phrase, on the | ||||||
| ------------------------------------- |      left or right, with or without a separating space | ||||||
| 
 | 
 | ||||||
| hledger supports flexible decimal point and digit group separator |    * negative amounts with a commodity on the left can have the minus | ||||||
| styles, to support international variations. Numbers can use either a |      sign before or after it | ||||||
| period (`.') or a comma (`,') as decimal point. They can also have |  | ||||||
| digit group separators at any position (eg thousands separators) which |  | ||||||
| can be comma or period - whichever one you did not use as a decimal |  | ||||||
| point. If you use digit group separators, you must also include a |  | ||||||
| decimal point in at least one number in the same commodity, so that |  | ||||||
| hledger knows which character is which. Eg, write `$1,000.00' or |  | ||||||
| `$1.000,00'. |  | ||||||
| 
 | 
 | ||||||
|  |    * digit groups (thousands, or any other grouping) can be separated by | ||||||
| File: hledger_journal.5.info,  Node: Amount display styles,  Prev: Decimal points and digit groups,  Up: Amounts |      commas (in which case period is used for decimal point) or periods | ||||||
|  |      (in which case comma is used for decimal point) | ||||||
| 
 | 
 | ||||||
| 1.4.2 Amount display styles |    You can use any of these variations when recording data, but when | ||||||
| --------------------------- | hledger displays amounts, it will choose a consistent format for each | ||||||
|  | commodity. (Except for price amounts, which are always formatted as | ||||||
|  | written). The display format is chosen as follows: | ||||||
| 
 | 
 | ||||||
| Based on how you format amounts, hledger will infer canonical display |    * if there is a commodity directive specifying the format, that is | ||||||
| styles for each commodity, and use these when displaying amounts in that |      used | ||||||
| commodity. Amount styles include: |  | ||||||
| 
 | 
 | ||||||
|    * the position (left or right) and spacing (space or no separator) |    * otherwise the format is inferred from the first posting amount in | ||||||
|      of the commodity symbol |      that commodity in the journal, and the precision (number of | ||||||
|  |      decimal places) will be the maximum from all posting amounts in | ||||||
|  |      that commmodity | ||||||
| 
 | 
 | ||||||
|    * the digit group separator character (comma or period) and digit |    * or if there are no such amounts in the journal, a default format | ||||||
|      group sizes, if any |      is used (like `$1000.00'). | ||||||
| 
 | 
 | ||||||
|    * the decimal point character (period or comma) |    Price amounts and amounts in D directives usually don't affect amount | ||||||
| 
 | format inference, but in some situations they can do so indirectly. (Eg | ||||||
|    * the display precision (number of decimal places displayed) | when D's default commodity is applied to a commodity-less amount, or | ||||||
| 
 | when an amountless posting is balanced using a price's commodity, or | ||||||
|    The canonical style is generally the style of the first posting | when -V is used.) If you find this causing problems, set the desired | ||||||
| amount seen in a commodity. However the display precision will be the | format with a commodity directive. | ||||||
| highest precision seen in all posting amounts in that commmodity. |  | ||||||
| 
 |  | ||||||
|    The precisions used in a price amount, or a D directive, don't affect |  | ||||||
| the canonical display precision directly, but they can affect it |  | ||||||
| indirectly, eg when D's default commodity is applied to a commodity-less |  | ||||||
| amount or when an amountless posting is balanced using a price's |  | ||||||
| commodity (actually this last case does not influence the canonical |  | ||||||
| display precision but probably should). |  | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
| File: hledger_journal.5.info,  Node: Virtual Postings,  Next: Balance Assertions,  Prev: Amounts,  Up: FILE FORMAT | File: hledger_journal.5.info,  Node: Virtual Postings,  Next: Balance Assertions,  Prev: Amounts,  Up: FILE FORMAT | ||||||
| @ -291,8 +288,8 @@ File: hledger_journal.5.info,  Node: Virtual Postings,  Next: Balance Assertions | |||||||
| 1.5 Virtual Postings | 1.5 Virtual Postings | ||||||
| ==================== | ==================== | ||||||
| 
 | 
 | ||||||
| When you parenthesise the account name in a posting, that posting is | When you parenthesise the account name in a posting, we call that a | ||||||
| considered _virtual_, which means: | _virtual posting_, which means: | ||||||
| 
 | 
 | ||||||
|    * it is ignored when checking that the transaction is balanced |    * it is ignored when checking that the transaction is balanced | ||||||
| 
 | 
 | ||||||
| @ -306,27 +303,22 @@ needing to use the `equity:opening balances' account: | |||||||
| 1/1 special unbalanced posting to set initial balance | 1/1 special unbalanced posting to set initial balance | ||||||
|   (assets:checking)   $1000 |   (assets:checking)   $1000 | ||||||
| 
 | 
 | ||||||
| * Menu: |    When the account name is bracketed, we call it a _balanced virtual | ||||||
|  | posting_. This is like an ordinary virtual posting except the balanced | ||||||
|  | virtual postings in a transaction must balance to 0, like the real | ||||||
|  | postings (but separately from them). Balanced virtual postings are also | ||||||
|  | excluded by `--real/-R' or `real:1'. | ||||||
| 
 | 
 | ||||||
| * Balanced Virtual Postings:: |  | ||||||
| 
 | 
 | ||||||
|  | 1/1 buy food with cash, and update some budget-tracking subaccounts elsewhere | ||||||
| File: hledger_journal.5.info,  Node: Balanced Virtual Postings,  Up: Virtual Postings |   expenses:food                   $10 | ||||||
|  |   assets:cash                    $-10 | ||||||
|  |   [assets:checking:available]     $10 | ||||||
|  |   [assets:checking:budget:food]  $-10 | ||||||
| 
 | 
 | ||||||
| 1.5.1 Balanced Virtual Postings |    Virtual postings have some legitimate uses, but those are few. You | ||||||
| ------------------------------- | can usually find an equivalent journal entry using real postings, which | ||||||
| 
 | is more correct and provides better error checking. | ||||||
| When the account name is bracketed, the posting is _balanced virtual_, |  | ||||||
| which is just like a virtual posting except the balanced virtual |  | ||||||
| postings in a transaction must balance to 0, like the real postings |  | ||||||
| (but separately from them). Balanced virtual postings are also excluded |  | ||||||
| by `--real/-R' or `real:1'. |  | ||||||
| 
 |  | ||||||
|    Virtual postings are a feature inherited from Ledger can can |  | ||||||
| occasionally be useful, but they can be a crutch and you should think |  | ||||||
| twice or three times before using them. You can almost always find an |  | ||||||
| equivalent journal entry using two or more real postings that will be |  | ||||||
| more correct and more error-proof. |  | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
| File: hledger_journal.5.info,  Node: Balance Assertions,  Next: Prices,  Prev: Virtual Postings,  Up: FILE FORMAT | File: hledger_journal.5.info,  Node: Balance Assertions,  Next: Prices,  Prev: Virtual Postings,  Up: FILE FORMAT | ||||||
| @ -602,7 +594,7 @@ and the posting has four (A, TAG2, third-tag, posting-tag): | |||||||
|     (a)  $1  ; posting-tag: |     (a)  $1  ; posting-tag: | ||||||
| 
 | 
 | ||||||
|    Tags are like Ledger's metadata feature, except hledger's tag values |    Tags are like Ledger's metadata feature, except hledger's tag values | ||||||
| are always simple strings. | are simple strings. | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
| File: hledger_journal.5.info,  Node: Directives,  Prev: Tags,  Up: FILE FORMAT | File: hledger_journal.5.info,  Node: Directives,  Prev: Tags,  Up: FILE FORMAT | ||||||
| @ -616,6 +608,7 @@ File: hledger_journal.5.info,  Node: Directives,  Prev: Tags,  Up: FILE FORMAT | |||||||
| * account directive:: | * account directive:: | ||||||
| * apply account directive:: | * apply account directive:: | ||||||
| * Multi-line comments:: | * Multi-line comments:: | ||||||
|  | * commodity directive:: | ||||||
| * Default commodity:: | * Default commodity:: | ||||||
| * Default year:: | * Default year:: | ||||||
| * Including other files:: | * Including other files:: | ||||||
| @ -791,7 +784,7 @@ include personal.journal | |||||||
| also supported. | also supported. | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
| File: hledger_journal.5.info,  Node: Multi-line comments,  Next: Default commodity,  Prev: apply account directive,  Up: Directives | File: hledger_journal.5.info,  Node: Multi-line comments,  Next: commodity directive,  Prev: apply account directive,  Up: Directives | ||||||
| 
 | 
 | ||||||
| 1.10.4 Multi-line comments | 1.10.4 Multi-line comments | ||||||
| -------------------------- | -------------------------- | ||||||
| @ -800,47 +793,56 @@ A line containing just `comment' starts a multi-line comment, and a | |||||||
| line containing just `end comment' ends it. See comments. | line containing just `end comment' ends it. See comments. | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
| File: hledger_journal.5.info,  Node: Default commodity,  Next: Default year,  Prev: Multi-line comments,  Up: Directives | File: hledger_journal.5.info,  Node: commodity directive,  Next: Default commodity,  Prev: Multi-line comments,  Up: Directives | ||||||
| 
 | 
 | ||||||
| 1.10.5 Default commodity | 1.10.5 commodity directive | ||||||
|  | -------------------------- | ||||||
|  | 
 | ||||||
|  | The `commodity' directive predefines commodities (currently this is | ||||||
|  | just informational), and also it may define the display format for | ||||||
|  | amounts in this commodity (overriding the automatically inferred | ||||||
|  | format). | ||||||
|  | 
 | ||||||
|  |    It may be written on a single line, like this: | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ; commodity EXAMPLEAMOUNT | ||||||
|  | 
 | ||||||
|  | ; display AAAA amounts with the symbol on the right, space-separated, | ||||||
|  | ; using period as decimal point, with four decimal places, and | ||||||
|  | ; separating thousands with comma. | ||||||
|  | commodity 1,000.0000 AAAA | ||||||
|  | 
 | ||||||
|  |    or on multiple lines, using the "format" subdirective. In this case | ||||||
|  | the commodity symbol appears twice and should be the same in both | ||||||
|  | places: | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ; commodity SYMBOL | ||||||
|  | ;   format EXAMPLEAMOUNT | ||||||
|  | 
 | ||||||
|  | ; display indian rupees with currency name on the left, | ||||||
|  | ; thousands, lakhs and crores comma-separated, | ||||||
|  | ; period as decimal point, and two decimal places. | ||||||
|  | commodity INR | ||||||
|  |   format INR 9,99,99,999.00 | ||||||
|  | 
 | ||||||
|  |  | ||||||
|  | File: hledger_journal.5.info,  Node: Default commodity,  Next: Default year,  Prev: commodity directive,  Up: Directives | ||||||
|  | 
 | ||||||
|  | 1.10.6 Default commodity | ||||||
| ------------------------ | ------------------------ | ||||||
| 
 | 
 | ||||||
| You can set a default commodity, to be used for amounts without one. Use | You can set a default commodity, to be used for amounts without one. Use | ||||||
| the D directive with a sample amount. The commodity (and the sample | the D directive with a sample amount. The commodity (and the sample | ||||||
| amount's display style) will be applied to all subsequent commodity-less | amount's display format) will be applied to all subsequent | ||||||
| amounts, up to the next D directive. (Note this is different from | commodity-less amounts, up to the next D directive. (Note this is | ||||||
| Ledger's default commodity directive.) | different from Ledger's default commodity directive.) | ||||||
| 
 |  | ||||||
|    Also note the directive itself does not influence the commodity's |  | ||||||
| default display style, but the amount it is applied to might. Here's an |  | ||||||
| example: |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| ; set £ as the default commodity |  | ||||||
| D £1,000.00 |  | ||||||
| 
 |  | ||||||
| 2010/1/1 |  | ||||||
|   a  2340 |  | ||||||
|   b |  | ||||||
| 
 |  | ||||||
| 2014/1/1 |  | ||||||
|   c  £1000 |  | ||||||
|   d |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| $ hledger print |  | ||||||
| 2010/01/01 |  | ||||||
|     a     £2,340.00 |  | ||||||
|     b    £-2,340.00 |  | ||||||
| 
 |  | ||||||
| 2014/01/01 |  | ||||||
|     c     £1,000.00 |  | ||||||
|     d    £-1,000.00 |  | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
| File: hledger_journal.5.info,  Node: Default year,  Next: Including other files,  Prev: Default commodity,  Up: Directives | File: hledger_journal.5.info,  Node: Default year,  Next: Including other files,  Prev: Default commodity,  Up: Directives | ||||||
| 
 | 
 | ||||||
| 1.10.6 Default year | 1.10.7 Default year | ||||||
| ------------------- | ------------------- | ||||||
| 
 | 
 | ||||||
| You can set a default year to be used for subsequent dates which don't | You can set a default year to be used for subsequent dates which don't | ||||||
| @ -867,7 +869,7 @@ Y2010      ; change default year to 2010 | |||||||
|  |  | ||||||
| File: hledger_journal.5.info,  Node: Including other files,  Prev: Default year,  Up: Directives | File: hledger_journal.5.info,  Node: Including other files,  Prev: Default year,  Up: Directives | ||||||
| 
 | 
 | ||||||
| 1.10.7 Including other files | 1.10.8 Including other files | ||||||
| ---------------------------- | ---------------------------- | ||||||
| 
 | 
 | ||||||
| You can pull in the content of additional journal files by writing an | You can pull in the content of additional journal files by writing an | ||||||
| @ -877,13 +879,10 @@ include directive, like this: | |||||||
| include path/to/file.journal | include path/to/file.journal | ||||||
| 
 | 
 | ||||||
|    If the path does not begin with a slash, it is relative to the |    If the path does not begin with a slash, it is relative to the | ||||||
| current file. | current file. Glob patterns (`*') are not currently supported. | ||||||
| 
 | 
 | ||||||
|    Glob patterns (`*') are not currently supported. |    The `include' directive can only be used in journal files. It can | ||||||
| 
 | include journal, timeclock or timedot files, but not CSV files. | ||||||
|    The `include' directive may only be used in journal files, and |  | ||||||
| currently it may only include other journal files (eg, not CSV or |  | ||||||
| timeclock files.) |  | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
| File: hledger_journal.5.info,  Node: EDITOR SUPPORT,  Prev: FILE FORMAT,  Up: Top | File: hledger_journal.5.info,  Node: EDITOR SUPPORT,  Prev: FILE FORMAT,  Up: Top | ||||||
| @ -917,67 +916,63 @@ Node: Dates3351 | |||||||
| Ref: #dates3479 | Ref: #dates3479 | ||||||
| Node: Simple dates3544 | Node: Simple dates3544 | ||||||
| Ref: #simple-dates3672 | Ref: #simple-dates3672 | ||||||
| Node: Secondary dates3976 | Node: Secondary dates4036 | ||||||
| Ref: #secondary-dates4132 | Ref: #secondary-dates4192 | ||||||
| Node: Posting dates5408 | Node: Posting dates5753 | ||||||
| Ref: #posting-dates5539 | Ref: #posting-dates5884 | ||||||
| Node: Account names6715 | Node: Account names7255 | ||||||
| Ref: #account-names6854 | Ref: #account-names7394 | ||||||
| Node: Amounts7338 | Node: Amounts7879 | ||||||
| Ref: #amounts7476 | Ref: #amounts8017 | ||||||
| Node: Decimal points and digit groups8003 | Node: Virtual Postings10015 | ||||||
| Ref: #decimal-points-and-digit-groups8196 | Ref: #virtual-postings10176 | ||||||
| Node: Amount display styles8751 | Node: Balance Assertions11396 | ||||||
| Ref: #amount-display-styles8924 | Ref: #balance-assertions11560 | ||||||
| Node: Virtual Postings10003 | Node: Assertions and ordering12382 | ||||||
| Ref: #virtual-postings10164 | Ref: #assertions-and-ordering12567 | ||||||
| Node: Balanced Virtual Postings10683 | Node: Assertions and commodities13598 | ||||||
| Ref: #balanced-virtual-postings10837 | Ref: #assertions-and-commodities13824 | ||||||
| Node: Balance Assertions11452 | Node: Assertions and subaccounts14516 | ||||||
| Ref: #balance-assertions11616 | Ref: #assertions-and-subaccounts14750 | ||||||
| Node: Assertions and ordering12438 | Node: Assertions and virtual postings15272 | ||||||
| Ref: #assertions-and-ordering12623 | Ref: #assertions-and-virtual-postings15481 | ||||||
| Node: Assertions and commodities13654 | Node: Prices15622 | ||||||
| Ref: #assertions-and-commodities13880 | Ref: #prices15754 | ||||||
| Node: Assertions and subaccounts14572 | Node: Transaction prices15805 | ||||||
| Ref: #assertions-and-subaccounts14806 | Ref: #transaction-prices15950 | ||||||
| Node: Assertions and virtual postings15328 | Node: Market prices17557 | ||||||
| Ref: #assertions-and-virtual-postings15537 | Ref: #market-prices17692 | ||||||
| Node: Prices15678 | Node: Comments18580 | ||||||
| Ref: #prices15810 | Ref: #comments18702 | ||||||
| Node: Transaction prices15861 | Node: Tags19814 | ||||||
| Ref: #transaction-prices16006 | Ref: #tags19932 | ||||||
| Node: Market prices17613 | Node: Directives20855 | ||||||
| Ref: #market-prices17748 | Ref: #directives20970 | ||||||
| Node: Comments18636 | Node: Account aliases21163 | ||||||
| Ref: #comments18758 | Ref: #account-aliases21309 | ||||||
| Node: Tags19870 | Node: Basic aliases21911 | ||||||
| Ref: #tags19988 | Ref: #basic-aliases22056 | ||||||
| Node: Directives20918 | Node: Regex aliases22744 | ||||||
| Ref: #directives21033 | Ref: #regex-aliases22914 | ||||||
| Node: Account aliases21202 | Node: Multiple aliases23684 | ||||||
| Ref: #account-aliases21348 | Ref: #multiple-aliases23858 | ||||||
| Node: Basic aliases21950 | Node: end aliases24354 | ||||||
| Ref: #basic-aliases22095 | Ref: #end-aliases24496 | ||||||
| Node: Regex aliases22783 | Node: account directive24598 | ||||||
| Ref: #regex-aliases22953 | Ref: #account-directive24780 | ||||||
| Node: Multiple aliases23723 | Node: apply account directive25076 | ||||||
| Ref: #multiple-aliases23897 | Ref: #apply-account-directive25274 | ||||||
| Node: end aliases24393 | Node: Multi-line comments25935 | ||||||
| Ref: #end-aliases24535 | Ref: #multi-line-comments26127 | ||||||
| Node: account directive24637 | Node: commodity directive26254 | ||||||
| Ref: #account-directive24819 | Ref: #commodity-directive26440 | ||||||
| Node: apply account directive25115 | Node: Default commodity27313 | ||||||
| Ref: #apply-account-directive25313 | Ref: #default-commodity27488 | ||||||
| Node: Multi-line comments25974 | Node: Default year27809 | ||||||
| Ref: #multi-line-comments26164 | Ref: #default-year27976 | ||||||
| Node: Default commodity26291 | Node: Including other files28399 | ||||||
| Ref: #default-commodity26466 | Ref: #including-other-files28558 | ||||||
| Node: Default year27161 | Node: EDITOR SUPPORT28954 | ||||||
| Ref: #default-year27328 | Ref: #editor-support29074 | ||||||
| Node: Including other files27751 |  | ||||||
| Ref: #including-other-files27910 |  | ||||||
| Node: EDITOR SUPPORT28327 |  | ||||||
| Ref: #editor-support28447 |  | ||||||
|  |  | ||||||
| End Tag Table | End Tag Table | ||||||
|  | |||||||
| @ -75,24 +75,28 @@ FFIILLEE FFOORRMMAATT | |||||||
|    DDaatteess |    DDaatteess | ||||||
|    SSiimmppllee ddaatteess |    SSiimmppllee ddaatteess | ||||||
|        Within a journal file, transaction dates use Y/M/D (or Y-M-D or  Y.M.D) |        Within a journal file, transaction dates use Y/M/D (or Y-M-D or  Y.M.D) | ||||||
|        Leading zeroes are optional.  The year may be omitted, in which case it |        Leading  zeros are optional.  The year may be omitted, in which case it | ||||||
|        defaults to the current year, or you can set the default  year  with  a |        will be inferred from  the  context  -  the  current  transaction,  the | ||||||
|        default year directive. |        default  year  set  with  a default year directive, or the current date | ||||||
| 
 |        when the command is run.  Some examples: 2010/01/31, 1/31,  2010-01-31, | ||||||
|        Some examples: 2010/01/31, 1/31, 2010-01-31, 2010.1.31. |        2010.1.31. | ||||||
| 
 | 
 | ||||||
|    SSeeccoonnddaarryy ddaatteess |    SSeeccoonnddaarryy ddaatteess | ||||||
|        Real-life  transactions  sometimes  involve more than one date - eg the |        Real-life  transactions  sometimes  involve more than one date - eg the | ||||||
|        date you write a cheque, and the date it clears in your bank.  When you |        date you write a cheque, and the date it clears in your bank.  When you | ||||||
|        want  to  model  this,  eg for more accurate balances, write both dates |        want  to  model  this,  eg  for more accurate balances, you can specify | ||||||
|        separated by an equals sign.  The _p_r_i_m_a_r_y _d_a_t_e, on the left, is used by |        individual #posting-dates, which I recommend.  Or, you can use the sec- | ||||||
|        default;  the  _s_e_c_o_n_d_a_r_y  _d_a_t_e,  on the right, is used when the --date2 |        ondary  dates  (aka  auxiliary/effective  dates) feature, supported for | ||||||
|        flag is specified (For Ledger compatibility, --aux-date or  --effective |        compatibility with Ledger. | ||||||
|        also work.) |  | ||||||
| 
 | 
 | ||||||
|        Their  meaning is up to you, but it's best to follow a consistent rule. |        A secondary date can be written after the primary date, separated by an | ||||||
|        Eg write the bank's clearing date as primary, and when needed, the date |        equals  sign.   The  primary date, on the left, is used by default; the | ||||||
|        the transaction was initiated as secondary. |        secondary date, on the right, is used when the --date2 flag  is  speci- | ||||||
|  |        fied (--aux-date or --effective also work). | ||||||
|  | 
 | ||||||
|  |        The  meaning of secondary dates is up to you, but it's best to follow a | ||||||
|  |        consistent rule.  Eg write the bank's clearing  date  as  primary,  and | ||||||
|  |        when needed, the date the transaction was initiated as secondary. | ||||||
| 
 | 
 | ||||||
|        Here's an example.  Note that a secondary date will use the year of the |        Here's an example.  Note that a secondary date will use the year of the | ||||||
|        primary date if unspecified. |        primary date if unspecified. | ||||||
| @ -107,39 +111,41 @@ FFIILLEE FFOORRMMAATT | |||||||
|               $ hledger register checking --date2 |               $ hledger register checking --date2 | ||||||
|               2010/02/19 movie ticket         assets:checking                $-10         $-10 |               2010/02/19 movie ticket         assets:checking                $-10         $-10 | ||||||
| 
 | 
 | ||||||
|        Secondary dates require some effort: you must use them consistently  in |        Secondary dates require some effort; you must use them consistently  in | ||||||
|        your journal entries and remember whether to use or not use the --date2 |        your journal entries and remember whether to use or not use the --date2 | ||||||
|        flag for your reports.  Arguably  they  are  now  obsolete,  superseded |        flag for your reports.  They are included in hledger for Ledger compat- | ||||||
|        by... |        ibility,  but  posting  dates  are  a  more powerful and less confusing | ||||||
|  |        alternative. | ||||||
| 
 | 
 | ||||||
|    PPoossttiinngg ddaatteess |    PPoossttiinngg ddaatteess | ||||||
|        You  can  give  individual  postings a different date from their parent |        You can give individual postings a different  date  from  their  parent | ||||||
|        transaction, by adding a posting tag (see below) like date:DATE,  where |        transaction,  by  adding a posting comment containing a tag (see below) | ||||||
|        DATE  is a simple date.  This is probably the best way to control post- |        like date:DATE.  This is probably the best way to control posting dates | ||||||
|        ing dates precisely.  Eg in this example the expense should  appear  in |        precisely.   Eg  in  this  example  the  expense  should  appear in May | ||||||
|        May  reports, and the deduction from checking should be reported on 6/1 |        reports, and the deduction from checking should be reported on 6/1  for | ||||||
|        for easy bank reconciliation: |        easy bank reconciliation: | ||||||
| 
 | 
 | ||||||
|               2015/5/30 |               2015/5/30 | ||||||
|                   expenses:food     $10   ; food purchased on saturday 5/30 |                   expenses:food     $10   ; food purchased on saturday 5/30 | ||||||
|                   assets:checking         ; bank cleared it on monday, date:6/1 |                   assets:checking         ; bank cleared it on monday, date:6/1 | ||||||
| 
 | 
 | ||||||
|               $ hledger -f tt.j register food |               $ hledger -f t.j register food | ||||||
|               2015/05/30                      expenses:food                  $10           $10 |               2015/05/30                      expenses:food                  $10           $10 | ||||||
| 
 | 
 | ||||||
|               $ hledger -f tt.j register checking |               $ hledger -f t.j register checking | ||||||
|               2015/06/01                      assets:checking               $-10          $-10 |               2015/06/01                      assets:checking               $-10          $-10 | ||||||
| 
 | 
 | ||||||
|        A posting date will use the year of the transaction  date  if  unspeci- |        DATE  should be a simple date; if the year is not specified it will use | ||||||
|        fied. |        the year of the transaction's date.  You can  set  the  secondary  date | ||||||
|  |        similarly,  with  date2:DATE2.   The  date:  or date2: tags must have a | ||||||
|  |        valid simple date value if they are present, eg a  date:  tag  with  no | ||||||
|  |        value is not allowed. | ||||||
| 
 | 
 | ||||||
|        You can also set the secondary date, with date2:DATE2.  For compatibil- |        Ledger's earlier, more compact bracketed date syntax is also supported: | ||||||
|        ity, Ledger's older posting date  syntax  is  also  supported:  [DATE], |        [DATE], [DATE=DATE2] or [=DATE2].  hledger will attempt  to  parse  any | ||||||
|        [DATE=DATE2] or [=DATE2] in a posting comment. |        square-bracketed sequence of the 0123456789/-.= characters in this way. | ||||||
| 
 |        With this syntax, DATE infers its year from the transaction  and  DATE2 | ||||||
|        When  using  any of these forms, be sure to provide a valid simple date |        infers its year from DATE. | ||||||
|        or you'll get a parse error.  Eg a date:  tag  with  no  value  is  not |  | ||||||
|        allowed. |  | ||||||
| 
 | 
 | ||||||
|    AAccccoouunntt nnaammeess |    AAccccoouunntt nnaammeess | ||||||
|        Account  names  typically have several parts separated by a full colon, |        Account  names  typically have several parts separated by a full colon, | ||||||
| @ -148,89 +154,98 @@ FFIILLEE FFOORRMMAATT | |||||||
|        top-level accounts: assets, liabilities, income, expenses, and  equity. |        top-level accounts: assets, liabilities, income, expenses, and  equity. | ||||||
| 
 | 
 | ||||||
|        Account  names  may  contain single spaces, eg: assets:accounts receiv- |        Account  names  may  contain single spaces, eg: assets:accounts receiv- | ||||||
|        able.  Because of this, they must always be followed by  at  least  two |        able.  Because of this, they must always be followed  by  ttwwoo  oorr  mmoorree | ||||||
|        spaces (or newline). |        ssppaacceess (or newline). | ||||||
| 
 | 
 | ||||||
|        Account names can be aliased. |        Account names can be aliased. | ||||||
| 
 | 
 | ||||||
|    AAmmoouunnttss |    AAmmoouunnttss | ||||||
|        After the account name, there is usually an amount.  Important: between |        After the account name, there is usually an amount.  Important: between | ||||||
|        account name and amount, there must be ttwwoo oorr mmoorree spaces. |        account name and amount, there must be ttwwoo oorr mmoorree ssppaacceess. | ||||||
| 
 | 
 | ||||||
|        The amount is a number, optionally with a currency symbol or  commodity |        Amounts consist of a number and (usually) a currency symbol or  commod- | ||||||
|        name  on either the left or right.  Negative amounts may have the minus |        ity name.  Some examples: | ||||||
|        sign either before or after the currency symbol (-$1 or $-1).   Commod- |  | ||||||
|        ity  names  which  contain more than just letters should be enclosed in |  | ||||||
|        double quotes (1 "person hours"). |  | ||||||
| 
 | 
 | ||||||
|    DDeecciimmaall ppooiinnttss aanndd ddiiggiitt ggrroouuppss |        2.00001 | ||||||
|        hledger supports flexible  decimal  point  and  digit  group  separator |        $1 | ||||||
|        styles,  to support international variations.  Numbers can use either a |        4000 AAPL | ||||||
|        period (.) or a comma (,) as decimal point.  They can also  have  digit |        3 "green apples" | ||||||
|        group separators at any position (eg thousands separators) which can be |        -$1,000,000.00 | ||||||
|        comma or period - whichever one you did not use as a decimal point.  If |        INR 9,99,99,999.00 | ||||||
|        you  use  digit group separators, you must also include a decimal point |        EUR -2.000.000,00 | ||||||
|        in at least one number in the same commodity,  so  that  hledger  knows |  | ||||||
|        which character is which.  Eg, write $1,000.00 or $1.000,00. |  | ||||||
| 
 | 
 | ||||||
|    AAmmoouunntt ddiissppllaayy ssttyylleess |        As you can see, the amount format is somewhat flexible: | ||||||
|        Based  on  how you format amounts, hledger will infer canonical display |  | ||||||
|        styles for each commodity, and use these  when  displaying  amounts  in |  | ||||||
|        that commodity.  Amount styles include: |  | ||||||
| 
 | 
 | ||||||
|        +o the  position  (left or right) and spacing (space or no separator) of |        +o amounts  are a number (the "quantity") and optionally a currency sym- | ||||||
|          the commodity symbol |          bol/commodity name (the "commodity"). | ||||||
| 
 | 
 | ||||||
|        +o the digit group separator character (comma or period) and digit group |        +o the commodity is a symbol, word, or double-quoted phrase, on the left | ||||||
|          sizes, if any |          or right, with or without a separating space | ||||||
| 
 | 
 | ||||||
|        +o the decimal point character (period or comma) |        +o negative amounts with a commodity on the left can have the minus sign | ||||||
|  |          before or after it | ||||||
| 
 | 
 | ||||||
|        +o the display precision (number of decimal places displayed) |        +o digit groups (thousands, or any other grouping) can be  separated  by | ||||||
|  |          commas  (in  which  case period is used for decimal point) or periods | ||||||
|  |          (in which case comma is used for decimal point) | ||||||
| 
 | 
 | ||||||
|        The  canonical style is generally the style of the first posting amount |        You can use any of these  variations  when  recording  data,  but  when | ||||||
|        seen in a commodity.  However the display precision will be the highest |        hledger  displays  amounts, it will choose a consistent format for each | ||||||
|        precision seen in all posting amounts in that commmodity. |        commodity.  (Except for price amounts, which are  always  formatted  as | ||||||
|  |        written).  The display format is chosen as follows: | ||||||
| 
 | 
 | ||||||
|        The  precisions  used in a price amount, or a D directive, don't affect |        +o if there is a commodity directive specifying the format, that is used | ||||||
|        the canonical display precision directly, but they can affect it  indi- | 
 | ||||||
|        rectly,  eg  when  D's default commodity is applied to a commodity-less |        +o otherwise the format is inferred from the  first  posting  amount  in | ||||||
|        amount or when an amountless posting is balanced using a  price's  com- |          that  commodity  in the journal, and the precision (number of decimal | ||||||
|        modity  (actually  this last case does not influence the canonical dis- |          places) will be the maximum from all posting amounts in that commmod- | ||||||
|        play precision but probably should). |          ity | ||||||
|  | 
 | ||||||
|  |        +o or  if  there are no such amounts in the journal, a default format is | ||||||
|  |          used (like $1000.00). | ||||||
|  | 
 | ||||||
|  |        Price amounts and amounts in D directives usually don't  affect  amount | ||||||
|  |        format  inference,  but  in  some situations they can do so indirectly. | ||||||
|  |        (Eg when D's default commodity is applied to a  commodity-less  amount, | ||||||
|  |        or when an amountless posting is balanced using a price's commodity, or | ||||||
|  |        when -V is used.) If you find this causing problems,  set  the  desired | ||||||
|  |        format with a commodity directive. | ||||||
| 
 | 
 | ||||||
|    VViirrttuuaall PPoossttiinnggss |    VViirrttuuaall PPoossttiinnggss | ||||||
|        When you parenthesise the account name in a posting,  that  posting  is |        When  you  parenthesise  the  account name in a posting, we call that a | ||||||
|        considered _v_i_r_t_u_a_l, which means: |        _v_i_r_t_u_a_l _p_o_s_t_i_n_g, which means: | ||||||
| 
 | 
 | ||||||
|        +o it is ignored when checking that the transaction is balanced |        +o it is ignored when checking that the transaction is balanced | ||||||
| 
 | 
 | ||||||
|        +o it  is  excluded from reports when the --real/-R flag is used, or the |        +o it is excluded from reports when the --real/-R flag is used,  or  the | ||||||
|          real:1 query. |          real:1 query. | ||||||
| 
 | 
 | ||||||
|        You could use this, eg, to set an  account's  opening  balance  without |        You  could  use  this,  eg, to set an account's opening balance without | ||||||
|        needing to use the equity:opening balances account: |        needing to use the equity:opening balances account: | ||||||
| 
 | 
 | ||||||
|               1/1 special unbalanced posting to set initial balance |               1/1 special unbalanced posting to set initial balance | ||||||
|                 (assets:checking)   $1000 |                 (assets:checking)   $1000 | ||||||
| 
 | 
 | ||||||
|    BBaallaanncceedd VViirrttuuaall PPoossttiinnggss |        When the account name is bracketed, we call it a _b_a_l_a_n_c_e_d _v_i_r_t_u_a_l _p_o_s_t_- | ||||||
|        When  the  account  name is bracketed, the posting is _b_a_l_a_n_c_e_d _v_i_r_t_u_a_l, |        _i_n_g.  This is like an ordinary virtual posting except the balanced vir- | ||||||
|        which is just like a virtual posting except the balanced virtual  post- |        tual postings in a transaction must balance to 0, like the  real  post- | ||||||
|        ings  in  a  transaction must balance to 0, like the real postings (but |        ings  (but  separately  from them).  Balanced virtual postings are also | ||||||
|        separately from them).  Balanced virtual postings are also excluded  by |        excluded by --real/-R or real:1. | ||||||
|        --real/-R or real:1. |  | ||||||
| 
 | 
 | ||||||
|        Virtual  postings are a feature inherited from Ledger can can occasion- |               1/1 buy food with cash, and update some budget-tracking subaccounts elsewhere | ||||||
|        ally be useful, but they can be a crutch and you should think twice  or |                 expenses:food                   $10 | ||||||
|        three  times  before using them.  You can almost always find an equiva- |                 assets:cash                    $-10 | ||||||
|        lent journal entry using two or more real postings that  will  be  more |                 [assets:checking:available]     $10 | ||||||
|        correct and more error-proof. |                 [assets:checking:budget:food]  $-10 | ||||||
|  | 
 | ||||||
|  |        Virtual postings have some legitimate uses, but those are few.  You can | ||||||
|  |        usually  find an equivalent journal entry using real postings, which is | ||||||
|  |        more correct and provides better error checking. | ||||||
| 
 | 
 | ||||||
|    BBaallaannccee AAsssseerrttiioonnss |    BBaallaannccee AAsssseerrttiioonnss | ||||||
|        hledger  supports  ledger-style  balance  assertions  in journal files. |        hledger supports ledger-style  balance  assertions  in  journal  files. | ||||||
|        These look like =EXPECTEDBALANCE following a posting's amount.   Eg  in |        These  look  like =EXPECTEDBALANCE following a posting's amount.  Eg in | ||||||
|        this  example we assert the expected dollar balance in accounts a and b |        this example we assert the expected dollar balance in accounts a and  b | ||||||
|        after each posting: |        after each posting: | ||||||
| 
 | 
 | ||||||
|               2013/1/1 |               2013/1/1 | ||||||
| @ -242,48 +257,48 @@ FFIILLEE FFOORRMMAATT | |||||||
|                 b  $-1  =$-2 |                 b  $-1  =$-2 | ||||||
| 
 | 
 | ||||||
|        After reading a journal file, hledger will check all balance assertions |        After reading a journal file, hledger will check all balance assertions | ||||||
|        and  report  an error if any of them fail.  Balance assertions can pro- |        and report an error if any of them fail.  Balance assertions  can  pro- | ||||||
|        tect you from, eg, inadvertently disrupting reconciled  balances  while |        tect  you  from, eg, inadvertently disrupting reconciled balances while | ||||||
|        cleaning  up  old  entries.   You can disable them temporarily with the |        cleaning up old entries.  You can disable  them  temporarily  with  the | ||||||
|        --ignore-assertions flag, which can be useful  for  troubleshooting  or |        --ignore-assertions  flag,  which  can be useful for troubleshooting or | ||||||
|        for reading Ledger files. |        for reading Ledger files. | ||||||
| 
 | 
 | ||||||
|    AAsssseerrttiioonnss aanndd oorrddeerriinngg |    AAsssseerrttiioonnss aanndd oorrddeerriinngg | ||||||
|        hledger  sorts  an  account's postings and assertions first by date and |        hledger sorts an account's postings and assertions first  by  date  and | ||||||
|        then (for postings on the same day) by parse order.  Note this is  dif- |        then  (for postings on the same day) by parse order.  Note this is dif- | ||||||
|        ferent from Ledger, which sorts assertions only by parse order.  (Also, |        ferent from Ledger, which sorts assertions only by parse order.  (Also, | ||||||
|        Ledger assertions do not see the accumulated effect of  repeated  post- |        Ledger  assertions  do not see the accumulated effect of repeated post- | ||||||
|        ings to the same account within a transaction.) |        ings to the same account within a transaction.) | ||||||
| 
 | 
 | ||||||
|        So,  hledger  balance  assertions  keep  working if you reorder differ- |        So, hledger balance assertions keep  working  if  you  reorder  differ- | ||||||
|        ently-dated transactions  within  the  journal.   But  if  you  reorder |        ently-dated  transactions  within  the  journal.   But  if  you reorder | ||||||
|        same-dated transactions or postings, assertions might break and require |        same-dated transactions or postings, assertions might break and require | ||||||
|        updating.  This order dependence does bring an advantage: precise  con- |        updating.   This order dependence does bring an advantage: precise con- | ||||||
|        trol over the order of postings and assertions within a day, so you can |        trol over the order of postings and assertions within a day, so you can | ||||||
|        assert intra-day balances. |        assert intra-day balances. | ||||||
| 
 | 
 | ||||||
|        With included files, things are a little more  complicated.   Including |        With  included  files, things are a little more complicated.  Including | ||||||
|        preserves  the ordering of postings and assertions.  If you have multi- |        preserves the ordering of postings and assertions.  If you have  multi- | ||||||
|        ple postings to an account on the  same  day,  split  across  different |        ple  postings  to  an  account  on the same day, split across different | ||||||
|        files,  and  you  also want to assert the account's balance on the same |        files, and you also want to assert the account's balance  on  the  same | ||||||
|        day, you'll have to put the assertion in the right file. |        day, you'll have to put the assertion in the right file. | ||||||
| 
 | 
 | ||||||
|    AAsssseerrttiioonnss aanndd ccoommmmooddiittiieess |    AAsssseerrttiioonnss aanndd ccoommmmooddiittiieess | ||||||
|        The asserted balance must be a simple single-commodity amount,  and  in |        The  asserted  balance must be a simple single-commodity amount, and in | ||||||
|        fact  the  assertion  checks  only  this commodity's balance within the |        fact the assertion checks only  this  commodity's  balance  within  the | ||||||
|        (possibly multi-commodity) account balance.  We could call this a  par- |        (possibly  multi-commodity) account balance.  We could call this a par- | ||||||
|        tial  balance  assertion.  This is compatible with Ledger, and makes it |        tial balance assertion.  This is compatible with Ledger, and  makes  it | ||||||
|        possible to make assertions about accounts containing multiple commodi- |        possible to make assertions about accounts containing multiple commodi- | ||||||
|        ties. |        ties. | ||||||
| 
 | 
 | ||||||
|        To  assert  each commodity's balance in such a multi-commodity account, |        To assert each commodity's balance in such a  multi-commodity  account, | ||||||
|        you can add multiple postings (with amount 0 if necessary).   But  note |        you  can  add multiple postings (with amount 0 if necessary).  But note | ||||||
|        that  no  matter  how  many  assertions  you add, you can't be sure the |        that no matter how many assertions you  add,  you  can't  be  sure  the | ||||||
|        account does not contain some unexpected commodity.  (We'll add support |        account does not contain some unexpected commodity.  (We'll add support | ||||||
|        for this kind of total balance assertion if there's demand.) |        for this kind of total balance assertion if there's demand.) | ||||||
| 
 | 
 | ||||||
|    AAsssseerrttiioonnss aanndd ssuubbaaccccoouunnttss |    AAsssseerrttiioonnss aanndd ssuubbaaccccoouunnttss | ||||||
|        Balance  assertions  do  not  count  the balance from subaccounts; they |        Balance assertions do not count  the  balance  from  subaccounts;  they | ||||||
|        check the posted account's exclusive balance.  For example: |        check the posted account's exclusive balance.  For example: | ||||||
| 
 | 
 | ||||||
|               1/1 |               1/1 | ||||||
| @ -291,7 +306,7 @@ FFIILLEE FFOORRMMAATT | |||||||
|                 checking        1 = 1  ; post to the parent account, its exclusive balance is now 1 |                 checking        1 = 1  ; post to the parent account, its exclusive balance is now 1 | ||||||
|                 equity |                 equity | ||||||
| 
 | 
 | ||||||
|        The balance report's flat mode  shows  these  exclusive  balances  more |        The  balance  report's  flat  mode  shows these exclusive balances more | ||||||
|        clearly: |        clearly: | ||||||
| 
 | 
 | ||||||
|               $ hledger bal checking --flat |               $ hledger bal checking --flat | ||||||
| @ -306,19 +321,19 @@ FFIILLEE FFOORRMMAATT | |||||||
| 
 | 
 | ||||||
|    PPrriicceess |    PPrriicceess | ||||||
|    TTrraannssaaccttiioonn pprriicceess |    TTrraannssaaccttiioonn pprriicceess | ||||||
|        When recording a transaction, you can also record an amount's price  in |        When  recording a transaction, you can also record an amount's price in | ||||||
|        another  commodity.   This documents the exchange rate, cost (of a pur- |        another commodity.  This documents the exchange rate, cost (of  a  pur- | ||||||
|        chase), or selling price (of a sale) that was  in  effect  within  this |        chase),  or  selling  price  (of a sale) that was in effect within this | ||||||
|        particular  transaction (or more precisely, within the particular post- |        particular transaction (or more precisely, within the particular  post- | ||||||
|        ing).  These transaction prices are fixed, and do not change. |        ing).  These transaction prices are fixed, and do not change. | ||||||
| 
 | 
 | ||||||
|        Such priced amounts can be displayed in their transaction price's  com- |        Such  priced amounts can be displayed in their transaction price's com- | ||||||
|        modity,  by using the --cost/-B flag (B for "cost Basis"), supported by |        modity, by using the --cost/-B flag (B for "cost Basis"), supported  by | ||||||
|        most hledger commands. |        most hledger commands. | ||||||
| 
 | 
 | ||||||
|        There are three ways to specify a transaction price: |        There are three ways to specify a transaction price: | ||||||
| 
 | 
 | ||||||
|        1. Write the unit price (aka exchange rate), as @ UNITPRICE  after  the |        1. Write  the  unit price (aka exchange rate), as @ UNITPRICE after the | ||||||
|           amount: |           amount: | ||||||
| 
 | 
 | ||||||
|                   2009/1/1 |                   2009/1/1 | ||||||
| @ -332,7 +347,7 @@ FFIILLEE FFOORRMMAATT | |||||||
|                     assets:cash |                     assets:cash | ||||||
| 
 | 
 | ||||||
|        3. Or let hledger infer the price so as to balance the transaction.  To |        3. Or let hledger infer the price so as to balance the transaction.  To | ||||||
|           permit this, you must fully specify all posting amounts,  and  their |           permit  this,  you must fully specify all posting amounts, and their | ||||||
|           sum must have a non-zero amount in exactly two commodities: |           sum must have a non-zero amount in exactly two commodities: | ||||||
| 
 | 
 | ||||||
|                   2009/1/1 |                   2009/1/1 | ||||||
| @ -346,17 +361,17 @@ FFIILLEE FFOORRMMAATT | |||||||
|                   assets:foreign currency       $135.00 |                   assets:foreign currency       $135.00 | ||||||
|                   assets:cash                  $-135.00 |                   assets:cash                  $-135.00 | ||||||
| 
 | 
 | ||||||
|        Example  use for transaction prices: recording the effective conversion |        Example use for transaction prices: recording the effective  conversion | ||||||
|        rate of purchases made in a foreign currency. |        rate of purchases made in a foreign currency. | ||||||
| 
 | 
 | ||||||
|    MMaarrkkeett pprriicceess |    MMaarrkkeett pprriicceess | ||||||
|        Market prices are not tied to a particular transaction; they  represent |        Market  prices are not tied to a particular transaction; they represent | ||||||
|        historical  exchange  rates  between two commodities, usually from some |        historical exchange rates between two commodities,  usually  from  some | ||||||
|        public market which publishes such rates. |        public market which publishes such rates. | ||||||
| 
 | 
 | ||||||
|        When market prices are known, the -V/--value option will  use  them  to |        When  market  prices  are known, the -V/--value option will use them to | ||||||
|        convert  reported  amounts  to  their market value as of the report end |        convert reported amounts to their market value as  of  the  report  end | ||||||
|        date.  This option is currently available only with  the  balance  com- |        date.   This  option  is currently available only with the balance com- | ||||||
|        mand. |        mand. | ||||||
| 
 | 
 | ||||||
|        You record market prices (Ledger calls them historical prices) with a P |        You record market prices (Ledger calls them historical prices) with a P | ||||||
| @ -366,7 +381,7 @@ FFIILLEE FFOORRMMAATT | |||||||
|               P DATE COMMODITYSYMBOL UNITPRICE |               P DATE COMMODITYSYMBOL UNITPRICE | ||||||
| 
 | 
 | ||||||
|        For example, the following directives say that the euro's exchange rate |        For example, the following directives say that the euro's exchange rate | ||||||
|        was 1.35 US dollars during  2009,  and  $1.40  from  2010  onward  (and |        was  1.35  US  dollars  during  2009,  and  $1.40 from 2010 onward (and | ||||||
|        unknown before 2009). |        unknown before 2009). | ||||||
| 
 | 
 | ||||||
|               P 2009/1/1 ^a~ $1.35 |               P 2009/1/1 ^a~ $1.35 | ||||||
| @ -375,17 +390,17 @@ FFIILLEE FFOORRMMAATT | |||||||
|        Example use for market prices: tracking the value of stocks. |        Example use for market prices: tracking the value of stocks. | ||||||
| 
 | 
 | ||||||
|    CCoommmmeennttss |    CCoommmmeennttss | ||||||
|        Lines  in  the  journal  beginning  with a semicolon (;) or hash (#) or |        Lines in the journal beginning with a semicolon  (;)  or  hash  (#)  or | ||||||
|        asterisk (*) are comments, and will  be  ignored.   (Asterisk  comments |        asterisk  (*)  are  comments,  and will be ignored.  (Asterisk comments | ||||||
|        make  it easy to treat your journal like an org-mode outline in emacs.) |        make it easy to treat your journal like an org-mode outline in  emacs.) | ||||||
| 
 | 
 | ||||||
|        Also,  anything  between  comment  and  end comment  directives  is   a |        Also,   anything  between  comment  and  end comment  directives  is  a | ||||||
|        (multi-line)  comment.  If there is no end comment, the comment extends |        (multi-line) comment.  If there is no end comment, the comment  extends | ||||||
|        to the end of the file. |        to the end of the file. | ||||||
| 
 | 
 | ||||||
|        You can attach comments to a transaction  by  writing  them  after  the |        You  can  attach  comments  to  a transaction by writing them after the | ||||||
|        description  and/or  indented  on the following lines (before the post- |        description and/or indented on the following lines  (before  the  post- | ||||||
|        ings).  Similarly, you can attach comments to an individual posting  by |        ings).   Similarly, you can attach comments to an individual posting by | ||||||
|        writing them after the amount and/or indented on the following lines. |        writing them after the amount and/or indented on the following lines. | ||||||
| 
 | 
 | ||||||
|        Some examples: |        Some examples: | ||||||
| @ -410,30 +425,30 @@ FFIILLEE FFOORRMMAATT | |||||||
|               ; a journal comment (because not indented) |               ; a journal comment (because not indented) | ||||||
| 
 | 
 | ||||||
|    TTaaggss |    TTaaggss | ||||||
|        A  _t_a_g is a word followed by a full colon inside a transaction or post- |        A _t_a_g is a word followed by a full colon inside a transaction or  post- | ||||||
|        ing comment.  You  can  write  multiple  tags,  comma  separated.   Eg: |        ing  comment.   You  can  write  multiple  tags,  comma separated.  Eg: | ||||||
|        ; a comment containing sometag:, anothertag:.   You can search for tags |        ; a comment containing sometag:, anothertag:.  You can search for  tags | ||||||
|        with the tag: query. |        with the tag: query. | ||||||
| 
 | 
 | ||||||
|        A tag can also have a value, which is any text between  the  colon  and |        A  tag  can  also have a value, which is any text between the colon and | ||||||
|        the  next comma or newline, excluding leading/trailing whitespace.  (So |        the next comma or newline, excluding leading/trailing whitespace.   (So | ||||||
|        hledger tag values can not contain commas or newlines). |        hledger tag values can not contain commas or newlines). | ||||||
| 
 | 
 | ||||||
|        Tags in a transaction comment affect the transaction  and  all  of  its |        Tags  in  a  transaction  comment affect the transaction and all of its | ||||||
|        postings,  while  tags  in  a posting comment affect only that posting. |        postings, while tags in a posting comment  affect  only  that  posting. | ||||||
|        For example,  the  following  transaction  has  three  tags  (A,  TAG2, |        For  example,  the  following  transaction  has  three  tags  (A, TAG2, | ||||||
|        third-tag) and the posting has four (A, TAG2, third-tag, posting-tag): |        third-tag) and the posting has four (A, TAG2, third-tag, posting-tag): | ||||||
| 
 | 
 | ||||||
|               1/1 a transaction  ; A:, TAG2: |               1/1 a transaction  ; A:, TAG2: | ||||||
|                   ; third-tag: a third transaction tag, this time with a value |                   ; third-tag: a third transaction tag, this time with a value | ||||||
|                   (a)  $1  ; posting-tag: |                   (a)  $1  ; posting-tag: | ||||||
| 
 | 
 | ||||||
|        Tags  are  like  Ledger's metadata feature, except hledger's tag values |        Tags are like Ledger's metadata feature, except  hledger's  tag  values | ||||||
|        are always simple strings. |        are simple strings. | ||||||
| 
 | 
 | ||||||
|    DDiirreeccttiivveess |    DDiirreeccttiivveess | ||||||
|    AAccccoouunntt aalliiaasseess |    AAccccoouunntt aalliiaasseess | ||||||
|        You can define aliases which rewrite your account names (after  reading |        You  can define aliases which rewrite your account names (after reading | ||||||
|        the journal, before generating reports).  hledger's account aliases can |        the journal, before generating reports).  hledger's account aliases can | ||||||
|        be useful for: |        be useful for: | ||||||
| 
 | 
 | ||||||
| @ -450,8 +465,8 @@ FFIILLEE FFOORRMMAATT | |||||||
|        See also How to use account aliases. |        See also How to use account aliases. | ||||||
| 
 | 
 | ||||||
|    BBaassiicc aalliiaasseess |    BBaassiicc aalliiaasseess | ||||||
|        To set an account alias, use the alias directive in your journal  file. |        To  set an account alias, use the alias directive in your journal file. | ||||||
|        This  affects all subsequent journal entries in the current file or its |        This affects all subsequent journal entries in the current file or  its | ||||||
|        included files.  The spaces around the = are optional: |        included files.  The spaces around the = are optional: | ||||||
| 
 | 
 | ||||||
|               alias OLD = NEW |               alias OLD = NEW | ||||||
| @ -459,53 +474,53 @@ FFIILLEE FFOORRMMAATT | |||||||
|        Or, you can use the --alias 'OLD=NEW' option on the command line.  This |        Or, you can use the --alias 'OLD=NEW' option on the command line.  This | ||||||
|        affects all entries.  It's useful for trying out aliases interactively. |        affects all entries.  It's useful for trying out aliases interactively. | ||||||
| 
 | 
 | ||||||
|        OLD and NEW are full account names.  hledger will  replace  any  occur- |        OLD  and  NEW  are full account names.  hledger will replace any occur- | ||||||
|        rence  of  the old account name with the new one.  Subaccounts are also |        rence of the old account name with the new one.  Subaccounts  are  also | ||||||
|        affected.  Eg: |        affected.  Eg: | ||||||
| 
 | 
 | ||||||
|               alias checking = assets:bank:wells fargo:checking |               alias checking = assets:bank:wells fargo:checking | ||||||
|               # rewrites "checking" to "assets:bank:wells fargo:checking", or "checking:a" to "assets:bank:wells fargo:checking:a" |               # rewrites "checking" to "assets:bank:wells fargo:checking", or "checking:a" to "assets:bank:wells fargo:checking:a" | ||||||
| 
 | 
 | ||||||
|    RReeggeexx aalliiaasseess |    RReeggeexx aalliiaasseess | ||||||
|        There is also a more powerful variant that uses a  regular  expression, |        There  is  also a more powerful variant that uses a regular expression, | ||||||
|        indicated  by  the forward slashes.  (This was the default behaviour in |        indicated by the forward slashes.  (This was the default  behaviour  in | ||||||
|        hledger 0.24-0.25): |        hledger 0.24-0.25): | ||||||
| 
 | 
 | ||||||
|               alias /REGEX/ = REPLACEMENT |               alias /REGEX/ = REPLACEMENT | ||||||
| 
 | 
 | ||||||
|        or --alias '/REGEX/=REPLACEMENT'. |        or --alias '/REGEX/=REPLACEMENT'. | ||||||
| 
 | 
 | ||||||
|        REGEX is a case-insensitive regular expression.   Anywhere  it  matches |        REGEX  is  a  case-insensitive regular expression.  Anywhere it matches | ||||||
|        inside  an  account name, the matched part will be replaced by REPLACE- |        inside an account name, the matched part will be replaced  by  REPLACE- | ||||||
|        MENT.  If REGEX contains parenthesised match groups, these can be  ref- |        MENT.   If REGEX contains parenthesised match groups, these can be ref- | ||||||
|        erenced by the usual numeric backreferences in REPLACEMENT.  Note, cur- |        erenced by the usual numeric backreferences in REPLACEMENT.  Note, cur- | ||||||
|        rently regular expression  aliases  may  cause  noticeable  slow-downs. |        rently  regular  expression  aliases  may  cause noticeable slow-downs. | ||||||
|        (And if you use Ledger on your hledger file, they will be ignored.) Eg: |        (And if you use Ledger on your hledger file, they will be ignored.) Eg: | ||||||
| 
 | 
 | ||||||
|               alias /^(.+):bank:([^:]+)(.*)/ = \1:\2 \3 |               alias /^(.+):bank:([^:]+)(.*)/ = \1:\2 \3 | ||||||
|               # rewrites "assets:bank:wells fargo:checking" to  "assets:wells fargo checking" |               # rewrites "assets:bank:wells fargo:checking" to  "assets:wells fargo checking" | ||||||
| 
 | 
 | ||||||
|    MMuullttiippllee aalliiaasseess |    MMuullttiippllee aalliiaasseess | ||||||
|        You can define as many aliases as you like  using  directives  or  com- |        You  can  define  as  many aliases as you like using directives or com- | ||||||
|        mand-line  options.  Aliases are recursive - each alias sees the result |        mand-line options.  Aliases are recursive - each alias sees the  result | ||||||
|        of applying previous ones.   (This  is  different  from  Ledger,  where |        of  applying  previous  ones.   (This  is  different from Ledger, where | ||||||
|        aliases are non-recursive by default).  Aliases are applied in the fol- |        aliases are non-recursive by default).  Aliases are applied in the fol- | ||||||
|        lowing order: |        lowing order: | ||||||
| 
 | 
 | ||||||
|        1. alias directives, most recently seen first (recent  directives  take |        1. alias  directives,  most recently seen first (recent directives take | ||||||
|           precedence over earlier ones; directives not yet seen are ignored) |           precedence over earlier ones; directives not yet seen are ignored) | ||||||
| 
 | 
 | ||||||
|        2. alias options, in the order they appear on the command line |        2. alias options, in the order they appear on the command line | ||||||
| 
 | 
 | ||||||
|    eenndd aalliiaasseess |    eenndd aalliiaasseess | ||||||
|        You   can  clear  (forget)  all  currently  defined  aliases  with  the |        You  can  clear  (forget)  all  currently  defined  aliases  with   the | ||||||
|        end aliases directive: |        end aliases directive: | ||||||
| 
 | 
 | ||||||
|               end aliases |               end aliases | ||||||
| 
 | 
 | ||||||
|    aaccccoouunntt ddiirreeccttiivvee |    aaccccoouunntt ddiirreeccttiivvee | ||||||
|        The account directive predefines account names, as in Ledger and  Bean- |        The  account directive predefines account names, as in Ledger and Bean- | ||||||
|        count.   This may be useful for your own documentation; hledger doesn't |        count.  This may be useful for your own documentation; hledger  doesn't | ||||||
|        make use of it yet. |        make use of it yet. | ||||||
| 
 | 
 | ||||||
|               ; account ACCT |               ; account ACCT | ||||||
| @ -520,8 +535,8 @@ FFIILLEE FFOORRMMAATT | |||||||
|               ; etc. |               ; etc. | ||||||
| 
 | 
 | ||||||
|    aappppllyy aaccccoouunntt ddiirreeccttiivvee |    aappppllyy aaccccoouunntt ddiirreeccttiivvee | ||||||
|        You can specify a  parent  account  which  will  be  prepended  to  all |        You  can  specify  a  parent  account  which  will  be prepended to all | ||||||
|        accounts  within  a  section of the journal.  Use the apply account and |        accounts within a section of the journal.  Use  the  apply account  and | ||||||
|        end apply account directives like so: |        end apply account directives like so: | ||||||
| 
 | 
 | ||||||
|               apply account home |               apply account home | ||||||
| @ -538,7 +553,7 @@ FFIILLEE FFOORRMMAATT | |||||||
|                   home:food           $10 |                   home:food           $10 | ||||||
|                   home:cash          $-10 |                   home:cash          $-10 | ||||||
| 
 | 
 | ||||||
|        If end apply account is omitted, the effect lasts to  the  end  of  the |        If  end apply account  is  omitted,  the effect lasts to the end of the | ||||||
|        file.  Included files are also affected, eg: |        file.  Included files are also affected, eg: | ||||||
| 
 | 
 | ||||||
|               apply account business |               apply account business | ||||||
| @ -547,47 +562,50 @@ FFIILLEE FFOORRMMAATT | |||||||
|               apply account personal |               apply account personal | ||||||
|               include personal.journal |               include personal.journal | ||||||
| 
 | 
 | ||||||
|        Prior  to hledger 0.28, legacy account and end spellings were also sup- |        Prior to hledger 0.28, legacy account and end spellings were also  sup- | ||||||
|        ported. |        ported. | ||||||
| 
 | 
 | ||||||
|    MMuullttii--lliinnee ccoommmmeennttss |    MMuullttii--lliinnee ccoommmmeennttss | ||||||
|        A line containing just comment starts a multi-line comment, and a  line |        A  line containing just comment starts a multi-line comment, and a line | ||||||
|        containing just end comment ends it.  See comments. |        containing just end comment ends it.  See comments. | ||||||
| 
 | 
 | ||||||
|  |    ccoommmmooddiittyy ddiirreeccttiivvee | ||||||
|  |        The commodity directive predefines commodities (currently this is  just | ||||||
|  |        informational),  and  also it may define the display format for amounts | ||||||
|  |        in this commodity (overriding the automatically inferred format). | ||||||
|  | 
 | ||||||
|  |        It may be written on a single line, like this: | ||||||
|  | 
 | ||||||
|  |               ; commodity EXAMPLEAMOUNT | ||||||
|  | 
 | ||||||
|  |               ; display AAAA amounts with the symbol on the right, space-separated, | ||||||
|  |               ; using period as decimal point, with four decimal places, and | ||||||
|  |               ; separating thousands with comma. | ||||||
|  |               commodity 1,000.0000 AAAA | ||||||
|  | 
 | ||||||
|  |        or on multiple lines, using the "format" subdirective.   In  this  case | ||||||
|  |        the  commodity  symbol  appears  twice  and  should be the same in both | ||||||
|  |        places: | ||||||
|  | 
 | ||||||
|  |               ; commodity SYMBOL | ||||||
|  |               ;   format EXAMPLEAMOUNT | ||||||
|  | 
 | ||||||
|  |               ; display indian rupees with currency name on the left, | ||||||
|  |               ; thousands, lakhs and crores comma-separated, | ||||||
|  |               ; period as decimal point, and two decimal places. | ||||||
|  |               commodity INR | ||||||
|  |                 format INR 9,99,99,999.00 | ||||||
|  | 
 | ||||||
|    DDeeffaauulltt ccoommmmooddiittyy |    DDeeffaauulltt ccoommmmooddiittyy | ||||||
|        You  can  set  a default commodity, to be used for amounts without one. |        You can set a default commodity, to be used for  amounts  without  one. | ||||||
|        Use the D directive with a sample amount.  The commodity (and the  sam- |        Use  the D directive with a sample amount.  The commodity (and the sam- | ||||||
|        ple  amount's  display style) will be applied to all subsequent commod- |        ple amount's display format) will be applied to all subsequent  commod- | ||||||
|        ity-less amounts, up to the next D directive.  (Note this is  different |        ity-less  amounts, up to the next D directive.  (Note this is different | ||||||
|        from Ledger's default commodity directive.) |        from Ledger's default commodity directive.) | ||||||
| 
 | 
 | ||||||
|        Also  note  the  directive  itself  does  not influence the commodity's |  | ||||||
|        default display style, but the amount it is applied to  might.   Here's |  | ||||||
|        an example: |  | ||||||
| 
 |  | ||||||
|               ; set ^A-L as the default commodity |  | ||||||
|               D ^A-L1,000.00 |  | ||||||
| 
 |  | ||||||
|               2010/1/1 |  | ||||||
|                 a  2340 |  | ||||||
|                 b |  | ||||||
| 
 |  | ||||||
|               2014/1/1 |  | ||||||
|                 c  ^A-L1000 |  | ||||||
|                 d |  | ||||||
| 
 |  | ||||||
|               $ hledger print |  | ||||||
|               2010/01/01 |  | ||||||
|                   a     ^A-L2,340.00 |  | ||||||
|                   b    ^A-L-2,340.00 |  | ||||||
| 
 |  | ||||||
|               2014/01/01 |  | ||||||
|                   c     ^A-L1,000.00 |  | ||||||
|                   d    ^A-L-1,000.00 |  | ||||||
| 
 |  | ||||||
|    DDeeffaauulltt yyeeaarr |    DDeeffaauulltt yyeeaarr | ||||||
|        You  can set a default year to be used for subsequent dates which don't |        You can set a default year to be used for subsequent dates which  don't | ||||||
|        specify a year.  This is a line beginning with Y followed by the  year. |        specify  a year.  This is a line beginning with Y followed by the year. | ||||||
|        Eg: |        Eg: | ||||||
| 
 | 
 | ||||||
|               Y2009      ; set default year to 2009 |               Y2009      ; set default year to 2009 | ||||||
| @ -607,19 +625,16 @@ FFIILLEE FFOORRMMAATT | |||||||
|                 assets |                 assets | ||||||
| 
 | 
 | ||||||
|    IInncclluuddiinngg ootthheerr ffiilleess |    IInncclluuddiinngg ootthheerr ffiilleess | ||||||
|        You  can  pull in the content of additional journal files by writing an |        You can pull in the content of additional journal files by  writing  an | ||||||
|        include directive, like this: |        include directive, like this: | ||||||
| 
 | 
 | ||||||
|               include path/to/file.journal |               include path/to/file.journal | ||||||
| 
 | 
 | ||||||
|        If the path does not begin with a slash, it is relative to the  current |        If  the path does not begin with a slash, it is relative to the current | ||||||
|        file. |        file.  Glob patterns (*) are not currently supported. | ||||||
| 
 | 
 | ||||||
|        Glob patterns (*) are not currently supported. |        The include directive can only  be  used  in  journal  files.   It  can | ||||||
| 
 |        include journal, timeclock or timedot files, but not CSV files. | ||||||
|        The  include directive may only be used in journal files, and currently |  | ||||||
|        it may only include other journal  files  (eg,  not  CSV  or  timeclock |  | ||||||
|        files.) |  | ||||||
| 
 | 
 | ||||||
| EEDDIITTOORR SSUUPPPPOORRTT | EEDDIITTOORR SSUUPPPPOORRTT | ||||||
|        Add-on modes exist for various text editors, to make working with jour- |        Add-on modes exist for various text editors, to make working with jour- | ||||||
| @ -665,4 +680,4 @@ SSEEEE AALLSSOO | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|                                   April 2016                hledger_journal(5) |                                    May 2016                 hledger_journal(5) | ||||||
|  | |||||||
| @ -11,7 +11,7 @@ Timeclock \- the time logging format of timeclock.el, as read by hledger | |||||||
| hledger can read timeclock files. | hledger can read timeclock files. | ||||||
| As with Ledger, these are (a subset of) timeclock.el\[aq]s format, | As with Ledger, these are (a subset of) timeclock.el\[aq]s format, | ||||||
| containing clock\-in and clock\-out entries as in the example below. | containing clock\-in and clock\-out entries as in the example below. | ||||||
| The date is a simple date (also, default year directives work). | The date is a simple date. | ||||||
| The time format is HH:MM[:SS][+\-ZZZZ]. | The time format is HH:MM[:SS][+\-ZZZZ]. | ||||||
| Seconds and timezone are optional. | Seconds and timezone are optional. | ||||||
| The timezone, if present, must be four digits and is ignored (currently | The timezone, if present, must be four digits and is ignored (currently | ||||||
|  | |||||||
| @ -9,10 +9,10 @@ hledger_timeclock(5) | |||||||
| 
 | 
 | ||||||
| hledger can read timeclock files. As with Ledger, these are (a subset | hledger can read timeclock files. As with Ledger, these are (a subset | ||||||
| of) timeclock.el's format, containing clock-in and clock-out entries as | of) timeclock.el's format, containing clock-in and clock-out entries as | ||||||
| in the example below. The date is a simple date (also, default year | in the example below. The date is a simple date. The time format is | ||||||
| directives work). The time format is HH:MM[:SS][+-ZZZZ]. Seconds and | HH:MM[:SS][+-ZZZZ]. Seconds and timezone are optional. The timezone, if | ||||||
| timezone are optional. The timezone, if present, must be four digits and | present, must be four digits and is ignored (currently the time is | ||||||
| is ignored (currently the time is always interpreted as a local time). | always interpreted as a local time). | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| i 2015/03/30 09:00:00 some:account name  optional description after two spaces | i 2015/03/30 09:00:00 some:account name  optional description after two spaces | ||||||
|  | |||||||
| @ -9,20 +9,19 @@ NNAAMMEE | |||||||
| DDEESSCCRRIIPPTTIIOONN | DDEESSCCRRIIPPTTIIOONN | ||||||
|        hledger can read timeclock files.  As with Ledger, these are (a  subset |        hledger can read timeclock files.  As with Ledger, these are (a  subset | ||||||
|        of) timeclock.el's format, containing clock-in and clock-out entries as |        of) timeclock.el's format, containing clock-in and clock-out entries as | ||||||
|        in the example below.  The date is a simple date  (also,  default  year |        in the example below.  The date is a simple date.  The time  format  is | ||||||
|        directives  work).  The time format is HH:MM[:SS][+-ZZZZ].  Seconds and |        HH:MM[:SS][+-ZZZZ].   Seconds and timezone are optional.  The timezone, | ||||||
|        timezone are optional.  The timezone, if present, must be  four  digits |        if present, must be four digits and is ignored (currently the  time  is | ||||||
|        and  is  ignored  (currently  the time is always interpreted as a local |        always interpreted as a local time). | ||||||
|        time). |  | ||||||
| 
 | 
 | ||||||
|               i 2015/03/30 09:00:00 some:account name  optional description after two spaces |               i 2015/03/30 09:00:00 some:account name  optional description after two spaces | ||||||
|               o 2015/03/30 09:20:00 |               o 2015/03/30 09:20:00 | ||||||
|               i 2015/03/31 22:21:45 another account |               i 2015/03/31 22:21:45 another account | ||||||
|               o 2015/04/01 02:00:34 |               o 2015/04/01 02:00:34 | ||||||
| 
 | 
 | ||||||
|        hledger treats each clock-in/clock-out pair as  a  transaction  posting |        hledger  treats  each  clock-in/clock-out pair as a transaction posting | ||||||
|        some  number of hours to an account.  Or if the session spans more than |        some number of hours to an account.  Or if the session spans more  than | ||||||
|        one day, it is split into several transactions, one for each day.   For |        one  day, it is split into several transactions, one for each day.  For | ||||||
|        the above time log, hledger print generates these journal entries: |        the above time log, hledger print generates these journal entries: | ||||||
| 
 | 
 | ||||||
|               $ hledger -f t.timeclock print |               $ hledger -f t.timeclock print | ||||||
| @ -43,7 +42,7 @@ DDEESSCCRRIIPPTTIIOONN | |||||||
| 
 | 
 | ||||||
|        To generate time logs, ie to clock in and clock out, you could: |        To generate time logs, ie to clock in and clock out, you could: | ||||||
| 
 | 
 | ||||||
|        +o use  emacs  and  the  built-in  timeclock.el,  or  the extended time- |        +o use emacs and  the  built-in  timeclock.el,  or  the  extended  time- | ||||||
|          clock-x.el and perhaps the extras in ledgerutils.el |          clock-x.el and perhaps the extras in ledgerutils.el | ||||||
| 
 | 
 | ||||||
|        +o at the command line, use these bash aliases: |        +o at the command line, use these bash aliases: | ||||||
| @ -52,13 +51,13 @@ DDEESSCCRRIIPPTTIIOONN | |||||||
|                 alias to="echo o `date '+%Y-%m-%d %H:%M:%S'` >>$TIMELOG" |                 alias to="echo o `date '+%Y-%m-%d %H:%M:%S'` >>$TIMELOG" | ||||||
| 
 | 
 | ||||||
|        +o or use the old ti and to scripts in the ledger 2.x repository.  These |        +o or use the old ti and to scripts in the ledger 2.x repository.  These | ||||||
|          rely  on  a "timeclock" executable which I think is just the ledger 2 |          rely on a "timeclock" executable which I think is just the  ledger  2 | ||||||
|          executable renamed. |          executable renamed. | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| RREEPPOORRTTIINNGG BBUUGGSS | RREEPPOORRTTIINNGG BBUUGGSS | ||||||
|        Report bugs at http://bugs.hledger.org (or on the #hledger IRC  channel |        Report  bugs at http://bugs.hledger.org (or on the #hledger IRC channel | ||||||
|        or hledger mail list) |        or hledger mail list) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @ -72,7 +71,7 @@ CCOOPPYYRRIIGGHHTT | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| SSEEEE AALLSSOO | SSEEEE AALLSSOO | ||||||
|        hledger(1),      hledger-ui(1),     hledger-web(1),     hledger-api(1), |        hledger(1),     hledger-ui(1),     hledger-web(1),      hledger-api(1), | ||||||
|        hledger_csv(5), hledger_journal(5), hledger_timeclock(5), hledger_time- |        hledger_csv(5), hledger_journal(5), hledger_timeclock(5), hledger_time- | ||||||
|        dot(5), ledger(1) |        dot(5), ledger(1) | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -120,8 +120,6 @@ $\ hledger\ \-f\ t.timedot\ \-\-alias\ /\\\\./=:\ bal\ date:2016/2/4 | |||||||
| \f[] | \f[] | ||||||
| .fi | .fi | ||||||
| .PP | .PP | ||||||
| default year directives may be used. |  | ||||||
| .PP |  | ||||||
| Here is a sample.timedot. | Here is a sample.timedot. | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -109,8 +109,6 @@ $ hledger -f t.timedot --alias /\\./=: bal date:2016/2/4 | |||||||
| -------------------- | -------------------- | ||||||
|                 4.50 |                 4.50 | ||||||
| 
 | 
 | ||||||
|    default year directives may be used. |  | ||||||
| 
 |  | ||||||
|    Here is a sample.timedot. |    Here is a sample.timedot. | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -93,8 +93,6 @@ FFIILLEE FFOORRMMAATT | |||||||
|               -------------------- |               -------------------- | ||||||
|                               4.50 |                               4.50 | ||||||
| 
 | 
 | ||||||
|        default year directives may be used. |  | ||||||
| 
 |  | ||||||
|        Here is a sample.timedot. |        Here is a sample.timedot. | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -139,8 +139,8 @@ set start date, end date, and/or reporting interval all at once | |||||||
| .RS | .RS | ||||||
| .RE | .RE | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-\-date2\ \-\-aux\-date\f[] | .B \f[C]\-\-date2\f[] | ||||||
| use postings/txns\[aq] secondary dates instead | show, and match with \-b/\-e/\-p/date:, secondary dates instead | ||||||
| .RS | .RS | ||||||
| .RE | .RE | ||||||
| .TP | .TP | ||||||
|  | |||||||
| @ -106,8 +106,8 @@ The following common hledger options should also work: | |||||||
|      set start date, end date, and/or reporting interval all at once |      set start date, end date, and/or reporting interval all at once | ||||||
|      (overrides the flags above) |      (overrides the flags above) | ||||||
| 
 | 
 | ||||||
| `--date2 --aux-date' | `--date2' | ||||||
|      use postings/txns' secondary dates instead |      show, and match with -b/-e/-p/date:, secondary dates instead | ||||||
| 
 | 
 | ||||||
| `-C --cleared' | `-C --cleared' | ||||||
|      include only cleared postings/txns |      include only cleared postings/txns | ||||||
| @ -273,17 +273,17 @@ Node: OPTIONS682 | |||||||
| Ref: #options781 | Ref: #options781 | ||||||
| Node: hledger options1547 | Node: hledger options1547 | ||||||
| Ref: #hledger-options1653 | Ref: #hledger-options1653 | ||||||
| Node: KEYS2829 | Node: KEYS2836 | ||||||
| Ref: #keys2926 | Ref: #keys2933 | ||||||
| Node: SCREENS3323 | Node: SCREENS3330 | ||||||
| Ref: #screens3410 | Ref: #screens3417 | ||||||
| Node: Accounts screen3500 | Node: Accounts screen3507 | ||||||
| Ref: #accounts-screen3630 | Ref: #accounts-screen3637 | ||||||
| Node: Register screen4475 | Node: Register screen4482 | ||||||
| Ref: #register-screen4632 | Ref: #register-screen4639 | ||||||
| Node: Transaction screen6014 | Node: Transaction screen6021 | ||||||
| Ref: #transaction-screen6174 | Ref: #transaction-screen6181 | ||||||
| Node: Error screen7041 | Node: Error screen7048 | ||||||
| Ref: #error-screen7165 | Ref: #error-screen7172 | ||||||
|  |  | ||||||
| End Tag Table | End Tag Table | ||||||
|  | |||||||
| @ -94,8 +94,8 @@ OOPPTTIIOONNSS | |||||||
|               set start date, end date, and/or reporting interval all at  once |               set start date, end date, and/or reporting interval all at  once | ||||||
|               (overrides the flags above) |               (overrides the flags above) | ||||||
| 
 | 
 | ||||||
|        ----ddaattee22 ----aauuxx--ddaattee |        ----ddaattee22 | ||||||
|               use postings/txns' secondary dates instead |               show, and match with -b/-e/-p/date:, secondary dates instead | ||||||
| 
 | 
 | ||||||
|        --CC ----cclleeaarreedd |        --CC ----cclleeaarreedd | ||||||
|               include only cleared postings/txns |               include only cleared postings/txns | ||||||
|  | |||||||
| @ -73,8 +73,14 @@ 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 | 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 want to restrict who can see and add entries to your journal. | ||||||
| .PP | .PP | ||||||
|  | Command\-line options and arguments may be used to set an initial filter | ||||||
|  | on the data. | ||||||
|  | This is not shown in the web UI, but it will be applied in addition to | ||||||
|  | any search query entered there. | ||||||
|  | .PP | ||||||
| With journal and timeclock files (but not CSV files, currently) the web | With journal and timeclock files (but not CSV files, currently) the web | ||||||
| app detects changes and will show the new data on the next request. | app detects changes made by other means and will show the new data on | ||||||
|  | the next request. | ||||||
| If a change makes the file unparseable, hledger\-web will show an error | If a change makes the file unparseable, hledger\-web will show an error | ||||||
| until the file has been fixed. | until the file has been fixed. | ||||||
| .SH OPTIONS | .SH OPTIONS | ||||||
| @ -178,8 +184,8 @@ set start date, end date, and/or reporting interval all at once | |||||||
| .RS | .RS | ||||||
| .RE | .RE | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-\-date2\ \-\-aux\-date\f[] | .B \f[C]\-\-date2\f[] | ||||||
| use postings/txns\[aq] secondary dates instead | show, and match with \-b/\-e/\-p/date:, secondary dates instead | ||||||
| .RS | .RS | ||||||
| .RE | .RE | ||||||
| .TP | .TP | ||||||
|  | |||||||
| @ -51,10 +51,14 @@ the PORT in the base url. | |||||||
| hledger-web behind an authenticating proxy (such as apache or nginx) if | 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 want to restrict who can see and add entries to your journal. | ||||||
| 
 | 
 | ||||||
|  |    Command-line options and arguments may be used to set an initial | ||||||
|  | filter on the data. This is not shown in the web UI, but it will be | ||||||
|  | applied in addition to any search query entered there. | ||||||
|  | 
 | ||||||
|    With journal and timeclock files (but not CSV files, currently) the |    With journal and timeclock files (but not CSV files, currently) the | ||||||
| web app detects changes and will show the new data on the next request. | web app detects changes made by other means and will show the new data | ||||||
| If a change makes the file unparseable, hledger-web will show an error | on the next request. If a change makes the file unparseable, hledger-web | ||||||
| until the file has been fixed. | will show an error until the file has been fixed. | ||||||
| 
 | 
 | ||||||
| * Menu: | * Menu: | ||||||
| 
 | 
 | ||||||
| @ -139,8 +143,8 @@ The following common hledger options should also work: | |||||||
|      set start date, end date, and/or reporting interval all at once |      set start date, end date, and/or reporting interval all at once | ||||||
|      (overrides the flags above) |      (overrides the flags above) | ||||||
| 
 | 
 | ||||||
| `--date2 --aux-date' | `--date2' | ||||||
|      use postings/txns' secondary dates instead |      show, and match with -b/-e/-p/date:, secondary dates instead | ||||||
| 
 | 
 | ||||||
| `-C --cleared' | `-C --cleared' | ||||||
|      include only cleared postings/txns |      include only cleared postings/txns | ||||||
| @ -167,9 +171,9 @@ The following common hledger options should also work: | |||||||
|  |  | ||||||
| Tag Table: | Tag Table: | ||||||
| Node: Top90 | Node: Top90 | ||||||
| Node: OPTIONS2622 | Node: OPTIONS2834 | ||||||
| Ref: #options2709 | Ref: #options2921 | ||||||
| Node: hledger options3572 | Node: hledger options3784 | ||||||
| Ref: #hledger-options3679 | Ref: #hledger-options3891 | ||||||
|  |  | ||||||
| End Tag Table | End Tag Table | ||||||
|  | |||||||
| @ -61,10 +61,14 @@ DDEESSCCRRIIPPTTIIOONN | |||||||
|        hledger-web behind an authenticating proxy (such as apache or nginx) if |        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 want to restrict who can see and add entries to your journal. | ||||||
| 
 | 
 | ||||||
|  |        Command-line options and arguments may be used to set an initial filter | ||||||
|  |        on  the  data.  This is not shown in the web UI, but it will be applied | ||||||
|  |        in addition to any search query entered there. | ||||||
|  | 
 | ||||||
|        With journal and timeclock files (but not CSV files, currently) the web |        With journal and timeclock files (but not CSV files, currently) the web | ||||||
|        app detects changes and will show the new data on the next request.  If |        app  detects  changes made by other means and will show the new data on | ||||||
|        a change makes the file unparseable, hledger-web  will  show  an  error |        the next request.  If a change makes the file unparseable,  hledger-web | ||||||
|        until the file has been fixed. |        will show an error until the file has been fixed. | ||||||
| 
 | 
 | ||||||
| OOPPTTIIOONNSS | OOPPTTIIOONNSS | ||||||
|        Note:  if invoking hledger-web as a hledger subcommand, write -- before |        Note:  if invoking hledger-web as a hledger subcommand, write -- before | ||||||
| @ -128,8 +132,8 @@ OOPPTTIIOONNSS | |||||||
|               set  start date, end date, and/or reporting interval all at once |               set  start date, end date, and/or reporting interval all at once | ||||||
|               (overrides the flags above) |               (overrides the flags above) | ||||||
| 
 | 
 | ||||||
|        ----ddaattee22 ----aauuxx--ddaattee |        ----ddaattee22 | ||||||
|               use postings/txns' secondary dates instead |               show, and match with -b/-e/-p/date:, secondary dates instead | ||||||
| 
 | 
 | ||||||
|        --CC ----cclleeaarreedd |        --CC ----cclleeaarreedd | ||||||
|               include only cleared postings/txns |               include only cleared postings/txns | ||||||
|  | |||||||
| @ -142,6 +142,27 @@ $\ hledger\ print\ desc:shop\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ #\ show\ transacti | |||||||
| $\ hledger\ activity\ \-W\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ #\ show\ transaction\ counts\ per\ week\ as\ a\ bar\ chart | $\ hledger\ activity\ \-W\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ #\ show\ transaction\ counts\ per\ week\ as\ a\ bar\ chart | ||||||
| \f[] | \f[] | ||||||
| .fi | .fi | ||||||
|  | .PP | ||||||
|  | With the journal | ||||||
|  | .IP | ||||||
|  | .nf | ||||||
|  | \f[C] | ||||||
|  | 2016/02/16\ Member\ Fee\ Payment\ John\ Doe | ||||||
|  | \ \ \ \ assets:bank\ account\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 2\ EUR | ||||||
|  | \ \ \ \ income:member\ fees\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \-2\ EUR | ||||||
|  | \ \ \ \ \ \ ;\ member:\ John\ Doe | ||||||
|  | \f[] | ||||||
|  | .fi | ||||||
|  | .PP | ||||||
|  | the \-\-pivot comand will output the following: | ||||||
|  | .IP | ||||||
|  | .nf | ||||||
|  | \f[C] | ||||||
|  | $\ hledger\ bal\ \-\-pivot\ member | ||||||
|  | \ \ \ \ 2\ EUR\ \ assets:bank\ account | ||||||
|  | \ \ \ \-2\ EUR\ \ member:John\ Doe | ||||||
|  | \f[] | ||||||
|  | .fi | ||||||
| .SH OPTIONS | .SH OPTIONS | ||||||
| .PP | .PP | ||||||
| To see general usage and the command list: \f[C]hledger\ \-h\f[] or just | To see general usage and the command list: \f[C]hledger\ \-h\f[] or just | ||||||
| @ -269,8 +290,8 @@ set start date, end date, and/or reporting interval all at once | |||||||
| .RS | .RS | ||||||
| .RE | .RE | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-\-date2\ \-\-aux\-date\f[] | .B \f[C]\-\-date2\f[] | ||||||
| use postings/txns\[aq] secondary dates instead | show, and match with \-b/\-e/\-p/date:, secondary dates instead | ||||||
| .RS | .RS | ||||||
| .RE | .RE | ||||||
| .TP | .TP | ||||||
| @ -308,12 +329,27 @@ show empty/zero things which are normally omitted | |||||||
| show amounts in their cost price\[aq]s commodity | show amounts in their cost price\[aq]s commodity | ||||||
| .RS | .RS | ||||||
| .RE | .RE | ||||||
|  | .TP | ||||||
|  | .B `\-\-pivot TAG | ||||||
|  | will transform the journal before any other processing by replacing the | ||||||
|  | account name of every posting having the tag TAG with content VALUE by | ||||||
|  | the account name "TAG:VALUE". | ||||||
|  | .RS | ||||||
|  | .RE | ||||||
|  | The TAG will only match if it is a full\-length match. | ||||||
|  | The pivot will only happen if the TAG is on a posting, not if it is on | ||||||
|  | the transaction. | ||||||
|  | If the tag value is a multi:level:account:name the new account name will | ||||||
|  | be "TAG:multi:level:account:name". | ||||||
|  | .RS | ||||||
|  | .RE | ||||||
| .SS Multiple files | .SS Multiple files | ||||||
| .PP | .PP | ||||||
| One may specify the \f[C]\-\-file\ FILE\f[] option multiple times. | You can specify multiple \f[C]\-f/\-\-file\ FILE\f[] options. | ||||||
| This is equivalent to concatenating the files to standard input and | This is like combining all the files into one, except they can have | ||||||
| passing \f[C]\-\-file\ \-\f[], except that the add command functions | different formats. | ||||||
| normally and adds entries to the first specified file. | Also directives and aliases in one file do not affect subsequent files | ||||||
|  | (if you need that, use the include directive instead). | ||||||
| .SS Repeated options | .SS Repeated options | ||||||
| .PP | .PP | ||||||
| Otherwise, if a reporting option is repeated, the last one takes | Otherwise, if a reporting option is repeated, the last one takes | ||||||
| @ -657,13 +693,16 @@ match transaction descriptions | |||||||
| .RE | .RE | ||||||
| .TP | .TP | ||||||
| .B \f[B]\f[C]date:PERIODEXPR\f[]\f[] | .B \f[B]\f[C]date:PERIODEXPR\f[]\f[] | ||||||
| match dates within the specified period (which should not include a | match dates within the specified period. | ||||||
| reporting interval | PERIODEXPR should not include a reporting interval. | ||||||
|  | The command\-line \f[C]\-\-date2\f[] flag makes this match secondary | ||||||
|  | dates instead (like the \f[C]\-b\f[]/\f[C]\-e\f[]/\f[C]\-p\f[] options). | ||||||
| .RS | .RS | ||||||
| .RE | .RE | ||||||
| .TP | .TP | ||||||
| .B \f[B]\f[C]date2:PERIODEXPR\f[]\f[] | .B \f[B]\f[C]date2:PERIODEXPR\f[]\f[] | ||||||
| as above, but match secondary dates | match secondary dates within the specified period. | ||||||
|  | PERIODEXPR should not include a reporting interval. | ||||||
| .RS | .RS | ||||||
| .RE | .RE | ||||||
| .TP | .TP | ||||||
| @ -695,8 +734,6 @@ transaction. | |||||||
| before any of the above negates the match. | before any of the above negates the match. | ||||||
| .RS | .RS | ||||||
| .RE | .RE | ||||||
| .PP |  | ||||||
|    *   *   *   *   * |  | ||||||
| .PP | .PP | ||||||
| Some of these can also be expressed as command\-line options (eg | Some of these can also be expressed as command\-line options (eg | ||||||
| \f[C]depth:2\f[] is equivalent to \f[C]\-\-depth\ 2\f[]). | \f[C]depth:2\f[] is equivalent to \f[C]\-\-depth\ 2\f[]). | ||||||
| @ -827,8 +864,9 @@ Many hledger users edit their journals directly with a text editor, or | |||||||
| generate them from CSV. | generate them from CSV. | ||||||
| For more interactive data entry, there is the \f[C]add\f[] command, | For more interactive data entry, there is the \f[C]add\f[] command, | ||||||
| which prompts interactively on the console for new transactions, and | which prompts interactively on the console for new transactions, and | ||||||
| appends them to the journal file (existing transactions are not | appends them to the journal file (if there are multiple | ||||||
| changed). | \f[C]\-f\ FILE\f[] options, the first file is used.) Existing | ||||||
|  | transactions are not changed. | ||||||
| This is the only hledger command that writes to the journal file. | This is the only hledger command that writes to the journal file. | ||||||
| .PP | .PP | ||||||
| To use it, just run \f[C]hledger\ add\f[] and follow the prompts. | To use it, just run \f[C]hledger\ add\f[] and follow the prompts. | ||||||
| @ -2103,6 +2141,11 @@ $\ LEDGER_FILE=unique.journal\ hledger\ print\-unique | |||||||
| .PP | .PP | ||||||
| Prints all journal entries, adding specified custom postings to matched | Prints all journal entries, adding specified custom postings to matched | ||||||
| entries. | entries. | ||||||
|  | .PP | ||||||
|  | hledger\-rewrite.hs, in hledger\[aq]s extra directory (compilation | ||||||
|  | optional), adds postings to existing transactions, optionally with an | ||||||
|  | amount based on the existing transaction\[aq]s first amount. | ||||||
|  | See the script for more details. | ||||||
| .IP | .IP | ||||||
| .nf | .nf | ||||||
| \f[C] | \f[C] | ||||||
|  | |||||||
| @ -114,6 +114,21 @@ $ hledger reg 'assets:some bank:checking' # show postings to/from this checking | |||||||
| $ hledger print desc:shop                 # show transactions with shop in the description | $ hledger print desc:shop                 # show transactions with shop in the description | ||||||
| $ hledger activity -W                     # show transaction counts per week as a bar chart | $ hledger activity -W                     # show transaction counts per week as a bar chart | ||||||
| 
 | 
 | ||||||
|  |    With the journal | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 2016/02/16 Member Fee Payment John Doe | ||||||
|  |     assets:bank account                                   2 EUR | ||||||
|  |     income:member fees                                  -2 EUR | ||||||
|  |       ; member: John Doe | ||||||
|  | 
 | ||||||
|  |    the -pivot comand will output the following: | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | $ hledger bal --pivot member | ||||||
|  |     2 EUR  assets:bank account | ||||||
|  |    -2 EUR  member:John Doe | ||||||
|  | 
 | ||||||
|  |  | ||||||
| File: hledger.1.info,  Node: OPTIONS,  Next: QUERIES,  Prev: EXAMPLES,  Up: Top | File: hledger.1.info,  Node: OPTIONS,  Next: QUERIES,  Prev: EXAMPLES,  Up: Top | ||||||
| 
 | 
 | ||||||
| @ -204,8 +219,8 @@ command name. | |||||||
|      set start date, end date, and/or reporting interval all at once |      set start date, end date, and/or reporting interval all at once | ||||||
|      (overrides the flags above) |      (overrides the flags above) | ||||||
| 
 | 
 | ||||||
| `--date2 --aux-date' | `--date2' | ||||||
|      use postings/txns' secondary dates instead |      show, and match with -b/-e/-p/date:, secondary dates instead | ||||||
| 
 | 
 | ||||||
| `-C --cleared' | `-C --cleared' | ||||||
|      include only cleared postings/txns |      include only cleared postings/txns | ||||||
| @ -228,6 +243,15 @@ command name. | |||||||
| `-B --cost' | `-B --cost' | ||||||
|      show amounts in their cost price's commodity |      show amounts in their cost price's commodity | ||||||
| 
 | 
 | ||||||
|  | `-pivot TAG | ||||||
|  |      will transform the journal before any other processing by | ||||||
|  |      replacing the account name of every posting having the tag TAG | ||||||
|  |      with content VALUE by the account name "TAG:VALUE".  The TAG will | ||||||
|  |      only match if it is a full-length match. The pivot will only | ||||||
|  |      happen if the TAG is on a posting, not if it is on the transaction. | ||||||
|  |      If the tag value is a multi:level:account:name the new account | ||||||
|  |      name will be "TAG:multi:level:account:name". | ||||||
|  | 
 | ||||||
| * Menu: | * Menu: | ||||||
| 
 | 
 | ||||||
| * Multiple files:: | * Multiple files:: | ||||||
| @ -244,10 +268,10 @@ File: hledger.1.info,  Node: Multiple files,  Next: Repeated options,  Up: OPTIO | |||||||
| 2.1 Multiple files | 2.1 Multiple files | ||||||
| ================== | ================== | ||||||
| 
 | 
 | ||||||
| One may specify the `--file FILE' option multiple times. This is | You can specify multiple `-f/--file FILE' options. This is like | ||||||
| equivalent to concatenating the files to standard input and passing | combining all the files into one, except they can have different | ||||||
| `--file -', except that the add command functions normally and adds | formats. Also directives and aliases in one file do not affect | ||||||
| entries to the first specified file. | subsequent files (if you need that, use the include directive instead). | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
| File: hledger.1.info,  Node: Repeated options,  Next: Depth limiting,  Prev: Multiple files,  Up: OPTIONS | File: hledger.1.info,  Node: Repeated options,  Next: Depth limiting,  Prev: Multiple files,  Up: OPTIONS | ||||||
| @ -480,11 +504,14 @@ match (or negatively match) | |||||||
|      match transaction descriptions |      match transaction descriptions | ||||||
| 
 | 
 | ||||||
| *`date:PERIODEXPR'* | *`date:PERIODEXPR'* | ||||||
|      match dates within the specified period (which should not include a |      match dates within the specified period. PERIODEXPR should not | ||||||
|      reporting interval |      include a reporting interval. The command-line `--date2' flag | ||||||
|  |      makes this match secondary dates instead (like the `-b'/`-e'/`-p' | ||||||
|  |      options). | ||||||
| 
 | 
 | ||||||
| *`date2:PERIODEXPR'* | *`date2:PERIODEXPR'* | ||||||
|      as above, but match secondary dates |      match secondary dates within the specified period. PERIODEXPR | ||||||
|  |      should not include a reporting interval. | ||||||
| 
 | 
 | ||||||
| *`depth:N'* | *`depth:N'* | ||||||
|      match (or display, depending on command) accounts at or above this |      match (or display, depending on command) accounts at or above this | ||||||
| @ -506,8 +533,7 @@ match (or negatively match) | |||||||
| *`not:'* | *`not:'* | ||||||
|      before any of the above negates the match. |      before any of the above negates the match. | ||||||
| 
 | 
 | ||||||
| ----------------------------------------------------------------------- |    Some of these can also be expressed as command-line options (eg | ||||||
| Some of these can also be expressed as command-line options (eg |  | ||||||
| `depth:2' is equivalent to `--depth 2'). Generally you can mix options | `depth:2' is equivalent to `--depth 2'). Generally you can mix options | ||||||
| and query arguments, and the resulting query will be their intersection | and query arguments, and the resulting query will be their intersection | ||||||
| (perhaps excluding the `-p/--period' option). | (perhaps excluding the `-p/--period' option). | ||||||
| @ -648,8 +674,9 @@ Prompt for transactions and add them to the journal. | |||||||
|    Many hledger users edit their journals directly with a text editor, |    Many hledger users edit their journals directly with a text editor, | ||||||
| or generate them from CSV. For more interactive data entry, there is the | or generate them from CSV. For more interactive data entry, there is the | ||||||
| `add' command, which prompts interactively on the console for new | `add' command, which prompts interactively on the console for new | ||||||
| transactions, and appends them to the journal file (existing | transactions, and appends them to the journal file (if there are | ||||||
| transactions are not changed). This is the only hledger command that | multiple `-f FILE' options, the first file is used.) Existing | ||||||
|  | transactions are not changed. This is the only hledger command that | ||||||
| writes to the journal file. | writes to the journal file. | ||||||
| 
 | 
 | ||||||
|    To use it, just run `hledger add' and follow the prompts. You can |    To use it, just run `hledger add' and follow the prompts. You can | ||||||
| @ -1877,6 +1904,11 @@ File: hledger.1.info,  Node: rewrite,  Next: ui,  Prev: print-unique,  Up: ADD-O | |||||||
| Prints all journal entries, adding specified custom postings to matched | Prints all journal entries, adding specified custom postings to matched | ||||||
| entries. | entries. | ||||||
| 
 | 
 | ||||||
|  |    hledger-rewrite.hs, in hledger's extra directory (compilation | ||||||
|  | optional), adds postings to existing transactions, optionally with an | ||||||
|  | amount based on the existing transaction's first amount. See the script | ||||||
|  | for more details. | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| $ hledger rewrite -- [QUERY]        --add-posting "ACCT  AMTEXPR" ... | $ hledger rewrite -- [QUERY]        --add-posting "ACCT  AMTEXPR" ... | ||||||
| $ hledger rewrite -- ^income        --add-posting '(liabilities:tax)  *.33' | $ hledger rewrite -- ^income        --add-posting '(liabilities:tax)  *.33' | ||||||
| @ -2009,97 +2041,97 @@ Tag Table: | |||||||
| Node: Top82 | Node: Top82 | ||||||
| Node: EXAMPLES1754 | Node: EXAMPLES1754 | ||||||
| Ref: #examples1856 | Ref: #examples1856 | ||||||
| Node: OPTIONS3508 | Node: OPTIONS3860 | ||||||
| Ref: #options3612 | Ref: #options3964 | ||||||
| Node: Multiple files6386 | Node: Multiple files7217 | ||||||
| Ref: #multiple-files6511 | Ref: #multiple-files7342 | ||||||
| Node: Repeated options6750 | Node: Repeated options7607 | ||||||
| Ref: #repeated-options6902 | Ref: #repeated-options7759 | ||||||
| Node: Depth limiting7022 | Node: Depth limiting7879 | ||||||
| Ref: #depth-limiting7167 | Ref: #depth-limiting8024 | ||||||
| Node: Smart dates7368 | Node: Smart dates8225 | ||||||
| Ref: #smart-dates7509 | Ref: #smart-dates8366 | ||||||
| Node: Reporting interval8506 | Node: Reporting interval9363 | ||||||
| Ref: #reporting-interval8665 | Ref: #reporting-interval9522 | ||||||
| Node: Period expressions9008 | Node: Period expressions9865 | ||||||
| Ref: #period-expressions9175 | Ref: #period-expressions10032 | ||||||
| Node: Regular Expressions11221 | Node: Regular Expressions12078 | ||||||
| Ref: #regular-expressions11363 | Ref: #regular-expressions12220 | ||||||
| Node: QUERIES12846 | Node: QUERIES13703 | ||||||
| Ref: #queries12950 | Ref: #queries13807 | ||||||
| Node: COMMANDS16125 | Node: COMMANDS17109 | ||||||
| Ref: #commands16239 | Ref: #commands17223 | ||||||
| Node: accounts16912 | Node: accounts17896 | ||||||
| Ref: #accounts17012 | Ref: #accounts17996 | ||||||
| Node: activity17994 | Node: activity18978 | ||||||
| Ref: #activity18106 | Ref: #activity19090 | ||||||
| Node: add18465 | Node: add19449 | ||||||
| Ref: #add18566 | Ref: #add19550 | ||||||
| Node: balance21160 | Node: balance22209 | ||||||
| Ref: #balance21273 | Ref: #balance22322 | ||||||
| Node: Flat mode23989 | Node: Flat mode25038 | ||||||
| Ref: #flat-mode24116 | Ref: #flat-mode25165 | ||||||
| Node: Depth limited balance reports24535 | Node: Depth limited balance reports25584 | ||||||
| Ref: #depth-limited-balance-reports24738 | Ref: #depth-limited-balance-reports25787 | ||||||
| Node: Multicolumn balance reports25159 | Node: Multicolumn balance reports26208 | ||||||
| Ref: #multicolumn-balance-reports25361 | Ref: #multicolumn-balance-reports26410 | ||||||
| Node: Market value30010 | Node: Market value31059 | ||||||
| Ref: #market-value30174 | Ref: #market-value31223 | ||||||
| Node: Custom balance output30667 | Node: Custom balance output31716 | ||||||
| Ref: #custom-balance-output30840 | Ref: #custom-balance-output31889 | ||||||
| Node: Output destination32944 | Node: Output destination33993 | ||||||
| Ref: #output-destination33109 | Ref: #output-destination34158 | ||||||
| Node: CSV output33379 | Node: CSV output34428 | ||||||
| Ref: #csv-output33498 | Ref: #csv-output34547 | ||||||
| Node: balancesheet33895 | Node: balancesheet34944 | ||||||
| Ref: #balancesheet34023 | Ref: #balancesheet35072 | ||||||
| Node: cashflow34675 | Node: cashflow35724 | ||||||
| Ref: #cashflow34792 | Ref: #cashflow35841 | ||||||
| Node: help35482 | Node: help36531 | ||||||
| Ref: #help35594 | Ref: #help36643 | ||||||
| Node: incomestatement36431 | Node: incomestatement37480 | ||||||
| Ref: #incomestatement36561 | Ref: #incomestatement37610 | ||||||
| Node: info37288 | Node: info38337 | ||||||
| Ref: #info37395 | Ref: #info38444 | ||||||
| Node: man37757 | Node: man38806 | ||||||
| Ref: #man37854 | Ref: #man38903 | ||||||
| Node: print38257 | Node: print39306 | ||||||
| Ref: #print38362 | Ref: #print39411 | ||||||
| Node: register39713 | Node: register40762 | ||||||
| Ref: #register39826 | Ref: #register40875 | ||||||
| Node: Custom register output44167 | Node: Custom register output45216 | ||||||
| Ref: #custom-register-output44298 | Ref: #custom-register-output45347 | ||||||
| Node: stats45595 | Node: stats46644 | ||||||
| Ref: #stats45701 | Ref: #stats46750 | ||||||
| Node: test46582 | Node: test47631 | ||||||
| Ref: #test46669 | Ref: #test47718 | ||||||
| Node: ADD-ON COMMANDS47036 | Node: ADD-ON COMMANDS48085 | ||||||
| Ref: #add-on-commands47172 | Ref: #add-on-commands48221 | ||||||
| Node: api48460 | Node: api49509 | ||||||
| Ref: #api48552 | Ref: #api49601 | ||||||
| Node: autosync48586 | Node: autosync49635 | ||||||
| Ref: #autosync48701 | Ref: #autosync49750 | ||||||
| Node: diff51016 | Node: diff52065 | ||||||
| Ref: #diff51126 | Ref: #diff52175 | ||||||
| Node: equity51790 | Node: equity52839 | ||||||
| Ref: #equity51904 | Ref: #equity52953 | ||||||
| Node: interest53232 | Node: interest54281 | ||||||
| Ref: #interest53349 | Ref: #interest54398 | ||||||
| Node: irr56433 | Node: irr57482 | ||||||
| Ref: #irr56546 | Ref: #irr57595 | ||||||
| Node: print-unique58921 | Node: print-unique59970 | ||||||
| Ref: #print-unique59051 | Ref: #print-unique60100 | ||||||
| Node: rewrite59309 | Node: rewrite60358 | ||||||
| Ref: #rewrite59428 | Ref: #rewrite60477 | ||||||
| Node: ui59731 | Node: ui61006 | ||||||
| Ref: #ui59831 | Ref: #ui61106 | ||||||
| Node: web59872 | Node: web61147 | ||||||
| Ref: #web59960 | Ref: #web61235 | ||||||
| Node: TROUBLESHOOTING59993 | Node: TROUBLESHOOTING61268 | ||||||
| Ref: #troubleshooting60112 | Ref: #troubleshooting61387 | ||||||
| Node: Run-time problems60166 | Node: Run-time problems61441 | ||||||
| Ref: #run-time-problems60309 | Ref: #run-time-problems61584 | ||||||
| Node: Known limitations62253 | Node: Known limitations63528 | ||||||
| Ref: #known-limitations62396 | Ref: #known-limitations63671 | ||||||
|  |  | ||||||
| End Tag Table | End Tag Table | ||||||
|  | |||||||
| @ -103,6 +103,19 @@ EEXXAAMMPPLLEESS | |||||||
|               $ hledger print desc:shop                 # show transactions with shop in the description |               $ hledger print desc:shop                 # show transactions with shop in the description | ||||||
|               $ hledger activity -W                     # show transaction counts per week as a bar chart |               $ hledger activity -W                     # show transaction counts per week as a bar chart | ||||||
| 
 | 
 | ||||||
|  |        With the journal | ||||||
|  | 
 | ||||||
|  |               2016/02/16 Member Fee Payment John Doe | ||||||
|  |                   assets:bank account                                   2 EUR | ||||||
|  |                   income:member fees                                  -2 EUR | ||||||
|  |                     ; member: John Doe | ||||||
|  | 
 | ||||||
|  |        the --pivot comand will output the following: | ||||||
|  | 
 | ||||||
|  |               $ hledger bal --pivot member | ||||||
|  |                   2 EUR  assets:bank account | ||||||
|  |                  -2 EUR  member:John Doe | ||||||
|  | 
 | ||||||
| OOPPTTIIOONNSS | OOPPTTIIOONNSS | ||||||
|        To see general usage and the command list: hledger -h or just hledger |        To see general usage and the command list: hledger -h or just hledger | ||||||
| 
 | 
 | ||||||
| @ -181,8 +194,8 @@ OOPPTTIIOONNSS | |||||||
|               set start date, end date, and/or reporting interval all at  once |               set start date, end date, and/or reporting interval all at  once | ||||||
|               (overrides the flags above) |               (overrides the flags above) | ||||||
| 
 | 
 | ||||||
|        ----ddaattee22 ----aauuxx--ddaattee |        ----ddaattee22 | ||||||
|               use postings/txns' secondary dates instead |               show, and match with -b/-e/-p/date:, secondary dates instead | ||||||
| 
 | 
 | ||||||
|        --CC ----cclleeaarreedd |        --CC ----cclleeaarreedd | ||||||
|               include only cleared postings/txns |               include only cleared postings/txns | ||||||
| @ -205,156 +218,165 @@ OOPPTTIIOONNSS | |||||||
|        --BB ----ccoosstt |        --BB ----ccoosstt | ||||||
|               show amounts in their cost price's commodity |               show amounts in their cost price's commodity | ||||||
| 
 | 
 | ||||||
|  |        ``----ppiivvoott TTAAGG | ||||||
|  |               will  transform  the  journal  before  any  other  processing by | ||||||
|  |               replacing the account name of every posting having the  tag  TAG | ||||||
|  |               with content VALUE by the account name "TAG:VALUE". | ||||||
|  |        The  TAG  will only match if it is a full-length match.  The pivot will | ||||||
|  |        only happen if the TAG is on a posting, not if it is  on  the  transac- | ||||||
|  |        tion.   If  the tag value is a multi:level:account:name the new account | ||||||
|  |        name will be "TAG:multi:level:account:name". | ||||||
|  | 
 | ||||||
|    MMuullttiippllee ffiilleess |    MMuullttiippllee ffiilleess | ||||||
|        One may specify the --file FILE option multiple times.  This is equiva- |        You can specify multiple -f/--file FILE options.  This is like  combin- | ||||||
|        lent to concatenating the files to standard input and passing --file -, |        ing  all  the  files  into one, except they can have different formats. | ||||||
|        except  that the add command functions normally and adds entries to the |        Also directives and aliases in one file do not affect subsequent  files | ||||||
|        first specified file. |        (if you need that, use the include directive instead). | ||||||
| 
 | 
 | ||||||
|    RReeppeeaatteedd ooppttiioonnss |    RReeppeeaatteedd ooppttiioonnss | ||||||
|        Otherwise, if a reporting option is repeated, the last one takes prece- |        Otherwise, if a reporting option is repeated, the last one takes prece- | ||||||
|        dence.  Eg -p jan -p feb is equivalent to -p feb. |        dence.  Eg -p jan -p feb is equivalent to -p feb. | ||||||
| 
 | 
 | ||||||
|    DDeepptthh lliimmiittiinngg |    DDeepptthh lliimmiittiinngg | ||||||
|        With  the --depth N option, commands like account, balance and register |        With the --depth N option, commands like account, balance and  register | ||||||
|        will show only the uppermost accounts in  the  account  tree,  down  to |        will  show  only  the  uppermost  accounts in the account tree, down to | ||||||
|        level N.  Use this when you want a summary with less detail. |        level N.  Use this when you want a summary with less detail. | ||||||
| 
 | 
 | ||||||
|    SSmmaarrtt ddaatteess |    SSmmaarrtt ddaatteess | ||||||
|        hledger's user interfaces accept a flexible "smart date" syntax (unlike |        hledger's user interfaces accept a flexible "smart date" syntax (unlike | ||||||
|        dates in the journal file).  Smart dates allow some english words,  can |        dates  in the journal file).  Smart dates allow some english words, can | ||||||
|        be  relative  to today's date, and can have less-significant date parts |        be relative to today's date, and can have less-significant  date  parts | ||||||
|        omitted (defaulting to 1). |        omitted (defaulting to 1). | ||||||
| 
 | 
 | ||||||
|        Examples: |        Examples: | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|        tab(@); l l.  T{ 2009/1/1, 2009/01/01, 2009-1-1, 2009.1.1 T}@T{  simple |        tab(@);  l l.  T{ 2009/1/1, 2009/01/01, 2009-1-1, 2009.1.1 T}@T{ simple | ||||||
|        dates,  several  separators  allowed  T}  T{ 2009/1, 2009 T}@T{ same as |        dates, several separators allowed T} T{  2009/1,  2009  T}@T{  same  as | ||||||
|        above - a missing day or month defaults to 1 T} T{ 1/1,  january,  jan, |        above  -  a missing day or month defaults to 1 T} T{ 1/1, january, jan, | ||||||
|        this year  T}@T{  relative dates, meaning january 1 of the current year |        this year T}@T{ relative dates, meaning january 1 of the  current  year | ||||||
|        T} T{ next year T}@T{ january 1 of next year T} T{ this month T}@T{ the |        T} T{ next year T}@T{ january 1 of next year T} T{ this month T}@T{ the | ||||||
|        1st  of  the current month T} T{ this week T}@T{ the most recent monday |        1st of the current month T} T{ this week T}@T{ the most  recent  monday | ||||||
|        T} T{ last week T}@T{ the monday of the week  before  this  one  T}  T{ |        T}  T{  last week  T}@T{  the  monday of the week before this one T} T{ | ||||||
|        lastweek  T}@T{  spaces  are  optional T} T{ today, yesterday, tomorrow |        lastweek T}@T{ spaces are optional T}  T{  today,  yesterday,  tomorrow | ||||||
|        T}@T{ T} |        T}@T{ T} | ||||||
| 
 | 
 | ||||||
|    RReeppoorrttiinngg iinntteerrvvaall |    RReeppoorrttiinngg iinntteerrvvaall | ||||||
|        A reporting interval can be specified so that commands  like  register, |        A  reporting  interval can be specified so that commands like register, | ||||||
|        balance  and  activity  will  divide their reports into multiple report |        balance and activity will divide their  reports  into  multiple  report | ||||||
|        periods.  The basic intervals can be selected with one  of  -D/--daily, |        periods.   The  basic intervals can be selected with one of -D/--daily, | ||||||
|        -W/--weekly,  -M/--monthly,  -Q/--quarterly, or -Y/--yearly.  More com- |        -W/--weekly, -M/--monthly, -Q/--quarterly, or -Y/--yearly.   More  com- | ||||||
|        plex intervals may be specified with a period expression. |        plex intervals may be specified with a period expression. | ||||||
| 
 | 
 | ||||||
|    PPeerriioodd eexxpprreessssiioonnss |    PPeerriioodd eexxpprreessssiioonnss | ||||||
|        The -p/--period option accepts period expressions, a shorthand  way  of |        The  -p/--period  option accepts period expressions, a shorthand way of | ||||||
|        expressing  a  start  date,  end date, and or reporting interval all at |        expressing a start date, end date, and or  reporting  interval  all  at | ||||||
|        once.  Note a period expression on the  command  line  will  cause  any |        once.   Note  a  period  expression  on the command line will cause any | ||||||
|        other date flags (-b/-e/-D/-W/-M/-Q/-Y) to be ignored. |        other date flags (-b/-e/-D/-W/-M/-Q/-Y) to be ignored. | ||||||
| 
 | 
 | ||||||
|        hledger's  period expressions are similar to Ledger's, though not iden- |        hledger's period expressions are similar to Ledger's, though not  iden- | ||||||
|        tical.  Here's a basic period expression specifying the  first  quarter |        tical.   Here's  a basic period expression specifying the first quarter | ||||||
|        of  2009.  Note, hledger always treats start dates as inclusive and end |        of 2009.  Note, hledger always treats start dates as inclusive and  end | ||||||
|        dates as exclusive: |        dates as exclusive: | ||||||
| 
 | 
 | ||||||
|        -p "from 2009/1/1 to 2009/4/1" |        -p "from 2009/1/1 to 2009/4/1" | ||||||
| 
 | 
 | ||||||
|        Keywords like "from" and "to" are optional, and so are the  spaces,  as |        Keywords  like  "from" and "to" are optional, and so are the spaces, as | ||||||
|        long  as you don't run two dates together.  "to" can also be written as |        long as you don't run two dates together.  "to" can also be written  as | ||||||
|        "-".  These are equivalent to the above: |        "-".  These are equivalent to the above: | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|        tab(@); l.  T{ -p "2009/1/1 2009/4/1" T} T{ -p2009/1/1to2009/4/1 T}  T{ |        tab(@);  l.  T{ -p "2009/1/1 2009/4/1" T} T{ -p2009/1/1to2009/4/1 T} T{ | ||||||
|        -p2009/1/1-2009/4/1 T} |        -p2009/1/1-2009/4/1 T} | ||||||
| 
 | 
 | ||||||
|        Dates  are  smart  dates, so if the current year is 2009, the above can |        Dates are smart dates, so if the current year is 2009,  the  above  can | ||||||
|        also be written as: |        also be written as: | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|        tab(@);  l.    T{   -p "1/1 4/1"   T}   T{   -p "january-apr"   T}   T{ |        tab(@);   l.    T{   -p "1/1 4/1"   T}   T{   -p "january-apr"   T}  T{ | ||||||
|        -p "this year to 4/1" T} |        -p "this year to 4/1" T} | ||||||
| 
 | 
 | ||||||
|        If you specify only one date, the missing start or end date will be the |        If you specify only one date, the missing start or end date will be the | ||||||
|        earliest or latest transaction in your journal: |        earliest or latest transaction in your journal: | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|        tab(@); l l.  T{ -p "from 2009/1/1" T}@T{ everything after  january  1, |        tab(@);  l  l.  T{ -p "from 2009/1/1" T}@T{ everything after january 1, | ||||||
|        2009  T}  T{ -p "from 2009/1" T}@T{ the same T} T{ -p "from 2009" T}@T{ |        2009 T} T{ -p "from 2009/1" T}@T{ the same T} T{  -p "from 2009"  T}@T{ | ||||||
|        the same T} T{ -p "to 2009" T}@T{ everything before january 1, 2009 T} |        the same T} T{ -p "to 2009" T}@T{ everything before january 1, 2009 T} | ||||||
| 
 | 
 | ||||||
|        A single date with no "from" or "to" defines both  the  start  and  end |        A  single  date  with  no "from" or "to" defines both the start and end | ||||||
|        date like so: |        date like so: | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|        tab(@); l l.  T{ -p "2009" T}@T{ the year 2009; equivalent to "2009/1/1 |        tab(@); l l.  T{ -p "2009" T}@T{ the year 2009; equivalent to "2009/1/1 | ||||||
|        to 2010/1/1" T} T{ -p "2009/1" T}@T{ the month of  jan;  equivalent  to |        to  2010/1/1"  T}  T{ -p "2009/1" T}@T{ the month of jan; equivalent to | ||||||
|        "2009/1/1 to 2009/2/1" T} T{ -p "2009/1/1" T}@T{ just that day; equiva- |        "2009/1/1 to 2009/2/1" T} T{ -p "2009/1/1" T}@T{ just that day; equiva- | ||||||
|        lent to "2009/1/1 to 2009/1/2" T} |        lent to "2009/1/1 to 2009/1/2" T} | ||||||
| 
 | 
 | ||||||
|        Period expressions can also start with (or be)  a  reporting  interval: |        Period  expressions  can  also start with (or be) a reporting interval: | ||||||
|        daily,  weekly,  monthly,  quarterly,  yearly,  or one of the every ... |        daily, weekly, monthly, quarterly, yearly,  or  one  of  the  every ... | ||||||
|        expressions below.  Optionally the  word  in  may  appear  between  the |        expressions  below.   Optionally  the  word  in  may appear between the | ||||||
|        reporting interval and the start/end dates.  Examples: |        reporting interval and the start/end dates.  Examples: | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|        tab(@);    l.     T{    -p "weekly from 2009/1/1 to 2009/4/1"   T}   T{ |        tab(@);   l.    T{    -p "weekly from 2009/1/1 to 2009/4/1"    T}    T{ | ||||||
|        -p "monthly in 2008" T} T{  -p "bimonthly from 2008"  T}  T{  -p "quar- |        -p "monthly in 2008"  T}  T{  -p "bimonthly from 2008"  T} T{ -p "quar- | ||||||
|        terly"  T} T{ -p "every 2 weeks" T} T{ -p "every 5 days from 1/3" T} T{ |        terly" T} T{ -p "every 2 weeks" T} T{ -p "every 5 days from 1/3" T}  T{ | ||||||
|        -p "every 15th day of month" T} T{ -p "every 4th day of week" T} |        -p "every 15th day of month" T} T{ -p "every 4th day of week" T} | ||||||
| 
 | 
 | ||||||
|    RReegguullaarr EExxpprreessssiioonnss |    RReegguullaarr EExxpprreessssiioonnss | ||||||
|        hledger uses regular expressions in a number of places: |        hledger uses regular expressions in a number of places: | ||||||
| 
 | 
 | ||||||
|        +o query terms, on the command line and in the hledger-web search  form: |        +o query  terms, on the command line and in the hledger-web search form: | ||||||
|          REGEX, desc:REGEX, cur:REGEX, tag:...=REGEX |          REGEX, desc:REGEX, cur:REGEX, tag:...=REGEX | ||||||
| 
 | 
 | ||||||
|        +o CSV rules conditional blocks: if REGEX ... |        +o CSV rules conditional blocks: if REGEX ... | ||||||
| 
 | 
 | ||||||
|        +o account  alias  directives  and options: alias /REGEX/ = REPLACEMENT, |        +o account alias directives  and  options:  alias /REGEX/ = REPLACEMENT, | ||||||
|          --alias /REGEX/=REPLACEMENT |          --alias /REGEX/=REPLACEMENT | ||||||
| 
 | 
 | ||||||
|        hledger's regular expressions come from  the  regex-tdfa  library.   In |        hledger's  regular  expressions  come  from the regex-tdfa library.  In | ||||||
|        general they: |        general they: | ||||||
| 
 | 
 | ||||||
|        +o are case insensitive |        +o are case insensitive | ||||||
| 
 | 
 | ||||||
|        +o are  infix  matching  (do  not  need  to match the entire thing being |        +o are infix matching (do not need  to  match  the  entire  thing  being | ||||||
|          matched) |          matched) | ||||||
| 
 | 
 | ||||||
|        +o are POSIX extended regular expressions |        +o are POSIX extended regular expressions | ||||||
| 
 | 
 | ||||||
|        +o also support GNU word boundaries (\<, \>, \b, \B) |        +o also support GNU word boundaries (\<, \>, \b, \B) | ||||||
| 
 | 
 | ||||||
|        +o and parenthesised capturing  groups  and  numeric  backreferences  in |        +o and  parenthesised  capturing  groups  and  numeric backreferences in | ||||||
|          replacement strings |          replacement strings | ||||||
| 
 | 
 | ||||||
|        +o do not support mode modifiers like (?s) |        +o do not support mode modifiers like (?s) | ||||||
| 
 | 
 | ||||||
|        Some things to note: |        Some things to note: | ||||||
| 
 | 
 | ||||||
|        +o In  the  alias directive and --alias option, regular expressions must |        +o In the alias directive and --alias option, regular  expressions  must | ||||||
|          be enclosed in forward  slashes  (/REGEX/).   Elsewhere  in  hledger, |          be  enclosed  in  forward  slashes  (/REGEX/).  Elsewhere in hledger, | ||||||
|          these are not required. |          these are not required. | ||||||
| 
 | 
 | ||||||
|        +o To match a regular expression metacharacter like $ as a literal char- |        +o To match a regular expression metacharacter like $ as a literal char- | ||||||
|          acter, prepend a backslash.  Eg to search for amounts with the dollar |          acter, prepend a backslash.  Eg to search for amounts with the dollar | ||||||
|          sign in hledger-web, write cur:\$. |          sign in hledger-web, write cur:\$. | ||||||
| 
 | 
 | ||||||
|        +o On  the command line, some metacharacters like $ have a special mean- |        +o On the command line, some metacharacters like $ have a special  mean- | ||||||
|          ing to the shell and so must be escaped a second time, with single or |          ing to the shell and so must be escaped a second time, with single or | ||||||
|          double  quotes  or  another backslash.  Eg, to match amounts with the |          double quotes or another backslash.  Eg, to match  amounts  with  the | ||||||
|          dollar sign from the command line, write cur:'\$' or cur:\\$. |          dollar sign from the command line, write cur:'\$' or cur:\\$. | ||||||
| 
 | 
 | ||||||
| QQUUEERRIIEESS | QQUUEERRIIEESS | ||||||
|        One of hledger's strengths is being able to quickly report  on  precise |        One  of  hledger's strengths is being able to quickly report on precise | ||||||
|        subsets  of  your data.  Most commands accept an optional query expres- |        subsets of your data.  Most commands accept an optional  query  expres- | ||||||
|        sion, written as arguments after the command name, to filter  the  data |        sion,  written  as arguments after the command name, to filter the data | ||||||
|        by  date,  account  name or other criteria.  The syntax is similar to a |        by date, account name or other criteria.  The syntax is  similar  to  a | ||||||
|        web search: one or more space-separated search terms, quotes to enclose |        web search: one or more space-separated search terms, quotes to enclose | ||||||
|        whitespace,  optional  prefixes  to  match  specific  fields.  Multiple |        whitespace, optional  prefixes  to  match  specific  fields.   Multiple | ||||||
|        search terms are combined as follows: |        search terms are combined as follows: | ||||||
| 
 | 
 | ||||||
|        All commands except print:  show  transactions/postings/accounts  which |        All  commands  except  print: show transactions/postings/accounts which | ||||||
|        match (or negatively match) |        match (or negatively match) | ||||||
| 
 | 
 | ||||||
|        +o any of the description terms AND |        +o any of the description terms AND | ||||||
| @ -381,22 +403,22 @@ QQUUEERRIIEESS | |||||||
|               same as above |               same as above | ||||||
| 
 | 
 | ||||||
|        aammtt::NN,, aammtt::<<NN,, aammtt::<<==NN,, aammtt::>>NN,, aammtt::>>==NN |        aammtt::NN,, aammtt::<<NN,, aammtt::<<==NN,, aammtt::>>NN,, aammtt::>>==NN | ||||||
|               match  postings with a single-commodity amount that is equal to, |               match postings with a single-commodity amount that is equal  to, | ||||||
|               less than, or greater than N.  (Multi-commodity amounts are  not |               less  than, or greater than N.  (Multi-commodity amounts are not | ||||||
|               tested, and will always match.) The comparison has two modes: if |               tested, and will always match.) The comparison has two modes: if | ||||||
|               N is preceded by a + or - sign (or is 0), the two signed numbers |               N is preceded by a + or - sign (or is 0), the two signed numbers | ||||||
|               are  compared.  Otherwise, the absolute magnitudes are compared, |               are compared.  Otherwise, the absolute magnitudes are  compared, | ||||||
|               ignoring sign. |               ignoring sign. | ||||||
| 
 | 
 | ||||||
|        ccooddee::RREEGGEEXX |        ccooddee::RREEGGEEXX | ||||||
|               match by transaction code (eg check number) |               match by transaction code (eg check number) | ||||||
| 
 | 
 | ||||||
|        ccuurr::RREEGGEEXX |        ccuurr::RREEGGEEXX | ||||||
|               match postings or transactions including any amounts whose  cur- |               match  postings or transactions including any amounts whose cur- | ||||||
|               rency/commodity  symbol  is fully matched by REGEX.  (For a par- |               rency/commodity symbol is fully matched by REGEX.  (For  a  par- | ||||||
|               tial match, use .*REGEX.*).  Note, to match characters which are |               tial match, use .*REGEX.*).  Note, to match characters which are | ||||||
|               regex-significant, like the dollar sign ($), you need to prepend |               regex-significant, like the dollar sign ($), you need to prepend | ||||||
|               \.  And when using the command line you need  to  add  one  more |               \.   And  when  using  the command line you need to add one more | ||||||
|               level  of  quoting  to  hide  it  from  the  shell,  so  eg  do: |               level  of  quoting  to  hide  it  from  the  shell,  so  eg  do: | ||||||
|               hledger print cur:'\$' or hledger print cur:\\$. |               hledger print cur:'\$' or hledger print cur:\\$. | ||||||
| 
 | 
 | ||||||
| @ -404,11 +426,14 @@ QQUUEERRIIEESS | |||||||
|               match transaction descriptions |               match transaction descriptions | ||||||
| 
 | 
 | ||||||
|        ddaattee::PPEERRIIOODDEEXXPPRR |        ddaattee::PPEERRIIOODDEEXXPPRR | ||||||
|               match dates  within  the  specified  period  (which  should  not |               match  dates within the specified period.  PERIODEXPR should not | ||||||
|               include a reporting interval |               include a reporting interval.   The  command-line  --date2  flag | ||||||
|  |               makes  this  match  secondary  dates  instead (like the -b/-e/-p | ||||||
|  |               options). | ||||||
| 
 | 
 | ||||||
|        ddaattee22::PPEERRIIOODDEEXXPPRR |        ddaattee22::PPEERRIIOODDEEXXPPRR | ||||||
|               as above, but match secondary dates |               match secondary dates within the specified  period.   PERIODEXPR | ||||||
|  |               should not include a reporting interval. | ||||||
| 
 | 
 | ||||||
|        ddeepptthh::NN |        ddeepptthh::NN | ||||||
|               match  (or  display,  depending on command) accounts at or above |               match  (or  display,  depending on command) accounts at or above | ||||||
| @ -429,8 +454,6 @@ QQUUEERRIIEESS | |||||||
| 
 | 
 | ||||||
|        nnoott::   before any of the above negates the match. |        nnoott::   before any of the above negates the match. | ||||||
| 
 | 
 | ||||||
|           *   *   *   *   * |  | ||||||
| 
 |  | ||||||
|        Some of these can also be expressed as command-line options (eg depth:2 |        Some of these can also be expressed as command-line options (eg depth:2 | ||||||
|        is  equivalent  to --depth 2).  Generally you can mix options and query |        is  equivalent  to --depth 2).  Generally you can mix options and query | ||||||
|        arguments, and the resulting query will be their intersection  (perhaps |        arguments, and the resulting query will be their intersection  (perhaps | ||||||
| @ -529,17 +552,18 @@ CCOOMMMMAANNDDSS | |||||||
|        Many hledger users edit their journals directly with a text editor,  or |        Many hledger users edit their journals directly with a text editor,  or | ||||||
|        generate  them from CSV.  For more interactive data entry, there is the |        generate  them from CSV.  For more interactive data entry, there is the | ||||||
|        add command, which prompts interactively on the console for new  trans- |        add command, which prompts interactively on the console for new  trans- | ||||||
|        actions,  and  appends  them to the journal file (existing transactions |        actions,  and  appends  them to the journal file (if there are multiple | ||||||
|        are not changed).  This is the only hledger command that writes to  the |        -f FILE options, the first file is used.) Existing transactions are not | ||||||
|        journal file. |        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 |        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 |        many  transactions as you like; when you are finished, enter . or press | ||||||
|        control-d or control-c to exit. |        control-d or control-c to exit. | ||||||
| 
 | 
 | ||||||
|        Features: |        Features: | ||||||
| 
 | 
 | ||||||
|        +o add  tries  to provide useful defaults, using the most similar recent |        +o add tries to provide useful defaults, using the most  similar  recent | ||||||
|          transaction (by description) as a template. |          transaction (by description) as a template. | ||||||
| 
 | 
 | ||||||
|        +o You can also set the initial defaults with command line arguments. |        +o You can also set the initial defaults with command line arguments. | ||||||
| @ -547,20 +571,20 @@ CCOOMMMMAANNDDSS | |||||||
|        +o Readline-style edit keys can be used during data entry. |        +o Readline-style edit keys can be used during data entry. | ||||||
| 
 | 
 | ||||||
|        +o The tab key will auto-complete whenever possible - accounts, descrip- |        +o The tab key will auto-complete whenever possible - accounts, descrip- | ||||||
|          tions,  dates  (yesterday,  today,  tomorrow).   If the input area is |          tions, dates (yesterday, today, tomorrow).   If  the  input  area  is | ||||||
|          empty, it will insert the default value. |          empty, it will insert the default value. | ||||||
| 
 | 
 | ||||||
|        +o If the journal defines a default commodity, it will be added  to  any |        +o If  the  journal defines a default commodity, it will be added to any | ||||||
|          bare numbers entered. |          bare numbers entered. | ||||||
| 
 | 
 | ||||||
|        +o A parenthesised transaction code may be entered following a date. |        +o A parenthesised transaction code may be entered following a date. | ||||||
| 
 | 
 | ||||||
|        +o Comments and tags may be entered following a description or amount. |        +o Comments and tags may be entered following a description or amount. | ||||||
| 
 | 
 | ||||||
|        +o If  you make a mistake, enter < at any prompt to restart the transac- |        +o If you make a mistake, enter < at any prompt to restart the  transac- | ||||||
|          tion. |          tion. | ||||||
| 
 | 
 | ||||||
|        +o Input prompts are displayed in a different colour when  the  terminal |        +o Input  prompts  are displayed in a different colour when the terminal | ||||||
|          supports it. |          supports it. | ||||||
| 
 | 
 | ||||||
|        Example (see the tutorial for a detailed explanation): |        Example (see the tutorial for a detailed explanation): | ||||||
| @ -632,7 +656,7 @@ CCOOMMMMAANNDDSS | |||||||
|        --OO FFMMTT ----oouuttppuutt--ffoorrmmaatt==FFMMTT |        --OO FFMMTT ----oouuttppuutt--ffoorrmmaatt==FFMMTT | ||||||
|               select the output format.  Supported formats: txt, csv. |               select the output format.  Supported formats: txt, csv. | ||||||
| 
 | 
 | ||||||
|        The  balance  command  displays accounts and balances.  It is hledger's |        The balance command displays accounts and balances.   It  is  hledger's | ||||||
|        most featureful and most useful command. |        most featureful and most useful command. | ||||||
| 
 | 
 | ||||||
|               $ hledger balance |               $ hledger balance | ||||||
| @ -649,24 +673,24 @@ CCOOMMMMAANNDDSS | |||||||
|               -------------------- |               -------------------- | ||||||
|                                  0 |                                  0 | ||||||
| 
 | 
 | ||||||
|        More precisely, the balance command shows the _c_h_a_n_g_e to each  account's |        More  precisely, the balance command shows the _c_h_a_n_g_e to each account's | ||||||
|        balance caused by all (matched) postings.  In the common case where you |        balance caused by all (matched) postings.  In the common case where you | ||||||
|        do not filter by date and your journal sets the  correct  opening  bal- |        do  not  filter  by date and your journal sets the correct opening bal- | ||||||
|        ances, this is the same as the account's ending balance. |        ances, this is the same as the account's ending balance. | ||||||
| 
 | 
 | ||||||
|        By  default,  accounts  are  displayed hierarchically, with subaccounts |        By default, accounts are  displayed  hierarchically,  with  subaccounts | ||||||
|        indented below their parent.  "Boring" accounts, which contain a single |        indented below their parent.  "Boring" accounts, which contain a single | ||||||
|        interesting subaccount and no balance of their own, are elided into the |        interesting subaccount and no balance of their own, are elided into the | ||||||
|        following line for more compact output.   (Use  --no-elide  to  prevent |        following  line  for  more  compact output.  (Use --no-elide to prevent | ||||||
|        this.) |        this.) | ||||||
| 
 | 
 | ||||||
|        Each  account's  balance  is  the "inclusive" balance - it includes the |        Each account's balance is the "inclusive" balance  -  it  includes  the | ||||||
|        balances of any subaccounts. |        balances of any subaccounts. | ||||||
| 
 | 
 | ||||||
|        Accounts which have zero balance  (and  no  non-zero  subaccounts)  are |        Accounts  which  have  zero  balance  (and no non-zero subaccounts) are | ||||||
|        omitted.  Use -E/--empty to show them. |        omitted.  Use -E/--empty to show them. | ||||||
| 
 | 
 | ||||||
|        A  final  total  is displayed by default; use -N/--no-total to suppress |        A final total is displayed by default; use  -N/--no-total  to  suppress | ||||||
|        it: |        it: | ||||||
| 
 | 
 | ||||||
|               $ hledger balance -p 2008/6 expenses --no-total |               $ hledger balance -p 2008/6 expenses --no-total | ||||||
| @ -676,9 +700,9 @@ CCOOMMMMAANNDDSS | |||||||
| 
 | 
 | ||||||
|    FFllaatt mmooddee |    FFllaatt mmooddee | ||||||
|        To see a flat list of full account names instead of the default hierar- |        To see a flat list of full account names instead of the default hierar- | ||||||
|        chical   display,   use   --flat.    In  this  mode,  accounts  (unless |        chical  display,  use  --flat.   In   this   mode,   accounts   (unless | ||||||
|        depth-clipped) show their "exclusive" balance, excluding any subaccount |        depth-clipped) show their "exclusive" balance, excluding any subaccount | ||||||
|        balances.   In  this  mode, you can also use --drop N to omit the first |        balances.  In this mode, you can also use --drop N to  omit  the  first | ||||||
|        few account name components. |        few account name components. | ||||||
| 
 | 
 | ||||||
|               $ hledger balance -p 2008/6 expenses -N --flat --drop 1 |               $ hledger balance -p 2008/6 expenses -N --flat --drop 1 | ||||||
| @ -686,9 +710,9 @@ CCOOMMMMAANNDDSS | |||||||
|                                 $1  supplies |                                 $1  supplies | ||||||
| 
 | 
 | ||||||
|    DDeepptthh lliimmiitteedd bbaallaannccee rreeppoorrttss |    DDeepptthh lliimmiitteedd bbaallaannccee rreeppoorrttss | ||||||
|        With --depth N, balance shows accounts only  to  the  specified  depth. |        With  --depth N,  balance  shows  accounts only to the specified depth. | ||||||
|        This  is  very  useful  to  show  a  complex charts of accounts in less |        This is very useful to show  a  complex  charts  of  accounts  in  less | ||||||
|        detail.  In flat mode, balances from accounts  below  the  depth  limit |        detail.   In  flat  mode,  balances from accounts below the depth limit | ||||||
|        will be shown as part of a parent account at the depth limit. |        will be shown as part of a parent account at the depth limit. | ||||||
| 
 | 
 | ||||||
|               $ hledger balance -N --depth 1 |               $ hledger balance -N --depth 1 | ||||||
| @ -698,12 +722,12 @@ CCOOMMMMAANNDDSS | |||||||
|                                 $1  liabilities |                                 $1  liabilities | ||||||
| 
 | 
 | ||||||
|    MMuullttiiccoolluummnn bbaallaannccee rreeppoorrttss |    MMuullttiiccoolluummnn bbaallaannccee rreeppoorrttss | ||||||
|        With  a reporting interval, multiple balance columns will be shown, one |        With a reporting interval, multiple balance columns will be shown,  one | ||||||
|        for each report period.  There are three types of multi-column  balance |        for  each report period.  There are three types of multi-column balance | ||||||
|        report, showing different information: |        report, showing different information: | ||||||
| 
 | 
 | ||||||
|        1. By default: each column shows the sum of postings in that period, ie |        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 |           the  account's  change of balance in that period.  This is useful eg | ||||||
|           for a monthly income statement: |           for a monthly income statement: | ||||||
| 
 | 
 | ||||||
|                   $ hledger balance --quarterly income expenses -E |                   $ hledger balance --quarterly income expenses -E | ||||||
| @ -718,8 +742,8 @@ CCOOMMMMAANNDDSS | |||||||
|                   -------------------++--------------------------------- |                   -------------------++--------------------------------- | ||||||
|                                      ||     $-1      $1       0       0 |                                      ||     $-1      $1       0       0 | ||||||
| 
 | 
 | ||||||
|        2. With  --cumulative:  each  column  shows the ending balance for that |        2. With --cumulative: each column shows the  ending  balance  for  that | ||||||
|           period, accumulating the changes across periods, starting from 0  at |           period,  accumulating the changes across periods, starting from 0 at | ||||||
|           the report start date: |           the report start date: | ||||||
| 
 | 
 | ||||||
|                   $ hledger balance --quarterly income expenses -E --cumulative |                   $ hledger balance --quarterly income expenses -E --cumulative | ||||||
| @ -735,8 +759,8 @@ CCOOMMMMAANNDDSS | |||||||
|                                      ||         $-1           0           0           0 |                                      ||         $-1           0           0           0 | ||||||
| 
 | 
 | ||||||
|        3. With --historical/-H: each column shows the actual historical ending |        3. With --historical/-H: each column shows the actual historical ending | ||||||
|           balance for that period, accumulating the  changes  across  periods, |           balance  for  that  period, accumulating the changes across periods, | ||||||
|           starting  from the actual balance at the report start date.  This is |           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 |           useful eg for a multi-period balance sheet, and when you are showing | ||||||
|           only the data after a certain start date: |           only the data after a certain start date: | ||||||
| 
 | 
 | ||||||
| @ -752,26 +776,26 @@ CCOOMMMMAANNDDSS | |||||||
|                   ----------------------++------------------------------------- |                   ----------------------++------------------------------------- | ||||||
|                                         ||           0           0           0 |                                         ||           0           0           0 | ||||||
| 
 | 
 | ||||||
|        Multi-column  balance reports display accounts in flat mode by default; |        Multi-column balance reports display accounts in flat mode by  default; | ||||||
|        to see the hierarchy, use --tree. |        to see the hierarchy, use --tree. | ||||||
| 
 | 
 | ||||||
|        With  a  reporting  interval  (like  --quarterly  above),  the   report |        With   a  reporting  interval  (like  --quarterly  above),  the  report | ||||||
|        start/end  dates  will  be adjusted if necessary so that they encompass |        start/end dates will be adjusted if necessary so  that  they  encompass | ||||||
|        the displayed report periods.  This is so that the first and last peri- |        the displayed report periods.  This is so that the first and last peri- | ||||||
|        ods will be "full" and comparable to the others. |        ods will be "full" and comparable to the others. | ||||||
| 
 | 
 | ||||||
|        The  -E/--empty  flag  does  two things in multicolumn balance reports: |        The -E/--empty flag does two things  in  multicolumn  balance  reports: | ||||||
|        first, the report will show all columns  within  the  specified  report |        first,  the  report  will  show all columns within the specified report | ||||||
|        period  (without  -E,  leading and trailing columns with all zeroes are |        period (without -E, leading and trailing columns with  all  zeroes  are | ||||||
|        not shown).  Second, all accounts which existed  at  the  report  start |        not  shown).   Second,  all  accounts which existed at the report start | ||||||
|        date  will  be  considered,  not just the ones with activity during the |        date will be considered, not just the ones  with  activity  during  the | ||||||
|        report period (use -E to include low-activity accounts which would oth- |        report period (use -E to include low-activity accounts which would oth- | ||||||
|        erwise would be omitted). |        erwise would be omitted). | ||||||
| 
 | 
 | ||||||
|        The -T/--row-total flag adds an additional column showing the total for |        The -T/--row-total flag adds an additional column showing the total for | ||||||
|        each row. |        each row. | ||||||
| 
 | 
 | ||||||
|        The -A/--average flag adds a column showing the average value  in  each |        The  -A/--average  flag adds a column showing the average value in each | ||||||
|        row. |        row. | ||||||
| 
 | 
 | ||||||
|        Here's an example of all three: |        Here's an example of all three: | ||||||
| @ -794,16 +818,16 @@ CCOOMMMMAANNDDSS | |||||||
| 
 | 
 | ||||||
|    MMaarrkkeett vvaalluuee |    MMaarrkkeett vvaalluuee | ||||||
|        The -V/--value flag converts all the reported amounts to their "current |        The -V/--value flag converts all the reported amounts to their "current | ||||||
|        market value" using their default market price.   That  is  the  latest |        market  value"  using  their  default market price.  That is the latest | ||||||
|        market  price (P directive) found in the journal (or an included file), |        market price (P directive) found in the journal (or an included  file), | ||||||
|        for the amount's commodity, dated on or before the report end date. |        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 |        Unlike Ledger, hledger's -V only uses the market prices recorded with P | ||||||
|        directives,  ignoring  transaction  prices  recorded as part of posting |        directives, ignoring transaction prices recorded  as  part  of  posting | ||||||
|        amounts (which -B/--cost uses).  Using -B and -V together is allowed. |        amounts (which -B/--cost uses).  Using -B and -V together is allowed. | ||||||
| 
 | 
 | ||||||
|    CCuussttoomm bbaallaannccee oouuttppuutt |    CCuussttoomm bbaallaannccee oouuttppuutt | ||||||
|        In simple (non-multi-column) balance reports,  you  can  customise  the |        In  simple  (non-multi-column)  balance  reports, you can customise the | ||||||
|        output with --format FMT: |        output with --format FMT: | ||||||
| 
 | 
 | ||||||
|               $ hledger balance --format "%20(account) %12(total)" |               $ hledger balance --format "%20(account) %12(total)" | ||||||
| @ -821,7 +845,7 @@ CCOOMMMMAANNDDSS | |||||||
|                                               0 |                                               0 | ||||||
| 
 | 
 | ||||||
|        The FMT format string (plus a newline) specifies the formatting applied |        The FMT format string (plus a newline) specifies the formatting applied | ||||||
|        to each account/balance pair.  It may contain any suitable  text,  with |        to  each  account/balance pair.  It may contain any suitable text, with | ||||||
|        data fields interpolated like so: |        data fields interpolated like so: | ||||||
| 
 | 
 | ||||||
|        %[MIN][.MAX](FIELDNAME) |        %[MIN][.MAX](FIELDNAME) | ||||||
| @ -832,14 +856,14 @@ CCOOMMMMAANNDDSS | |||||||
| 
 | 
 | ||||||
|        +o FIELDNAME must be enclosed in parentheses, and can be one of: |        +o FIELDNAME must be enclosed in parentheses, and can be one of: | ||||||
| 
 | 
 | ||||||
|          +o depth_spacer  - a number of spaces equal to the account's depth, or |          +o depth_spacer - a number of spaces equal to the account's depth,  or | ||||||
|            if MIN is specified, MIN * depth spaces. |            if MIN is specified, MIN * depth spaces. | ||||||
| 
 | 
 | ||||||
|          +o account - the account's name |          +o account - the account's name | ||||||
| 
 | 
 | ||||||
|          +o total - the account's balance/posted total, right justified |          +o total - the account's balance/posted total, right justified | ||||||
| 
 | 
 | ||||||
|        Also, FMT can begin with an optional prefix to control  how  multi-com- |        Also,  FMT  can begin with an optional prefix to control how multi-com- | ||||||
|        modity amounts are rendered: |        modity amounts are rendered: | ||||||
| 
 | 
 | ||||||
|        +o %_ - render on multiple lines, bottom-aligned (the default) |        +o %_ - render on multiple lines, bottom-aligned (the default) | ||||||
| @ -848,7 +872,7 @@ CCOOMMMMAANNDDSS | |||||||
| 
 | 
 | ||||||
|        +o %, - render on one line, comma-separated |        +o %, - render on one line, comma-separated | ||||||
| 
 | 
 | ||||||
|        There  are  some  quirks.   Eg in one-line mode, %(depth_spacer) has no |        There are some quirks.  Eg in one-line  mode,  %(depth_spacer)  has  no | ||||||
|        effect, instead %(account) has indentation built in. |        effect, instead %(account) has indentation built in. | ||||||
|         Experimentation may be needed to get pleasing results. |         Experimentation may be needed to get pleasing results. | ||||||
| 
 | 
 | ||||||
| @ -856,19 +880,19 @@ CCOOMMMMAANNDDSS | |||||||
| 
 | 
 | ||||||
|        +o %(total) - the account's total |        +o %(total) - the account's total | ||||||
| 
 | 
 | ||||||
|        +o %-20.20(account) - the account's name, left justified, padded  to  20 |        +o %-20.20(account)  -  the account's name, left justified, padded to 20 | ||||||
|          characters and clipped at 20 characters |          characters and clipped at 20 characters | ||||||
| 
 | 
 | ||||||
|        +o %,%-50(account)  %25(total)  -  account name padded to 50 characters, |        +o %,%-50(account)  %25(total) - account name padded to  50  characters, | ||||||
|          total padded to 20 characters, with multiple commodities rendered  on |          total  padded to 20 characters, with multiple commodities rendered on | ||||||
|          one line |          one line | ||||||
| 
 | 
 | ||||||
|        +o %20(total)  %2(depth_spacer)%-(account)  - the default format for the |        +o %20(total)  %2(depth_spacer)%-(account) - the default format for  the | ||||||
|          single-column balance report |          single-column balance report | ||||||
| 
 | 
 | ||||||
|    OOuuttppuutt ddeessttiinnaattiioonn |    OOuuttppuutt ddeessttiinnaattiioonn | ||||||
|        The balance, print, register and stats commands can write their  output |        The  balance, print, register and stats commands can write their output | ||||||
|        to  a  destination  other  than the console.  This is controlled by the |        to a destination other than the console.  This  is  controlled  by  the | ||||||
|        -o/--output-file option. |        -o/--output-file option. | ||||||
| 
 | 
 | ||||||
|               $ hledger balance -o -     # write to stdout (the default) |               $ hledger balance -o -     # write to stdout (the default) | ||||||
| @ -876,8 +900,8 @@ CCOOMMMMAANNDDSS | |||||||
| 
 | 
 | ||||||
|    CCSSVV oouuttppuutt |    CCSSVV oouuttppuutt | ||||||
|        The balance, print and register commands can write their output as 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 |        This is useful for exporting data to other  applications,  eg  to  make | ||||||
|        charts in a spreadsheet.  This is controlled by the  -O/--output-format |        charts  in a spreadsheet.  This is controlled by the -O/--output-format | ||||||
|        option, or by specifying a .csv file extension with -o/--output-file. |        option, or by specifying a .csv file extension with -o/--output-file. | ||||||
| 
 | 
 | ||||||
|               $ hledger balance -O csv       # write CSV to stdout |               $ hledger balance -O csv       # write CSV to stdout | ||||||
| @ -891,8 +915,8 @@ CCOOMMMMAANNDDSS | |||||||
|        ----ddrroopp==NN |        ----ddrroopp==NN | ||||||
|               in flat mode: omit N leading account name parts |               in flat mode: omit N leading account name parts | ||||||
| 
 | 
 | ||||||
|        This  command  displays  a  simple balance sheet.  It currently assumes |        This command displays a simple balance  sheet.   It  currently  assumes | ||||||
|        that you have top-level accounts  named  asset  and  liability  (plural |        that  you  have  top-level  accounts  named asset and liability (plural | ||||||
|        forms also allowed.) |        forms also allowed.) | ||||||
| 
 | 
 | ||||||
|               $ hledger balancesheet |               $ hledger balancesheet | ||||||
| @ -922,9 +946,9 @@ CCOOMMMMAANNDDSS | |||||||
|        ----ddrroopp==NN |        ----ddrroopp==NN | ||||||
|               in flat mode: omit N leading account name parts |               in flat mode: omit N leading account name parts | ||||||
| 
 | 
 | ||||||
|        This  command  displays a simple cashflow statement It shows the change |        This command displays a simple cashflow statement It shows  the  change | ||||||
|        in all "cash" (ie, liquid assets) accounts for  the  period.   It  cur- |        in  all  "cash"  (ie,  liquid assets) accounts for the period.  It cur- | ||||||
|        rently  assumes  that cash accounts are under a top-level account named |        rently assumes that cash accounts are under a top-level  account  named | ||||||
|        asset and do not contain receivable or A/R (plural forms also allowed.) |        asset and do not contain receivable or A/R (plural forms also allowed.) | ||||||
| 
 | 
 | ||||||
|               $ hledger cashflow |               $ hledger cashflow | ||||||
| @ -944,11 +968,11 @@ CCOOMMMMAANNDDSS | |||||||
|    hheellpp |    hheellpp | ||||||
|        Show one of the hledger manuals. |        Show one of the hledger manuals. | ||||||
| 
 | 
 | ||||||
|        The  help  command displays any of the main hledger man pages.  (Unlike |        The help command displays any of the main hledger man  pages.   (Unlike | ||||||
|        hledger --help, which displays only the hledger man page.) Run it  with |        hledger --help,  which displays only the hledger man page.) Run it with | ||||||
|        no  arguments  to  list available topics (their names are shortened for |        no arguments to list available topics (their names  are  shortened  for | ||||||
|        easier typing), and run hledger help TOPIC to select one.   The  output |        easier  typing),  and run hledger help TOPIC to select one.  The output | ||||||
|        is  similar to a man page, but fixed width.  It may be long, so you may |        is similar to a man page, but fixed width.  It may be long, so you  may | ||||||
|        wish to pipe it into a pager.  See also info and man. |        wish to pipe it into a pager.  See also info and man. | ||||||
| 
 | 
 | ||||||
|               $ hledger help |               $ hledger help | ||||||
| @ -977,8 +1001,8 @@ CCOOMMMMAANNDDSS | |||||||
|        ----ddrroopp==NN |        ----ddrroopp==NN | ||||||
|               in flat mode: omit N leading account name parts |               in flat mode: omit N leading account name parts | ||||||
| 
 | 
 | ||||||
|        This command displays a simple income statement.  It currently  assumes |        This  command displays a simple income statement.  It currently assumes | ||||||
|        that  you have top-level accounts named income (or revenue) and expense |        that you have top-level accounts named income (or revenue) and  expense | ||||||
|        (plural forms also allowed.) |        (plural forms also allowed.) | ||||||
| 
 | 
 | ||||||
|               $ hledger incomestatement |               $ hledger incomestatement | ||||||
| @ -1005,30 +1029,30 @@ CCOOMMMMAANNDDSS | |||||||
|    iinnffoo |    iinnffoo | ||||||
|        Show one of the hledger manuals using info. |        Show one of the hledger manuals using info. | ||||||
| 
 | 
 | ||||||
|        The info command displays any of the hledger  reference  manuals  using |        The  info  command  displays any of the hledger reference manuals using | ||||||
|        the  info  hypertextual documentation viewer.  This can be a very effi- |        the info hypertextual documentation viewer.  This can be a  very  effi- | ||||||
|        cient way to browse large manuals.  It requires the "info"  program  to |        cient  way  to browse large manuals.  It requires the "info" program to | ||||||
|        be available in your PATH. |        be available in your PATH. | ||||||
| 
 | 
 | ||||||
|        As  with help, run it with no arguments to list available topics (manu- |        As with help, run it with no arguments to list available topics  (manu- | ||||||
|        als). |        als). | ||||||
| 
 | 
 | ||||||
|    mmaann |    mmaann | ||||||
|        Show one of the hledger manuals using man. |        Show one of the hledger manuals using man. | ||||||
| 
 | 
 | ||||||
|        The man command displays any of the  hledger  reference  manuals  using |        The  man  command  displays  any of the hledger reference manuals using | ||||||
|        man,  the standard documentation viewer on unix systems.  This will fit |        man, the standard documentation viewer on unix systems.  This will  fit | ||||||
|        the text to your terminal width, and probably invoke a pager  automati- |        the  text to your terminal width, and probably invoke a pager automati- | ||||||
|        cally.  It requires the "man" program to be available in your PATH. |        cally.  It requires the "man" program to be available in your PATH. | ||||||
| 
 | 
 | ||||||
|        As  with help, run it with no arguments to list available topics (manu- |        As with help, run it with no arguments to list available topics  (manu- | ||||||
|        als). |        als). | ||||||
| 
 | 
 | ||||||
|    pprriinntt |    pprriinntt | ||||||
|        Show transactions from the journal. |        Show transactions from the journal. | ||||||
| 
 | 
 | ||||||
|        --mm SSTTRR ----mmaattcchh==SSTTRR |        --mm SSTTRR ----mmaattcchh==SSTTRR | ||||||
|               show the transaction whose description is most similar  to  STR, |               show  the  transaction whose description is most similar to STR, | ||||||
|               and is most recent |               and is most recent | ||||||
| 
 | 
 | ||||||
|        --oo FFIILLEE[[..FFMMTT]] ----oouuttppuutt--ffiillee==FFIILLEE[[..FFMMTT]] |        --oo FFIILLEE[[..FFMMTT]] ----oouuttppuutt--ffiillee==FFIILLEE[[..FFMMTT]] | ||||||
| @ -1060,12 +1084,12 @@ CCOOMMMMAANNDDSS | |||||||
|                   liabilities:debts               $1 |                   liabilities:debts               $1 | ||||||
|                   assets:bank:checking           $-1 |                   assets:bank:checking           $-1 | ||||||
| 
 | 
 | ||||||
|        The print command displays full transactions  from  the  journal  file, |        The  print  command  displays  full transactions from the journal file, | ||||||
|        tidily  formatted  and  showing  all amounts explicitly.  The output of |        tidily formatted and showing all amounts  explicitly.   The  output  of | ||||||
|        print is always a valid hledger journal, but it does  always  not  pre- |        print  is  always  a valid hledger journal, but it does always not pre- | ||||||
|        serve all original content exactly (eg directives). |        serve all original content exactly (eg directives). | ||||||
| 
 | 
 | ||||||
|        hledger's  print command also shows all unit prices in effect, or (with |        hledger's print command also shows all unit prices in effect, or  (with | ||||||
|        -B/--cost) shows cost amounts. |        -B/--cost) shows cost amounts. | ||||||
| 
 | 
 | ||||||
|        The print command also supports output destination and CSV output. |        The print command also supports output destination and CSV output. | ||||||
| @ -1077,14 +1101,14 @@ CCOOMMMMAANNDDSS | |||||||
|               include prior postings in the running total |               include prior postings in the running total | ||||||
| 
 | 
 | ||||||
|        --AA ----aavveerraaggee |        --AA ----aavveerraaggee | ||||||
|               show a running average instead of  the  running  total  (implies |               show  a  running  average  instead of the running total (implies | ||||||
|               --empty) |               --empty) | ||||||
| 
 | 
 | ||||||
|        --rr ----rreellaatteedd |        --rr ----rreellaatteedd | ||||||
|               show postings' siblings instead |               show postings' siblings instead | ||||||
| 
 | 
 | ||||||
|        --ww NN ----wwiiddtthh==NN |        --ww NN ----wwiiddtthh==NN | ||||||
|               set  output  width  (default:  terminal width or COLUMNS.  -wN,M |               set output width (default: terminal  width  or  COLUMNS.   -wN,M | ||||||
|               sets description width as well) |               sets description width as well) | ||||||
| 
 | 
 | ||||||
|        --oo FFIILLEE[[..FFMMTT]] ----oouuttppuutt--ffiillee==FFIILLEE[[..FFMMTT]] |        --oo FFIILLEE[[..FFMMTT]] ----oouuttppuutt--ffiillee==FFIILLEE[[..FFMMTT]] | ||||||
| @ -1095,7 +1119,7 @@ CCOOMMMMAANNDDSS | |||||||
|               select the output format.  Supported formats: txt, csv. |               select the output format.  Supported formats: txt, csv. | ||||||
| 
 | 
 | ||||||
|        The register command displays postings, one per line, and their running |        The register command displays postings, one per line, and their running | ||||||
|        total.  This is typically used with  a  query  selecting  a  particular |        total.   This  is  typically  used  with a query selecting a particular | ||||||
|        account, to see that account's activity: |        account, to see that account's activity: | ||||||
| 
 | 
 | ||||||
|               $ hledger register checking |               $ hledger register checking | ||||||
| @ -1104,8 +1128,8 @@ CCOOMMMMAANNDDSS | |||||||
|               2008/06/02 save                 assets:bank:checking           $-1            $1 |               2008/06/02 save                 assets:bank:checking           $-1            $1 | ||||||
|               2008/12/31 pay off              assets:bank:checking           $-1             0 |               2008/12/31 pay off              assets:bank:checking           $-1             0 | ||||||
| 
 | 
 | ||||||
|        The  --historical/-H  flag  adds the balance from any undisplayed prior |        The --historical/-H flag adds the balance from  any  undisplayed  prior | ||||||
|        postings to the running total.  This is useful when  you  want  to  see |        postings  to  the  running  total.  This is useful when you want to see | ||||||
|        only recent activity, with a historically accurate running balance: |        only recent activity, with a historically accurate running balance: | ||||||
| 
 | 
 | ||||||
|               $ hledger register checking -b 2008/6 --historical |               $ hledger register checking -b 2008/6 --historical | ||||||
| @ -1115,22 +1139,22 @@ CCOOMMMMAANNDDSS | |||||||
| 
 | 
 | ||||||
|        The --depth option limits the amount of sub-account detail displayed. |        The --depth option limits the amount of sub-account detail displayed. | ||||||
| 
 | 
 | ||||||
|        The  --average/-A flag shows the running average posting amount instead |        The --average/-A flag shows the running average posting amount  instead | ||||||
|        of the running total (so, the final number displayed is the average for |        of the running total (so, the final number displayed is the average for | ||||||
|        the  whole  report period).  This flag implies --empty (see below).  It |        the whole report period).  This flag implies --empty (see  below).   It | ||||||
|        works best when showing just one account and one commodity. |        works best when showing just one account and one commodity. | ||||||
| 
 | 
 | ||||||
|        The --related/-r flag shows the _o_t_h_e_r postings in the  transactions  of |        The  --related/-r  flag shows the _o_t_h_e_r postings in the transactions of | ||||||
|        the postings which would normally be shown. |        the postings which would normally be shown. | ||||||
| 
 | 
 | ||||||
|        With  a  reporting  interval,  register shows summary postings, one per |        With a reporting interval, register shows  summary  postings,  one  per | ||||||
|        interval, aggregating the postings to each account: |        interval, aggregating the postings to each account: | ||||||
| 
 | 
 | ||||||
|               $ hledger register --monthly income |               $ hledger register --monthly income | ||||||
|               2008/01                 income:salary                          $-1           $-1 |               2008/01                 income:salary                          $-1           $-1 | ||||||
|               2008/06                 income:gifts                           $-1           $-2 |               2008/06                 income:gifts                           $-1           $-2 | ||||||
| 
 | 
 | ||||||
|        Periods with no activity, and summary postings with a zero amount,  are |        Periods  with no activity, and summary postings with a zero amount, are | ||||||
|        not shown by default; use the --empty/-E flag to see them: |        not shown by default; use the --empty/-E flag to see them: | ||||||
| 
 | 
 | ||||||
|               $ hledger register --monthly income -E |               $ hledger register --monthly income -E | ||||||
| @ -1147,7 +1171,7 @@ CCOOMMMMAANNDDSS | |||||||
|               2008/11                                                          0           $-2 |               2008/11                                                          0           $-2 | ||||||
|               2008/12                                                          0           $-2 |               2008/12                                                          0           $-2 | ||||||
| 
 | 
 | ||||||
|        Often,  you'll  want  to  see  just one line per interval.  The --depth |        Often, you'll want to see just one  line  per  interval.   The  --depth | ||||||
|        option helps with this, causing subaccounts to be aggregated: |        option helps with this, causing subaccounts to be aggregated: | ||||||
| 
 | 
 | ||||||
|               $ hledger register --monthly assets --depth 1h |               $ hledger register --monthly assets --depth 1h | ||||||
| @ -1155,19 +1179,19 @@ CCOOMMMMAANNDDSS | |||||||
|               2008/06                 assets                                 $-1             0 |               2008/06                 assets                                 $-1             0 | ||||||
|               2008/12                 assets                                 $-1           $-1 |               2008/12                 assets                                 $-1           $-1 | ||||||
| 
 | 
 | ||||||
|        Note when using report intervals, if you specify start/end dates  these |        Note  when using report intervals, if you specify start/end dates these | ||||||
|        will  be  adjusted  outward  if  necessary to contain a whole number of |        will be adjusted outward if necessary to  contain  a  whole  number  of | ||||||
|        intervals.  This ensures that the first and  last  intervals  are  full |        intervals.   This  ensures  that  the first and last intervals are full | ||||||
|        length and comparable to the others in the report. |        length and comparable to the others in the report. | ||||||
| 
 | 
 | ||||||
|    CCuussttoomm rreeggiisstteerr oouuttppuutt |    CCuussttoomm rreeggiisstteerr oouuttppuutt | ||||||
|        register  uses  the  full terminal width by default, except on windows. |        register uses the full terminal width by default,  except  on  windows. | ||||||
|        You can override this by setting the COLUMNS environment variable  (not |        You  can override this by setting the COLUMNS environment variable (not | ||||||
|        a bash shell variable) or by using the --width/-w option. |        a bash shell variable) or by using the --width/-w option. | ||||||
| 
 | 
 | ||||||
|        The  description  and  account columns normally share the space equally |        The description and account columns normally share  the  space  equally | ||||||
|        (about half of (width - 40) each).  You can adjust  this  by  adding  a |        (about  half  of  (width  - 40) each).  You can adjust this by adding a | ||||||
|        description  width  as  part  of  --width's  argument, comma-separated: |        description width  as  part  of  --width's  argument,  comma-separated: | ||||||
|        --width W,D .  Here's a diagram: |        --width W,D .  Here's a diagram: | ||||||
| 
 | 
 | ||||||
|               <--------------------------------- width (W) ----------------------------------> |               <--------------------------------- width (W) ----------------------------------> | ||||||
| @ -1183,7 +1207,7 @@ CCOOMMMMAANNDDSS | |||||||
|               $ hledger reg -w 100,40           # set overall width 100, description width 40 |               $ hledger reg -w 100,40           # set overall width 100, description width 40 | ||||||
|               $ hledger reg -w $COLUMNS,40      # use terminal width, and set description width |               $ hledger reg -w $COLUMNS,40      # use terminal width, and set description width | ||||||
| 
 | 
 | ||||||
|        The register command also supports the -o/--output-file  and  -O/--out- |        The  register  command also supports the -o/--output-file and -O/--out- | ||||||
|        put-format options for controlling output destination and CSV output. |        put-format options for controlling output destination and CSV output. | ||||||
| 
 | 
 | ||||||
|    ssttaattss |    ssttaattss | ||||||
| @ -1205,8 +1229,8 @@ CCOOMMMMAANNDDSS | |||||||
|               Accounts                 : 8 (depth 3) |               Accounts                 : 8 (depth 3) | ||||||
|               Commodities              : 1 ($) |               Commodities              : 1 ($) | ||||||
| 
 | 
 | ||||||
|        The stats command displays summary information for the  whole  journal, |        The  stats  command displays summary information for the whole journal, | ||||||
|        or  a matched part of it.  With a reporting interval, it shows a report |        or a matched part of it.  With a reporting interval, it shows a  report | ||||||
|        for each report period. |        for each report period. | ||||||
| 
 | 
 | ||||||
|        The stats command also supports -o/--output-file for controlling output |        The stats command also supports -o/--output-file for controlling output | ||||||
| @ -1218,37 +1242,37 @@ CCOOMMMMAANNDDSS | |||||||
|               $ hledger test |               $ hledger test | ||||||
|               Cases: 74  Tried: 74  Errors: 0  Failures: 0 |               Cases: 74  Tried: 74  Errors: 0  Failures: 0 | ||||||
| 
 | 
 | ||||||
|        This  command  runs  hledger's built-in unit tests and displays a quick |        This command runs hledger's built-in unit tests and  displays  a  quick | ||||||
|        report.  With a regular expression argument, it selects only tests with |        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 |        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. |        be able to check your hledger executable for smoke at any time. | ||||||
| 
 | 
 | ||||||
| AADDDD--OONN CCOOMMMMAANNDDSS | AADDDD--OONN CCOOMMMMAANNDDSS | ||||||
|        Add-on commands are executables in your PATH  whose  name  starts  with |        Add-on  commands  are  executables  in your PATH whose name starts with | ||||||
|        hledger-   and   ends   with   any  of  these  file  extensions:  none, |        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 |        .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. |        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 |        hledger will detect these and include them in the command list and  let | ||||||
|        you invoke them with hledger ADDONCMD.  However there are some  limita- |        you  invoke them with hledger ADDONCMD.  However there are some limita- | ||||||
|        tions: |        tions: | ||||||
| 
 | 
 | ||||||
|        +o Options appearing before ADDONCMD will be visible only to hledger and |        +o Options appearing before ADDONCMD will be visible only to hledger and | ||||||
|          will not be passed to the add-on.  Eg: hledger -h web shows hledger's |          will not be passed to the add-on.  Eg: hledger -h web shows hledger's | ||||||
|          usage, hledger web -h shows hledger-web's usage. |          usage, hledger web -h shows hledger-web's usage. | ||||||
| 
 | 
 | ||||||
|        +o Options  understood only by the add-on must go after a -- argument to |        +o Options understood only by the add-on must go after a -- argument  to | ||||||
|          hide them from hledger,  which  would  otherwise  reject  them.   Eg: |          hide  them  from  hledger,  which  would  otherwise reject them.  Eg: | ||||||
|          hledger web -- --server. |          hledger web -- --server. | ||||||
| 
 | 
 | ||||||
|        Sometimes  it  may  be more convenient to just run the add-on directly, |        Sometimes it may be more convenient to just run  the  add-on  directly, | ||||||
|        eg: hledger-web --server. |        eg: hledger-web --server. | ||||||
| 
 | 
 | ||||||
|        Add-ons which  are  written  in  haskell  can  take  advantage  of  the |        Add-ons  which  are  written  in  haskell  can  take  advantage  of the | ||||||
|        hledger-lib   library  for  journal  parsing,  reporting,  command-line |        hledger-lib  library  for  journal  parsing,  reporting,   command-line | ||||||
|        options, etc. |        options, etc. | ||||||
| 
 | 
 | ||||||
|        Here are some hledger add-ons available from Hackage, the extra  direc- |        Here  are some hledger add-ons available from Hackage, the extra direc- | ||||||
|        tory in the hledger source, or elsewhere: |        tory in the hledger source, or elsewhere: | ||||||
| 
 | 
 | ||||||
|    aappii |    aappii | ||||||
| @ -1306,11 +1330,11 @@ AADDDD--OONN CCOOMMMMAANNDDSS | |||||||
|                   WF:4303001832                               -$6.00 |                   WF:4303001832                               -$6.00 | ||||||
|                   [assets:business:bank:wf:bchecking:banking]  $6.00 |                   [assets:business:bank:wf:bchecking:banking]  $6.00 | ||||||
| 
 | 
 | ||||||
|        ledger-autosync,  which  includes  a  hledger-autosync alias, downloads |        ledger-autosync, which includes  a  hledger-autosync  alias,  downloads | ||||||
|        transactions from your bank(s) via OFX, and prints just the new ones as |        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 |        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 |        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 |        alternative to hledger's built-in CSV reader, especially if  your  bank | ||||||
|        supports OFX download. |        supports OFX download. | ||||||
| 
 | 
 | ||||||
|    ddiiffff |    ddiiffff | ||||||
| @ -1336,9 +1360,9 @@ AADDDD--OONN CCOOMMMMAANNDDSS | |||||||
|               2015/02/02 |               2015/02/02 | ||||||
|                   (acct:two)            $2 |                   (acct:two)            $2 | ||||||
| 
 | 
 | ||||||
|        hledger-diff compares two journal files.  Given  an  account  name,  it |        hledger-diff  compares  two  journal  files.  Given an account name, it | ||||||
|        prints  out  the  transactions  affecting that account which are in one |        prints out the transactions affecting that account  which  are  in  one | ||||||
|        journal file but not in the other.  This can be useful for  reconciling |        journal  file but not in the other.  This can be useful for reconciling | ||||||
|        existing journals with bank statements. |        existing journals with bank statements. | ||||||
| 
 | 
 | ||||||
|    eeqquuiittyy |    eeqquuiittyy | ||||||
| @ -1365,14 +1389,14 @@ AADDDD--OONN CCOOMMMMAANNDDSS | |||||||
|                   equity:opening balances             0 |                   equity:opening balances             0 | ||||||
| 
 | 
 | ||||||
|        This prints a journal entry which zeroes out the specified accounts (or |        This prints a journal entry which zeroes out the specified accounts (or | ||||||
|        all accounts) with a transfer to/from "equity:closing  balances"  (like |        all  accounts)  with a transfer to/from "equity:closing balances" (like | ||||||
|        Ledger's  equity command).  Also, it prints an similar entry with oppo- |        Ledger's equity command).  Also, it prints an similar entry with  oppo- | ||||||
|        site sign for restoring the balances from "equity:opening balances". |        site sign for restoring the balances from "equity:opening balances". | ||||||
| 
 | 
 | ||||||
|        These can be useful for ending one journal file and starting a new one, |        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 |        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 |        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 |        correct asset/liability balances whether you run hledger  on  just  one | ||||||
|        file, or on several files concatenated with include. |        file, or on several files concatenated with include. | ||||||
| 
 | 
 | ||||||
|    iinntteerreesstt |    iinntteerreesstt | ||||||
| @ -1453,11 +1477,11 @@ AADDDD--OONN CCOOMMMMAANNDDSS | |||||||
|                   Liabilities:Bank   EUR 3700.00 |                   Liabilities:Bank   EUR 3700.00 | ||||||
| 
 | 
 | ||||||
|        hledger-interest computes interests for a given account.  Using command |        hledger-interest computes interests for a given account.  Using command | ||||||
|        line  flags,  the  program can be configured to use various schemes for |        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.   Fur- |        day-counting,  such  as act/act, 30/360, 30E/360, and 30/360isda.  Fur- | ||||||
|        thermore,  it  supports  a  (small)  number  of  interest schemes, i.e. |        thermore, it supports  a  (small)  number  of  interest  schemes,  i.e. | ||||||
|        annual interest with a fixed rate and the scheme mandated by the German |        annual interest with a fixed rate and the scheme mandated by the German | ||||||
|        BGB288  (Basiszins f~A1/4r Verbrauchergesch~Aoxfte).  See the package page |        BGB288 (Basiszins f~A1/4r Verbrauchergesch~Aoxfte).  See the package  page | ||||||
|        for more. |        for more. | ||||||
| 
 | 
 | ||||||
|    iirrrr |    iirrrr | ||||||
| @ -1515,11 +1539,11 @@ AADDDD--OONN CCOOMMMMAANNDDSS | |||||||
|               2011/04/01 - 2011/05/01: 32.24% |               2011/04/01 - 2011/05/01: 32.24% | ||||||
|               2011/05/01 - 2011/06/01: 95.92% |               2011/05/01 - 2011/06/01: 95.92% | ||||||
| 
 | 
 | ||||||
|        hledger-irr computes the internal rate of return,  also  known  as  the |        hledger-irr  computes  the  internal  rate of return, also known as the | ||||||
|        effective  interest rate, of a given investment.  After specifying what |        effective interest rate, of a given investment.  After specifying  what | ||||||
|        account holds the investment, and what account  stores  the  gains  (or |        account  holds  the  investment,  and what account stores the gains (or | ||||||
|        losses,  or  fees, or cost), it calculates the hypothetical annual rate |        losses, or fees, or cost), it calculates the hypothetical  annual  rate | ||||||
|        of fixed rate investment that would have provided the exact  same  cash |        of  fixed  rate investment that would have provided the exact same cash | ||||||
|        flow.  See the package page for more. |        flow.  See the package page for more. | ||||||
| 
 | 
 | ||||||
|    pprriinntt--uunniiqquuee |    pprriinntt--uunniiqquuee | ||||||
| @ -1539,6 +1563,11 @@ AADDDD--OONN CCOOMMMMAANNDDSS | |||||||
|        Prints all journal entries, adding specified custom postings to matched |        Prints all journal entries, adding specified custom postings to matched | ||||||
|        entries. |        entries. | ||||||
| 
 | 
 | ||||||
|  |        hledger-rewrite.hs,   in   hledger's   extra   directory   (compilation | ||||||
|  |        optional), adds postings to existing transactions, optionally  with  an | ||||||
|  |        amount  based  on  the  existing  transaction's  first amount.  See the | ||||||
|  |        script for more details. | ||||||
|  | 
 | ||||||
|               $ hledger rewrite -- [QUERY]        --add-posting "ACCT  AMTEXPR" ... |               $ hledger rewrite -- [QUERY]        --add-posting "ACCT  AMTEXPR" ... | ||||||
|               $ hledger rewrite -- ^income        --add-posting '(liabilities:tax)  *.33' |               $ hledger rewrite -- ^income        --add-posting '(liabilities:tax)  *.33' | ||||||
|               $ hledger rewrite -- expenses:gifts --add-posting '(budget:gifts)  *-1"' |               $ hledger rewrite -- expenses:gifts --add-posting '(budget:gifts)  *-1"' | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user