summaryrefslogtreecommitdiff
path: root/src/journal.cc
diff options
context:
space:
mode:
authorJohn Wiegley <johnw@newartisans.com>2010-06-12 21:39:28 -0400
committerJohn Wiegley <johnw@newartisans.com>2010-06-13 01:03:48 -0400
commit8d2fce1ae8a1b8c3cce4e22d807421915a0001ce (patch)
tree6d71920ff303e3a70b6a2ae89b21a8c8e8372913 /src/journal.cc
parent5ec85538d9690634a2b1ee7c422e109700eb0627 (diff)
downloadfork-ledger-8d2fce1ae8a1b8c3cce4e22d807421915a0001ce.tar.gz
fork-ledger-8d2fce1ae8a1b8c3cce4e22d807421915a0001ce.tar.bz2
fork-ledger-8d2fce1ae8a1b8c3cce4e22d807421915a0001ce.zip
Automated xacts may now contain "deferred tags"
For example, consider the following automated transaction: = /Food/ ; Next Date:: date + 10 (Expenses:Tax) 1.00 ; Next Date:: date + 20 This will add a metadata field named 'Next Date' to the _matching posting_, with a value that is 10 days later than that posting. It will also generate a new posting for that transaction, whose amount is the same as the matching posting. Further, it will add a 'Next Date' metadata tag to the _generated posting_ whose value is 20 days later than the date of the matching posting.
Diffstat (limited to 'src/journal.cc')
-rw-r--r--src/journal.cc10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/journal.cc b/src/journal.cc
index fd6d3eac..ed1e26be 100644
--- a/src/journal.cc
+++ b/src/journal.cc
@@ -105,7 +105,8 @@ account_t * journal_t::find_account_re(const string& regexp)
return master->find_account_re(regexp);
}
-bool journal_t::add_xact(xact_t * xact)
+bool journal_t::add_xact(xact_t * xact,
+ optional<date_t::year_type> current_year)
{
xact->journal = this;
@@ -114,16 +115,17 @@ bool journal_t::add_xact(xact_t * xact)
return false;
}
- extend_xact(xact);
+ extend_xact(xact, current_year);
xacts.push_back(xact);
return true;
}
-void journal_t::extend_xact(xact_base_t * xact)
+void journal_t::extend_xact(xact_base_t * xact,
+ optional<date_t::year_type> current_year)
{
foreach (auto_xact_t * auto_xact, auto_xacts)
- auto_xact->extend_xact(*xact);
+ auto_xact->extend_xact(*xact, current_year);
}
bool journal_t::remove_xact(xact_t * xact)