From e0a4109856ddc3664ad25b779dc20e7f74545445 Mon Sep 17 00:00:00 2001 From: John Wiegley Date: Sat, 12 Feb 2005 07:40:16 +0000 Subject: [PATCH] (reconcile_transactions): Added an error message, to make it easier to know when the commodity is wrong to --reconcile (such as using $ instead of \$ in the UNIX shell). --- reconcile.cc | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/reconcile.cc b/reconcile.cc index 555f3d60..9d6cae70 100644 --- a/reconcile.cc +++ b/reconcile.cc @@ -75,10 +75,19 @@ void reconcile_transactions(transactions_list& xact_list, return; } + if (cleared_balance.type >= value_t::BALANCE) + throw error("Cannot reconcile accounts with multiple commodities"); + + cleared_balance.cast(value_t::AMOUNT); + balance.cast(value_t::AMOUNT); + + commodity_t& cb_comm = ((amount_t *) cleared_balance.data)->commodity(); + commodity_t& b_comm = ((amount_t *) balance.data)->commodity(); + balance -= cleared_balance; if (balance.type >= value_t::BALANCE) - throw error("Cannot reconcile accounts with multiple commodities"); - balance.cast(value_t::AMOUNT); + throw error(std::string("Reconcile balance is not of the same commodity ('") + + b_comm.symbol + "' != '" + cb_comm.symbol + "')"); // If the amount to reconcile is the same as the pending balance, // then assume an exact match and return the results right away.