Allow an amount to be zero, even if cost is non-zero
The only real change is that exchanges of zero-amount will not result in any exchange at all, just the "motions". Fixes 6DAB9FE3-1399-4727-9AB1-FE413FB85A03
This commit is contained in:
parent
3c692a94d4
commit
463f741ed2
2 changed files with 14 additions and 2 deletions
|
|
@ -418,11 +418,13 @@ commodity_t::exchange(const amount_t& amount,
|
|||
if (commodity.annotated)
|
||||
current_annotation = &as_annotated_commodity(commodity).details;
|
||||
|
||||
amount_t per_unit_cost = (is_per_unit ? cost : cost / amount).abs();
|
||||
amount_t per_unit_cost =
|
||||
(is_per_unit || amount.is_realzero() ? cost : cost / amount).abs();
|
||||
|
||||
DEBUG("commodity.prices.add", "exchange: per-unit-cost = " << per_unit_cost);
|
||||
|
||||
exchange(commodity, per_unit_cost, moment ? *moment : CURRENT_TIME());
|
||||
if (! per_unit_cost.is_realzero())
|
||||
exchange(commodity, per_unit_cost, moment ? *moment : CURRENT_TIME());
|
||||
|
||||
cost_breakdown_t breakdown;
|
||||
breakdown.final_cost = ! is_per_unit ? cost : cost * amount;
|
||||
|
|
|
|||
10
test/regress/6DAB9FE3.test
Normal file
10
test/regress/6DAB9FE3.test
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
reg -E
|
||||
<<<
|
||||
2009/01/01 Sample
|
||||
assets 0 FOO @ $8.88
|
||||
equity
|
||||
>>>1
|
||||
09-Jan-01 Sample assets 0 0
|
||||
equity 0 0
|
||||
>>>2
|
||||
=== 0
|
||||
Loading…
Add table
Reference in a new issue