mirror of
https://github.com/simonmichael/hledger.git
synced 2024-12-28 21:02:04 +03:00
6c2398e4d7
Transaction prices were being collapsed/misreported after close/open; this is fixed. Now each separately-priced amount gets its own posting, and only the last of these (for each commodity) gets a balance assertion. Also the equity posting's amount is now always shown explicitly, which in multicommodity situations means that multiple equity postings are shown. The upshot is that a balance -B report will be unchanged after closing & opening transactions.
242 lines
6.4 KiB
Plaintext
242 lines
6.4 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- -p 2016 assets liabilities
|
|
2016/12/31 closing balances
|
|
assets:bank $-80 = $0
|
|
assets:cash $-10 = $0
|
|
liabilities $-25 = $0
|
|
equity:closing balances $115
|
|
|
|
2017/01/01 opening balances
|
|
assets:bank $80 = $80
|
|
assets:cash $10 = $10
|
|
liabilities $25 = $25
|
|
equity:opening balances $-115
|
|
|
|
>=0
|
|
|
|
# 2. A begin date should be ignored
|
|
<
|
|
2017/1/1
|
|
(a) 1
|
|
|
|
$ hledger close -f- -b2017/6/1 -e2018
|
|
2017/12/31 closing balances
|
|
a -1 = 0
|
|
equity:closing balances 1
|
|
|
|
2018/01/01 opening balances
|
|
a 1 = 1
|
|
equity:opening balances -1
|
|
|
|
>=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 --opening
|
|
2017/01/01 opening balances
|
|
assets:bank $80 = $80
|
|
assets:cash $10 = $10
|
|
liabilities $25 = $25
|
|
equity:opening balances $-115
|
|
|
|
>=0
|
|
|
|
# 4. Print just the closing 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 --closing
|
|
2016/12/31 closing balances
|
|
assets:bank $-80 = $0
|
|
assets:cash $-10 = $0
|
|
liabilities $-25 = $0
|
|
equity:closing balances $115
|
|
|
|
>=0
|
|
|
|
# 5. Supplying --opening --closing is the same as just "close"
|
|
<
|
|
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 --opening --closing
|
|
2016/12/31 closing balances
|
|
assets:bank $-80 = $0
|
|
assets:cash $-10 = $0
|
|
liabilities $-25 = $0
|
|
equity:closing balances $115
|
|
|
|
2017/01/01 opening balances
|
|
assets:bank $80 = $80
|
|
assets:cash $10 = $10
|
|
liabilities $25 = $25
|
|
equity:opening balances $-115
|
|
|
|
>=0
|
|
|
|
# 6. Closing a multi-priced balance. The "lot" prices are preserved.
|
|
# Only the last posting in each commodity gets a balance assertion (#1035).
|
|
# Balance assertion amounts do not have a price.
|
|
<
|
|
2019/01/01
|
|
assets 1A @ 1B
|
|
assets 1A @ 1C
|
|
equity
|
|
|
|
$ hledger -f- close assets -p 2019
|
|
2019/12/31 closing balances
|
|
assets -1A @ 1B
|
|
assets -1A @ 1C = 0A
|
|
equity:closing balances 1A @ 1B
|
|
equity:closing balances 1A @ 1C
|
|
|
|
2020/01/01 opening balances
|
|
assets 1A @ 1B
|
|
assets 1A @ 1C = 2A
|
|
equity:opening balances -1A @ 1B
|
|
equity:opening balances -1A @ 1C
|
|
|
|
>=0
|
|
|
|
# 7. Closing a multi-priced balance, slightly more complex
|
|
# (different price in each transaction). Hopefully
|
|
# equivalent to 8.
|
|
<
|
|
2019/01/01
|
|
(assets) 1A @ 1B
|
|
|
|
2019/01/02
|
|
(assets) 1A @ 2B
|
|
|
|
$ hledger -f- close assets -p 2019
|
|
2019/12/31 closing balances
|
|
assets -1A @ 1B
|
|
assets -1A @ 2B = 0A
|
|
equity:closing balances 1A @ 1B
|
|
equity:closing balances 1A @ 2B
|
|
|
|
2020/01/01 opening balances
|
|
assets 1A @ 1B
|
|
assets 1A @ 2B = 2A
|
|
equity:opening balances -1A @ 1B
|
|
equity:opening balances -1A @ 2B
|
|
|
|
>=0
|
|
|
|
# 8. Closing a multi-priced balance, a more complex example.
|
|
<
|
|
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
|
|
|
|
; Note: without these declarations, the closing/opening entries below
|
|
; would cause decimal marks to be misparsed. (How ?)
|
|
;commodity $1,000.00
|
|
;commodity 1,000.00 EUR
|
|
|
|
$ hledger -f- close -p 2016 assets liabilities
|
|
2016/12/31 closing balances
|
|
assets:bank -5,733 EUR = 0 EUR
|
|
liabilities:employer $-10,000
|
|
liabilities:employer $5,000 @ 0.93 EUR
|
|
liabilities:employer $5,000 @ 0.95 EUR = $0
|
|
liabilities:employer -1 EUR = 0 EUR
|
|
equity:closing balances $10,000.00
|
|
equity:closing balances $-5,000.00 @ 0.93 EUR
|
|
equity:closing balances $-5,000.00 @ 0.95 EUR
|
|
equity:closing balances 5,734.00 EUR
|
|
|
|
2017/01/01 opening balances
|
|
assets:bank 5,733 EUR = 5,733 EUR
|
|
liabilities:employer $10,000
|
|
liabilities:employer $-5,000 @ 0.93 EUR
|
|
liabilities:employer $-5,000 @ 0.95 EUR = $0
|
|
liabilities:employer 1 EUR = 1 EUR
|
|
equity:opening balances $-10,000.00
|
|
equity:opening balances $5,000.00 @ 0.93 EUR
|
|
equity:opening balances $5,000.00 @ 0.95 EUR
|
|
equity:opening balances -5,734.00 EUR
|
|
|
|
>=0
|