Fixed the market valuation function for balances.

This commit is contained in:
John Wiegley 2009-01-19 22:30:46 -04:00
parent 7cc64c04a5
commit c6303ab9ef
2 changed files with 11 additions and 8 deletions

View file

@ -158,17 +158,19 @@ balance_t& balance_t::operator/=(const amount_t& amt)
}
optional<balance_t>
balance_t::value(const optional<datetime_t>& moment) const
balance_t::value(const optional<datetime_t>& moment,
const optional<commodity_t&>& in_terms_of) const
{
optional<balance_t> temp;
foreach (const amounts_map::value_type& pair, amounts)
if (optional<amount_t> val = pair.second.value(moment)) {
if (! temp)
temp = balance_t();
foreach (const amounts_map::value_type& pair, amounts) {
if (! temp)
temp = balance_t();
if (optional<amount_t> val = pair.second.value(moment, in_terms_of))
*temp += *val;
}
else
*temp += pair.second;
}
return temp;
}

View file

@ -377,7 +377,8 @@ public:
return *this = temp;
}
optional<balance_t> value(const optional<datetime_t>& moment = none) const;
optional<balance_t> value(const optional<datetime_t>& moment = none,
const optional<commodity_t&>& in_terms_of = none) const;
/**
* Truth tests. An balance may be truth test in two ways: