hledger/tests/close.test
Stephen Morgan 9de238757b lib,cli,ui: Introduce showMixed*Unnormalised, eliminate most direct calls of strWidth.
This introduces some new helper functions which are exactly the same
as what we had before, but do not call
normaliseMixedAmountSquashPricesForDisplay, so that we can use the new
functions for displaying Transaction and Posting. It also goes through
and gets rid of most uses of the old showMixed* functions which would
benefit from using the new interface.
2020-11-04 14:25:20 +11:00

306 lines
11 KiB
Plaintext

# 1. Simple case
<
2016/1/1 open
assets:bank $100
assets:cash $20
equity:opening
2016/1/15 spend
expenses:sweets $5
assets:cash
2016/1/19 withdraw
assets:cash $20
assets:bank
2016/1/20 lend
liabilities $25
assets:cash
$ hledger close -f- -e 2017-01-01 assets liabilities
2016-12-31 closing balances
assets:bank $-80 = $0
assets:cash $-10 = $0
liabilities $-25 = $0
equity:opening/closing balances
2017-01-01 opening balances
assets:bank $80 = $80
assets:cash $10 = $10
liabilities $25 = $25
equity:opening/closing balances
>=0
# 2. A begin date should be ignored
$ hledger close -f- -e 2017-01-01 assets liabilities -b 2016-12-01
2016-12-31 closing balances
assets:bank $-80 = $0
assets:cash $-10 = $0
liabilities $-25 = $0
equity:opening/closing balances
2017-01-01 opening balances
assets:bank $80 = $80
assets:cash $10 = $10
liabilities $25 = $25
equity:opening/closing balances
>=0
# 3. Print just the opening transaction
<
2016/1/1 open
assets:bank $100
assets:cash $20
equity:opening
2016/1/15 spend
expenses:sweets $5
assets:cash
2016/1/19 withdraw
assets:cash $20
assets:bank
2016/1/20 lend
liabilities $25
assets:cash
$ hledger close -f- -p 2016 assets liabilities --open
2017-01-01 opening balances
assets:bank $80 = $80
assets:cash $10 = $10
liabilities $25 = $25
equity:opening/closing balances
>=0
# 4. Print just the closing transaction.
$ hledger close -f- -p 2016 assets liabilities --close
2016-12-31 closing balances
assets:bank $-80 = $0
assets:cash $-10 = $0
liabilities $-25 = $0
equity:opening/closing balances
>=0
# 5. Supplying --open --close is the same as just "close"
# Also -x makes it show the equity amounts.
$ hledger close -f- -p 2016 assets liabilities --open --close -x
2016-12-31 closing balances
assets:bank $-80 = $0
assets:cash $-10 = $0
liabilities $-25 = $0
equity:opening/closing balances $115
2017-01-01 opening balances
assets:bank $80 = $80
assets:cash $10 = $10
liabilities $25 = $25
equity:opening/closing balances $-115
>=0
# 6. Closing a multi-priced balance. By default the transaction prices are ignored.
<
2019/01/01
assets 1A @ 1B
assets 1A @ 1C
equity
$ hledger -f- close assets -p 2019 -x
2019-12-31 closing balances
assets -2A = 0A
equity:opening/closing balances 2A
2020-01-01 opening balances
assets 2A = 2A
equity:opening/closing balances -2A
>=0
# 7. With --show-costs, the transaction prices are preserved.
# Only the last posting in each commodity gets a balance assertion (#1035).
# Balance assertion amounts do not have a price.
$ hledger -f- close assets -p 2019 --show-costs -x
2019-12-31 closing balances
assets -1A @ 1B
assets -1A @ 1C = 0A
equity:opening/closing balances 1A @ 1B
equity:opening/closing balances 1A @ 1C
2020-01-01 opening balances
assets 1A @ 1B
assets 1A @ 1C = 2A
equity:opening/closing balances -1A @ 1B
equity:opening/closing balances -1A @ 1C
>=0
# 8. Closing a multi-priced balance, slightly more complex
# (different price in each transaction).
<
2019/01/01
(assets) 1A @ 1B
2019/01/02
(assets) 1A @ 2B
$ hledger -f- close assets -p 2019 -x
2019-12-31 closing balances
assets -2A = 0A
equity:opening/closing balances 2A
2020-01-01 opening balances
assets 2A = 2A
equity:opening/closing balances -2A
>=0
# 9. The same, with costs.
$ hledger -f- close assets -p 2019 --show-costs -x
2019-12-31 closing balances
assets -1A @ 1B
assets -1A @ 2B = 0A
equity:opening/closing balances 1A @ 1B
equity:opening/closing balances 1A @ 2B
2020-01-01 opening balances
assets 1A @ 1B
assets 1A @ 2B = 2A
equity:opening/closing balances -1A @ 1B
equity:opening/closing balances -1A @ 2B
>=0
# 10. Closing a multi-priced balance, a more complex example.
# Decimal places specified by the amount display style should not be stripped
# even if they are zeros (#1137).
<
2016/01/31
liabilities:employer $5,000.00
income:salary
2016/02/05
liabilities:employer $-5,000.00 @ 0.95 EUR
expenses:tax 1,852.50 EUR
assets:bank 2,897.00 EUR
liabilities:employer
2016/02/29
liabilities:employer $5,000.00
income:salary
2016/03/04
liabilities:employer $-5,000.00 @ 0.93 EUR
expenses:tax 1,813.50 EUR
assets:bank 2,836.00 EUR
liabilities:employer
$ hledger -f- close -p 2016 assets liabilities --show-costs -x
2016-12-31 closing balances
assets:bank -5,733.00 EUR = 0.00 EUR
liabilities:employer $-10,000.00
liabilities:employer $5,000.00 @ 0.93 EUR
liabilities:employer $5,000.00 @ 0.95 EUR = $0.00
liabilities:employer -1.00 EUR = 0.00 EUR
equity:opening/closing balances $10,000.00
equity:opening/closing balances $-5,000.00 @ 0.93 EUR
equity:opening/closing balances $-5,000.00 @ 0.95 EUR
equity:opening/closing balances 5,734.00 EUR
2017-01-01 opening balances
assets:bank 5,733.00 EUR = 5,733.00 EUR
liabilities:employer $10,000.00
liabilities:employer $-5,000.00 @ 0.93 EUR
liabilities:employer $-5,000.00 @ 0.95 EUR = $0.00
liabilities:employer 1.00 EUR = 1.00 EUR
equity:opening/closing balances $-10,000.00
equity:opening/closing balances $5,000.00 @ 0.93 EUR
equity:opening/closing balances $5,000.00 @ 0.95 EUR
equity:opening/closing balances -5,734.00 EUR
>=0
# 11. With --interleaved, each transfer's postings are adjacent.
# (And balances with the same cost are not necessarily combined into
# a single posting. Eg the 5734 EUR above is 5733 EUR and 1 EUR below.)
$ hledger -f- close -p 2016 assets liabilities --interleaved --show-costs -x
2016-12-31 closing balances
assets:bank -5,733.00 EUR = 0.00 EUR
equity:opening/closing balances 5,733.00 EUR
liabilities:employer $-10,000.00
equity:opening/closing balances $10,000.00
liabilities:employer $5,000.00 @ 0.93 EUR
equity:opening/closing balances $-5,000.00 @ 0.93 EUR
liabilities:employer $5,000.00 @ 0.95 EUR = $0.00
equity:opening/closing balances $-5,000.00 @ 0.95 EUR
liabilities:employer -1.00 EUR = 0.00 EUR
equity:opening/closing balances 1.00 EUR
2017-01-01 opening balances
assets:bank 5,733.00 EUR = 5,733.00 EUR
equity:opening/closing balances -5,733.00 EUR
liabilities:employer $10,000.00
equity:opening/closing balances $-10,000.00
liabilities:employer $-5,000.00 @ 0.93 EUR
equity:opening/closing balances $5,000.00 @ 0.93 EUR
liabilities:employer $-5,000.00 @ 0.95 EUR = $0.00
equity:opening/closing balances $5,000.00 @ 0.95 EUR
liabilities:employer 1.00 EUR = 1.00 EUR
equity:opening/closing balances -1.00 EUR
>=0
# 12. A tricky case where a closing posting was rounded and failed to balance (#1164)
<
commodity $0.00
commodity AAA 0.00000000
2019-01-01 opening balance
(assets:usd) $49.50
2019-01-02 buy some AAA
assets:usd -$49.2619200
assets:aaa AAA 510
assets:usd -$0.1280810
expenses:banking $0.1280810
$ hledger -f- close -p 2019 assets --show-costs -x
2019-12-31 closing balances
assets:aaa AAA -510.00000000 = AAA 0.00000000
assets:usd $-49.50
assets:usd $49.390001 @ AAA 10.3528242505 = $0.00
equity:opening/closing balances $49.50
equity:opening/closing balances $-49.390001 @ AAA 10.3528242505
equity:opening/closing balances AAA 510.00000000
2020-01-01 opening balances
assets:aaa AAA 510.00000000 = AAA 510.00000000
assets:usd $49.50
assets:usd $-49.390001 @ AAA 10.3528242505 = $0.109999
equity:opening/closing balances $-49.50
equity:opening/closing balances $49.390001 @ AAA 10.3528242505
equity:opening/closing balances AAA -510.00000000
>=0
# 13. The same, without costs and with --interleaved.
$ hledger -f- close -p 2019 assets --interleaved -x
2019-12-31 closing balances
assets:aaa AAA -510.00000000 = AAA 0.00000000
equity:opening/closing balances AAA 510.00000000
assets:usd $-0.109999 = $0.00
equity:opening/closing balances $0.109999
2020-01-01 opening balances
assets:aaa AAA 510.00000000 = AAA 510.00000000
equity:opening/closing balances AAA -510.00000000
assets:usd $0.109999 = $0.109999
equity:opening/closing balances $-0.109999
>=0