Merge branch 'master' into v2.7a

This commit is contained in:
John Wiegley 2008-08-09 17:40:47 -04:00
commit 5419e74378
2 changed files with 21 additions and 13 deletions

View file

@ -320,6 +320,21 @@ bool entry_base_t::finalize()
}
}
// Add the final calculated totals each to their related account
if (dynamic_cast<entry_t *>(this)) {
foreach (xact_t * xact, xacts) {
account_t::xdata_t& xdata(xact->account->xdata());
// jww (2008-08-09): For now, this feature only works for
// non-specific commodities.
if (xdata.value.is_null())
xdata.value = xact->amount.strip_annotations();
else
xdata.value += xact->amount.strip_annotations();
}
}
return true;
}

View file

@ -304,19 +304,6 @@ xact_t * parse_xact(char * line, account_t * account, entry_t * entry = NULL)
parse_assign:
if (entry != NULL) {
// Add this amount to the related account now
account_t::xdata_t& xdata(xact->account->xdata());
if (! xact->amount.is_null()) {
if (xdata.value.is_null())
xdata.value = xact->amount;
else
xdata.value += xact->amount;
DEBUG("ledger.textual.parse", "line " << linenum << ": " <<
"XACT assign: account total = " << xdata.value);
}
// Parse the optional assigned (= AMOUNT)
if (in.good() && ! in.eof()) {
@ -349,6 +336,11 @@ xact_t * parse_xact(char * line, account_t * account, entry_t * entry = NULL)
// jww (2008-08-02): Save total_expr somewhere!
account_t::xdata_t& xdata(xact->account->xdata());
DEBUG("ledger.xact.assign", "account balance = " << xdata.value);
DEBUG("ledger.xact.assign", "xact amount = " << amt);
amount_t diff;
if (xdata.value.is_amount()) {
diff = amt - xdata.value.as_amount();
@ -367,6 +359,7 @@ xact_t * parse_xact(char * line, account_t * account, entry_t * entry = NULL)
diff = amt;
}
DEBUG("ledger.xact.assign", "diff = " << diff);
DEBUG("ledger.textual.parse", "line " << linenum << ": " <<
"XACT assign: diff = " << diff);