Open
Description
Using the =*
balance assignment on an account with subaccounts sets all other commodities balance to 0. According to the documentation, other commodities should be unaffected as long as I'm using =*
and not ==*
. Compare the following examples:
Without subaccounts - correct behaviour
2023-10-01 | Add EUR
equity -10eur
assets 10eur
2023-10-01 | Add USD
equity -12usd
assets 12usd
2023-10-02 | Assign
assets =* 20usd
equity
The assignment transaction adds $8 to achieve the balance of $20, but eur is unaffected - as expected:
$ hledger print -x
2023-10-01 | Add EUR
equity -10eur
assets 10eur
2023-10-01 | Add USD
equity -12usd
assets 12usd
2023-10-02 | Assign
assets 8usd =* 20usd
equity -8usd
$ hledger balance assets
10eur
20usd assets
--------------------
10eur
20usd
With subaccounts - unexpected behaviour
Asserting total balance of an account which has subacounts
2023-10-01 | Add EUR
equity -10eur
assets 10eur
2023-10-01 | Add USD
equity -12usd
assets 12usd
2023-10-02 | Assign
assets =* 20usd
equity
Now, a -10eur
posting appears and clears the eur balance of assets
:
$ hledger print -x
2023-10-01 | Add EUR
equity -10eur
assets:cash 10eur
2023-10-01 | Add USD
equity -12usd
assets:cash 12usd
2023-10-02 | Assign
assets -10eur
assets 8usd =* 20usd
equity 10eur
equity -8usd
$ hledger reg assets
2023-10-01 | Add EUR assets:cash 10eur 10eur
2023-10-01 | Add USD assets:cash 12usd 10eur
12usd
2023-10-02 | Assign assets -10eur
8usd 20usd
$ hledger balance assets
-10eur
8usd assets
10eur
12usd assets:cash
--------------------
20usd
Expected behaviour
I'd expect a single posting assets 8usd
be generated to get the correct usd balance, and eur balance to remain -10eur
.
Note that this works correctly when the posting value is given explicitely:
# journal.hledger
2023-10-01 | Add EUR
equity -10eur
assets:cash 10eur
2023-10-01 | Add USD
equity -12usd
assets:cash 12usd
2023-10-02 | Assert
assets 8usd =* 20usd
equity
hledger balance assets
8usd assets
10eur
12usd assets:cash
--------------------
10eur
20usd
Metadata
Metadata
Assignees
Labels
Something wrong, confusing or sub-standard in the software, docs, or user experience.Affects just a few users.Minor to moderate usability/doc bug, reasonably easy to avoid or tolerate.Documentation-related.The journal file format, and its features.To unblock: needs code/code updatesTo unblock: needs analysis of interactions with other features, users, ecosystem