diff options
author | John Wiegley <johnw@newartisans.com> | 2008-08-09 07:17:12 -0400 |
---|---|---|
committer | John Wiegley <johnw@newartisans.com> | 2008-08-09 07:17:12 -0400 |
commit | d83e2f34874c46833143e7c1981ca707f88c16ab (patch) | |
tree | 0b6b583c23c732059765a1b53589c215ce8831b1 | |
parent | ef0d32cd5d91966490694da97f36b023700d9787 (diff) | |
download | ledger-d83e2f34874c46833143e7c1981ca707f88c16ab.tar.gz ledger-d83e2f34874c46833143e7c1981ca707f88c16ab.tar.bz2 ledger-d83e2f34874c46833143e7c1981ca707f88c16ab.zip |
Was forced to hack the '=' transaction operator to get it to work. This
feature's implementation needs more work, so it's being pulled from 2.6.1 in
order to be developed further.
-rw-r--r-- | journal.cc | 16 | ||||
-rw-r--r-- | textual.cc | 20 |
2 files changed, 26 insertions, 10 deletions
@@ -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; } @@ -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); |