More improvements to nail_down; fixes #715

This commit is contained in:
John Wiegley 2012-03-19 00:41:32 -05:00
parent 60a281a55a
commit cd50fe0547
2 changed files with 21 additions and 2 deletions

View file

@ -813,10 +813,12 @@ value_t report_t::fn_nail_down(call_scope_t& args)
switch (arg0.type()) { switch (arg0.type()) {
case value_t::AMOUNT: { case value_t::AMOUNT: {
amount_t tmp(arg0.as_amount()); amount_t tmp(arg0.as_amount());
if (tmp.has_commodity() && ! arg1.is_null()) { if (tmp.has_commodity() && ! tmp.is_null() && ! tmp.is_realzero()) {
arg1 = arg1.strip_annotations(keep_details_t()).to_amount();
expr_t value_expr(is_expr(arg1) ? expr_t value_expr(is_expr(arg1) ?
as_expr(arg1) : as_expr(arg1) :
expr_t::op_t::wrap_value(arg1.unrounded() / arg0)); expr_t::op_t::wrap_value(arg1.unrounded() /
arg0.number()));
std::ostringstream buf; std::ostringstream buf;
value_expr.print(buf); value_expr.print(buf);
value_expr.set_text(buf.str()); value_expr.set_text(buf.str());

View file

@ -0,0 +1,17 @@
2011-01-01 * Opening balance
Assets:Investment 100 "AAA" @ 16.58900489 EUR
Assets:Investments 5 "BBB" @ 24.79900855 EUR
Equity:Opening balance
2011-02-10 * Reimbursement: Taxi / Subway / Bus / Train
Assets:A 1.59 GBP
Assets:B -1.80 EUR @ 0.884955752212389381 GBP
test reg -X EUR -H
11-Jan-01 Opening balance Assets:Investment 1658.90 EUR 1658.90 EUR
Assets:Investments 124.00 EUR 1782.90 EUR
Equity:Opening balance -1782.90 EUR 0
11-Feb-10 Reimbursement: Taxi.. <Adjustment> -0.01 EUR -0.01 EUR
Assets:A 1.80 EUR 1.80 EUR
Assets:B -1.80 EUR 0
end test