doc: journal: expand transactions/postings/status sections (#553)
This commit is contained in:
		
							parent
							
								
									2f5d950f0e
								
							
						
					
					
						commit
						34af40024a
					
				| @ -61,34 +61,49 @@ Here\[aq]s an example: | ||||
| .SH FILE FORMAT | ||||
| .SS Transactions | ||||
| .PP | ||||
| Transactions are represented by journal entries. | ||||
| Each begins with a simple date in column 0, followed by three optional | ||||
| fields with spaces between them: | ||||
| Transactions are movements of some quantity of commodities between named | ||||
| accounts. | ||||
| Each transaction is represented by a journal entry beginning with a | ||||
| simple date in column 0. | ||||
| This can be followed by any of the following, separated by spaces: | ||||
| .IP \[bu] 2 | ||||
| a status flag, which can be empty or \f[C]!\f[] or \f[C]*\f[] (meaning | ||||
| "uncleared", "pending" and "cleared", or whatever you want) | ||||
| (optional) a status character (empty, \f[C]!\f[], or \f[C]*\f[]) | ||||
| .IP \[bu] 2 | ||||
| a transaction code (eg a check number), | ||||
| (optional) a transaction code (any short number or text, eg a check | ||||
| number) | ||||
| .IP \[bu] 2 | ||||
| and/or a description | ||||
| (optional) a transaction description (any remaining text until end of | ||||
| line) | ||||
| .PP | ||||
| then some number of postings, of some amount to some account. | ||||
| Each posting is on its own line, consisting of: | ||||
| .IP \[bu] 2 | ||||
| indentation of one or more spaces (or tabs) | ||||
| .IP \[bu] 2 | ||||
| optionally, a \f[C]!\f[] or \f[C]*\f[] status flag followed by a space | ||||
| .IP \[bu] 2 | ||||
| an account name, optionally containing single spaces | ||||
| .IP \[bu] 2 | ||||
| optionally, two or more spaces or tabs followed by an amount | ||||
| Then comes zero or more (but usually at least 2) indented lines | ||||
| representing... | ||||
| .SS Postings | ||||
| .PP | ||||
| Usually there are two or more postings, though one or none is also | ||||
| possible. | ||||
| The posting amounts within a transaction must always balance, ie add up | ||||
| to 0. | ||||
| Optionally one amount can be left blank, in which case it will be | ||||
| inferred. | ||||
| A posting is an addition of some amount to, or removal of some amount | ||||
| from, an account. | ||||
| Each posting line begins with at least one space or tab (2 or 4 spaces | ||||
| is common), followed by: | ||||
| .IP \[bu] 2 | ||||
| (optional) a status character (empty, \f[C]!\f[], or \f[C]*\f[]), | ||||
| followed by a space | ||||
| .IP \[bu] 2 | ||||
| (required) an account name (any text, optionally containing \f[B]single | ||||
| spaces\f[], until end of line or a double space) | ||||
| .IP \[bu] 2 | ||||
| (optional) \f[B]two or more spaces\f[] or tabs followed by an amount. | ||||
| .PP | ||||
| Positive amounts are being added to the account, negative amounts are | ||||
| being removed. | ||||
| .PP | ||||
| The amounts within a transaction must always sum up to zero. | ||||
| As a convenience, one amount may be left blank; it will be inferred so | ||||
| as to balance the transaction. | ||||
| .PP | ||||
| Be sure to note the unusual two\-space delimiter between account name | ||||
| and amount. | ||||
| This makes it easy to write account names containing spaces. | ||||
| But if you accidentally leave only one space (or tab) before the amount, | ||||
| the amount will be considered part of the account name. | ||||
| .SS Dates | ||||
| .SS Simple dates | ||||
| .PP | ||||
| @ -195,6 +210,49 @@ hledger will attempt to parse any square\-bracketed sequence of the | ||||
| \f[C]0123456789/\-.=\f[] characters in this way. | ||||
| With this syntax, DATE infers its year from the transaction and DATE2 | ||||
| infers its year from DATE. | ||||
| .SS Status | ||||
| .PP | ||||
| More about the status field: transactions, or individual postings within | ||||
| a transaction, can be in one of three states, represented by a single | ||||
| character: | ||||
| .IP \[bu] 2 | ||||
| empty (no status character) = uncleared | ||||
| .IP \[bu] 2 | ||||
| \f[C]!\f[] = pending (aka "tentatively cleared") | ||||
| .IP \[bu] 2 | ||||
| \f[C]*\f[] = cleared | ||||
| .PP | ||||
| When reporting, you can filter by status using the | ||||
| \f[C]\-C/\-\-cleared\f[] and \f[C]\-U/\-\-uncleared\f[] flags or the | ||||
| \f[C]status:\f[] query. | ||||
| .PP | ||||
| This feature is optional, but can be helpful for reconciling with | ||||
| real\-world accounts. | ||||
| What "uncleared", "pending", and "cleared" actually mean is up to you. | ||||
| My recommendation: use cleared (\f[C]*\f[]) to mark transactions that | ||||
| are "complete", ie: | ||||
| .IP \[bu] 2 | ||||
| they have cleared with the bank, or the cash has been handed over | ||||
| .IP \[bu] 2 | ||||
| you are satisfied they are recorded accurately in the journal | ||||
| .IP \[bu] 2 | ||||
| the resulting account balance reported by hledger agrees exactly with | ||||
| the external source of truth, if any (eg the bank\[aq]s online register | ||||
| or statement) | ||||
| .PP | ||||
| Then, with \-\-cleared you\[aq]ll see the current balance at your bank, | ||||
| with \-\-uncleared you\[aq]ll see things which will probably hit your | ||||
| bank soon (eg uncashed checks), and with neither flag (the default) | ||||
| you\[aq]ll see the most up\-to\-date state of your finances. | ||||
| .PP | ||||
| I don\[aq]t use pending (\f[C]!\f[]), but perhaps it is useful in very | ||||
| tricky reconciliations, as a temporary marker for transactions matched | ||||
| so far, allowing you start over more easily. | ||||
| .PP | ||||
| Tip: some editor modes highlight entries differently based on their | ||||
| status. | ||||
| In Emacs ledger\-mode, you can toggle transaction status with | ||||
| \f[C]C\-c\ C\-e\f[], or posting status with \f[C]C\-c\ C\-c\f[]. | ||||
| .SS Account names | ||||
| .PP | ||||
| Account names typically have several parts separated by a full colon, | ||||
|  | ||||
| @ -64,7 +64,9 @@ File: hledger_journal.5.info,  Node: FILE FORMAT,  Next: EDITOR SUPPORT,  Prev: | ||||
| * Menu: | ||||
| 
 | ||||
| * Transactions:: | ||||
| * Postings:: | ||||
| * Dates:: | ||||
| * Status:: | ||||
| * Account names:: | ||||
| * Amounts:: | ||||
| * Virtual Postings:: | ||||
| @ -76,37 +78,57 @@ File: hledger_journal.5.info,  Node: FILE FORMAT,  Next: EDITOR SUPPORT,  Prev: | ||||
| * Directives:: | ||||
| 
 | ||||
|  | ||||
| File: hledger_journal.5.info,  Node: Transactions,  Next: Dates,  Up: FILE FORMAT | ||||
| File: hledger_journal.5.info,  Node: Transactions,  Next: Postings,  Up: FILE FORMAT | ||||
| 
 | ||||
| 1.1 Transactions | ||||
| ================ | ||||
| 
 | ||||
| Transactions are represented by journal entries.  Each begins with a | ||||
| simple date in column 0, followed by three optional fields with spaces | ||||
| between them: | ||||
| Transactions are movements of some quantity of commodities between named | ||||
| accounts.  Each transaction is represented by a journal entry beginning | ||||
| with a simple date in column 0.  This can be followed by any of the | ||||
| following, separated by spaces: | ||||
| 
 | ||||
|    * a status flag, which can be empty or '!' or '*' (meaning | ||||
|      "uncleared", "pending" and "cleared", or whatever you want) | ||||
|    * a transaction code (eg a check number), | ||||
|    * and/or a description | ||||
|    * (optional) a status character (empty, '!', or '*') | ||||
|    * (optional) a transaction code (any short number or text, eg a check | ||||
|      number) | ||||
|    * (optional) a transaction description (any remaining text until end | ||||
|      of line) | ||||
| 
 | ||||
|    then some number of postings, of some amount to some account.  Each | ||||
| posting is on its own line, consisting of: | ||||
| 
 | ||||
|    * indentation of one or more spaces (or tabs) | ||||
|    * optionally, a '!' or '*' status flag followed by a space | ||||
|    * an account name, optionally containing single spaces | ||||
|    * optionally, two or more spaces or tabs followed by an amount | ||||
| 
 | ||||
|    Usually there are two or more postings, though one or none is also | ||||
| possible.  The posting amounts within a transaction must always balance, | ||||
| ie add up to 0.  Optionally one amount can be left blank, in which case | ||||
| it will be inferred. | ||||
|    Then comes zero or more (but usually at least 2) indented lines | ||||
| representing... | ||||
| 
 | ||||
|  | ||||
| File: hledger_journal.5.info,  Node: Dates,  Next: Account names,  Prev: Transactions,  Up: FILE FORMAT | ||||
| File: hledger_journal.5.info,  Node: Postings,  Next: Dates,  Prev: Transactions,  Up: FILE FORMAT | ||||
| 
 | ||||
| 1.2 Dates | ||||
| 1.2 Postings | ||||
| ============ | ||||
| 
 | ||||
| A posting is an addition of some amount to, or removal of some amount | ||||
| from, an account.  Each posting line begins with at least one space or | ||||
| tab (2 or 4 spaces is common), followed by: | ||||
| 
 | ||||
|    * (optional) a status character (empty, '!', or '*'), followed by a | ||||
|      space | ||||
|    * (required) an account name (any text, optionally containing *single | ||||
|      spaces*, until end of line or a double space) | ||||
|    * (optional) *two or more spaces* or tabs followed by an amount. | ||||
| 
 | ||||
|    Positive amounts are being added to the account, negative amounts are | ||||
| being removed. | ||||
| 
 | ||||
|    The amounts within a transaction must always sum up to zero.  As a | ||||
| convenience, one amount may be left blank; it will be inferred so as to | ||||
| balance the transaction. | ||||
| 
 | ||||
|    Be sure to note the unusual two-space delimiter between account name | ||||
| and amount.  This makes it easy to write account names containing | ||||
| spaces.  But if you accidentally leave only one space (or tab) before | ||||
| the amount, the amount will be considered part of the account name. | ||||
| 
 | ||||
|  | ||||
| File: hledger_journal.5.info,  Node: Dates,  Next: Status,  Prev: Postings,  Up: FILE FORMAT | ||||
| 
 | ||||
| 1.3 Dates | ||||
| ========= | ||||
| 
 | ||||
| * Menu: | ||||
| @ -118,7 +140,7 @@ File: hledger_journal.5.info,  Node: Dates,  Next: Account names,  Prev: Transac | ||||
|  | ||||
| File: hledger_journal.5.info,  Node: Simple dates,  Next: Secondary dates,  Up: Dates | ||||
| 
 | ||||
| 1.2.1 Simple dates | ||||
| 1.3.1 Simple dates | ||||
| ------------------ | ||||
| 
 | ||||
| Within a journal file, transaction dates use Y/M/D (or Y-M-D or Y.M.D) | ||||
| @ -131,7 +153,7 @@ command is run.  Some examples: '2010/01/31', '1/31', '2010-01-31', | ||||
|  | ||||
| File: hledger_journal.5.info,  Node: Secondary dates,  Next: Posting dates,  Prev: Simple dates,  Up: Dates | ||||
| 
 | ||||
| 1.2.2 Secondary dates | ||||
| 1.3.2 Secondary dates | ||||
| --------------------- | ||||
| 
 | ||||
| Real-life transactions sometimes involve more than one date - eg the | ||||
| @ -172,7 +194,7 @@ confusing alternative. | ||||
|  | ||||
| File: hledger_journal.5.info,  Node: Posting dates,  Prev: Secondary dates,  Up: Dates | ||||
| 
 | ||||
| 1.2.3 Posting dates | ||||
| 1.3.3 Posting dates | ||||
| ------------------- | ||||
| 
 | ||||
| You can give individual postings a different date from their parent | ||||
| @ -205,9 +227,50 @@ characters in this way.  With this syntax, DATE infers its year from the | ||||
| transaction and DATE2 infers its year from DATE. | ||||
| 
 | ||||
|  | ||||
| File: hledger_journal.5.info,  Node: Account names,  Next: Amounts,  Prev: Dates,  Up: FILE FORMAT | ||||
| File: hledger_journal.5.info,  Node: Status,  Next: Account names,  Prev: Dates,  Up: FILE FORMAT | ||||
| 
 | ||||
| 1.3 Account names | ||||
| 1.4 Status | ||||
| ========== | ||||
| 
 | ||||
| More about the status field: transactions, or individual postings within | ||||
| a transaction, can be in one of three states, represented by a single | ||||
| character: | ||||
| 
 | ||||
|    * empty (no status character) = uncleared | ||||
|    * '!' = pending (aka "tentatively cleared") | ||||
|    * '*' = cleared | ||||
| 
 | ||||
|    When reporting, you can filter by status using the '-C/--cleared' and | ||||
| '-U/--uncleared' flags or the 'status:' query. | ||||
| 
 | ||||
|    This feature is optional, but can be helpful for reconciling with | ||||
| real-world accounts.  What "uncleared", "pending", and "cleared" | ||||
| actually mean is up to you.  My recommendation: use cleared ('*') to | ||||
| mark transactions that are "complete", ie: | ||||
| 
 | ||||
|    * they have cleared with the bank, or the cash has been handed over | ||||
|    * you are satisfied they are recorded accurately in the journal | ||||
|    * the resulting account balance reported by hledger agrees exactly | ||||
|      with the external source of truth, if any (eg the bank's online | ||||
|      register or statement) | ||||
| 
 | ||||
|    Then, with -cleared you'll see the current balance at your bank, with | ||||
| -uncleared you'll see things which will probably hit your bank soon (eg | ||||
| uncashed checks), and with neither flag (the default) you'll see the | ||||
| most up-to-date state of your finances. | ||||
| 
 | ||||
|    I don't use pending ('!'), but perhaps it is useful in very tricky | ||||
| reconciliations, as a temporary marker for transactions matched so far, | ||||
| allowing you start over more easily. | ||||
| 
 | ||||
|    Tip: some editor modes highlight entries differently based on their | ||||
| status.  In Emacs ledger-mode, you can toggle transaction status with | ||||
| 'C-c C-e', or posting status with 'C-c C-c'. | ||||
| 
 | ||||
|  | ||||
| File: hledger_journal.5.info,  Node: Account names,  Next: Amounts,  Prev: Status,  Up: FILE FORMAT | ||||
| 
 | ||||
| 1.5 Account names | ||||
| ================= | ||||
| 
 | ||||
| Account names typically have several parts separated by a full colon, | ||||
| @ -225,7 +288,7 @@ more spaces* (or newline). | ||||
|  | ||||
| File: hledger_journal.5.info,  Node: Amounts,  Next: Virtual Postings,  Prev: Account names,  Up: FILE FORMAT | ||||
| 
 | ||||
| 1.4 Amounts | ||||
| 1.6 Amounts | ||||
| =========== | ||||
| 
 | ||||
| After the account name, there is usually an amount.  Important: between | ||||
| @ -280,7 +343,7 @@ format with a commodity directive. | ||||
|  | ||||
| File: hledger_journal.5.info,  Node: Virtual Postings,  Next: Balance Assertions,  Prev: Amounts,  Up: FILE FORMAT | ||||
| 
 | ||||
| 1.5 Virtual Postings | ||||
| 1.7 Virtual Postings | ||||
| ==================== | ||||
| 
 | ||||
| When you parenthesise the account name in a posting, we call that a | ||||
| @ -315,7 +378,7 @@ is more correct and provides better error checking. | ||||
|  | ||||
| File: hledger_journal.5.info,  Node: Balance Assertions,  Next: Balance Assignments,  Prev: Virtual Postings,  Up: FILE FORMAT | ||||
| 
 | ||||
| 1.6 Balance Assertions | ||||
| 1.8 Balance Assertions | ||||
| ====================== | ||||
| 
 | ||||
| hledger supports Ledger-style balance assertions in journal files. | ||||
| @ -349,7 +412,7 @@ or for reading Ledger files. | ||||
|  | ||||
| File: hledger_journal.5.info,  Node: Assertions and ordering,  Next: Assertions and included files,  Up: Balance Assertions | ||||
| 
 | ||||
| 1.6.1 Assertions and ordering | ||||
| 1.8.1 Assertions and ordering | ||||
| ----------------------------- | ||||
| 
 | ||||
| hledger sorts an account's postings and assertions first by date and | ||||
| @ -368,7 +431,7 @@ can assert intra-day balances. | ||||
|  | ||||
| File: hledger_journal.5.info,  Node: Assertions and included files,  Next: Assertions and multiple -f options,  Prev: Assertions and ordering,  Up: Balance Assertions | ||||
| 
 | ||||
| 1.6.2 Assertions and included files | ||||
| 1.8.2 Assertions and included files | ||||
| ----------------------------------- | ||||
| 
 | ||||
| With included files, things are a little more complicated.  Including | ||||
| @ -380,7 +443,7 @@ you'll have to put the assertion in the right file. | ||||
|  | ||||
| File: hledger_journal.5.info,  Node: Assertions and multiple -f options,  Next: Assertions and commodities,  Prev: Assertions and included files,  Up: Balance Assertions | ||||
| 
 | ||||
| 1.6.3 Assertions and multiple -f options | ||||
| 1.8.3 Assertions and multiple -f options | ||||
| ---------------------------------------- | ||||
| 
 | ||||
| Balance assertions don't work well across files specified with multiple | ||||
| @ -389,7 +452,7 @@ Balance assertions don't work well across files specified with multiple | ||||
|  | ||||
| File: hledger_journal.5.info,  Node: Assertions and commodities,  Next: Assertions and subaccounts,  Prev: Assertions and multiple -f options,  Up: Balance Assertions | ||||
| 
 | ||||
| 1.6.4 Assertions and commodities | ||||
| 1.8.4 Assertions and commodities | ||||
| -------------------------------- | ||||
| 
 | ||||
| The asserted balance must be a simple single-commodity amount, and in | ||||
| @ -408,7 +471,7 @@ for this kind of total balance assertion if there's demand.) | ||||
|  | ||||
| File: hledger_journal.5.info,  Node: Assertions and subaccounts,  Next: Assertions and virtual postings,  Prev: Assertions and commodities,  Up: Balance Assertions | ||||
| 
 | ||||
| 1.6.5 Assertions and subaccounts | ||||
| 1.8.5 Assertions and subaccounts | ||||
| -------------------------------- | ||||
| 
 | ||||
| Balance assertions do not count the balance from subaccounts; they check | ||||
| @ -431,7 +494,7 @@ $ hledger bal checking --flat | ||||
|  | ||||
| File: hledger_journal.5.info,  Node: Assertions and virtual postings,  Prev: Assertions and subaccounts,  Up: Balance Assertions | ||||
| 
 | ||||
| 1.6.6 Assertions and virtual postings | ||||
| 1.8.6 Assertions and virtual postings | ||||
| ------------------------------------- | ||||
| 
 | ||||
| Balance assertions are checked against all postings, both real and | ||||
| @ -441,7 +504,7 @@ query. | ||||
|  | ||||
| File: hledger_journal.5.info,  Node: Balance Assignments,  Next: Prices,  Prev: Balance Assertions,  Up: FILE FORMAT | ||||
| 
 | ||||
| 1.7 Balance Assignments | ||||
| 1.9 Balance Assignments | ||||
| ======================= | ||||
| 
 | ||||
| Ledger-style balance assignments are also supported.  These are like | ||||
| @ -474,8 +537,8 @@ hledger or do the calculations yourself, instead of just reading it. | ||||
|  | ||||
| File: hledger_journal.5.info,  Node: Prices,  Next: Comments,  Prev: Balance Assignments,  Up: FILE FORMAT | ||||
| 
 | ||||
| 1.8 Prices | ||||
| ========== | ||||
| 1.10 Prices | ||||
| =========== | ||||
| 
 | ||||
| * Menu: | ||||
| 
 | ||||
| @ -485,8 +548,8 @@ File: hledger_journal.5.info,  Node: Prices,  Next: Comments,  Prev: Balance Ass | ||||
|  | ||||
| File: hledger_journal.5.info,  Node: Transaction prices,  Next: Market prices,  Up: Prices | ||||
| 
 | ||||
| 1.8.1 Transaction prices | ||||
| ------------------------ | ||||
| 1.10.1 Transaction prices | ||||
| ------------------------- | ||||
| 
 | ||||
| Within a transaction, you can note an amount's price in another | ||||
| commodity.  This can be used to document the cost (in a purchase) or | ||||
| @ -546,8 +609,8 @@ $ hledger bal -N --flat -B | ||||
|  | ||||
| File: hledger_journal.5.info,  Node: Market prices,  Prev: Transaction prices,  Up: Prices | ||||
| 
 | ||||
| 1.8.2 Market prices | ||||
| ------------------- | ||||
| 1.10.2 Market prices | ||||
| -------------------- | ||||
| 
 | ||||
| Market prices are not tied to a particular transaction; they represent | ||||
| historical exchange rates between two commodities.  (Ledger calls them | ||||
| @ -575,8 +638,8 @@ P 2010/1/1 € $1.40 | ||||
|  | ||||
| File: hledger_journal.5.info,  Node: Comments,  Next: Tags,  Prev: Prices,  Up: FILE FORMAT | ||||
| 
 | ||||
| 1.9 Comments | ||||
| ============ | ||||
| 1.11 Comments | ||||
| ============= | ||||
| 
 | ||||
| Lines in the journal beginning with a semicolon (';') or hash ('#') or | ||||
| asterisk ('*') are comments, and will be ignored.  (Asterisk comments | ||||
| @ -615,7 +678,7 @@ end comment | ||||
|  | ||||
| File: hledger_journal.5.info,  Node: Tags,  Next: Directives,  Prev: Comments,  Up: FILE FORMAT | ||||
| 
 | ||||
| 1.10 Tags | ||||
| 1.12 Tags | ||||
| ========= | ||||
| 
 | ||||
| Tags are a way to add extra labels or labelled data to postings and | ||||
| @ -661,7 +724,7 @@ are simple strings. | ||||
|  | ||||
| File: hledger_journal.5.info,  Node: Implicit tags,  Up: Tags | ||||
| 
 | ||||
| 1.10.1 Implicit tags | ||||
| 1.12.1 Implicit tags | ||||
| -------------------- | ||||
| 
 | ||||
| Some predefined "implicit" tags are also provided: | ||||
| @ -679,7 +742,7 @@ the same as 'description'. | ||||
|  | ||||
| File: hledger_journal.5.info,  Node: Directives,  Prev: Tags,  Up: FILE FORMAT | ||||
| 
 | ||||
| 1.11 Directives | ||||
| 1.13 Directives | ||||
| =============== | ||||
| 
 | ||||
| * Menu: | ||||
| @ -696,7 +759,7 @@ File: hledger_journal.5.info,  Node: Directives,  Prev: Tags,  Up: FILE FORMAT | ||||
|  | ||||
| File: hledger_journal.5.info,  Node: Account aliases,  Next: account directive,  Up: Directives | ||||
| 
 | ||||
| 1.11.1 Account aliases | ||||
| 1.13.1 Account aliases | ||||
| ---------------------- | ||||
| 
 | ||||
| You can define aliases which rewrite your account names (after reading | ||||
| @ -721,7 +784,7 @@ be useful for: | ||||
|  | ||||
| File: hledger_journal.5.info,  Node: Basic aliases,  Next: Regex aliases,  Up: Account aliases | ||||
| 
 | ||||
| 1.11.1.1 Basic aliases | ||||
| 1.13.1.1 Basic aliases | ||||
| ...................... | ||||
| 
 | ||||
| To set an account alias, use the 'alias' directive in your journal file. | ||||
| @ -744,7 +807,7 @@ alias checking = assets:bank:wells fargo:checking | ||||
|  | ||||
| File: hledger_journal.5.info,  Node: Regex aliases,  Next: Multiple aliases,  Prev: Basic aliases,  Up: Account aliases | ||||
| 
 | ||||
| 1.11.1.2 Regex aliases | ||||
| 1.13.1.2 Regex aliases | ||||
| ...................... | ||||
| 
 | ||||
| There is also a more powerful variant that uses a regular expression, | ||||
| @ -767,7 +830,7 @@ alias /^(.+):bank:([^:]+)(.*)/ = \1:\2 \3 | ||||
|  | ||||
| File: hledger_journal.5.info,  Node: Multiple aliases,  Next: end aliases,  Prev: Regex aliases,  Up: Account aliases | ||||
| 
 | ||||
| 1.11.1.3 Multiple aliases | ||||
| 1.13.1.3 Multiple aliases | ||||
| ......................... | ||||
| 
 | ||||
| You can define as many aliases as you like using directives or | ||||
| @ -783,7 +846,7 @@ following order: | ||||
|  | ||||
| File: hledger_journal.5.info,  Node: end aliases,  Prev: Multiple aliases,  Up: Account aliases | ||||
| 
 | ||||
| 1.11.1.4 end aliases | ||||
| 1.13.1.4 end aliases | ||||
| .................... | ||||
| 
 | ||||
| You can clear (forget) all currently defined aliases with the 'end | ||||
| @ -794,7 +857,7 @@ end aliases | ||||
|  | ||||
| File: hledger_journal.5.info,  Node: account directive,  Next: apply account directive,  Prev: Account aliases,  Up: Directives | ||||
| 
 | ||||
| 1.11.2 account directive | ||||
| 1.13.2 account directive | ||||
| ------------------------ | ||||
| 
 | ||||
| The 'account' directive predefines account names, as in Ledger and | ||||
| @ -815,7 +878,7 @@ account expenses:food | ||||
|  | ||||
| File: hledger_journal.5.info,  Node: apply account directive,  Next: Multi-line comments,  Prev: account directive,  Up: Directives | ||||
| 
 | ||||
| 1.11.3 apply account directive | ||||
| 1.13.3 apply account directive | ||||
| ------------------------------ | ||||
| 
 | ||||
| You can specify a parent account which will be prepended to all accounts | ||||
| @ -851,7 +914,7 @@ supported. | ||||
|  | ||||
| File: hledger_journal.5.info,  Node: Multi-line comments,  Next: commodity directive,  Prev: apply account directive,  Up: Directives | ||||
| 
 | ||||
| 1.11.4 Multi-line comments | ||||
| 1.13.4 Multi-line comments | ||||
| -------------------------- | ||||
| 
 | ||||
| A line containing just 'comment' starts a multi-line comment, and a line | ||||
| @ -860,7 +923,7 @@ containing just 'end comment' ends it.  See comments. | ||||
|  | ||||
| File: hledger_journal.5.info,  Node: commodity directive,  Next: Default commodity,  Prev: Multi-line comments,  Up: Directives | ||||
| 
 | ||||
| 1.11.5 commodity directive | ||||
| 1.13.5 commodity directive | ||||
| -------------------------- | ||||
| 
 | ||||
| The 'commodity' directive predefines commodities (currently this is just | ||||
| @ -892,7 +955,7 @@ commodity INR | ||||
|  | ||||
| File: hledger_journal.5.info,  Node: Default commodity,  Next: Default year,  Prev: commodity directive,  Up: Directives | ||||
| 
 | ||||
| 1.11.6 Default commodity | ||||
| 1.13.6 Default commodity | ||||
| ------------------------ | ||||
| 
 | ||||
| The D directive sets a default commodity (and display format), to be | ||||
| @ -912,7 +975,7 @@ D $1,000.00 | ||||
|  | ||||
| File: hledger_journal.5.info,  Node: Default year,  Next: Including other files,  Prev: Default commodity,  Up: Directives | ||||
| 
 | ||||
| 1.11.7 Default year | ||||
| 1.13.7 Default year | ||||
| ------------------- | ||||
| 
 | ||||
| You can set a default year to be used for subsequent dates which don't | ||||
| @ -938,7 +1001,7 @@ Y2010      ; change default year to 2010 | ||||
|  | ||||
| File: hledger_journal.5.info,  Node: Including other files,  Prev: Default year,  Up: Directives | ||||
| 
 | ||||
| 1.11.8 Including other files | ||||
| 1.13.8 Including other files | ||||
| ---------------------------- | ||||
| 
 | ||||
| You can pull in the content of additional journal files by writing an | ||||
| @ -977,77 +1040,81 @@ Tag Table: | ||||
| Node: Top78 | ||||
| Node: FILE FORMAT2292 | ||||
| Ref: #file-format2418 | ||||
| Node: Transactions2601 | ||||
| Ref: #transactions2721 | ||||
| Node: Dates3663 | ||||
| Ref: #dates3791 | ||||
| Node: Simple dates3856 | ||||
| Ref: #simple-dates3984 | ||||
| Node: Secondary dates4350 | ||||
| Ref: #secondary-dates4506 | ||||
| Node: Posting dates6069 | ||||
| Ref: #posting-dates6200 | ||||
| Node: Account names7574 | ||||
| Ref: #account-names7713 | ||||
| Node: Amounts8200 | ||||
| Ref: #amounts8338 | ||||
| Node: Virtual Postings10439 | ||||
| Ref: #virtual-postings10600 | ||||
| Node: Balance Assertions11820 | ||||
| Ref: #balance-assertions11997 | ||||
| Node: Assertions and ordering12893 | ||||
| Ref: #assertions-and-ordering13081 | ||||
| Node: Assertions and included files13781 | ||||
| Ref: #assertions-and-included-files14024 | ||||
| Node: Assertions and multiple -f options14357 | ||||
| Ref: #assertions-and-multiple--f-options14613 | ||||
| Node: Assertions and commodities14745 | ||||
| Ref: #assertions-and-commodities14982 | ||||
| Node: Assertions and subaccounts15678 | ||||
| Ref: #assertions-and-subaccounts15912 | ||||
| Node: Assertions and virtual postings16433 | ||||
| Ref: #assertions-and-virtual-postings16642 | ||||
| Node: Balance Assignments16784 | ||||
| Ref: #balance-assignments16953 | ||||
| Node: Prices18072 | ||||
| Ref: #prices18205 | ||||
| Node: Transaction prices18256 | ||||
| Ref: #transaction-prices18401 | ||||
| Node: Market prices20557 | ||||
| Ref: #market-prices20692 | ||||
| Node: Comments21652 | ||||
| Ref: #comments21774 | ||||
| Node: Tags22887 | ||||
| Ref: #tags23007 | ||||
| Node: Implicit tags24436 | ||||
| Ref: #implicit-tags24544 | ||||
| Node: Directives25061 | ||||
| Ref: #directives25176 | ||||
| Node: Account aliases25369 | ||||
| Ref: #account-aliases25515 | ||||
| Node: Basic aliases26119 | ||||
| Ref: #basic-aliases26264 | ||||
| Node: Regex aliases26954 | ||||
| Ref: #regex-aliases27124 | ||||
| Node: Multiple aliases27839 | ||||
| Ref: #multiple-aliases28013 | ||||
| Node: end aliases28511 | ||||
| Ref: #end-aliases28653 | ||||
| Node: account directive28754 | ||||
| Ref: #account-directive28936 | ||||
| Node: apply account directive29232 | ||||
| Ref: #apply-account-directive29430 | ||||
| Node: Multi-line comments30089 | ||||
| Ref: #multi-line-comments30281 | ||||
| Node: commodity directive30409 | ||||
| Ref: #commodity-directive30595 | ||||
| Node: Default commodity31467 | ||||
| Ref: #default-commodity31642 | ||||
| Node: Default year32179 | ||||
| Ref: #default-year32346 | ||||
| Node: Including other files32769 | ||||
| Ref: #including-other-files32928 | ||||
| Node: EDITOR SUPPORT33325 | ||||
| Ref: #editor-support33445 | ||||
| Node: Transactions2625 | ||||
| Ref: #transactions2748 | ||||
| Node: Postings3307 | ||||
| Ref: #postings3436 | ||||
| Node: Dates4431 | ||||
| Ref: #dates4548 | ||||
| Node: Simple dates4613 | ||||
| Ref: #simple-dates4741 | ||||
| Node: Secondary dates5107 | ||||
| Ref: #secondary-dates5263 | ||||
| Node: Posting dates6826 | ||||
| Ref: #posting-dates6957 | ||||
| Node: Status8331 | ||||
| Ref: #status8455 | ||||
| Node: Account names10018 | ||||
| Ref: #account-names10158 | ||||
| Node: Amounts10645 | ||||
| Ref: #amounts10783 | ||||
| Node: Virtual Postings12884 | ||||
| Ref: #virtual-postings13045 | ||||
| Node: Balance Assertions14265 | ||||
| Ref: #balance-assertions14442 | ||||
| Node: Assertions and ordering15338 | ||||
| Ref: #assertions-and-ordering15526 | ||||
| Node: Assertions and included files16226 | ||||
| Ref: #assertions-and-included-files16469 | ||||
| Node: Assertions and multiple -f options16802 | ||||
| Ref: #assertions-and-multiple--f-options17058 | ||||
| Node: Assertions and commodities17190 | ||||
| Ref: #assertions-and-commodities17427 | ||||
| Node: Assertions and subaccounts18123 | ||||
| Ref: #assertions-and-subaccounts18357 | ||||
| Node: Assertions and virtual postings18878 | ||||
| Ref: #assertions-and-virtual-postings19087 | ||||
| Node: Balance Assignments19229 | ||||
| Ref: #balance-assignments19398 | ||||
| Node: Prices20517 | ||||
| Ref: #prices20652 | ||||
| Node: Transaction prices20703 | ||||
| Ref: #transaction-prices20850 | ||||
| Node: Market prices23006 | ||||
| Ref: #market-prices23143 | ||||
| Node: Comments24103 | ||||
| Ref: #comments24227 | ||||
| Node: Tags25340 | ||||
| Ref: #tags25460 | ||||
| Node: Implicit tags26889 | ||||
| Ref: #implicit-tags26997 | ||||
| Node: Directives27514 | ||||
| Ref: #directives27629 | ||||
| Node: Account aliases27822 | ||||
| Ref: #account-aliases27968 | ||||
| Node: Basic aliases28572 | ||||
| Ref: #basic-aliases28717 | ||||
| Node: Regex aliases29407 | ||||
| Ref: #regex-aliases29577 | ||||
| Node: Multiple aliases30292 | ||||
| Ref: #multiple-aliases30466 | ||||
| Node: end aliases30964 | ||||
| Ref: #end-aliases31106 | ||||
| Node: account directive31207 | ||||
| Ref: #account-directive31389 | ||||
| Node: apply account directive31685 | ||||
| Ref: #apply-account-directive31883 | ||||
| Node: Multi-line comments32542 | ||||
| Ref: #multi-line-comments32734 | ||||
| Node: commodity directive32862 | ||||
| Ref: #commodity-directive33048 | ||||
| Node: Default commodity33920 | ||||
| Ref: #default-commodity34095 | ||||
| Node: Default year34632 | ||||
| Ref: #default-year34799 | ||||
| Node: Including other files35222 | ||||
| Ref: #including-other-files35381 | ||||
| Node: EDITOR SUPPORT35778 | ||||
| Ref: #editor-support35898 | ||||
|  | ||||
| End Tag Table | ||||
|  | ||||
| @ -65,27 +65,33 @@ Here's an example: | ||||
| 
 | ||||
| ## Transactions | ||||
| 
 | ||||
| Transactions are represented by journal entries. Each begins with a | ||||
| [simple date](#simple-dates) in column 0, followed by three optional | ||||
| fields with spaces between them: | ||||
| Transactions are movements of some quantity of commodities between named accounts. | ||||
| Each transaction is represented by a journal entry beginning with a [simple date](#simple-dates) in column 0.  | ||||
| This can be followed by any of the following, separated by spaces: | ||||
| 
 | ||||
| - a status flag, which can be empty or `!` or `*` (meaning "uncleared", | ||||
|   "pending" and "cleared", or whatever you want) | ||||
| - a transaction code (eg a check number), | ||||
| - and/or a description | ||||
| - (optional) a [status](#status) character (empty, `!`, or `*`)  | ||||
| - (optional) a transaction code (any short number or text, eg a check number) | ||||
| - (optional) a transaction description (any remaining text until end of line) | ||||
| 
 | ||||
| then some number of postings, of some amount to some account. Each | ||||
| posting is on its own line, consisting of: | ||||
| Then comes zero or more (but usually at least 2) indented lines representing... | ||||
| 
 | ||||
| - indentation of one or more spaces (or tabs) | ||||
| - optionally, a `!` or `*` status flag followed by a space | ||||
| - an account name, optionally containing single spaces | ||||
| - optionally, two or more spaces or tabs followed by an amount | ||||
| ##  Postings | ||||
|   | ||||
| Usually there are two or more postings, though one or none is also | ||||
| possible. The posting amounts within a transaction must always balance, | ||||
| ie add up to 0. Optionally one amount can be left blank, in which case | ||||
| it will be inferred. | ||||
| A posting is an addition of some amount to, or removal of some amount from, an account.  | ||||
| Each posting line begins with at least one space or tab (2 or 4 spaces is common), followed by: | ||||
| 
 | ||||
| - (optional) a [status](#status) character (empty, `!`, or `*`), followed by a space | ||||
| - (required) an [account name](#account-names) (any text, optionally containing **single spaces**, until end of line or a double space) | ||||
| - (optional) **two or more spaces** or tabs followed by an [amount](#amounts).  | ||||
| 
 | ||||
| Positive amounts are being added to the account, negative amounts are being removed.  | ||||
| 
 | ||||
| The amounts within a transaction must always sum up to zero. | ||||
| As a convenience, one amount may be left blank; it will be inferred so as to balance the transaction. | ||||
| 
 | ||||
| Be sure to note the unusual two-space delimiter between account name and amount. | ||||
| This makes it easy to write account names containing spaces. | ||||
| But if you accidentally leave only one space (or tab) before the amount, the amount will be considered part of the account name. | ||||
| 
 | ||||
| ## Dates | ||||
| 
 | ||||
| @ -177,6 +183,36 @@ attempt to parse any square-bracketed sequence of the `0123456789/-.=` | ||||
| characters in this way. With this syntax, DATE infers its year from | ||||
| the transaction and DATE2 infers its year from DATE. | ||||
| 
 | ||||
| ## Status | ||||
| 
 | ||||
| More about the status field: transactions, or individual postings within a transaction, | ||||
| can be in one of three states, represented by a single character: | ||||
| 
 | ||||
| - empty (no status character) = uncleared | ||||
| - `!` = pending (aka "tentatively cleared") | ||||
| - `*` = cleared | ||||
| 
 | ||||
| When reporting, you can filter by status using the `-C/--cleared` and `-U/--uncleared` flags | ||||
| or the `status:` query. | ||||
| 
 | ||||
| This feature is optional, but can be helpful for reconciling with real-world accounts. | ||||
| What "uncleared", "pending", and "cleared" actually mean is up to you. | ||||
| My recommendation: use cleared (`*`) to mark transactions that are "complete", ie:  | ||||
| 
 | ||||
| - they have cleared with the bank, or the cash has been handed over | ||||
| - you are satisfied they are recorded accurately in the journal | ||||
| - the resulting account balance reported by hledger agrees exactly with the external source of truth, if any (eg the bank's online register or statement)  | ||||
| 
 | ||||
| Then, with --cleared you'll see the current balance at your bank, | ||||
| with --uncleared you'll see things which will probably hit your bank soon (eg uncashed checks), | ||||
| and with neither flag (the default) you'll see the most up-to-date state of your finances. | ||||
| 
 | ||||
| I don't use pending (`!`), but perhaps it is useful in very tricky reconciliations, | ||||
| as a temporary marker for transactions matched so far, allowing you start over more easily.  | ||||
| 
 | ||||
| Tip: some [editor modes](#editor-support) highlight entries differently based on their status. | ||||
| In Emacs ledger-mode, you can toggle transaction status with `C-c C-e`, or posting status with `C-c C-c`.   | ||||
| 
 | ||||
| ## Account names | ||||
| 
 | ||||
| Account names typically have several parts separated by a full colon, from | ||||
|  | ||||
| @ -53,32 +53,45 @@ DESCRIPTION | ||||
| 
 | ||||
| FILE FORMAT | ||||
|    Transactions | ||||
|        Transactions  are  represented  by journal entries.  Each begins with a | ||||
|        simple date in column 0, followed by three optional fields with  spaces | ||||
|        between them: | ||||
|        Transactions  are  movements  of  some  quantity of commodities between | ||||
|        named accounts.  Each transaction is represented  by  a  journal  entry | ||||
|        beginning  with a simple date in column 0.  This can be followed by any | ||||
|        of the following, separated by spaces: | ||||
| 
 | ||||
|        o a  status  flag,  which  can be empty or ! or * (meaning "uncleared", | ||||
|          "pending" and "cleared", or whatever you want) | ||||
|        o (optional) a status character (empty, !, or *) | ||||
| 
 | ||||
|        o a transaction code (eg a check number), | ||||
|        o (optional) a transaction code (any short number or text, eg  a  check | ||||
|          number) | ||||
| 
 | ||||
|        o and/or a description | ||||
|        o (optional) a transaction description (any remaining text until end of | ||||
|          line) | ||||
| 
 | ||||
|        then some number of postings, of some amount  to  some  account.   Each | ||||
|        posting is on its own line, consisting of: | ||||
|        Then comes zero or more (but usually at least 2) indented lines  repre- | ||||
|        senting... | ||||
| 
 | ||||
|        o indentation of one or more spaces (or tabs) | ||||
|    Postings | ||||
|        A  posting  is an addition of some amount to, or removal of some amount | ||||
|        from, an account.  Each posting line begins with at least one space  or | ||||
|        tab (2 or 4 spaces is common), followed by: | ||||
| 
 | ||||
|        o optionally, a ! or * status flag followed by a space | ||||
|        o (optional) a status character (empty, !, or *), followed by a space | ||||
| 
 | ||||
|        o an account name, optionally containing single spaces | ||||
|        o (required)  an  account  name (any text, optionally containing single | ||||
|          spaces, until end of line or a double space) | ||||
| 
 | ||||
|        o optionally, two or more spaces or tabs followed by an amount | ||||
|        o (optional) two or more spaces or tabs followed by an amount. | ||||
| 
 | ||||
|        Usually there are two or more postings, though one or none is also pos- | ||||
|        sible.  The posting amounts within a transaction must  always  balance, | ||||
|        ie add up to 0.  Optionally one amount can be left blank, in which case | ||||
|        it will be inferred. | ||||
|        Positive amounts are being added to the account, negative  amounts  are | ||||
|        being removed. | ||||
| 
 | ||||
|        The amounts within a transaction must always sum up to zero.  As a con- | ||||
|        venience, one amount may be left blank; it will be inferred  so  as  to | ||||
|        balance the transaction. | ||||
| 
 | ||||
|        Be  sure  to  note the unusual two-space delimiter between account name | ||||
|        and amount.  This makes it easy to write account names containing  spa- | ||||
|        ces.   But if you accidentally leave only one space (or tab) before the | ||||
|        amount, the amount will be considered part of the account name. | ||||
| 
 | ||||
|    Dates | ||||
|    Simple dates | ||||
| @ -155,14 +168,54 @@ FILE FORMAT | ||||
|        With this syntax, DATE infers its year from the transaction  and  DATE2 | ||||
|        infers its year from DATE. | ||||
| 
 | ||||
|    Account names | ||||
|        Account  names  typically have several parts separated by a full colon, | ||||
|        from which hledger derives a hierarchical chart of accounts.  They  can | ||||
|        be  anything  you  like,  but  in  finance there are traditionally five | ||||
|        top-level accounts: assets, liabilities, income, expenses, and  equity. | ||||
|    Status | ||||
|        More  about  the  status  field:  transactions,  or individual postings | ||||
|        within a transaction, can be in one of three states, represented  by  a | ||||
|        single character: | ||||
| 
 | ||||
|        Account  names  may  contain single spaces, eg: assets:accounts receiv- | ||||
|        able.  Because of this, they must always be followed  by  two  or  more | ||||
|        o empty (no status character) = uncleared | ||||
| 
 | ||||
|        o ! = pending (aka "tentatively cleared") | ||||
| 
 | ||||
|        o * = cleared | ||||
| 
 | ||||
|        When  reporting,  you  can  filter by status using the -C/--cleared and | ||||
|        -U/--uncleared flags or the status: query. | ||||
| 
 | ||||
|        This feature is optional, but  can  be  helpful  for  reconciling  with | ||||
|        real-world  accounts.  What "uncleared", "pending", and "cleared" actu- | ||||
|        ally mean is up to you.  My recommendation: use  cleared  (*)  to  mark | ||||
|        transactions that are "complete", ie: | ||||
| 
 | ||||
|        o they have cleared with the bank, or the cash has been handed over | ||||
| 
 | ||||
|        o you are satisfied they are recorded accurately in the journal | ||||
| 
 | ||||
|        o the resulting account balance reported by hledger agrees exactly with | ||||
|          the external source of truth, if any (eg the bank's  online  register | ||||
|          or statement) | ||||
| 
 | ||||
|        Then,  with --cleared you'll see the current balance at your bank, with | ||||
|        --uncleared you'll see things which will probably hit  your  bank  soon | ||||
|        (eg  uncashed  checks),  and with neither flag (the default) you'll see | ||||
|        the most up-to-date state of your finances. | ||||
| 
 | ||||
|        I don't use pending (!), but perhaps it is useful in very tricky recon- | ||||
|        ciliations,  as  a  temporary  marker  for transactions matched so far, | ||||
|        allowing you start over more easily. | ||||
| 
 | ||||
|        Tip: some editor modes highlight entries  differently  based  on  their | ||||
|        status.   In  Emacs ledger-mode, you can toggle transaction status with | ||||
|        C-c C-e, or posting status with C-c C-c. | ||||
| 
 | ||||
|    Account names | ||||
|        Account names typically have several parts separated by a  full  colon, | ||||
|        from  which hledger derives a hierarchical chart of accounts.  They can | ||||
|        be anything you like, but  in  finance  there  are  traditionally  five | ||||
|        top-level  accounts: assets, liabilities, income, expenses, and equity. | ||||
| 
 | ||||
|        Account names may contain single  spaces,  eg:  assets:accounts receiv- | ||||
|        able.   Because  of  this,  they must always be followed by two or more | ||||
|        spaces (or newline). | ||||
| 
 | ||||
|        Account names can be aliased. | ||||
| @ -171,7 +224,7 @@ FILE FORMAT | ||||
|        After the account name, there is usually an amount.  Important: between | ||||
|        account name and amount, there must be two or more spaces. | ||||
| 
 | ||||
|        Amounts consist of a number and (usually) a currency symbol or  commod- | ||||
|        Amounts  consist of a number and (usually) a currency symbol or commod- | ||||
|        ity name.  Some examples: | ||||
| 
 | ||||
|        2.00001 | ||||
| @ -184,53 +237,53 @@ FILE FORMAT | ||||
| 
 | ||||
|        As you can see, the amount format is somewhat flexible: | ||||
| 
 | ||||
|        o amounts  are a number (the "quantity") and optionally a currency sym- | ||||
|        o amounts are a number (the "quantity") and optionally a currency  sym- | ||||
|          bol/commodity name (the "commodity"). | ||||
| 
 | ||||
|        o the commodity is a symbol, word, or phrase, on  the  left  or  right, | ||||
|          with  or  without a separating space.  If the commodity contains num- | ||||
|          bers, spaces or non-word punctuation it must be  enclosed  in  double | ||||
|        o the  commodity  is  a  symbol, word, or phrase, on the left or right, | ||||
|          with or without a separating space.  If the commodity  contains  num- | ||||
|          bers,  spaces  or  non-word punctuation it must be enclosed in double | ||||
|          quotes. | ||||
| 
 | ||||
|        o negative amounts with a commodity on the left can have the minus sign | ||||
|          before or after it | ||||
| 
 | ||||
|        o digit groups (thousands, or any other grouping) can be  separated  by | ||||
|          commas  (in  which  case period is used for decimal point) or periods | ||||
|        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) | ||||
| 
 | ||||
|        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 | ||||
|        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: | ||||
| 
 | ||||
|        o if there is a commodity directive specifying the format, that is used | ||||
| 
 | ||||
|        o otherwise the format is inferred from the  first  posting  amount  in | ||||
|          that  commodity  in the journal, and the precision (number of decimal | ||||
|        o otherwise  the  format  is  inferred from the first posting amount in | ||||
|          that commodity in the journal, and the precision (number  of  decimal | ||||
|          places) will be the maximum from all posting amounts in that commmod- | ||||
|          ity | ||||
| 
 | ||||
|        o or  if  there are no such amounts in the journal, a default format is | ||||
|        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, | ||||
|        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 | ||||
|        when  -V  is  used.) If you find this causing problems, set the desired | ||||
|        format with a commodity directive. | ||||
| 
 | ||||
|    Virtual Postings | ||||
|        When  you  parenthesise  the  account name in a posting, we call that a | ||||
|        When you parenthesise the account name in a posting,  we  call  that  a | ||||
|        virtual posting, which means: | ||||
| 
 | ||||
|        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. | ||||
| 
 | ||||
|        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: | ||||
| 
 | ||||
|               1/1 special unbalanced posting to set initial balance | ||||
| @ -238,8 +291,8 @@ FILE FORMAT | ||||
| 
 | ||||
|        When the account name is bracketed, we call it a balanced virtual post- | ||||
|        ing.  This is like an ordinary virtual posting except the balanced vir- | ||||
|        tual postings in a transaction must balance to 0, like the  real  post- | ||||
|        ings  (but  separately  from them).  Balanced virtual postings are also | ||||
|        tual  postings  in a transaction must balance to 0, like the real post- | ||||
|        ings (but separately from them).  Balanced virtual  postings  are  also | ||||
|        excluded by --real/-R or real:1. | ||||
| 
 | ||||
|               1/1 buy food with cash, and update some budget-tracking subaccounts elsewhere | ||||
| @ -249,13 +302,13 @@ FILE FORMAT | ||||
|                 [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 | ||||
|        usually find an equivalent journal entry using real postings, which  is | ||||
|        more correct and provides better error checking. | ||||
| 
 | ||||
|    Balance Assertions | ||||
|        hledger supports Ledger-style  balance  assertions  in  journal  files. | ||||
|        These  look  like =EXPECTEDBALANCE following a posting's amount.  Eg in | ||||
|        this example we assert the expected dollar balance in accounts a and  b | ||||
|        hledger  supports  Ledger-style  balance  assertions  in journal files. | ||||
|        These look like =EXPECTEDBALANCE following a posting's amount.   Eg  in | ||||
|        this  example we assert the expected dollar balance in accounts a and b | ||||
|        after each posting: | ||||
| 
 | ||||
|               2013/1/1 | ||||
| @ -267,31 +320,31 @@ FILE FORMAT | ||||
|                 b  $-1  =$-2 | ||||
| 
 | ||||
|        After reading a journal file, hledger will check all balance assertions | ||||
|        and report an error if any of them fail.  Balance assertions  can  pro- | ||||
|        tect  you  from, eg, inadvertently disrupting reconciled balances while | ||||
|        cleaning up old entries.  You can disable  them  temporarily  with  the | ||||
|        --ignore-assertions  flag,  which  can be useful for troubleshooting or | ||||
|        and  report  an error if any of them fail.  Balance assertions can pro- | ||||
|        tect you from, eg, inadvertently disrupting reconciled  balances  while | ||||
|        cleaning  up  old  entries.   You can disable them temporarily with the | ||||
|        --ignore-assertions flag, which can be useful  for  troubleshooting  or | ||||
|        for reading Ledger files. | ||||
| 
 | ||||
|    Assertions and ordering | ||||
|        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- | ||||
|        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- | ||||
|        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.) | ||||
| 
 | ||||
|        So, hledger balance assertions keep  working  if  you  reorder  differ- | ||||
|        ently-dated  transactions  within  the  journal.   But  if  you reorder | ||||
|        So,  hledger  balance  assertions  keep  working if you reorder differ- | ||||
|        ently-dated transactions  within  the  journal.   But  if  you  reorder | ||||
|        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 | ||||
|        assert intra-day balances. | ||||
| 
 | ||||
|    Assertions and included files | ||||
|        With  included  files, things are a little more complicated.  Including | ||||
|        preserves the ordering of postings and assertions.  If you have  multi- | ||||
|        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 | ||||
|        With included files, things are a little more  complicated.   Including | ||||
|        preserves  the ordering of postings and assertions.  If you have multi- | ||||
|        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 | ||||
|        day, you'll have to put the assertion in the right file. | ||||
| 
 | ||||
|    Assertions and multiple -f options | ||||
| @ -299,21 +352,21 @@ FILE FORMAT | ||||
|        -f options.  Use include or concatenate the files instead. | ||||
| 
 | ||||
|    Assertions and commodities | ||||
|        The asserted balance must be a simple single-commodity amount,  and  in | ||||
|        fact  the  assertion  checks  only  this commodity's balance within the | ||||
|        (possibly multi-commodity) account balance.  We could call this a  par- | ||||
|        tial  balance  assertion.  This is compatible with Ledger, and makes it | ||||
|        The  asserted  balance must be a simple single-commodity amount, and in | ||||
|        fact the assertion checks only  this  commodity's  balance  within  the | ||||
|        (possibly  multi-commodity) account balance.  We could call this a par- | ||||
|        tial balance assertion.  This is compatible with Ledger, and  makes  it | ||||
|        possible to make assertions about accounts containing multiple commodi- | ||||
|        ties. | ||||
| 
 | ||||
|        To  assert  each commodity's balance in such a multi-commodity account, | ||||
|        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 | ||||
|        To assert each commodity's balance in such a  multi-commodity  account, | ||||
|        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 | ||||
|        account does not contain some unexpected commodity.  (We'll add support | ||||
|        for this kind of total balance assertion if there's demand.) | ||||
| 
 | ||||
|    Assertions and subaccounts | ||||
|        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: | ||||
| 
 | ||||
|               1/1 | ||||
| @ -321,7 +374,7 @@ FILE FORMAT | ||||
|                 checking        1 = 1  ; post to the parent account, its exclusive balance is now 1 | ||||
|                 equity | ||||
| 
 | ||||
|        The balance report's flat mode  shows  these  exclusive  balances  more | ||||
|        The  balance  report's  flat  mode  shows these exclusive balances more | ||||
|        clearly: | ||||
| 
 | ||||
|               $ hledger bal checking --flat | ||||
| @ -335,10 +388,10 @@ FILE FORMAT | ||||
|        tual.  They are not affected by the --real/-R flag or real: query. | ||||
| 
 | ||||
|    Balance Assignments | ||||
|        Ledger-style balance assignments are also supported.   These  are  like | ||||
|        balance  assertions, but with no posting amount on the left side of the | ||||
|        equals sign; instead it is calculated automatically so  as  to  satisfy | ||||
|        the  assertion.   This  can be a convenience during data entry, eg when | ||||
|        Ledger-style  balance  assignments  are also supported.  These are like | ||||
|        balance assertions, but with no posting amount on the left side of  the | ||||
|        equals  sign;  instead  it is calculated automatically so as to satisfy | ||||
|        the assertion.  This can be a convenience during data  entry,  eg  when | ||||
|        setting opening balances: | ||||
| 
 | ||||
|               ; starting a new journal, set asset account balances | ||||
| @ -356,8 +409,8 @@ FILE FORMAT | ||||
|                 expenses:misc | ||||
| 
 | ||||
|        The calculated amount depends on the account's balance in the commodity | ||||
|        at  that  point  (which depends on the previously-dated postings of the | ||||
|        commodity to that account since the last balance assertion  or  assign- | ||||
|        at that point (which depends on the previously-dated  postings  of  the | ||||
|        commodity  to  that account since the last balance assertion or assign- | ||||
|        ment).  Note that using balance assignments makes your journal a little | ||||
|        less explicit; to know the exact amount posted, you have to run hledger | ||||
|        or do the calculations yourself, instead of just reading it. | ||||
| @ -365,12 +418,12 @@ FILE FORMAT | ||||
|    Prices | ||||
|    Transaction prices | ||||
|        Within a transaction, you can note an amount's price in another commod- | ||||
|        ity.  This can be used to document the cost (in a purchase) or  selling | ||||
|        price  (in  a  sale).   For  example,  transaction prices are useful to | ||||
|        ity.   This can be used to document the cost (in a purchase) or selling | ||||
|        price (in a sale).  For  example,  transaction  prices  are  useful  to | ||||
|        record purchases of a foreign currency. | ||||
| 
 | ||||
|        Transaction prices are fixed, and do not  change  over  time.   (Ledger | ||||
|        users:  Ledger  uses a different syntax for fixed prices, {=UNITPRICE}, | ||||
|        Transaction  prices  are  fixed,  and do not change over time.  (Ledger | ||||
|        users: Ledger uses a different syntax for fixed  prices,  {=UNITPRICE}, | ||||
|        which hledger currently ignores). | ||||
| 
 | ||||
|        There are several ways to record a transaction price: | ||||
| @ -394,9 +447,9 @@ FILE FORMAT | ||||
|                     assets:euros     100          ; one hundred euros purchased | ||||
|                     assets:dollars  $-135          ; for $135 | ||||
| 
 | ||||
|        Amounts  with  transaction  prices  can be displayed in the transaction | ||||
|        Amounts with transaction prices can be  displayed  in  the  transaction | ||||
|        price's commodity by using the -B/--cost flag (except for #551) ("B" is | ||||
|        from  "cost Basis").  Eg for the above, here is how -B affects the bal- | ||||
|        from "cost Basis").  Eg for the above, here is how -B affects the  bal- | ||||
|        ance report: | ||||
| 
 | ||||
|               $ hledger bal -N --flat | ||||
| @ -406,8 +459,8 @@ FILE FORMAT | ||||
|                              $-135  assets:dollars | ||||
|                               $135  assets:euros    # <- the euros' cost | ||||
| 
 | ||||
|        Note -B is sensitive to the order of postings when a transaction  price | ||||
|        is  inferred:  the  inferred price will be in the commodity of the last | ||||
|        Note  -B is sensitive to the order of postings when a transaction price | ||||
|        is inferred: the inferred price will be in the commodity  of  the  last | ||||
|        amount.  So if example 3's postings are reversed, while the transaction | ||||
|        is equivalent, -B shows something different: | ||||
| 
 | ||||
| @ -420,41 +473,41 @@ FILE FORMAT | ||||
|                               100  assets:euros | ||||
| 
 | ||||
|    Market prices | ||||
|        Market  prices are not tied to a particular transaction; they represent | ||||
|        historical exchange rates between two commodities.  (Ledger calls  them | ||||
|        historical  prices.)  For  example,  the  prices  published  by a stock | ||||
|        exchange or the foreign exchange market.  hledger can use these  prices | ||||
|        Market prices are not tied to a particular transaction; they  represent | ||||
|        historical  exchange rates between two commodities.  (Ledger calls them | ||||
|        historical prices.) For  example,  the  prices  published  by  a  stock | ||||
|        exchange  or the foreign exchange market.  hledger can use these prices | ||||
|        to show the market value of things at a given date, see market value. | ||||
| 
 | ||||
|        To  record market prices, use P directives in the main journal or in an | ||||
|        To record market prices, use P directives in the main journal or in  an | ||||
|        included file.  Their format is: | ||||
| 
 | ||||
|               P DATE COMMODITYBEINGPRICED UNITPRICE | ||||
| 
 | ||||
|        DATE is a simple date as usual.  COMMODITYBEINGPRICED is the symbol  of | ||||
|        the  commodity  being  priced.  UNITPRICE is an ordinary amount (symbol | ||||
|        and quantity) in a second commodity, specifying the unit price or  con- | ||||
|        version  rate  for  the  first commodity in terms of the second, on the | ||||
|        DATE  is a simple date as usual.  COMMODITYBEINGPRICED is the symbol of | ||||
|        the commodity being priced.  UNITPRICE is an  ordinary  amount  (symbol | ||||
|        and  quantity) in a second commodity, specifying the unit price or con- | ||||
|        version rate for the first commodity in terms of  the  second,  on  the | ||||
|        given date. | ||||
| 
 | ||||
|        For example, the following directives say that one euro was worth  1.35 | ||||
|        For  example, the following directives say that one euro was worth 1.35 | ||||
|        US dollars during 2009, and $1.40 from 2010 onward: | ||||
| 
 | ||||
|               P 2009/1/1  $1.35 | ||||
|               P 2010/1/1  $1.40 | ||||
| 
 | ||||
|    Comments | ||||
|        Lines  in  the  journal  beginning  with a semicolon (;) or hash (#) or | ||||
|        asterisk (*) are comments, and will  be  ignored.   (Asterisk  comments | ||||
|        make  it easy to treat your journal like an org-mode outline in emacs.) | ||||
|        Lines in the journal beginning with a semicolon  (;)  or  hash  (#)  or | ||||
|        asterisk  (*)  are  comments,  and will be ignored.  (Asterisk comments | ||||
|        make it easy to treat your journal like an org-mode outline in  emacs.) | ||||
| 
 | ||||
|        Also,  anything  between  comment  and  end comment  directives  is   a | ||||
|        (multi-line)  comment.  If there is no end comment, the comment extends | ||||
|        Also,   anything  between  comment  and  end comment  directives  is  a | ||||
|        (multi-line) comment.  If there is no end comment, the comment  extends | ||||
|        to the end of the file. | ||||
| 
 | ||||
|        You can attach comments to a transaction  by  writing  them  after  the | ||||
|        description  and/or  indented  on the following lines (before the post- | ||||
|        ings).  Similarly, you can attach comments to an individual posting  by | ||||
|        You  can  attach  comments  to  a transaction by writing them after the | ||||
|        description and/or indented on the following lines  (before  the  post- | ||||
|        ings).   Similarly, you can attach comments to an individual posting by | ||||
|        writing them after the amount and/or indented on the following lines. | ||||
| 
 | ||||
|        Some examples: | ||||
| @ -479,20 +532,20 @@ FILE FORMAT | ||||
|               ; a journal comment (because not indented) | ||||
| 
 | ||||
|    Tags | ||||
|        Tags  are  a  way  to add extra labels or labelled data to postings and | ||||
|        Tags are a way to add extra labels or labelled  data  to  postings  and | ||||
|        transactions, which you can then search or pivot on. | ||||
| 
 | ||||
|        A simple tag is a word (which may contain hyphens) followed by  a  full | ||||
|        A  simple  tag is a word (which may contain hyphens) followed by a full | ||||
|        colon, written inside a transaction or posting comment line: | ||||
| 
 | ||||
|               2017/1/16 bought groceries    ; sometag: | ||||
| 
 | ||||
|        Tags  can  have  a  value, which is the text after the colon, up to the | ||||
|        Tags can have a value, which is the text after the  colon,  up  to  the | ||||
|        next comma or end of line, with leading/trailing whitespace removed: | ||||
| 
 | ||||
|                   expenses:food    $10   ; a-posting-tag: the tag value | ||||
| 
 | ||||
|        Note this means hledger's tag values can not  contain  commas  or  new- | ||||
|        Note  this  means  hledger's  tag values can not contain commas or new- | ||||
|        lines.  Ending at commas means you can write multiple short tags on one | ||||
|        line, comma separated: | ||||
| 
 | ||||
| @ -506,16 +559,16 @@ FILE FORMAT | ||||
| 
 | ||||
|        o "tag2" is another tag, whose value is "some value ..." | ||||
| 
 | ||||
|        Tags in a transaction comment affect the transaction  and  all  of  its | ||||
|        postings,  while  tags  in  a posting comment affect only that posting. | ||||
|        For example,  the  following  transaction  has  three  tags  (A,  TAG2, | ||||
|        Tags  in  a  transaction  comment affect the transaction and all of its | ||||
|        postings, while tags in a posting comment  affect  only  that  posting. | ||||
|        For  example,  the  following  transaction  has  three  tags  (A, TAG2, | ||||
|        third-tag) and the posting has four (those plus posting-tag): | ||||
| 
 | ||||
|               1/1 a transaction  ; A:, TAG2: | ||||
|                   ; third-tag: a third transaction tag, <- with a value | ||||
|                   (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 simple strings. | ||||
| 
 | ||||
|    Implicit tags | ||||
| @ -529,14 +582,14 @@ FILE FORMAT | ||||
| 
 | ||||
|        o note - the part of description after |, or all of it | ||||
| 
 | ||||
|        payee and note support descriptions written in a  special  PAYEE | NOTE | ||||
|        payee  and  note support descriptions written in a special PAYEE | NOTE | ||||
|        format, accessing the parts before and after the pipe character respec- | ||||
|        tively.  For descriptions not containing a pipe character they are  the | ||||
|        tively.   For descriptions not containing a pipe character they are the | ||||
|        same as description. | ||||
| 
 | ||||
|    Directives | ||||
|    Account aliases | ||||
|        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 | ||||
|        be useful for: | ||||
| 
 | ||||
| @ -553,8 +606,8 @@ FILE FORMAT | ||||
|        See also Cookbook: rewrite account names. | ||||
| 
 | ||||
|    Basic aliases | ||||
|        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 | ||||
|        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 | ||||
|        included files.  The spaces around the = are optional: | ||||
| 
 | ||||
|               alias OLD = NEW | ||||
| @ -562,52 +615,52 @@ FILE FORMAT | ||||
|        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. | ||||
| 
 | ||||
|        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 | ||||
|        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 | ||||
|        affected.  Eg: | ||||
| 
 | ||||
|               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" | ||||
| 
 | ||||
|    Regex aliases | ||||
|        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: | ||||
| 
 | ||||
|               alias /REGEX/ = REPLACEMENT | ||||
| 
 | ||||
|        or --alias '/REGEX/=REPLACEMENT'. | ||||
| 
 | ||||
|        REGEX is a case-insensitive regular expression.   Anywhere  it  matches | ||||
|        inside  an  account name, the matched part will be replaced by REPLACE- | ||||
|        MENT.  If REGEX contains parenthesised match groups, these can be  ref- | ||||
|        REGEX  is  a  case-insensitive regular expression.  Anywhere it matches | ||||
|        inside an account name, the matched part will be replaced  by  REPLACE- | ||||
|        MENT.   If REGEX contains parenthesised match groups, these can be ref- | ||||
|        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: | ||||
| 
 | ||||
|               alias /^(.+):bank:([^:]+)(.*)/ = \1:\2 \3 | ||||
|               # rewrites "assets:bank:wells fargo:checking" to  "assets:wells fargo checking" | ||||
| 
 | ||||
|    Multiple aliases | ||||
|        You can define as many aliases as you like  using  directives  or  com- | ||||
|        mand-line  options.  Aliases are recursive - each alias sees the result | ||||
|        of applying previous ones.   (This  is  different  from  Ledger,  where | ||||
|        You  can  define  as  many aliases as you like using directives or com- | ||||
|        mand-line options.  Aliases are recursive - each alias sees the  result | ||||
|        of  applying  previous  ones.   (This  is  different from Ledger, where | ||||
|        aliases are non-recursive by default).  Aliases are applied in the fol- | ||||
|        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) | ||||
| 
 | ||||
|        2. alias options, in the order they appear on the command line | ||||
| 
 | ||||
|    end aliases | ||||
|        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 | ||||
| 
 | ||||
|    account directive | ||||
|        The account directive predefines account names, as in Ledger and  Bean- | ||||
|        count.   This may be useful for your own documentation; hledger doesn't | ||||
|        The  account directive predefines account names, as in Ledger and Bean- | ||||
|        count.  This may be useful for your own documentation; hledger  doesn't | ||||
|        make use of it yet. | ||||
| 
 | ||||
|               ; account ACCT | ||||
| @ -622,8 +675,8 @@ FILE FORMAT | ||||
|               ; etc. | ||||
| 
 | ||||
|    apply account directive | ||||
|        You can specify a  parent  account  which  will  be  prepended  to  all | ||||
|        accounts  within  a  section of the journal.  Use the apply account and | ||||
|        You  can  specify  a  parent  account  which  will  be prepended to all | ||||
|        accounts within a section of the journal.  Use  the  apply account  and | ||||
|        end apply account directives like so: | ||||
| 
 | ||||
|               apply account home | ||||
| @ -640,7 +693,7 @@ FILE FORMAT | ||||
|                   home:food           $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: | ||||
| 
 | ||||
|               apply account business | ||||
| @ -649,16 +702,16 @@ FILE FORMAT | ||||
|               apply account personal | ||||
|               include personal.journal | ||||
| 
 | ||||
|        Prior  to  hledger 1.0, legacy account and end spellings were also sup- | ||||
|        Prior to hledger 1.0, legacy account and end spellings were  also  sup- | ||||
|        ported. | ||||
| 
 | ||||
|    Multi-line comments | ||||
|        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. | ||||
| 
 | ||||
|    commodity directive | ||||
|        The  commodity directive predefines commodities (currently this is just | ||||
|        informational), and also it may define the display format  for  amounts | ||||
|        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: | ||||
| @ -670,8 +723,8 @@ FILE FORMAT | ||||
|               ; 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 | ||||
|        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 | ||||
| @ -684,10 +737,10 @@ FILE FORMAT | ||||
|                 format INR 9,99,99,999.00 | ||||
| 
 | ||||
|    Default commodity | ||||
|        The  D  directive  sets a default commodity (and display format), to be | ||||
|        The D directive sets a default commodity (and display  format),  to  be | ||||
|        used for amounts without a commodity symbol (ie, plain numbers).  (Note | ||||
|        this  differs from Ledger's default commodity directive.) The commodity | ||||
|        and display format will be applied  to  all  subsequent  commodity-less | ||||
|        this differs from Ledger's default commodity directive.) The  commodity | ||||
|        and  display  format  will  be applied to all subsequent commodity-less | ||||
|        amounts, or until the next D directive. | ||||
| 
 | ||||
|               # commodity-less amounts should be treated as dollars | ||||
| @ -699,8 +752,8 @@ FILE FORMAT | ||||
|                 b | ||||
| 
 | ||||
|    Default year | ||||
|        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. | ||||
|        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. | ||||
|        Eg: | ||||
| 
 | ||||
|               Y2009      ; set default year to 2009 | ||||
| @ -720,24 +773,24 @@ FILE FORMAT | ||||
|                 assets | ||||
| 
 | ||||
|    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 | ||||
|        include directive, like this: | ||||
| 
 | ||||
|               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.  Glob patterns (*) are not currently supported. | ||||
| 
 | ||||
|        The  include  directive  can  only  be  used  in journal files.  It can | ||||
|        The include directive can only  be  used  in  journal  files.   It  can | ||||
|        include journal, timeclock or timedot files, but not CSV files. | ||||
| 
 | ||||
| EDITOR SUPPORT | ||||
|        Add-on modes exist for various text editors, to make working with jour- | ||||
|        nal  files  easier.   They add colour, navigation aids and helpful com- | ||||
|        mands.  For hledger users who  edit  the  journal  file  directly  (the | ||||
|        nal files easier.  They add colour, navigation aids  and  helpful  com- | ||||
|        mands.   For  hledger  users  who  edit  the journal file directly (the | ||||
|        majority), using one of these modes is quite recommended. | ||||
| 
 | ||||
|        These  were  written  with  Ledger  in mind, but also work with hledger | ||||
|        These were written with Ledger in mind,  but  also  work  with  hledger | ||||
|        files: | ||||
| 
 | ||||
| 
 | ||||
| @ -746,16 +799,16 @@ EDITOR SUPPORT | ||||
|                           ting-started | ||||
|        Sublime Text       https://github.com/ledger/ledger/wiki/Using-Sub- | ||||
|                           lime-Text | ||||
| 
 | ||||
|        Textmate           https://github.com/ledger/ledger/wiki/Using-Text- | ||||
|                           Mate-2 | ||||
| 
 | ||||
|        Text Wrangler      https://github.com/ledger/ledger/wiki/Edit- | ||||
|                           ing-Ledger-files-with-TextWrangler | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| REPORTING BUGS | ||||
|        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) | ||||
| 
 | ||||
| 
 | ||||
| @ -769,7 +822,7 @@ COPYRIGHT | ||||
| 
 | ||||
| 
 | ||||
| SEE ALSO | ||||
|        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- | ||||
|        dot(5), ledger(1) | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user