;imp: doc: account types: prioritise short names, hide old syntax
This commit is contained in:
		
							parent
							
								
									3763b50ff2
								
							
						
					
					
						commit
						af4d269215
					
				| @ -2858,63 +2858,63 @@ account ACCTNAME  [ACCTTYPE] [;COMMENT] | |||||||
| 
 | 
 | ||||||
| ### Account types | ### Account types | ||||||
| 
 | 
 | ||||||
| hledger recognises five main types of account, | By adding a `type` tag to the [account directive], | ||||||
| corresponding to the account classes in the [accounting equation]: | with value | ||||||
|  | `A`, `L`, `E`, `R`, `X`, `C` | ||||||
|  | (or if you prefer: `Asset`, `Liability`, `Equity`, `Revenue`, `Expense`, `Cash`), | ||||||
|  | you can declare hledger accounts to be of a certain type: | ||||||
| 
 | 
 | ||||||
| `Asset`, `Liability`, `Equity`, `Revenue`, `Expense`. | - **asset**,  | ||||||
|  |   **liability**,  | ||||||
|  |   **equity**,  | ||||||
|  |   **revenue**,  | ||||||
|  |   **expense**\ | ||||||
|  |   the [standard types] in accounting, or | ||||||
| 
 | 
 | ||||||
| These account types are important for controlling which accounts | - **cash**\ | ||||||
| appear in the [balancesheet], [balancesheetequity], |   a subtype of asset, used for [liquid assets][CCE]. | ||||||
| [incomestatement] reports (and probably for other things in future). |  | ||||||
| 
 | 
 | ||||||
| Additionally, we recognise the `Cash` type, which is also an `Asset`, | Declaring account types is a good idea, since it helps enable the easy  | ||||||
| and which causes accounts to appear in the [cashflow] report. | [balancesheet], [balancesheetequity], [incomestatement] and [cashflow] reports,  | ||||||
| ("Cash" here means [liquid assets][CCE], eg bank balances | and probably other things in future.  | ||||||
| but typically not investments or receivables.) | As a convenience, when account types are not declared,  | ||||||
|  | hledger will try to guess them based on english-language account names. | ||||||
| 
 | 
 | ||||||
|  | Here is a typical set of top-level account declarations  | ||||||
|  | (because of the aforementioned, with these account names the type tags are not strictly needed, | ||||||
|  | but with non-english or non-standard account names, they will be): | ||||||
|  | 
 | ||||||
|  | ```journal | ||||||
|  | account assets       ; type: A | ||||||
|  | account liabilities  ; type: L | ||||||
|  | account equity       ; type: E | ||||||
|  | account revenues     ; type: R | ||||||
|  | account expenses     ; type: X | ||||||
|  | 
 | ||||||
|  | account assets:bank  ; type: C | ||||||
|  | account assets:cash  ; type: C | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | It's not necessary to declare the type of subaccounts. | ||||||
|  | (You can, if they are different from the parent, but this is not common.) | ||||||
|  | 
 | ||||||
|  | [standard types]:      https://en.wikipedia.org/wiki/Chart_of_accounts#Types_of_accounts | ||||||
| [accounting equation]: https://en.wikipedia.org/wiki/Accounting_equation | [accounting equation]: https://en.wikipedia.org/wiki/Accounting_equation | ||||||
| [CCE]:                 https://en.wikipedia.org/wiki/Cash_and_cash_equivalents | [CCE]:                 https://en.wikipedia.org/wiki/Cash_and_cash_equivalents | ||||||
| 
 | [account directive]:   #declaring-accounts | ||||||
| #### Declaring account types |  | ||||||
| 
 |  | ||||||
| To make the [balancesheet]/[balancesheetequity]/[cashflow]/[incomestatement] reports work, |  | ||||||
| generally you should declare your top-level accounts, and their types. |  | ||||||
| For each top-level account, write an [account directive](#declaring-accounts), |  | ||||||
| with a `type:` [tag](#tags). The tag's value can be any of |  | ||||||
| `Asset`, `Liability`, `Equity`, `Revenue`, `Expense`, `Cash`, |  | ||||||
| or (for short) `A`, `L`, `E`, `R`, `X`, `C` (case insensitive). |  | ||||||
| An account's type is inherited by its subaccounts, unless they declare a different type. |  | ||||||
| Here's an example, declaring all six account types: |  | ||||||
| 
 |  | ||||||
| ```journal |  | ||||||
| account assets       ; type: Asset |  | ||||||
| account assets:bank  ; type: Cash |  | ||||||
| account assets:cash  ; type: Cash |  | ||||||
| account liabilities  ; type: Liability |  | ||||||
| account equity       ; type: Equity |  | ||||||
| account revenues     ; type: Revenue |  | ||||||
| account expenses     ; type: Expense |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| There is also an older syntax, which is deprecated and will be dropped soon |  | ||||||
| (A, L, E, R or X separated from the account name by two or more spaces): |  | ||||||
| 
 |  | ||||||
| ```journal |  | ||||||
| account assets       A |  | ||||||
| account liabilities  L |  | ||||||
| account equity       E |  | ||||||
| account revenues     R |  | ||||||
| account expenses     X |  | ||||||
| ``` |  | ||||||
| 
 | 
 | ||||||
| #### Auto-detected account types | #### Auto-detected account types | ||||||
| 
 | 
 | ||||||
|  | More about "guessing" account types: | ||||||
| hledger tries to find at least one top level account in each of the  | hledger tries to find at least one top level account in each of the  | ||||||
| six account types (Asset, Liability, Equity, Revenue, Expense, Cash). | six account types (Asset, Liability, Equity, Revenue, Expense, Cash). | ||||||
| When no accounts have been declared for a particular type,  | When no accounts have been declared for a particular type,  | ||||||
| hledger tries to auto-detect some accounts by name, | it tries to auto-detect some accounts by name, | ||||||
| using [regular expressions](#regular-expressions): | using the [regular expressions](#regular-expressions) below. | ||||||
|  | Note: if you declare any account's type, it's a good idea to declare an account for all six types, | ||||||
|  | because a mix of declared and auto-detected types can cause confusing results.  | ||||||
| 
 | 
 | ||||||
|  | The auto-detection rules are: | ||||||
| <!-- monospace to work around https://github.com/simonmichael/hledger/issues/1573 --> | <!-- monospace to work around https://github.com/simonmichael/hledger/issues/1573 --> | ||||||
| ``` | ``` | ||||||
|  If account's name matches this case insensitive regular expression:| its type is: |  If account's name matches this case insensitive regular expression:| its type is: | ||||||
| @ -2928,33 +2928,6 @@ using [regular expressions](#regular-expressions): | |||||||
|  ^expenses?(:|$)                                                    | Expense |  ^expenses?(:|$)                                                    | Expense | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| For people using standard english account names, |  | ||||||
| this feature helps hledger's [high-level reports](#declaring-account-types) work out of the box with minimal configuration. |  | ||||||
| 
 |  | ||||||
| If you use non-english account names, |  | ||||||
| you should [declare account types](#declaring-account-types) to make these reports work. |  | ||||||
| And more generally, declaring accounts and types is usually a good idea, |  | ||||||
| for increased clarity and predictability  |  | ||||||
| (and for the other benefits of account directives: error checking, display order, etc). |  | ||||||
| 
 |  | ||||||
| Notes: |  | ||||||
| 
 |  | ||||||
| - When any account is declared as some type, this disables auto-detection for that particular type. |  | ||||||
| - If you declare any account's type, it's a good idea to declare  |  | ||||||
|   an account for all six types, since a mix of declared and auto-detected  |  | ||||||
|   types can cause confusion. |  | ||||||
|   For example, here liabilities is declared to be Equity, but would also  |  | ||||||
|   be auto-detected as Liability, since no Liability account is declared: |  | ||||||
| 
 |  | ||||||
|   ```journal |  | ||||||
|   account liabilities  ; type:Equity |  | ||||||
| 
 |  | ||||||
|   2020-01-01 |  | ||||||
|     assets        1 |  | ||||||
|     liabilities   1 |  | ||||||
|     equity       -2 |  | ||||||
|   ``` |  | ||||||
| 
 |  | ||||||
| ### Account display order | ### Account display order | ||||||
| 
 | 
 | ||||||
| Account directives also set the order in which accounts are displayed, | Account directives also set the order in which accounts are displayed, | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user