summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/chain.cc4
-rw-r--r--src/filters.cc129
-rw-r--r--src/filters.h38
-rw-r--r--src/times.cc14
-rw-r--r--src/times.h12
-rw-r--r--test/baseline/opt-period.test2
-rw-r--r--test/regress/F06D5554.test552
7 files changed, 663 insertions, 88 deletions
diff --git a/src/chain.cc b/src/chain.cc
index 450e3758..61388840 100644
--- a/src/chain.cc
+++ b/src/chain.cc
@@ -217,13 +217,11 @@ post_handler_ptr chain_post_handlers(post_handler_ptr base_handler,
// interval_posts groups posts together based on a time period, such as
// weekly or monthly.
- if (report.HANDLED(period_)) {
+ if (report.HANDLED(period_))
handler.reset(new interval_posts(handler, expr,
report.HANDLER(period_).str(),
report.HANDLED(exact),
report.HANDLED(empty)));
- handler.reset(new sort_posts(handler, "date"));
- }
if (report.HANDLED(date_))
handler.reset(new transfer_details(handler, transfer_details::SET_DATE,
diff --git a/src/filters.cc b/src/filters.cc
index fbef1cd8..fa1f6fa2 100644
--- a/src/filters.cc
+++ b/src/filters.cc
@@ -904,69 +904,104 @@ void subtotal_posts::operator()(post_t& post)
void interval_posts::report_subtotal(const date_interval_t& ival)
{
- if (last_post && ival) {
- if (exact_periods)
- subtotal_posts::report_subtotal();
- else
- subtotal_posts::report_subtotal(NULL, ival);
- }
+ if (exact_periods)
+ subtotal_posts::report_subtotal();
+ else
+ subtotal_posts::report_subtotal(NULL, ival);
+}
- last_post = NULL;
+namespace {
+ struct sort_posts_by_date {
+ bool operator()(post_t * left, post_t * right) const {
+ return left->date() < right->date();
+ }
+ };
}
void interval_posts::operator()(post_t& post)
{
- DEBUG("filters.interval", "Considering post with amount " << post.amount);
-#if defined(DEBUG_ON)
- DEBUG("filters.interval", "interval is:");
- debug_interval(interval);
-#endif
- if (! interval.find_period(post.date())) {
- DEBUG("filters.interval", "Post does not fall within period");
+ // If there is a duration (such as weekly), we must generate the
+ // report in two passes. Otherwise, we only have to check whether the
+ // post falls within the reporting period.
+
+ if (interval.duration) {
+ all_posts.push_back(&post);
+ }
+ else if (interval.find_period(post.date()))
+ item_handler<post_t>::operator()(post);
+}
+
+void interval_posts::flush()
+{
+ if (! interval.duration) {
+ item_handler<post_t>::flush();
return;
}
- if (interval.duration) {
- DEBUG("filters.interval", "There is an interval duration");
- if (interval != last_interval) {
-#if defined(DEBUG_ON)
- DEBUG("filters.interval", "interval != last_interval, so reporting");
- DEBUG("filters.interval", "last_interval is:");
- debug_interval(last_interval);
-#endif
- report_subtotal(last_interval);
+ // Sort all the postings we saw by date ascending
+ std::stable_sort(all_posts.begin(), all_posts.end(),
+ sort_posts_by_date());
- if (generate_empty_posts) {
- for (++last_interval; last_interval < interval; ++last_interval) {
- // Generate a null posting, so the intervening periods can be
- // seen when -E is used, or if the calculated amount ends up being
- // non-zero
- xact_t& null_xact = temps.create_xact();
- null_xact._date = last_interval.inclusive_end();
+ // Determine the beginning interval by using the earliest post
+ if (! interval.find_period(all_posts.front()->date()))
+ throw_(std::logic_error, _("Failed to find period for interval report"));
- post_t& null_post = temps.create_post(null_xact, empty_account);
- null_post.add_flags(POST_CALCULATED);
- null_post.amount = 0L;
+ // Walk the interval forward reporting all posts within each one
+ // before moving on, until we reach the end of all_posts
+ bool saw_posts = false;
+ for (std::deque<post_t *>::iterator i = all_posts.begin();
+ i != all_posts.end(); ) {
+ post_t * post(*i);
- last_post = &null_post;
- subtotal_posts::operator()(null_post);
+ DEBUG("filters.interval",
+ "Considering post " << post->date() << " = " << post->amount);
+#if defined(DEBUG_ON)
+ DEBUG("filters.interval", "interval is:");
+ debug_interval(interval);
+#endif
+ assert(! interval.finish || post->date() < *interval.finish);
- report_subtotal(last_interval);
- }
- assert(last_interval <= interval);
- } else {
- DEBUG("filters.interval", "Setting last_interval = interval");
- last_interval = interval;
+ if (interval.within_period(post->date())) {
+ DEBUG("filters.interval", "Calling subtotal_posts::operator()");
+ subtotal_posts::operator()(*post);
+ ++i;
+ saw_posts = true;
+ } else {
+ if (saw_posts) {
+ DEBUG("filters.interval",
+ "Calling subtotal_posts::report_subtotal()");
+ report_subtotal(interval);
+ saw_posts = false;
}
+ else if (generate_empty_posts) {
+ // Generate a null posting, so the intervening periods can be
+ // seen when -E is used, or if the calculated amount ends up
+ // being non-zero
+ xact_t& null_xact = temps.create_xact();
+ null_xact._date = interval.inclusive_end();
+
+ post_t& null_post = temps.create_post(null_xact, empty_account);
+ null_post.add_flags(POST_CALCULATED);
+ null_post.amount = 0L;
+
+ subtotal_posts::operator()(null_post);
+ report_subtotal(interval);
+ }
+
+ DEBUG("filters.interval", "Advancing interval");
+ ++interval;
}
- DEBUG("filters.interval", "Calling subtotal_posts::operator()");
- subtotal_posts::operator()(post);
- } else {
- DEBUG("filters.interval", "There is no interval duration");
- item_handler<post_t>::operator()(post);
}
- last_post = &post;
+ // If the last postings weren't reported, do so now.
+ if (saw_posts) {
+ DEBUG("filters.interval",
+ "Calling subtotal_posts::report_subtotal() at end");
+ report_subtotal(interval);
+ }
+
+ // Tell our parent class to flush
+ subtotal_posts::flush();
}
void posts_as_equity::report_subtotal()
diff --git a/src/filters.h b/src/filters.h
index 2e51c91c..c972de82 100644
--- a/src/filters.h
+++ b/src/filters.h
@@ -655,11 +655,11 @@ protected:
typedef std::pair<string, acct_value_t> values_pair;
protected:
- expr_t& amount_expr;
- values_map values;
- optional<string> date_format;
- temporaries_t temps;
- std::list<post_t *> component_posts;
+ expr_t& amount_expr;
+ values_map values;
+ optional<string> date_format;
+ temporaries_t temps;
+ std::deque<post_t *> component_posts;
public:
subtotal_posts(post_handler_ptr handler, expr_t& _amount_expr,
@@ -697,12 +697,12 @@ class interval_posts : public subtotal_posts
{
date_interval_t start_interval;
date_interval_t interval;
- date_interval_t last_interval;
- post_t * last_post;
account_t * empty_account;
bool exact_periods;
bool generate_empty_posts;
+ std::deque<post_t *> all_posts;
+
interval_posts();
public:
@@ -713,8 +713,7 @@ public:
bool _exact_periods = false,
bool _generate_empty_posts = false)
: subtotal_posts(_handler, amount_expr), start_interval(_interval),
- interval(start_interval), last_post(NULL),
- exact_periods(_exact_periods),
+ interval(start_interval), exact_periods(_exact_periods),
generate_empty_posts(_generate_empty_posts) {
TRACE_CTOR(interval_posts,
"post_handler_ptr, expr_t&, date_interval_t, bool, bool");
@@ -744,28 +743,11 @@ public:
}
#endif
- virtual void flush() {
- if (last_post && interval.duration) {
- DEBUG("filters.interval", "There is a last_post and an interval.duration");
- if (interval != last_interval) {
-#if defined(DEBUG_ON)
- DEBUG("filters.interval", "interval != last_interval, so reporting");
- DEBUG("filters.interval", "interval is:");
- debug_interval(interval);
- DEBUG("filters.interval", "last_interval is:");
- debug_interval(last_interval);
-#endif
- report_subtotal(last_interval);
- }
- subtotal_posts::flush();
- }
- }
virtual void operator()(post_t& post);
+ virtual void flush();
virtual void clear() {
- interval = start_interval;
- last_interval = date_interval_t();
- last_post = NULL;
+ interval = start_interval;
subtotal_posts::clear();
create_accounts();
diff --git a/src/times.cc b/src/times.cc
index dd10a508..9712c2ee 100644
--- a/src/times.cc
+++ b/src/times.cc
@@ -1305,7 +1305,7 @@ void date_interval_t::stabilize(const optional<date_t>& date)
date_interval_t next_interval(*this);
++next_interval;
- if (next_interval.start && *next_interval.start < *date) {
+ if (next_interval.start && *next_interval.start <= *date) {
*this = next_interval;
} else {
end_of_duration = none;
@@ -1355,7 +1355,8 @@ void date_interval_t::stabilize(const optional<date_t>& date)
}
}
-bool date_interval_t::find_period(const date_t& date)
+bool date_interval_t::find_period(const date_t& date,
+ const bool allow_shift)
{
stabilize(date);
@@ -1405,9 +1406,6 @@ bool date_interval_t::find_period(const date_t& date)
#endif
while (date >= scan && (! finish || scan < *finish)) {
- DEBUG("times.interval", "date = " << date);
- DEBUG("times.interval", "end_of_scan = " << end_of_scan);
-
if (date < end_of_scan) {
start = scan;
end_of_duration = end_of_scan;
@@ -1420,9 +1418,15 @@ bool date_interval_t::find_period(const date_t& date)
return true;
}
+ else if (! allow_shift) {
+ break;
+ }
scan = duration->add(scan);
end_of_scan = duration->add(scan);
+
+ DEBUG("times.interval", "scan = " << scan);
+ DEBUG("times.interval", "end_of_scan = " << end_of_scan);
}
DEBUG("times.interval", "false: failed scan");
diff --git a/src/times.h b/src/times.h
index a2680ae3..bc462efa 100644
--- a/src/times.h
+++ b/src/times.h
@@ -578,10 +578,14 @@ public:
return start;
}
- /** Find the current or next period containing date. Returns true if the
- date_interval_t object has been altered to reflect the interval
- containing date, or false if no such period can be found. */
- bool find_period(const date_t& date = CURRENT_DATE());
+ /** Find the current or next period containing date. Returns false if
+ no such period can be found. If allow_shift is true, the default,
+ then the interval may be shifted in time to find the period. */
+ bool find_period(const date_t& date = CURRENT_DATE(),
+ const bool allow_shift = true);
+ bool within_period(const date_t& date = CURRENT_DATE()) {
+ return find_period(date, false);
+ }
optional<date_t> inclusive_end() const {
if (end_of_duration)
diff --git a/test/baseline/opt-period.test b/test/baseline/opt-period.test
index 7268bcce..f370b404 100644
--- a/test/baseline/opt-period.test
+++ b/test/baseline/opt-period.test
@@ -257,7 +257,7 @@ test reg -p "weekly january 2008"
08-Jan-01 - 08-Jan-05 Assets:Cash $-20.00 $-20.00
Expenses:Books $10.00 $-10.00
Liabilities:Cards $10.00 0
-08-Jan-29 - 08-Jan-31 Assets:Cash $-20.00 $-20.00
+08-Jan-27 - 08-Jan-31 Assets:Cash $-20.00 $-20.00
Expenses:Books $10.00 $-10.00
Liabilities:Cards $10.00 0
end test
diff --git a/test/regress/F06D5554.test b/test/regress/F06D5554.test
new file mode 100644
index 00000000..4541b791
--- /dev/null
+++ b/test/regress/F06D5554.test
@@ -0,0 +1,552 @@
+2011/04/01 serveraxis.com
+ Expenses:Computer:Internet $15.00
+ Expenses:Computer:Internet $1.10
+ Liabilities:MasterCard
+
+2011/04/05 Pennsylvania toll booth
+ Expenses:Auto:Fees $13.00
+ Expenses:Cash
+
+2011/04/05 iTunes
+ Expenses:Music $1.29
+ Expenses:Taxes:Sales $0.09
+ Liabilities:MasterCard $-1.38
+
+2011/04/19 iTunes
+ Expenses:Computer:Software $4.99
+ Expenses:Taxes:Sales $0.35
+ Liabilities:MasterCard $-5.34
+
+2011/04/24 iTunes
+ Expenses:Movies $1.99
+ Expenses:Movies $2.99
+ Expenses:Taxes:Sales $0.35
+ Liabilities:MasterCard $-5.33
+
+2011/04/29 iTunes
+ Expenses:Computer:Movies $0.99
+ Expenses:Taxes:Sales $0.07
+ Liabilities:MasterCard $-1.06
+
+2011/05/01 serveraxis.com
+ Expenses:Computer:Internet $15.00
+ Expenses:Computer:Internet $1.10
+ Liabilities:MasterCard
+
+2011/05/18 iTunes
+ Expenses:Computer:Software $6.99
+ Expenses:Taxes:Sales $0.49
+ Liabilities:MasterCard $-7.48
+
+2011/05/20 DynDNS.com
+ Expenses:Computer:Internet $15.00
+ Liabilities:MasterCard
+
+2011/05/20 DynDNS.com
+ Expenses:Computer:Internet $15.00
+ Liabilities:MasterCard
+
+2011/05/27 iTunes
+ Expenses:Movies $1.99
+ Expenses:Movies $1.99
+ Expenses:Movies $1.99
+ Expenses:Taxes:Sales $0.42
+ Liabilities:MasterCard $-6.39
+
+2011/05/26 Valero
+ Expenses:Auto:Gas $26.79
+ Liabilities:MasterCard
+
+2011/05/26 Starbucks
+ Expenses:Food $2.20
+ Expenses:Taxes:Sales $0.15
+ Liabilities:MasterCard $-2.35
+
+2011/05/26 La Mex
+ Expenses:Food $17.70
+ Expenses:Taxes:Sales $1.11
+ Expenses:Tips $3.00
+ Liabilities:MasterCard $-21.81
+
+2011/05/27 Leaves N Beans
+ Expenses:Food:Dining $20.98
+ Expenses:Taxes:Sales $1.63
+ Expenses:Tips $2.00
+ Liabilities:MasterCard $-24.61
+
+2011/05/27 Wal*Mart
+ Expenses:Home:Supplies $7.97
+ Expenses:Food:Grocery $3.25
+ Expenses:Food:Grocery $3.18
+ Expenses:Food:Grocery $3.18
+ Expenses:Food:Grocery $2.98
+ Expenses:Food:Grocery $1.98
+ Expenses:Food:Grocery $3.98
+ Expenses:Food:Grocery $3.58
+ Expenses:Food:Grocery $3.58
+ Expenses:Food:Grocery $1.58
+ Expenses:Food:Grocery $1.88
+ Expenses:Food:Grocery $2.50
+ Expenses:Food:Grocery $1.26
+ Expenses:Food:Grocery $2.62
+ Expenses:Food:Grocery $3.48
+ Expenses:Home:Supplies $1.37
+ Expenses:Home:Supplies $2.92
+ Expenses:Beauty $3.38
+ Expenses:Beauty $0.97
+ Expenses:Beauty $4.64
+ Expenses:Beauty $1.97
+ Expenses:Beauty $1.97
+ Expenses:Beauty $5.98
+ Expenses:Home:Supplies $9.98
+ Expenses:Bedding $4.00
+ Expenses:Bedding $4.00
+ Expenses:Home:Supplies $2.88
+ Expenses:Home:Supplies $2.88
+ Expenses:Home:Supplies $2.88
+ Expenses:Home:Supplies $2.88
+ Expenses:Clothing $2.96
+ Expenses:Supplies $0.84
+ Expenses:Food:Grocery $1.38
+ Expenses:Food:Grocery $1.38
+ Expenses:Food:Grocery $2.32
+ Expenses:Food:Grocery $2.00
+ Expenses:Food:Grocery $2.98
+ Expenses:Food:Grocery $3.00
+ Expenses:Food:Grocery $2.14
+ Expenses:Food:Grocery $2.14
+ Expenses:Food:Grocery $2.50
+ Expenses:Food:Grocery $2.50
+ Expenses:Food:Grocery $3.48
+ Expenses:Home:Supplies $1.17
+ Expenses:Supplies $3.00
+ Expenses:Bedding $34.88
+ Expenses:Home $6.00
+ Expenses:Home $6.00
+ Expenses:Home:Supplies $3.97
+ Expenses:Food:Grocery $0.78
+ Expenses:Food:Grocery $0.78
+ Expenses:Food:Grocery $0.78
+ Expenses:Food:Grocery $0.78
+ Expenses:Home $4.00
+ Expenses:Home $4.00
+ Expenses:Home $10.87
+ Expenses:Home $4.00
+ Expenses:Bedding $65.96
+ Expenses:Taxes:Sales $16.89
+ Expenses:Taxes:Sales $0.65
+ Liabilities:MasterCard $-293.83
+
+2011/05/27 Asia Grill
+ Expenses:Food:Dining $28.63
+ Expenses:Tips $4.00
+ Liabilities:MasterCard $-32.63
+
+2011/05/28 Shell
+ Expenses:Auto:Gas $43.41
+ Liabilities:MasterCard
+
+2011/05/28 Sears
+ Expenses:Home $1,728.96
+ Expenses:Taxes:Sales $136.87
+ Liabilities:MasterCard $-1,865.83
+
+2011/05/28 Sears
+ Expenses:Home $99.61
+ Expenses:Taxes:Sales $8.22
+ Liabilities:MasterCard $-107.83
+
+2011/05/28 Buffalo Wild Wings
+ Expenses:Food:Dining $22.98
+ Expenses:Tips $2.35
+ Expenses:Taxes:Sales $3.50
+ Liabilities:MasterCard $-28.83
+
+2011/05/28 Cold Stone Creamery
+ Expenses:Food:Dining $5.73
+ Expenses:Tips $0.50
+ Liabilities:MasterCard $-6.23
+
+2011/05/29 Hy Vee
+ Expenses:Supplies $2.00
+ Expenses:Supplies $7.99
+ Expenses:Supplies $7.99
+ Expenses:Food:Grocery $157.64
+ Expenses:Taxes:Sales $5.74
+ Liabilities:MasterCard $-181.36
+
+2011/05/30 Allied movers, Fidel & Manny
+ Expenses:Tips $97.00
+ Expenses:Cash
+
+2011/05/30 Starbucks
+ Expenses:Food:Dining $6.90
+ Expenses:Taxes:Sales $0.71
+ Liabilities:MasterCard $-7.61
+
+2011/05/31 Wal*Mart
+ Expenses:Home $108.13
+ Expenses:Taxes:Sales $8.65
+ Liabilities:MasterCard $-116.78
+
+test reg -p "apr 2011" Expenses
+11-Apr-01 serveraxis.com Expe:Computer:Internet $15.00 $15.00
+ Expe:Computer:Internet $1.10 $16.10
+11-Apr-05 Pennsylvania toll b.. Expenses:Auto:Fees $13.00 $29.10
+ Expenses:Cash $-13.00 $16.10
+11-Apr-05 iTunes Expenses:Music $1.29 $17.39
+ Expenses:Taxes:Sales $0.09 $17.48
+11-Apr-19 iTunes Expe:Computer:Software $4.99 $22.47
+ Expenses:Taxes:Sales $0.35 $22.82
+11-Apr-24 iTunes Expenses:Movies $1.99 $24.81
+ Expenses:Movies $2.99 $27.80
+ Expenses:Taxes:Sales $0.35 $28.15
+11-Apr-29 iTunes Expens:Computer:Movies $0.99 $29.14
+ Expenses:Taxes:Sales $0.07 $29.21
+end test
+
+test reg -p "apr 2011" Expenses --monthly
+11-Apr-01 - 11-Apr-30 Expenses:Auto:Fees $13.00 $13.00
+ Expenses:Cash $-13.00 0
+ Expe:Computer:Internet $16.10 $16.10
+ Expens:Computer:Movies $0.99 $17.09
+ Expe:Computer:Software $4.99 $22.08
+ Expenses:Movies $4.98 $27.06
+ Expenses:Music $1.29 $28.35
+ Expenses:Taxes:Sales $0.86 $29.21
+end test
+
+test reg -p "apr 2011" Expenses --monthly --exact
+11-Apr-01 - 11-Apr-29 Expenses:Auto:Fees $13.00 $13.00
+ Expenses:Cash $-13.00 0
+ Expe:Computer:Internet $16.10 $16.10
+ Expens:Computer:Movies $0.99 $17.09
+ Expe:Computer:Software $4.99 $22.08
+ Expenses:Movies $4.98 $27.06
+ Expenses:Music $1.29 $28.35
+ Expenses:Taxes:Sales $0.86 $29.21
+end test
+
+test reg -p "apr 2011" Expenses --weekly
+11-Apr-01 - 11-Apr-02 Expe:Computer:Internet $16.10 $16.10
+11-Apr-03 - 11-Apr-09 Expenses:Auto:Fees $13.00 $29.10
+ Expenses:Cash $-13.00 $16.10
+ Expenses:Music $1.29 $17.39
+ Expenses:Taxes:Sales $0.09 $17.48
+11-Apr-17 - 11-Apr-23 Expe:Computer:Software $4.99 $22.47
+ Expenses:Taxes:Sales $0.35 $22.82
+11-Apr-24 - 11-Apr-30 Expens:Computer:Movies $0.99 $23.81
+ Expenses:Movies $4.98 $28.79
+ Expenses:Taxes:Sales $0.42 $29.21
+end test
+
+test reg -p "apr 2011" Expenses --weekly --exact
+11-Apr-01 - 11-Apr-01 Expe:Computer:Internet $16.10 $16.10
+11-Apr-05 - 11-Apr-05 Expenses:Auto:Fees $13.00 $29.10
+ Expenses:Cash $-13.00 $16.10
+ Expenses:Music $1.29 $17.39
+ Expenses:Taxes:Sales $0.09 $17.48
+11-Apr-19 - 11-Apr-19 Expe:Computer:Software $4.99 $22.47
+ Expenses:Taxes:Sales $0.35 $22.82
+11-Apr-24 - 11-Apr-29 Expens:Computer:Movies $0.99 $23.81
+ Expenses:Movies $4.98 $28.79
+ Expenses:Taxes:Sales $0.42 $29.21
+end test
+
+test reg -p "apr 2011" Expenses --weekly --empty
+11-Apr-01 - 11-Apr-02 Expe:Computer:Internet $16.10 $16.10
+11-Apr-03 - 11-Apr-09 Expenses:Auto:Fees $13.00 $29.10
+ Expenses:Cash $-13.00 $16.10
+ Expenses:Music $1.29 $17.39
+ Expenses:Taxes:Sales $0.09 $17.48
+11-Apr-10 - 11-Apr-16 <None> 0 $17.48
+11-Apr-17 - 11-Apr-23 Expe:Computer:Software $4.99 $22.47
+ Expenses:Taxes:Sales $0.35 $22.82
+11-Apr-24 - 11-Apr-30 Expens:Computer:Movies $0.99 $23.81
+ Expenses:Movies $4.98 $28.79
+ Expenses:Taxes:Sales $0.42 $29.21
+end test
+
+test reg -p "apr 2011" Expenses --weekly --empty --exact
+11-Apr-01 - 11-Apr-01 Expe:Computer:Internet $16.10 $16.10
+11-Apr-05 - 11-Apr-05 Expenses:Auto:Fees $13.00 $29.10
+ Expenses:Cash $-13.00 $16.10
+ Expenses:Music $1.29 $17.39
+ Expenses:Taxes:Sales $0.09 $17.48
+11-Apr-16 - 11-Apr-16 <None> 0 $17.48
+11-Apr-19 - 11-Apr-19 Expe:Computer:Software $4.99 $22.47
+ Expenses:Taxes:Sales $0.35 $22.82
+11-Apr-24 - 11-Apr-29 Expens:Computer:Movies $0.99 $23.81
+ Expenses:Movies $4.98 $28.79
+ Expenses:Taxes:Sales $0.42 $29.21
+end test
+
+test reg -p "may 2011"
+11-May-01 serveraxis.com Expe:Computer:Internet $15.00 $15.00
+ Expe:Computer:Internet $1.10 $16.10
+ Liabilities:MasterCard $-16.10 0
+11-May-18 iTunes Expe:Computer:Software $6.99 $6.99
+ Expenses:Taxes:Sales $0.49 $7.48
+ Liabilities:MasterCard $-7.48 0
+11-May-20 DynDNS.com Expe:Computer:Internet $15.00 $15.00
+ Liabilities:MasterCard $-15.00 0
+11-May-20 DynDNS.com Expe:Computer:Internet $15.00 $15.00
+ Liabilities:MasterCard $-15.00 0
+11-May-27 iTunes Expenses:Movies $1.99 $1.99
+ Expenses:Movies $1.99 $3.98
+ Expenses:Movies $1.99 $5.97
+ Expenses:Taxes:Sales $0.42 $6.39
+ Liabilities:MasterCard $-6.39 0
+11-May-26 Valero Expenses:Auto:Gas $26.79 $26.79
+ Liabilities:MasterCard $-26.79 0
+11-May-26 Starbucks Expenses:Food $2.20 $2.20
+ Expenses:Taxes:Sales $0.15 $2.35
+ Liabilities:MasterCard $-2.35 0
+11-May-26 La Mex Expenses:Food $17.70 $17.70
+ Expenses:Taxes:Sales $1.11 $18.81
+ Expenses:Tips $3.00 $21.81
+ Liabilities:MasterCard $-21.81 0
+11-May-27 Leaves N Beans Expenses:Food:Dining $20.98 $20.98
+ Expenses:Taxes:Sales $1.63 $22.61
+ Expenses:Tips $2.00 $24.61
+ Liabilities:MasterCard $-24.61 0
+11-May-27 Wal*Mart Expenses:Home:Supplies $7.97 $7.97
+ Expenses:Food:Grocery $3.25 $11.22
+ Expenses:Food:Grocery $3.18 $14.40
+ Expenses:Food:Grocery $3.18 $17.58
+ Expenses:Food:Grocery $2.98 $20.56
+ Expenses:Food:Grocery $1.98 $22.54
+ Expenses:Food:Grocery $3.98 $26.52
+ Expenses:Food:Grocery $3.58 $30.10
+ Expenses:Food:Grocery $3.58 $33.68
+ Expenses:Food:Grocery $1.58 $35.26
+ Expenses:Food:Grocery $1.88 $37.14
+ Expenses:Food:Grocery $2.50 $39.64
+ Expenses:Food:Grocery $1.26 $40.90
+ Expenses:Food:Grocery $2.62 $43.52
+ Expenses:Food:Grocery $3.48 $47.00
+ Expenses:Home:Supplies $1.37 $48.37
+ Expenses:Home:Supplies $2.92 $51.29
+ Expenses:Beauty $3.38 $54.67
+ Expenses:Beauty $0.97 $55.64
+ Expenses:Beauty $4.64 $60.28
+ Expenses:Beauty $1.97 $62.25
+ Expenses:Beauty $1.97 $64.22
+ Expenses:Beauty $5.98 $70.20
+ Expenses:Home:Supplies $9.98 $80.18
+ Expenses:Bedding $4.00 $84.18
+ Expenses:Bedding $4.00 $88.18
+ Expenses:Home:Supplies $2.88 $91.06
+ Expenses:Home:Supplies $2.88 $93.94
+ Expenses:Home:Supplies $2.88 $96.82
+ Expenses:Home:Supplies $2.88 $99.70
+ Expenses:Clothing $2.96 $102.66
+ Expenses:Supplies $0.84 $103.50
+ Expenses:Food:Grocery $1.38 $104.88
+ Expenses:Food:Grocery $1.38 $106.26
+ Expenses:Food:Grocery $2.32 $108.58
+ Expenses:Food:Grocery $2.00 $110.58
+ Expenses:Food:Grocery $2.98 $113.56
+ Expenses:Food:Grocery $3.00 $116.56
+ Expenses:Food:Grocery $2.14 $118.70
+ Expenses:Food:Grocery $2.14 $120.84
+ Expenses:Food:Grocery $2.50 $123.34
+ Expenses:Food:Grocery $2.50 $125.84
+ Expenses:Food:Grocery $3.48 $129.32
+ Expenses:Home:Supplies $1.17 $130.49
+ Expenses:Supplies $3.00 $133.49
+ Expenses:Bedding $34.88 $168.37
+ Expenses:Home $6.00 $174.37
+ Expenses:Home $6.00 $180.37
+ Expenses:Home:Supplies $3.97 $184.34
+ Expenses:Food:Grocery $0.78 $185.12
+ Expenses:Food:Grocery $0.78 $185.90
+ Expenses:Food:Grocery $0.78 $186.68
+ Expenses:Food:Grocery $0.78 $187.46
+ Expenses:Home $4.00 $191.46
+ Expenses:Home $4.00 $195.46
+ Expenses:Home $10.87 $206.33
+ Expenses:Home $4.00 $210.33
+ Expenses:Bedding $65.96 $276.29
+ Expenses:Taxes:Sales $16.89 $293.18
+ Expenses:Taxes:Sales $0.65 $293.83
+ Liabilities:MasterCard $-293.83 0
+11-May-27 Asia Grill Expenses:Food:Dining $28.63 $28.63
+ Expenses:Tips $4.00 $32.63
+ Liabilities:MasterCard $-32.63 0
+11-May-28 Shell Expenses:Auto:Gas $43.41 $43.41
+ Liabilities:MasterCard $-43.41 0
+11-May-28 Sears Expenses:Home $1,728.96 $1,728.96
+ Expenses:Taxes:Sales $136.87 $1,865.83
+ Liabilities:MasterCard $-1,865.83 0
+11-May-28 Sears Expenses:Home $99.61 $99.61
+ Expenses:Taxes:Sales $8.22 $107.83
+ Liabilities:MasterCard $-107.83 0
+11-May-28 Buffalo Wild Wings Expenses:Food:Dining $22.98 $22.98
+ Expenses:Tips $2.35 $25.33
+ Expenses:Taxes:Sales $3.50 $28.83
+ Liabilities:MasterCard $-28.83 0
+11-May-28 Cold Stone Creamery Expenses:Food:Dining $5.73 $5.73
+ Expenses:Tips $0.50 $6.23
+ Liabilities:MasterCard $-6.23 0
+11-May-29 Hy Vee Expenses:Supplies $2.00 $2.00
+ Expenses:Supplies $7.99 $9.99
+ Expenses:Supplies $7.99 $17.98
+ Expenses:Food:Grocery $157.64 $175.62
+ Expenses:Taxes:Sales $5.74 $181.36
+ Liabilities:MasterCard $-181.36 0
+11-May-30 Allied movers, Fide.. Expenses:Tips $97.00 $97.00
+ Expenses:Cash $-97.00 0
+11-May-30 Starbucks Expenses:Food:Dining $6.90 $6.90
+ Expenses:Taxes:Sales $0.71 $7.61
+ Liabilities:MasterCard $-7.61 0
+11-May-31 Wal*Mart Expenses:Home $108.13 $108.13
+ Expenses:Taxes:Sales $8.65 $116.78
+ Liabilities:MasterCard $-116.78 0
+end test
+
+test reg -p "may 2011" --monthly
+11-May-01 - 11-May-31 Expenses:Auto:Gas $70.20 $70.20
+ Expenses:Beauty $18.91 $89.11
+ Expenses:Bedding $108.84 $197.95
+ Expenses:Cash $-97.00 $100.95
+ Expenses:Clothing $2.96 $103.91
+ Expe:Computer:Internet $46.10 $150.01
+ Expe:Computer:Software $6.99 $157.00
+ Expenses:Food $19.90 $176.90
+ Expenses:Food:Dining $85.22 $262.12
+ Expenses:Food:Grocery $225.61 $487.73
+ Expenses:Home $1,971.57 $2,459.30
+ Expenses:Home:Supplies $38.90 $2,498.20
+ Expenses:Movies $5.97 $2,504.17
+ Expenses:Supplies $21.82 $2,525.99
+ Expenses:Taxes:Sales $185.03 $2,711.02
+ Expenses:Tips $108.85 $2,819.87
+ Liabilities:MasterCard $-2,819.87 0
+end test
+
+test reg -p "may 2011" --weekly
+11-May-01 - 11-May-07 Expe:Computer:Internet $16.10 $16.10
+ Liabilities:MasterCard $-16.10 0
+11-May-15 - 11-May-21 Expe:Computer:Internet $30.00 $30.00
+ Expe:Computer:Software $6.99 $36.99
+ Expenses:Taxes:Sales $0.49 $37.48
+ Liabilities:MasterCard $-37.48 0
+11-May-22 - 11-May-28 Expenses:Auto:Gas $70.20 $70.20
+ Expenses:Beauty $18.91 $89.11
+ Expenses:Bedding $108.84 $197.95
+ Expenses:Clothing $2.96 $200.91
+ Expenses:Food $19.90 $220.81
+ Expenses:Food:Dining $78.32 $299.13
+ Expenses:Food:Grocery $67.97 $367.10
+ Expenses:Home $1,863.44 $2,230.54
+ Expenses:Home:Supplies $38.90 $2,269.44
+ Expenses:Movies $5.97 $2,275.41
+ Expenses:Supplies $3.84 $2,279.25
+ Expenses:Taxes:Sales $169.44 $2,448.69
+ Expenses:Tips $11.85 $2,460.54
+ Liabilities:MasterCard $-2,460.54 0
+11-May-29 - 11-May-31 Expenses:Cash $-97.00 $-97.00
+ Expenses:Food:Dining $6.90 $-90.10
+ Expenses:Food:Grocery $157.64 $67.54
+ Expenses:Home $108.13 $175.67
+ Expenses:Supplies $17.98 $193.65
+ Expenses:Taxes:Sales $15.10 $208.75
+ Expenses:Tips $97.00 $305.75
+ Liabilities:MasterCard $-305.75 0
+end test
+
+test reg -p "may 2011" --weekly --exact
+11-May-01 - 11-May-01 Expe:Computer:Internet $16.10 $16.10
+ Liabilities:MasterCard $-16.10 0
+11-May-18 - 11-May-20 Expe:Computer:Internet $30.00 $30.00
+ Expe:Computer:Software $6.99 $36.99
+ Expenses:Taxes:Sales $0.49 $37.48
+ Liabilities:MasterCard $-37.48 0
+11-May-26 - 11-May-28 Expenses:Auto:Gas $70.20 $70.20
+ Expenses:Beauty $18.91 $89.11
+ Expenses:Bedding $108.84 $197.95
+ Expenses:Clothing $2.96 $200.91
+ Expenses:Food $19.90 $220.81
+ Expenses:Food:Dining $78.32 $299.13
+ Expenses:Food:Grocery $67.97 $367.10
+ Expenses:Home $1,863.44 $2,230.54
+ Expenses:Home:Supplies $38.90 $2,269.44
+ Expenses:Movies $5.97 $2,275.41
+ Expenses:Supplies $3.84 $2,279.25
+ Expenses:Taxes:Sales $169.44 $2,448.69
+ Expenses:Tips $11.85 $2,460.54
+ Liabilities:MasterCard $-2,460.54 0
+11-May-29 - 11-May-31 Expenses:Cash $-97.00 $-97.00
+ Expenses:Food:Dining $6.90 $-90.10
+ Expenses:Food:Grocery $157.64 $67.54
+ Expenses:Home $108.13 $175.67
+ Expenses:Supplies $17.98 $193.65
+ Expenses:Taxes:Sales $15.10 $208.75
+ Expenses:Tips $97.00 $305.75
+ Liabilities:MasterCard $-305.75 0
+end test
+
+test reg -p "may 2011" --weekly --empty
+11-May-01 - 11-May-07 Expe:Computer:Internet $16.10 $16.10
+ Liabilities:MasterCard $-16.10 0
+11-May-08 - 11-May-14 <None> 0 0
+11-May-15 - 11-May-21 Expe:Computer:Internet $30.00 $30.00
+ Expe:Computer:Software $6.99 $36.99
+ Expenses:Taxes:Sales $0.49 $37.48
+ Liabilities:MasterCard $-37.48 0
+11-May-22 - 11-May-28 Expenses:Auto:Gas $70.20 $70.20
+ Expenses:Beauty $18.91 $89.11
+ Expenses:Bedding $108.84 $197.95
+ Expenses:Clothing $2.96 $200.91
+ Expenses:Food $19.90 $220.81
+ Expenses:Food:Dining $78.32 $299.13
+ Expenses:Food:Grocery $67.97 $367.10
+ Expenses:Home $1,863.44 $2,230.54
+ Expenses:Home:Supplies $38.90 $2,269.44
+ Expenses:Movies $5.97 $2,275.41
+ Expenses:Supplies $3.84 $2,279.25
+ Expenses:Taxes:Sales $169.44 $2,448.69
+ Expenses:Tips $11.85 $2,460.54
+ Liabilities:MasterCard $-2,460.54 0
+11-May-29 - 11-May-31 Expenses:Cash $-97.00 $-97.00
+ Expenses:Food:Dining $6.90 $-90.10
+ Expenses:Food:Grocery $157.64 $67.54
+ Expenses:Home $108.13 $175.67
+ Expenses:Supplies $17.98 $193.65
+ Expenses:Taxes:Sales $15.10 $208.75
+ Expenses:Tips $97.00 $305.75
+ Liabilities:MasterCard $-305.75 0
+end test
+
+test reg -p "may 2011" --weekly --empty --exact
+11-May-01 - 11-May-01 Expe:Computer:Internet $16.10 $16.10
+ Liabilities:MasterCard $-16.10 0
+11-May-14 - 11-May-14 <None> 0 0
+11-May-18 - 11-May-20 Expe:Computer:Internet $30.00 $30.00
+ Expe:Computer:Software $6.99 $36.99
+ Expenses:Taxes:Sales $0.49 $37.48
+ Liabilities:MasterCard $-37.48 0
+11-May-26 - 11-May-28 Expenses:Auto:Gas $70.20 $70.20
+ Expenses:Beauty $18.91 $89.11
+ Expenses:Bedding $108.84 $197.95
+ Expenses:Clothing $2.96 $200.91
+ Expenses:Food $19.90 $220.81
+ Expenses:Food:Dining $78.32 $299.13
+ Expenses:Food:Grocery $67.97 $367.10
+ Expenses:Home $1,863.44 $2,230.54
+ Expenses:Home:Supplies $38.90 $2,269.44
+ Expenses:Movies $5.97 $2,275.41
+ Expenses:Supplies $3.84 $2,279.25
+ Expenses:Taxes:Sales $169.44 $2,448.69
+ Expenses:Tips $11.85 $2,460.54
+ Liabilities:MasterCard $-2,460.54 0
+11-May-29 - 11-May-31 Expenses:Cash $-97.00 $-97.00
+ Expenses:Food:Dining $6.90 $-90.10
+ Expenses:Food:Grocery $157.64 $67.54
+ Expenses:Home $108.13 $175.67
+ Expenses:Supplies $17.98 $193.65
+ Expenses:Taxes:Sales $15.10 $208.75
+ Expenses:Tips $97.00 $305.75
+ Liabilities:MasterCard $-305.75 0
+end test