;doc: account types: edits

This commit is contained in:
Simon Michael 2022-02-02 17:40:47 -10:00
parent b96b6c406e
commit 4aa06d7920

View File

@ -3086,45 +3086,46 @@ account equity:conversion ; type: V
[CCE]: https://en.wikipedia.org/wiki/Cash_and_cash_equivalents [CCE]: https://en.wikipedia.org/wiki/Cash_and_cash_equivalents
[account directive]: #declaring-accounts [account directive]: #declaring-accounts
#### Account type tips Here are some tips for working with account types.
Here are a few more details to aid troubleshooting.
hledger tries to identify at least one account for each of the - The rules for inferring types from account names are as follows (see also [Regular expressions](#regular-expressions)):
account types (Asset, Liability, Equity, Revenue, Expense, Cash, Conversion..). <!-- monospace to work around https://github.com/simonmichael/hledger/issues/1573 -->
For each type, if no account has been declared with that type, it looks for accounts matched by the appropriate [regular expression](#regular-expressions): ```
If account's name matches this case insensitive regular expression: | its type is:
--------------------------------------------------------------------|-------------
^assets?(:|$) |
and does not contain regexp (investment|receivable|:A/R|:fixed) | Cash
otherwise | Asset
^(debts?|liabilit(y|ies))(:|$) | Liability
^equity:(trad(e|ing)|conversion)s?(:|$) | Conversion
^equity(:|$) | Equity
^(income|revenue)s?(:|$) | Revenue
^expenses?(:|$) | Expense
```
<!-- monospace to work around https://github.com/simonmichael/hledger/issues/1573 --> <!--
``` hledger tries to identify at least one account for each account type (Asset, Liability, Equity, Revenue, Expense, Cash, Conversion..).
If account's name matches this case insensitive regular expression:| its type is: In each case, if no account has been declared with that type, it looks for accounts matched by the appropriate regular expression above.
------------------------------------------------------------------- | ------------ -->
^assets?(:|$) | - If you declare any account types, it's a good idea to declare an account for all of them (or at least the five main types),
and does not contain regexp (investment|receivable|:A/R|:fixed) | Cash because a mixture of declared and auto-detected types can disrupt certain reports.
otherwise | Asset
^(debts?|liabilit(y|ies))(:|$) | Liability
^equity:(trad(e|ing)|conversion)s?(:|$) | Conversion
^equity(:|$) | Equity
^(income|revenue)s?(:|$) | Revenue
^expenses?(:|$) | Expense
```
If you declare any account types, it's a good idea to declare an account for all of them. - Certain uses of [account aliases](#account-aliases) can disrupt account types.
(Because a mixture of declared and auto-detected types can disrupt certain reports.) See [Rewriting accounts > Aliases and account types](#aliases-and-account-types).
As mentioned above, subaccounts inherit the type of their parent account by default. To be precise, an account's type is decided by the first of these that exists: - As mentioned above, subaccounts will inherit a type from their parent account.
To be precise, an account's type is decided by the first of these that exists:
1. An `type:` declaration for this account. 1. A `type:` declaration for this account.
2. The nearest explicit `type:` declaration in the accounts above it. 2. A `type:` declaration in the parent accounts above it, preferring the nearest.
3. An account type inferred from this account's name. 3. An account type inferred from this account's name.
4. An account type inferred from an account above it, preferring the nearest parent. 4. An account type inferred from a parent account's name, preferring the nearest parent.
5. Otherwise, it will have no type. 5. Otherwise, it will have no type.
Certain uses of [account aliases](#account-aliases) can interfere with account types. - For troubleshooting, you can list accounts and their types with:
See [Rewriting accounts > Aliases and account types](#aliases-and-account-types). ```
$ hledger accounts --types [ACCTPAT] [type:TYPECODES]
In case of trouble, you can list accounts and the types identified for them with: ```
```shell
$ hledger accounts --types [ACCTPAT] [type:TYPECODES]
```
### Account display order ### Account display order