summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--journal.cc16
-rw-r--r--textual.cc20
2 files changed, 26 insertions, 10 deletions
diff --git a/journal.cc b/journal.cc
index 638cce8b..2736ae1f 100644
--- a/journal.cc
+++ b/journal.cc
@@ -272,6 +272,22 @@ bool entry_base_t::finalize()
throw err;
}
+ // Add the final calculated totals each to their related account
+
+ if (dynamic_cast<entry_t *>(this)) {
+ for (transactions_list::const_iterator x = transactions.begin();
+ x != transactions.end();
+ x++) {
+ account_xdata_t& xdata(account_xdata(*(*x)->account));
+ // jww (2008-08-09): For now, this feature only works for
+ // non-specific commodities.
+ xdata.value += (*x)->amount.strip_annotations();
+ if ((*x)->account->fullname() == "Assets:Cash")
+ DEBUG_PRINT("ledger.xact.assign",
+ "account " << (*x)->account->fullname() << " balance = " << xdata.value);
+ }
+ }
+
return true;
}
diff --git a/textual.cc b/textual.cc
index 9ac018fa..8daf4d6a 100644
--- a/textual.cc
+++ b/textual.cc
@@ -293,16 +293,6 @@ transaction_t * parse_transaction(char * line, account_t * account,
parse_assign:
if (entry != NULL) {
- // Add this amount to the related account now
-
- account_xdata_t& xdata(account_xdata(*xact->account));
-
- if (xact->amount) {
- xdata.value += xact->amount;
- DEBUG_PRINT("ledger.textual.parse", "line " << linenum << ": " <<
- "XACT assign: account total = " << xdata.value);
- }
-
// Parse the optional assigned (= AMOUNT)
if (in.good() && ! in.eof()) {
@@ -327,6 +317,13 @@ parse_assign:
unsigned long end = (long)in.tellg();
+ account_xdata_t& xdata(account_xdata(*xact->account));
+
+ DEBUG_PRINT("ledger.xact.assign",
+ "account balance = " << xdata.value);
+ DEBUG_PRINT("ledger.xact.assign",
+ "xact amount = " << amt);
+
amount_t diff;
if (xdata.value.type == value_t::AMOUNT)
diff = amt - *((amount_t *) xdata.value.data);
@@ -337,6 +334,9 @@ parse_assign:
else
diff = amt;
+ DEBUG_PRINT("ledger.xact.assign",
+ "diff = " << diff);
+
DEBUG_PRINT("ledger.textual.parse", "line " << linenum << ": " <<
"XACT assign: diff = " << diff);