journal: doc: move multicommodity assertions doc to right place

This commit is contained in:
Simon Michael 2018-11-25 20:48:13 -08:00
parent 7114da4baf
commit a2faa8dfbf
2 changed files with 48 additions and 47 deletions

View File

@ -397,11 +397,48 @@ partial balance assertion. This is compatible with Ledger, and makes
it possible to make assertions about accounts containing multiple it possible to make assertions about accounts containing multiple
commodities. commodities.
To assert each commodity's balance in such a multi-commodity account, To assert the balance of more than a single commodity, you can add
you can add multiple postings (with amount 0 if necessary). But note multiple postings (with amount 0 if necessary).
that no matter how many assertions you add, you can't be sure the
account does not contain some unexpected commodity. (We'll add support To instead assert a commodity's balance to the exclusion of all others
for this kind of total balance assertion if there's demand.) in an account, use the exact assertion form `==EXPECTEDBALANCE` (note
the doubled equals sign). This, unlike multiple partial assertions,
ensures that the account contains no unexpected commodities -- or
equivalently, that the balance of any other commodity is 0.
``` {.journal}
2013/1/1
a $1
a 1€
b $-1
c -1€
2013/1/2 ; These assertions succeed
a 0 = $1
a 0 = 1€
b 0 == $-1
c 0 == -1€
2013/1/3 ; This assertion fails as 'a' also contains 1€
a 0 == $1
```
Unfortunately, as of now, there is no way to specify that an account
contains exactly values of multiple commodities. Until and unless that
capability is added, the best workaround is to isolate each commodity
into individual subaccounts:
``` {.journal}
2013/1/1
a:usd $1
a:euro 1€
b
2013/1/2
a 0 == 0
a:usd 0 == $1
a:euro 0 == 1€
```
### Assertions and subaccounts ### Assertions and subaccounts

View File

@ -454,49 +454,13 @@ The asserted balance must be a simple single-commodity amount, and in
fact the assertion checks only this commodity's balance within the fact the assertion checks only this commodity's balance within the
(possibly multi-commodity) account balance. We could call this a partial (possibly multi-commodity) account balance. We could call this a partial
balance assertion. This is compatible with Ledger, and makes it possible balance assertion. This is compatible with Ledger, and makes it possible
to make assertions about accounts containing multiple commodities. To to make assertions about accounts containing multiple commodities.
assert the balance of more than a single commodity, you can add multiple
postings (with amount 0 if necessary).
To instead assert a commodity's balance to the exclusion of all others To assert each commodity's balance in such a multi-commodity account,
in an account, use the exact assertion form `==EXPECTEDBALANCE` (note you can add multiple postings (with amount 0 if necessary). But note
the doubled equals sign). This, unlike multiple partial assertions, that no matter how many assertions you add, you can't be sure the
ensures that the account contains no unexpected commodities -- or account does not contain some unexpected commodity. (We'll add support
equivalently, that the balance of any other commodity is 0. for this kind of total balance assertion if there's demand.)
``` {.journal}
2013/1/1
a $1
a 1€
b $-1
c -1€
2013/1/2 ; These assertions succeed
a 0 = $1
a 0 = 1€
b 0 == $-1
c 0 == -1€
2013/1/3 ; This assertion fails as 'a' also contains 1€
a 0 == $1
```
Unfortunately, as of now, there is no way to specify that an account
contains exactly values of multiple commodities. Until and unless that
capability is added, the best workaround is to isolate each commodity
into individual subaccounts:
``` {.journal}
2013/1/1
a:usd $1
a:euro 1€
b
2013/1/2
a 0 == 0
a:usd 0 == $1
a:euro 0 == 1€
```
#### Assertions and subaccounts #### Assertions and subaccounts