summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Michlmayr <tbm@cyrius.com>2014-07-14 21:05:54 -0400
committerMartin Michlmayr <tbm@cyrius.com>2014-07-14 21:05:54 -0400
commitb88634206402814f63ba8db192e52d3e3bec2b38 (patch)
tree08ffacae3c1d72251d8ba25a446c5ea10140f40f
parenta44572f3ecc8649539d574bd7171597644d1e92e (diff)
downloadfork-ledger-b88634206402814f63ba8db192e52d3e3bec2b38.tar.gz
fork-ledger-b88634206402814f63ba8db192e52d3e3bec2b38.tar.bz2
fork-ledger-b88634206402814f63ba8db192e52d3e3bec2b38.zip
Preserve the given cost for print
Patch from John Wiegley
-rw-r--r--src/post.h1
-rw-r--r--src/print.cc6
-rw-r--r--src/textual.cc2
3 files changed, 6 insertions, 3 deletions
diff --git a/src/post.h b/src/post.h
index 51a75ade..c2f77b32 100644
--- a/src/post.h
+++ b/src/post.h
@@ -68,6 +68,7 @@ public:
amount_t amount; // can be null until finalization
optional<expr_t> amount_expr;
optional<amount_t> cost;
+ optional<amount_t> given_cost;
optional<amount_t> assigned_amount;
optional<datetime_t> checkin;
optional<datetime_t> checkout;
diff --git a/src/print.cc b/src/print.cc
index 9be3b511..54cfa578 100644
--- a/src/print.cc
+++ b/src/print.cc
@@ -243,7 +243,7 @@ namespace {
amtbuf << string(2 - (slip + amt_slip), ' ');
amtbuf << amt;
- if (post->cost &&
+ if (post->given_cost &&
! post->has_flags(POST_CALCULATED | POST_COST_CALCULATED)) {
std::string cost_op;
if (post->has_flags(POST_COST_IN_FULL))
@@ -254,10 +254,10 @@ namespace {
cost_op = "(" + cost_op + ")";
if (post->has_flags(POST_COST_IN_FULL))
- amtbuf << " " << cost_op << " " << post->cost->abs();
+ amtbuf << " " << cost_op << " " << post->given_cost->abs();
else
amtbuf << " " << cost_op << " "
- << (*post->cost / post->amount).abs();
+ << (*post->given_cost / post->amount).abs();
}
if (post->assigned_amount)
diff --git a/src/textual.cc b/src/textual.cc
index eea79de0..156e2b9c 100644
--- a/src/textual.cc
+++ b/src/textual.cc
@@ -1578,6 +1578,8 @@ post_t * instance_t::parse_post(char * line,
if (fixed_cost)
post->add_flags(POST_COST_FIXATED);
+ post->given_cost = post->cost;
+
DEBUG("textual.parse", "line " << context.linenum << ": "
<< "Total cost is " << *post->cost);
DEBUG("textual.parse", "line " << context.linenum << ": "