A key fix to the ways accounts were sorted
Comparing integer < amount was doing the reverse comparison.
This commit is contained in:
parent
9805abbf2b
commit
1d85e992ca
2 changed files with 18 additions and 9 deletions
|
|
@ -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
|
||||||
|
|
|
||||||
25
src/value.cc
25
src/value.cc
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue