diff options
author | Oleg Bulatov <oleg@bulatov.me> | 2022-05-05 08:11:05 +0200 |
---|---|---|
committer | Martin Michlmayr <tbm@cyrius.com> | 2022-05-06 06:47:07 +0800 |
commit | 54991cc22e51733bfeadb1fdd8b3001b06df4d74 (patch) | |
tree | 98015b5e3abf3ce4352997bf1802afbc5e26e178 /src | |
parent | ed0b99fcfc37844f5d88eb7678ca23b490fd5b98 (diff) | |
download | fork-ledger-54991cc22e51733bfeadb1fdd8b3001b06df4d74.tar.gz fork-ledger-54991cc22e51733bfeadb1fdd8b3001b06df4d74.tar.bz2 fork-ledger-54991cc22e51733bfeadb1fdd8b3001b06df4d74.zip |
Fix unrounding for equity
Diffstat (limited to 'src')
-rw-r--r-- | src/chain.cc | 2 | ||||
-rw-r--r-- | src/filters.cc | 2 | ||||
-rw-r--r-- | src/filters.h | 5 |
3 files changed, 6 insertions, 3 deletions
diff --git a/src/chain.cc b/src/chain.cc index 7ac7d593..3a96f921 100644 --- a/src/chain.cc +++ b/src/chain.cc @@ -213,7 +213,7 @@ post_handler_ptr chain_post_handlers(post_handler_ptr base_handler, // day_of_week_posts is like period_posts, except that it reports // all the posts that fall on each subsequent day of the week. if (report.HANDLED(equity)) - handler.reset(new posts_as_equity(handler, report, expr)); + handler.reset(new posts_as_equity(handler, report, expr, report.HANDLED(unround))); else if (report.HANDLED(subtotal)) handler.reset(new subtotal_posts(handler, expr)); } diff --git a/src/filters.cc b/src/filters.cc index 6db8af80..7f615785 100644 --- a/src/filters.cc +++ b/src/filters.cc @@ -1106,6 +1106,8 @@ void posts_as_equity::report_subtotal() value_t total = 0L; foreach (values_map::value_type& pair, values) { value_t value(pair.second.value.strip_annotations(report.what_to_keep())); + if (unround) + value.in_place_unround(); if (! value.is_zero()) { if (value.is_balance()) { value.as_balance_lval().map_sorted_amounts diff --git a/src/filters.h b/src/filters.h index 4972b710..7252b057 100644 --- a/src/filters.h +++ b/src/filters.h @@ -790,13 +790,14 @@ class posts_as_equity : public subtotal_posts post_t * last_post; account_t * equity_account; account_t * balance_account; + bool unround; posts_as_equity(); public: posts_as_equity(post_handler_ptr _handler, report_t& _report, - expr_t& amount_expr) - : subtotal_posts(_handler, amount_expr), report(_report) { + expr_t& amount_expr, bool _unround) + : subtotal_posts(_handler, amount_expr), report(_report), unround(_unround) { create_accounts(); TRACE_CTOR(posts_as_equity, "post_handler_ptr, expr_t&"); } |