Restored --forecast, now also --forecast-while
This commit is contained in:
parent
3c18d3054f
commit
23725ffafb
7 changed files with 318 additions and 13 deletions
12
src/chain.cc
12
src/chain.cc
|
|
@ -48,6 +48,14 @@ xact_handler_ptr chain_xact_handlers(report_t& report,
|
|||
expr.set_context(&report);
|
||||
|
||||
if (! only_preliminaries) {
|
||||
// Make sure only forecast transactions which match are allowed through
|
||||
if (report.HANDLED(forecast_while_)) {
|
||||
handler.reset(new filter_xacts
|
||||
(handler, item_predicate(report.HANDLER(forecast_while_).str(),
|
||||
report.what_to_keep()),
|
||||
report));
|
||||
}
|
||||
|
||||
// truncate_entries cuts off a certain number of _entries_ from being
|
||||
// displayed. It does not affect calculation.
|
||||
if (report.HANDLED(head_) || report.HANDLED(tail_))
|
||||
|
|
@ -183,10 +191,10 @@ xact_handler_ptr chain_xact_handlers(report_t& report,
|
|||
report.what_to_keep()),
|
||||
report));
|
||||
}
|
||||
else if (report.HANDLED(forecast_)) {
|
||||
else if (report.HANDLED(forecast_while_)) {
|
||||
forecast_xacts * forecast_handler
|
||||
= new forecast_xacts(handler,
|
||||
item_predicate(report.HANDLER(forecast_).str(),
|
||||
item_predicate(report.HANDLER(forecast_while_).str(),
|
||||
report.what_to_keep()),
|
||||
report);
|
||||
forecast_handler->add_period_entries(report.session.journal->period_entries);
|
||||
|
|
|
|||
|
|
@ -660,16 +660,14 @@ void dow_xacts::flush()
|
|||
subtotal_xacts::flush();
|
||||
}
|
||||
|
||||
void generate_xacts::add_period_entries
|
||||
(period_entries_list& period_entries)
|
||||
void generate_xacts::add_period_entries(period_entries_list& period_entries)
|
||||
{
|
||||
foreach (period_entry_t * entry, period_entries)
|
||||
foreach (xact_t * xact, entry->xacts)
|
||||
add_xact(entry->period, *xact);
|
||||
}
|
||||
|
||||
void generate_xacts::add_xact(const interval_t& period,
|
||||
xact_t& xact)
|
||||
void generate_xacts::add_xact(const interval_t& period, xact_t& xact)
|
||||
{
|
||||
pending_xacts.push_back(pending_xacts_pair(period, &xact));
|
||||
}
|
||||
|
|
@ -722,7 +720,7 @@ void budget_xacts::operator()(xact_t& xact)
|
|||
{
|
||||
bool xact_in_budget = false;
|
||||
|
||||
foreach (pending_xacts_list::value_type& pair, pending_xacts)
|
||||
foreach (pending_xacts_list::value_type& pair, pending_xacts) {
|
||||
for (account_t * acct = xact.reported_account();
|
||||
acct;
|
||||
acct = acct->parent) {
|
||||
|
|
@ -735,6 +733,7 @@ void budget_xacts::operator()(xact_t& xact)
|
|||
goto handle;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
handle:
|
||||
if (xact_in_budget && flags & BUDGET_BUDGETED) {
|
||||
|
|
|
|||
|
|
@ -815,8 +815,7 @@ class forecast_xacts : public generate_xacts
|
|||
TRACE_DTOR(forecast_xacts);
|
||||
}
|
||||
|
||||
virtual void add_xact(const interval_t& period,
|
||||
xact_t& xact);
|
||||
virtual void add_xact(const interval_t& period, xact_t& xact);
|
||||
virtual void flush();
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -371,7 +371,7 @@ option_t<report_t> * report_t::lookup_option(const char * p)
|
|||
break;
|
||||
case 'f':
|
||||
OPT(flat);
|
||||
else OPT(forecast_);
|
||||
else OPT_ALT(forecast_while_, forecast_);
|
||||
else OPT(format_);
|
||||
else OPT_ALT(head_, first_);
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -372,7 +372,7 @@ public:
|
|||
|
||||
OPTION(report_t, equity);
|
||||
OPTION(report_t, flat);
|
||||
OPTION(report_t, forecast_);
|
||||
OPTION(report_t, forecast_while_);
|
||||
OPTION(report_t, format_); // -F
|
||||
OPTION(report_t, gain); // -G
|
||||
OPTION(report_t, head_);
|
||||
|
|
|
|||
14
test/baseline/opt-actual.test
Normal file
14
test/baseline/opt-actual.test
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
print --actual
|
||||
<<<
|
||||
= account =~ /Books/
|
||||
Expenses:Taxes 0.05
|
||||
|
||||
2008/01/01 January
|
||||
Expenses:Books $10.00
|
||||
Assets:Cash $-10.00
|
||||
>>>1
|
||||
2008/01/01 January
|
||||
Expenses:Books $10.00
|
||||
Assets:Cash $-10.00
|
||||
>>>2
|
||||
=== 0
|
||||
285
test/baseline/opt-forecast-while.test
Normal file
285
test/baseline/opt-forecast-while.test
Normal file
|
|
@ -0,0 +1,285 @@
|
|||
reg --forecast-while='total < $3500' books
|
||||
<<<
|
||||
~ monthly
|
||||
Expenses:Books $10.00
|
||||
Assets:Cash
|
||||
|
||||
2008/01/01 January
|
||||
Expenses:Books $10.00
|
||||
Assets:Cash
|
||||
|
||||
2008/01/31 End of January
|
||||
Expenses:Books $10.00
|
||||
Assets:Cash
|
||||
|
||||
2008/02/01 February
|
||||
Expenses:Books $20.00
|
||||
Assets:Cash
|
||||
|
||||
2008/02/28 End of February
|
||||
Expenses:Books $20.00
|
||||
Assets:Cash
|
||||
|
||||
2008/03/01 March
|
||||
Expenses:Books $30.00
|
||||
Assets:Cash
|
||||
|
||||
2008/03/31 End of March
|
||||
Expenses:Books $30.00
|
||||
Assets:Cash
|
||||
|
||||
2008/04/01 April
|
||||
Expenses:Books $40.00
|
||||
Assets:Cash
|
||||
|
||||
2008/04/30 End of April
|
||||
Expenses:Books $40.00
|
||||
Assets:Cash
|
||||
|
||||
2008/05/01 May
|
||||
Expenses:Books $50.00
|
||||
Assets:Cash
|
||||
|
||||
2008/05/31 End of May
|
||||
Expenses:Books $50.00
|
||||
Assets:Cash
|
||||
|
||||
2008/06/01 June
|
||||
Expenses:Books $60.00
|
||||
Assets:Cash
|
||||
|
||||
2008/06/30 End of June
|
||||
Expenses:Books $60.00
|
||||
Assets:Cash
|
||||
|
||||
2008/07/01 July
|
||||
Expenses:Books $70.00
|
||||
Assets:Cash
|
||||
|
||||
2008/07/31 End of July
|
||||
Expenses:Books $70.00
|
||||
Assets:Cash
|
||||
|
||||
2008/08/01 August
|
||||
Expenses:Books $80.00
|
||||
Assets:Cash
|
||||
|
||||
2008/08/31 End of August
|
||||
Expenses:Books $80.00
|
||||
Assets:Cash
|
||||
|
||||
2008/09/01 September
|
||||
Expenses:Books $90.00
|
||||
Assets:Cash
|
||||
|
||||
2008/09/30 End of September
|
||||
Expenses:Books $90.00
|
||||
Assets:Cash
|
||||
|
||||
2008/10/01 October
|
||||
Expenses:Books $100.00
|
||||
Assets:Cash
|
||||
|
||||
2008/10/31 End of October
|
||||
Expenses:Books $100.00
|
||||
Assets:Cash
|
||||
|
||||
2008/11/01 November
|
||||
Expenses:Books $110.00
|
||||
Assets:Cash
|
||||
|
||||
2008/11/30 End of November
|
||||
Expenses:Books $110.00
|
||||
Assets:Cash
|
||||
|
||||
2008/12/01 December
|
||||
Expenses:Books $120.00
|
||||
Assets:Cash
|
||||
|
||||
2008/12/31 End of December
|
||||
Expenses:Books $120.00
|
||||
Assets:Cash
|
||||
|
||||
2009/01/01 January
|
||||
Expenses:Books $10.00
|
||||
Assets:Cash
|
||||
|
||||
2009/01/31 End of January
|
||||
Expenses:Books $10.00
|
||||
Assets:Cash
|
||||
|
||||
2009/02/01 February
|
||||
Expenses:Books $20.00
|
||||
Assets:Cash
|
||||
|
||||
2009/02/28 End of February
|
||||
Expenses:Books $20.00
|
||||
Assets:Cash
|
||||
|
||||
2009/03/01 March
|
||||
Expenses:Books $30.00
|
||||
Assets:Cash
|
||||
|
||||
2009/03/31 End of March
|
||||
Expenses:Books $30.00
|
||||
Assets:Cash
|
||||
|
||||
2009/04/01 April
|
||||
Expenses:Books $40.00
|
||||
Assets:Cash
|
||||
|
||||
2009/04/30 End of April
|
||||
Expenses:Books $40.00
|
||||
Assets:Cash
|
||||
|
||||
2009/05/01 May
|
||||
Expenses:Books $50.00
|
||||
Assets:Cash
|
||||
|
||||
2009/05/31 End of May
|
||||
Expenses:Books $50.00
|
||||
Assets:Cash
|
||||
|
||||
2009/06/01 June
|
||||
Expenses:Books $60.00
|
||||
Assets:Cash
|
||||
|
||||
2009/06/30 End of June
|
||||
Expenses:Books $60.00
|
||||
Assets:Cash
|
||||
|
||||
2009/07/01 July
|
||||
Expenses:Books $70.00
|
||||
Assets:Cash
|
||||
|
||||
2009/07/31 End of July
|
||||
Expenses:Books $70.00
|
||||
Assets:Cash
|
||||
|
||||
2009/08/01 August
|
||||
Expenses:Books $80.00
|
||||
Assets:Cash
|
||||
|
||||
2009/08/31 End of August
|
||||
Expenses:Books $80.00
|
||||
Assets:Cash
|
||||
|
||||
2009/09/01 September
|
||||
Expenses:Books $90.00
|
||||
Assets:Cash
|
||||
|
||||
2009/09/30 End of September
|
||||
Expenses:Books $90.00
|
||||
Assets:Cash
|
||||
|
||||
2009/10/01 October
|
||||
Expenses:Books $100.00
|
||||
Assets:Cash
|
||||
|
||||
2009/10/31 End of October
|
||||
Expenses:Books $100.00
|
||||
Assets:Cash
|
||||
|
||||
2009/11/01 November
|
||||
Expenses:Books $110.00
|
||||
Assets:Cash
|
||||
|
||||
2009/11/30 End of November
|
||||
Expenses:Books $110.00
|
||||
Assets:Cash
|
||||
|
||||
2009/12/01 December
|
||||
Expenses:Books $120.00
|
||||
Assets:Cash
|
||||
|
||||
2009/12/31 End of December
|
||||
Expenses:Books $120.00
|
||||
Assets:Cash
|
||||
>>>1
|
||||
08-Jan-01 January Expenses:Books $10.00 $10.00
|
||||
08-Jan-31 End of January Expenses:Books $10.00 $20.00
|
||||
08-Feb-01 February Expenses:Books $20.00 $40.00
|
||||
08-Feb-28 End of February Expenses:Books $20.00 $60.00
|
||||
08-Mar-01 March Expenses:Books $30.00 $90.00
|
||||
08-Mar-31 End of March Expenses:Books $30.00 $120.00
|
||||
08-Apr-01 April Expenses:Books $40.00 $160.00
|
||||
08-Apr-30 End of April Expenses:Books $40.00 $200.00
|
||||
08-May-01 May Expenses:Books $50.00 $250.00
|
||||
08-May-31 End of May Expenses:Books $50.00 $300.00
|
||||
08-Jun-01 June Expenses:Books $60.00 $360.00
|
||||
08-Jun-30 End of June Expenses:Books $60.00 $420.00
|
||||
08-Jul-01 July Expenses:Books $70.00 $490.00
|
||||
08-Jul-31 End of July Expenses:Books $70.00 $560.00
|
||||
08-Aug-01 August Expenses:Books $80.00 $640.00
|
||||
08-Aug-31 End of August Expenses:Books $80.00 $720.00
|
||||
08-Sep-01 September Expenses:Books $90.00 $810.00
|
||||
08-Sep-30 End of September Expenses:Books $90.00 $900.00
|
||||
08-Oct-01 October Expenses:Books $100.00 $1000.00
|
||||
08-Oct-31 End of October Expenses:Books $100.00 $1100.00
|
||||
08-Nov-01 November Expenses:Books $110.00 $1210.00
|
||||
08-Nov-30 End of November Expenses:Books $110.00 $1320.00
|
||||
08-Dec-01 December Expenses:Books $120.00 $1440.00
|
||||
08-Dec-31 End of December Expenses:Books $120.00 $1560.00
|
||||
09-Jan-01 January Expenses:Books $10.00 $1570.00
|
||||
09-Jan-31 End of January Expenses:Books $10.00 $1580.00
|
||||
09-Feb-01 February Expenses:Books $20.00 $1600.00
|
||||
09-Feb-28 End of February Expenses:Books $20.00 $1620.00
|
||||
09-Mar-01 March Expenses:Books $30.00 $1650.00
|
||||
09-Mar-31 End of March Expenses:Books $30.00 $1680.00
|
||||
09-Apr-01 April Expenses:Books $40.00 $1720.00
|
||||
09-Apr-30 End of April Expenses:Books $40.00 $1760.00
|
||||
09-May-01 May Expenses:Books $50.00 $1810.00
|
||||
09-May-31 End of May Expenses:Books $50.00 $1860.00
|
||||
09-Jun-01 June Expenses:Books $60.00 $1920.00
|
||||
09-Jun-30 End of June Expenses:Books $60.00 $1980.00
|
||||
09-Jul-01 July Expenses:Books $70.00 $2050.00
|
||||
09-Jul-31 End of July Expenses:Books $70.00 $2120.00
|
||||
09-Aug-01 August Expenses:Books $80.00 $2200.00
|
||||
09-Aug-31 End of August Expenses:Books $80.00 $2280.00
|
||||
09-Sep-01 September Expenses:Books $90.00 $2370.00
|
||||
09-Sep-30 End of September Expenses:Books $90.00 $2460.00
|
||||
09-Oct-01 October Expenses:Books $100.00 $2560.00
|
||||
09-Oct-31 End of October Expenses:Books $100.00 $2660.00
|
||||
09-Nov-01 November Expenses:Books $110.00 $2770.00
|
||||
09-Nov-30 End of November Expenses:Books $110.00 $2880.00
|
||||
09-Dec-01 December Expenses:Books $120.00 $3000.00
|
||||
09-Dec-31 End of December Expenses:Books $120.00 $3120.00
|
||||
09-Mar-01 Forecast entry Expenses:Books $10.00 $3130.00
|
||||
09-Apr-01 Forecast entry Expenses:Books $10.00 $3140.00
|
||||
09-May-01 Forecast entry Expenses:Books $10.00 $3150.00
|
||||
09-Jun-01 Forecast entry Expenses:Books $10.00 $3160.00
|
||||
09-Jul-01 Forecast entry Expenses:Books $10.00 $3170.00
|
||||
09-Aug-01 Forecast entry Expenses:Books $10.00 $3180.00
|
||||
09-Sep-01 Forecast entry Expenses:Books $10.00 $3190.00
|
||||
09-Oct-01 Forecast entry Expenses:Books $10.00 $3200.00
|
||||
09-Nov-01 Forecast entry Expenses:Books $10.00 $3210.00
|
||||
09-Dec-01 Forecast entry Expenses:Books $10.00 $3220.00
|
||||
10-Jan-01 Forecast entry Expenses:Books $10.00 $3230.00
|
||||
10-Feb-01 Forecast entry Expenses:Books $10.00 $3240.00
|
||||
10-Mar-01 Forecast entry Expenses:Books $10.00 $3250.00
|
||||
10-Apr-01 Forecast entry Expenses:Books $10.00 $3260.00
|
||||
10-May-01 Forecast entry Expenses:Books $10.00 $3270.00
|
||||
10-Jun-01 Forecast entry Expenses:Books $10.00 $3280.00
|
||||
10-Jul-01 Forecast entry Expenses:Books $10.00 $3290.00
|
||||
10-Aug-01 Forecast entry Expenses:Books $10.00 $3300.00
|
||||
10-Sep-01 Forecast entry Expenses:Books $10.00 $3310.00
|
||||
10-Oct-01 Forecast entry Expenses:Books $10.00 $3320.00
|
||||
10-Nov-01 Forecast entry Expenses:Books $10.00 $3330.00
|
||||
10-Dec-01 Forecast entry Expenses:Books $10.00 $3340.00
|
||||
11-Jan-01 Forecast entry Expenses:Books $10.00 $3350.00
|
||||
11-Feb-01 Forecast entry Expenses:Books $10.00 $3360.00
|
||||
11-Mar-01 Forecast entry Expenses:Books $10.00 $3370.00
|
||||
11-Apr-01 Forecast entry Expenses:Books $10.00 $3380.00
|
||||
11-May-01 Forecast entry Expenses:Books $10.00 $3390.00
|
||||
11-Jun-01 Forecast entry Expenses:Books $10.00 $3400.00
|
||||
11-Jul-01 Forecast entry Expenses:Books $10.00 $3410.00
|
||||
11-Aug-01 Forecast entry Expenses:Books $10.00 $3420.00
|
||||
11-Sep-01 Forecast entry Expenses:Books $10.00 $3430.00
|
||||
11-Oct-01 Forecast entry Expenses:Books $10.00 $3440.00
|
||||
11-Nov-01 Forecast entry Expenses:Books $10.00 $3450.00
|
||||
11-Dec-01 Forecast entry Expenses:Books $10.00 $3460.00
|
||||
12-Jan-01 Forecast entry Expenses:Books $10.00 $3470.00
|
||||
12-Feb-01 Forecast entry Expenses:Books $10.00 $3480.00
|
||||
12-Mar-01 Forecast entry Expenses:Books $10.00 $3490.00
|
||||
>>>2
|
||||
=== 0
|
||||
Loading…
Add table
Reference in a new issue