hledger/hledger/test/query-type.test
Simon Michael 76f8eaf91a imp: journal: ignore redundant costs; --infer-costs more robustly
You can now write both @/@@ costs and corresponding equity conversion postings
in a transaction at any time, not just when using --infer-costs or --infer-equity.
hledger will recognise the redundancy and ignore it.

One thing has become more strict: hledger now requires conversion postings
to occur in adjacent pairs; an odd number of them is not allowed.
(Conversion postings are postings to accounts of type `V`/`Conversion`,
or named `equity:conversion`, `equity:trade`, `equity:trading`,
or subaccounts of these.)

And, --infer-costs now works in transactions with an implicit amount
(inferring costs from equity now happens after transaction balancing,
not before).
2023-01-25 19:00:29 -10:00

138 lines
3.0 KiB
Plaintext

# Matching accounts by type.
# Similar to the tag:type tests in query-tags.test.
<
account a ; type:A
account l ; type:Liability
account r ; type:R
account o ; othertag:
account u
2022-01-01
(r) 1
2022-01-02
(a) 1
(l) 1
# 1. We can match declared accounts by type, using short type codes
# regardless of whether account's type was declared in short or long form.
$ hledger -f- accounts --declared type:AL
a
l
# 2. Order and case of type codes doesn't matter.
$ hledger -f- accounts --declared type:la
a
l
# 3. Matching used accounts works the same way.
$ hledger -f- accounts --used type:AL
a
l
# 4. We can match postings by their account's type.
$ hledger -f- register -w80 type:A
2022-01-02 (a) 1 1
# 5. We can match transactions by their accounts' types.
$ hledger -f- print type:A
2022-01-02
(a) 1
(l) 1
>=
# 6. And negatively match them.
$ hledger -f- print type:a not:type:l
# 7. We can filter balance reports by account type.
$ hledger -f- bal type:a
1 a
--------------------
1
# 8. Postingless declared accounts in balance reports are also filtered.
<
account a ; type:A
account l ; type:L
$ hledger -f- bal -N --declared -E type:A
0 a
# 9. type: is aware of account type inheritance.
<
account a ; type:A
account a:aa
$ hledger -f- accounts type:a
a
a:aa
# 10. type: is aware of inferred account types.
<
account assets
account assets:cash
account liabilities
$ hledger -f- accounts type:a
assets
assets:cash
# 11. type: can identify cash accounts in the default case
<
account assets
account assets:cash
account liabilities
$ hledger -f- accounts type:c
assets:cash
# 12. type: can identify conversion accounts in the default case
<
account equity
account equity:conversion
account equity:trading
account equity:trade
$ hledger -f- accounts type:v
equity:conversion
equity:trading
equity:trade
# 13. type: can be used in and can match auto postings
<
account assets ; type:a
= type:a
(assets:b) 1
2022-02-02 Test
(assets) 2
$ hledger -f- reg --auto type:a
2022-02-02 Test (assets) 2 2
(assets:b) 1 3
# 14. type: can be used in and can match auto postings with no known parents
<
= type:a
(expenses:b) 1
2022-02-02 Test
(assets) 2
$ hledger -f- reg --auto type:x
2022-02-02 Test (expenses:b) 1 1
# 15. type:a matches cash accounts and type:e matches conversion accounts
<
2022-02-02 Test
(assets:cash) 1
(equity:conversion) 2
(equity:conversion) -2
$ hledger -f- reg type:ae
2022-02-02 Test (assets:cash) 1 1
(equity:conversion) 2 3
(equity:conversion) -2 1