Restored the --budget option

This commit is contained in:
John Wiegley 2009-02-20 23:08:42 -04:00
parent 96ff798736
commit fc349389e3
9 changed files with 296 additions and 24 deletions

View file

@ -174,7 +174,7 @@ void export_value()
.def(self / double())
.def(double() / self)
.def("negate", &value_t::negate)
.def("negated", &value_t::negated)
.def("in_place_negate", &value_t::in_place_negate)
.def("in_place_not", &value_t::in_place_not)
.def(- self)

View file

@ -291,7 +291,7 @@ public:
/** Returns the negated value of an amount.
@see operator-()
*/
amount_t negate() const {
amount_t negated() const {
amount_t temp(*this);
temp.in_place_negate();
return temp;
@ -299,7 +299,7 @@ public:
void in_place_negate();
amount_t operator-() const {
return negate();
return negated();
}
/** Returns the absolute value of an amount. Equivalent to:
@ -309,7 +309,7 @@ public:
*/
amount_t abs() const {
if (sign() < 0)
return negate();
return negated();
return *this;
}

View file

@ -81,7 +81,7 @@ balance_t& balance_t::operator-=(const amount_t& amt)
if (i->second.is_realzero())
amounts.erase(i);
} else {
amounts.insert(amounts_map::value_type(&amt.commodity(), amt.negate()));
amounts.insert(amounts_map::value_type(&amt.commodity(), amt.negated()));
}
return *this;
}

View file

@ -140,16 +140,16 @@ bool entry_base_t::finalize()
const balance_t& bal(balance.as_balance());
foreach (const balance_t::amounts_map::value_type& pair, bal.amounts) {
if (first) {
null_xact->amount = pair.second.negate();
null_xact->amount = pair.second.negated();
first = false;
} else {
add_xact(new xact_t(null_xact->account, pair.second.negate(),
add_xact(new xact_t(null_xact->account, pair.second.negated(),
ITEM_GENERATED));
}
}
}
else if (balance.is_amount()) {
null_xact->amount = balance.as_amount().negate();
null_xact->amount = balance.as_amount().negated();
null_xact->add_flags(XACT_CALCULATED);
}
else if (! balance.is_null() && ! balance.is_realzero()) {

View file

@ -215,11 +215,11 @@ void invert_xacts::operator()(xact_t& xact)
{
if (xact.has_xdata() &&
xact.xdata().has_flags(XACT_EXT_COMPOUND)) {
xact.xdata().value.negate();
xact.xdata().value.in_place_negate();
} else {
xact.amount.negate();
xact.amount.in_place_negate();
if (xact.cost)
xact.cost->negate();
xact.cost->in_place_negate();
}
item_handler<xact_t>::operator()(xact);
@ -705,7 +705,7 @@ void budget_xacts::report_budget_items(const date_t& date)
xact_t& temp = xact_temps.back();
temp.entry = &entry;
temp.add_flags(XACT_AUTO | ITEM_TEMP);
temp.amount.negate();
temp.amount.in_place_negate();
entry.add_xact(&temp);
begin = pair.first.increment(begin);

View file

@ -234,7 +234,7 @@ value_t expr_t::op_t::calc(scope_t& scope, ptr_op_t * locus)
break;
case O_NEG:
result = left()->calc(scope, locus).negate();
result = left()->calc(scope, locus).negated();
break;
case O_NOT:

View file

@ -391,7 +391,7 @@ public:
/**
* Unary arithmetic operators.
*/
value_t negate() const {
value_t negated() const {
value_t temp = *this;
temp.in_place_negate();
return temp;
@ -400,7 +400,7 @@ public:
void in_place_not(); // exists for efficiency's sake
value_t operator-() const {
return negate();
return negated();
}
value_t abs() const;

View file

@ -0,0 +1,272 @@
reg --budget 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-01 Budget entry Expenses:Books $-10.00 0
08-Jan-31 End of January Expenses:Books $10.00 $10.00
08-Feb-01 February Expenses:Books $20.00 $30.00
08-Feb-01 Budget entry Expenses:Books $-10.00 $20.00
08-Feb-28 End of February Expenses:Books $20.00 $40.00
08-Mar-01 March Expenses:Books $30.00 $70.00
08-Mar-01 Budget entry Expenses:Books $-10.00 $60.00
08-Mar-31 End of March Expenses:Books $30.00 $90.00
08-Apr-01 April Expenses:Books $40.00 $130.00
08-Apr-01 Budget entry Expenses:Books $-10.00 $120.00
08-Apr-30 End of April Expenses:Books $40.00 $160.00
08-May-01 May Expenses:Books $50.00 $210.00
08-May-01 Budget entry Expenses:Books $-10.00 $200.00
08-May-31 End of May Expenses:Books $50.00 $250.00
08-Jun-01 June Expenses:Books $60.00 $310.00
08-Jun-01 Budget entry Expenses:Books $-10.00 $300.00
08-Jun-30 End of June Expenses:Books $60.00 $360.00
08-Jul-01 July Expenses:Books $70.00 $430.00
08-Jul-01 Budget entry Expenses:Books $-10.00 $420.00
08-Jul-31 End of July Expenses:Books $70.00 $490.00
08-Aug-01 August Expenses:Books $80.00 $570.00
08-Aug-01 Budget entry Expenses:Books $-10.00 $560.00
08-Aug-31 End of August Expenses:Books $80.00 $640.00
08-Sep-01 September Expenses:Books $90.00 $730.00
08-Sep-01 Budget entry Expenses:Books $-10.00 $720.00
08-Sep-30 End of September Expenses:Books $90.00 $810.00
08-Oct-01 October Expenses:Books $100.00 $910.00
08-Oct-01 Budget entry Expenses:Books $-10.00 $900.00
08-Oct-31 End of October Expenses:Books $100.00 $1000.00
08-Nov-01 November Expenses:Books $110.00 $1110.00
08-Nov-01 Budget entry Expenses:Books $-10.00 $1100.00
08-Nov-30 End of November Expenses:Books $110.00 $1210.00
08-Dec-01 December Expenses:Books $120.00 $1330.00
08-Dec-01 Budget entry Expenses:Books $-10.00 $1320.00
08-Dec-31 End of December Expenses:Books $120.00 $1440.00
09-Jan-01 January Expenses:Books $10.00 $1450.00
09-Jan-01 Budget entry Expenses:Books $-10.00 $1440.00
09-Jan-31 End of January Expenses:Books $10.00 $1450.00
09-Feb-01 February Expenses:Books $20.00 $1470.00
09-Feb-01 Budget entry Expenses:Books $-10.00 $1460.00
09-Feb-28 End of February Expenses:Books $20.00 $1480.00
09-Mar-01 March Expenses:Books $30.00 $1510.00
09-Mar-01 Budget entry Expenses:Books $-10.00 $1500.00
09-Mar-31 End of March Expenses:Books $30.00 $1530.00
09-Apr-01 April Expenses:Books $40.00 $1570.00
09-Apr-01 Budget entry Expenses:Books $-10.00 $1560.00
09-Apr-30 End of April Expenses:Books $40.00 $1600.00
09-May-01 May Expenses:Books $50.00 $1650.00
09-May-01 Budget entry Expenses:Books $-10.00 $1640.00
09-May-31 End of May Expenses:Books $50.00 $1690.00
09-Jun-01 June Expenses:Books $60.00 $1750.00
09-Jun-01 Budget entry Expenses:Books $-10.00 $1740.00
09-Jun-30 End of June Expenses:Books $60.00 $1800.00
09-Jul-01 July Expenses:Books $70.00 $1870.00
09-Jul-01 Budget entry Expenses:Books $-10.00 $1860.00
09-Jul-31 End of July Expenses:Books $70.00 $1930.00
09-Aug-01 August Expenses:Books $80.00 $2010.00
09-Aug-01 Budget entry Expenses:Books $-10.00 $2000.00
09-Aug-31 End of August Expenses:Books $80.00 $2080.00
09-Sep-01 September Expenses:Books $90.00 $2170.00
09-Sep-01 Budget entry Expenses:Books $-10.00 $2160.00
09-Sep-30 End of September Expenses:Books $90.00 $2250.00
09-Oct-01 October Expenses:Books $100.00 $2350.00
09-Oct-01 Budget entry Expenses:Books $-10.00 $2340.00
09-Oct-31 End of October Expenses:Books $100.00 $2440.00
09-Nov-01 November Expenses:Books $110.00 $2550.00
09-Nov-01 Budget entry Expenses:Books $-10.00 $2540.00
09-Nov-30 End of November Expenses:Books $110.00 $2650.00
09-Dec-01 December Expenses:Books $120.00 $2770.00
09-Dec-01 Budget entry Expenses:Books $-10.00 $2760.00
09-Dec-31 End of December Expenses:Books $120.00 $2880.00
>>>2
=== 0

View file

@ -993,15 +993,15 @@ void AmountTestCase::testNegation()
amount_t x8(string("-123.456"));
amount_t x9(- x3);
assertThrow(x0.negate(), amount_error);
assertThrow(x0.negated(), amount_error);
assertEqual(x5, x1);
assertEqual(x7, x1);
assertEqual(x6, x3);
assertEqual(x8, x3);
assertEqual(- x6, x9);
assertEqual(x3.negate(), x9);
assertEqual(x3.negated(), x9);
amount_t x10(x9.negate());
amount_t x10(x9.negated());
assertEqual(x3, x10);
@ -1039,9 +1039,9 @@ void AmountTestCase::testCommodityNegation()
assertEqual(amount_t("-123.45€"), - x9);
assertEqual(amount_t("123.45€"), - x10);
assertEqual(amount_t("$-123.45"), x1.negate());
assertEqual(amount_t("$123.45"), x2.negate());
assertEqual(amount_t("$123.45"), x3.negate());
assertEqual(amount_t("$-123.45"), x1.negated());
assertEqual(amount_t("$123.45"), x2.negated());
assertEqual(amount_t("$123.45"), x3.negated());
assertEqual(string("$-123.45"), (- x1).to_string());
assertEqual(string("$123.45"), (- x2).to_string());
@ -1054,9 +1054,9 @@ void AmountTestCase::testCommodityNegation()
assertEqual(string("-123.45€"), (- x9).to_string());
assertEqual(string("123.45€"), (- x10).to_string());
assertEqual(amount_t("$-123.45"), x1.negate());
assertEqual(amount_t("$123.45"), x2.negate());
assertEqual(amount_t("$123.45"), x3.negate());
assertEqual(amount_t("$-123.45"), x1.negated());
assertEqual(amount_t("$123.45"), x2.negated());
assertEqual(amount_t("$123.45"), x3.negated());
assertValid(x1);
assertValid(x2);