A key fix to the ways accounts were sorted

Comparing integer < amount was doing the reverse comparison.
This commit is contained in:
John Wiegley 2009-02-19 17:20:36 -04:00
parent 9805abbf2b
commit 1d85e992ca
2 changed files with 18 additions and 9 deletions

View file

@ -29,6 +29,8 @@ N $
2004/05/27 Book Store 2004/05/27 Book Store
Expenses:Books $20.00 Expenses:Books $20.00
Expenses:Cards $40.00
Expenses:Docs $30.00
Liabilities:MasterCard Liabilities:MasterCard
2004/05/27 (100) Credit card company 2004/05/27 (100) Credit card company

View file

@ -747,7 +747,7 @@ bool value_t::is_less_than(const value_t& val) const
case INTEGER: case INTEGER:
return as_long() < val.as_long(); return as_long() < val.as_long();
case AMOUNT: case AMOUNT:
return val.as_amount() < as_long(); return val.as_amount() >= as_long();
default: default:
break; break;
} }
@ -1424,20 +1424,27 @@ bool sort_value_is_less_than(const std::list<sort_value_t>& left_values,
while (left_iter != left_values.end() && while (left_iter != left_values.end() &&
right_iter != right_values.end()) { right_iter != right_values.end()) {
DEBUG("value.sort", // Don't even try to sort balance values
"Comparing " << (*left_iter).value << " < " << (*right_iter).value); if (! (*left_iter).value.is_balance() &&
! (*right_iter).value.is_balance()) {
if ((*left_iter).value < (*right_iter).value) DEBUG("value.sort",
return ! (*left_iter).inverted; "Comparing " << (*left_iter).value << " < " << (*right_iter).value);
else if ((*left_iter).value > (*right_iter).value) if ((*left_iter).value < (*right_iter).value) {
return (*left_iter).inverted; DEBUG("value.sort", " is less");
return ! (*left_iter).inverted;
}
else if ((*left_iter).value > (*right_iter).value) {
DEBUG("value.sort", " is greater");
return (*left_iter).inverted;
}
}
left_iter++; right_iter++; left_iter++; right_iter++;
} }
assert(left_iter == left_values.end()); assert(left_iter == left_values.end());
assert(right_iter == right_values.end()); assert(right_iter == right_values.end());
return false; return true;
} }
} // namespace ledger } // namespace ledger