Have interval_xacts construct temps on a list
This commit is contained in:
parent
50f434a5e3
commit
36b96c47ac
3 changed files with 13 additions and 13 deletions
|
|
@ -115,7 +115,8 @@ xact_handler_ptr chain_xact_handlers(report_t& report,
|
||||||
// weekly or monthly.
|
// weekly or monthly.
|
||||||
if (report.HANDLED(period_)) {
|
if (report.HANDLED(period_)) {
|
||||||
handler.reset(new interval_xacts(handler, expr,
|
handler.reset(new interval_xacts(handler, expr,
|
||||||
report.HANDLER(period_).str()));
|
report.HANDLER(period_).str(),
|
||||||
|
report.session.master.get()));
|
||||||
handler.reset(new sort_xacts(handler, "date"));
|
handler.reset(new sort_xacts(handler, "date"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -493,11 +493,13 @@ void interval_xacts::operator()(xact_t& xact)
|
||||||
|
|
||||||
// Generate a null transaction, so the intervening periods can be seen
|
// Generate a null transaction, so the intervening periods can be seen
|
||||||
// when -E is used, or if the calculated amount ends up being non-zero
|
// when -E is used, or if the calculated amount ends up being non-zero
|
||||||
account_t empty_account(NULL, "<Empty>");
|
entry_temps.push_back(entry_t());
|
||||||
entry_t null_entry;
|
entry_t& null_entry = entry_temps.back();
|
||||||
null_entry.add_flags(ITEM_TEMP);
|
null_entry.add_flags(ITEM_TEMP);
|
||||||
null_entry._date = quant;
|
null_entry._date = quant;
|
||||||
xact_t null_xact(&empty_account);
|
|
||||||
|
xact_temps.push_back(xact_t(&empty_account));
|
||||||
|
xact_t& null_xact = xact_temps.back();
|
||||||
null_xact.add_flags(ITEM_TEMP);
|
null_xact.add_flags(ITEM_TEMP);
|
||||||
null_xact.amount = 0L;
|
null_xact.amount = 0L;
|
||||||
null_entry.add_xact(&null_xact);
|
null_entry.add_xact(&null_xact);
|
||||||
|
|
|
||||||
|
|
@ -570,23 +570,20 @@ class interval_xacts : public subtotal_xacts
|
||||||
xact_t * last_xact;
|
xact_t * last_xact;
|
||||||
bool started;
|
bool started;
|
||||||
|
|
||||||
|
std::list<entry_t> entry_temps;
|
||||||
|
std::list<xact_t> xact_temps;
|
||||||
|
account_t empty_account;
|
||||||
|
|
||||||
interval_xacts();
|
interval_xacts();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
interval_xacts(xact_handler_ptr _handler, expr_t& amount_expr,
|
interval_xacts(xact_handler_ptr _handler, expr_t& amount_expr,
|
||||||
const interval_t& _interval)
|
const interval_t& _interval, account_t * master = NULL)
|
||||||
: subtotal_xacts(_handler, amount_expr), interval(_interval),
|
: subtotal_xacts(_handler, amount_expr), interval(_interval),
|
||||||
last_xact(NULL), started(false) {
|
last_xact(NULL), started(false), empty_account(master, "<Empty>") {
|
||||||
TRACE_CTOR(interval_xacts,
|
TRACE_CTOR(interval_xacts,
|
||||||
"xact_handler_ptr, const interval_t&, bool");
|
"xact_handler_ptr, const interval_t&, bool");
|
||||||
}
|
}
|
||||||
interval_xacts(xact_handler_ptr _handler, expr_t& amount_expr,
|
|
||||||
const string& _interval)
|
|
||||||
: subtotal_xacts(_handler, amount_expr), interval(_interval),
|
|
||||||
last_xact(NULL), started(false) {
|
|
||||||
TRACE_CTOR(interval_xacts,
|
|
||||||
"xact_handler_ptr, const string&, bool");
|
|
||||||
}
|
|
||||||
virtual ~interval_xacts() throw() {
|
virtual ~interval_xacts() throw() {
|
||||||
TRACE_DTOR(interval_xacts);
|
TRACE_DTOR(interval_xacts);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue