mirror of
https://github.com/simonmichael/hledger.git
synced 2024-11-10 14:16:41 +03:00
924ec1c98d
As mentioned by netvor on IRC, the unbalanced transaction error was not too clear when postings all have the same sign. Some other wording has been clarified, and the main error message is now shown on multiple lines for readability (at the cost of predictability/grepability..) There's also a probably unnoticeable change: selecting which parts of the error to show is now based on display precisions (reusing the balanced check logic), rather than original precisions.
148 lines
3.8 KiB
Plaintext
148 lines
3.8 KiB
Plaintext
# http://code.google.com/p/hledger/issues/detail?id=23
|
|
#
|
|
# 1. original test case, this should balance since price precisions do
|
|
# not affect the canonical display precisions used for display and balancing
|
|
hledger -f - print
|
|
<<<
|
|
2010/1/1 x
|
|
A 55.3653 C @ 30.92189512 D
|
|
A -1712 D
|
|
>>>
|
|
2010-01-01 x
|
|
A 55.3653 C @ 30.92189512 D
|
|
A -1712 D
|
|
|
|
>>>=0
|
|
|
|
# 2. here the price should be printed with its original precision, not
|
|
# the canonical display precision. And the inferred amount should be printed
|
|
# with the canonical precision (2 digits, inferred from the first posting).
|
|
hledger -f - print --explicit
|
|
<<<
|
|
2010/1/1
|
|
a $0.00
|
|
a 1C @ $1.0049
|
|
a
|
|
>>>
|
|
2010-01-01
|
|
a 0
|
|
a 1C @ $1.0049
|
|
a $-1.00
|
|
|
|
>>>=0
|
|
|
|
# 3. with $'s display precision at 3 or more, this txn should not balance.
|
|
# The error message shows the difference with full precision.
|
|
hledger -f - balance --no-total --cost --empty
|
|
<<<
|
|
2010/1/1
|
|
a 1C @ $1.0049
|
|
a $-1.000
|
|
>>>2 /should be 0 but is: \$0.0049/
|
|
>>>= 1
|
|
|
|
# 4. with $'s display precision at 2 or less, this txn should balance
|
|
hledger -f - balance --no-total --cost --empty
|
|
<<<
|
|
2010/1/1
|
|
a 1C @ $1.0049
|
|
a $-1.00
|
|
>>>
|
|
0 a
|
|
>>>=0
|
|
|
|
# 5. avamk's 2011/1/19 example
|
|
hledger -f - balance --cost
|
|
<<<
|
|
2001/01/01 * ACME fund
|
|
assets:investment:ACME 203.890 ACME @ $16.02
|
|
equity:opening balances
|
|
>>>
|
|
$3266.32 assets:investment:ACME
|
|
$-3266.32 equity:opening balances
|
|
--------------------
|
|
0
|
|
>>>=0
|
|
|
|
# hledger 0.14pre: precision=2, presumably from price
|
|
# $3266.32 assets:investment:ACME
|
|
# $-3266.32 equity:opening balances
|
|
#--------------------
|
|
# $0.00
|
|
#
|
|
# ledger "2.6.0.90" with -s: full precision, ignores price
|
|
# $3266.3178 assets:investment:ACME
|
|
# $-3266.3178 equity:opening balances
|
|
#
|
|
# ledger 3: precision=0, uses default, ignores price
|
|
# $3266 assets:investment:ACME
|
|
# $-3266 equity:opening balances
|
|
#--------------------
|
|
# 0
|
|
|
|
## 6. with a default commodity..
|
|
hledger -f - balance --cost
|
|
<<<
|
|
D $1000.0
|
|
2001/01/01 * ACME fund
|
|
assets:investment:ACME 203.890 ACME @ $16.02
|
|
equity:opening balances
|
|
>>>
|
|
$3266.3 assets:investment:ACME
|
|
$-3266.3 equity:opening balances
|
|
--------------------
|
|
0
|
|
>>>=0
|
|
### hledger 0.14pre: precision=2, presumably from price, ignores D
|
|
### $3266.32 assets:investment:ACME
|
|
### $-3266.32 equity:opening balances
|
|
###--------------------
|
|
### $0.00
|
|
###
|
|
### ledger "2.6.0.90" with -s: full precision, ignores price and D
|
|
### $3266.3178 assets:investment:ACME
|
|
### $-3266.3178 equity:opening balances
|
|
###
|
|
### ledger 3: precision=1, ignores price, observes D
|
|
### $3266.3 assets:investment:ACME
|
|
### $-3266.3 equity:opening balances
|
|
###--------------------
|
|
### 0
|
|
|
|
#
|
|
# 7. when there are multiple postings in the commodity being priced,
|
|
# show the averaged unit price, with precision equal to the sum of
|
|
# the max precisions of the commodities being converted (#262).
|
|
# Here the (irrational) price should be displayed with just precision 4
|
|
# (C's precision 2 + D's precision 2).
|
|
hledger -f- print --explicit
|
|
<<<
|
|
2015/1/1
|
|
c C 10.00
|
|
c C 11.00
|
|
d D -320.00
|
|
>>>
|
|
2015-01-01
|
|
c C 10.00 @ D 15.2381
|
|
c C 11.00 @ D 15.2381
|
|
d D -320.00
|
|
|
|
>>>=0
|
|
|
|
|
|
## 8. Here the price should be displayed with precision 7
|
|
# (E's precision 4 + F's precision 3).
|
|
hledger -f- print --explicit
|
|
<<<
|
|
2015/1/1
|
|
e E 10.0000
|
|
e E 11
|
|
f F -320.000
|
|
>>>
|
|
2015-01-01
|
|
e E 10.0000 @ F 15.2380952
|
|
e E 11.0000 @ F 15.2380952
|
|
f F -320.000
|
|
|
|
>>>=0
|