summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/filters.cc23
-rw-r--r--src/filters.h6
2 files changed, 9 insertions, 20 deletions
diff --git a/src/filters.cc b/src/filters.cc
index 28510c79..3f9b8187 100644
--- a/src/filters.cc
+++ b/src/filters.cc
@@ -310,15 +310,7 @@ void changed_value_xacts::output_diff(const date_t& date)
value_t cur_bal;
last_xact->xdata().date = date;
-#if 0
- compute_total(cur_bal, details_t(*last_xact));
-#endif
- cur_bal.round();
-
-#if 0
- // jww (2008-04-24): What does this do?
- last_xact->xdata().date = 0;
-#endif
+ cur_bal = total_expr.calc(*last_xact).round();
if (value_t diff = cur_bal - last_balance) {
entry_temps.push_back(entry_t());
@@ -341,12 +333,8 @@ void changed_value_xacts::operator()(xact_t& xact)
item_handler<xact_t>::operator()(xact);
-#if 0
- compute_total(last_balance, details_t(xact));
-#endif
- last_balance.round();
-
- last_xact = &xact;
+ last_balance = total_expr.calc(xact).round();
+ last_xact = &xact;
}
void component_xacts::operator()(xact_t& xact)
@@ -355,10 +343,9 @@ void component_xacts::operator()(xact_t& xact)
if (xact.has_xdata() &&
xact.xdata().has_component_xacts())
#if 0
- xact.xdata().walk_component_xacts(*handler);
-#else
- ;
+ xact.xdata().walk_component_xacts(*handler)
#endif
+ ;
else
(*handler)(xact);
}
diff --git a/src/filters.h b/src/filters.h
index 59c8f52c..d7be70ff 100644
--- a/src/filters.h
+++ b/src/filters.h
@@ -366,6 +366,7 @@ class changed_value_xacts : public item_handler<xact_t>
// This filter requires that calc_xacts be used at some point
// later in the chain.
+ expr_t total_expr;
bool changed_values_only;
xact_t * last_xact;
value_t last_balance;
@@ -377,8 +378,9 @@ class changed_value_xacts : public item_handler<xact_t>
public:
changed_value_xacts(xact_handler_ptr handler,
- bool _changed_values_only)
- : item_handler<xact_t>(handler),
+ const expr_t& _total_expr,
+ bool _changed_values_only)
+ : item_handler<xact_t>(handler), total_expr(_total_expr),
changed_values_only(_changed_values_only), last_xact(NULL) {
TRACE_CTOR(changed_value_xacts,
"xact_handler_ptr, bool");