From 690e14320bf4c10a7570e44dd908c4889765244d Mon Sep 17 00:00:00 2001 From: Dave Peticolas Date: Mon, 27 Nov 2000 23:14:45 +0000 Subject: [PATCH] Ensure damount == value when currency and security are equivalent. git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@3196 57a11ea4-9604-0410-9ed3-97b8803252fd --- src/engine/Scrub.c | 20 ++++++++++++++++---- src/engine/Scrub.h | 1 + src/engine/Transaction.c | 3 +++ 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/engine/Scrub.c b/src/engine/Scrub.c index 1b18d83f89..9f30320041 100644 --- a/src/engine/Scrub.c +++ b/src/engine/Scrub.c @@ -150,14 +150,13 @@ xaccTransScrubImbalance (Transaction *trans) if (!trans) return; + xaccTransScrubSplitImbalance (trans); + { GList *node; Account *account; Account *peer = NULL; - for (node = trans->splits; node; node = node->next) - xaccSplitScrubImbalance (node->data); - imbalance = xaccTransGetImbalance (trans); if (gnc_numeric_zero_p (imbalance)) return; @@ -231,7 +230,20 @@ xaccTransScrubImbalance (Transaction *trans) } } -void xaccSplitScrubImbalance (Split *split) +void +xaccTransScrubSplitImbalance (Transaction *trans) +{ + GList *node; + + if (!trans) + return; + + for (node = trans->splits; node; node = node->next) + xaccSplitScrubImbalance (node->data); +} + +void +xaccSplitScrubImbalance (Split *split) { Account *account; Transaction *trans; diff --git a/src/engine/Scrub.h b/src/engine/Scrub.h index 08732f179c..7ebd49968d 100644 --- a/src/engine/Scrub.h +++ b/src/engine/Scrub.h @@ -63,6 +63,7 @@ void xaccGroupScrubOrphans (AccountGroup *grp); * account. */ void xaccSplitScrubImbalance (Split *split); +void xaccTransScrubSplitImbalance (Transaction *trans); void xaccTransScrubImbalance (Transaction *trans); void xaccAccountScrubImbalance (Account *acc); void xaccAccountTreeScrubImbalance (Account *acc); diff --git a/src/engine/Transaction.c b/src/engine/Transaction.c index 11b6c71edb..462a850d75 100644 --- a/src/engine/Transaction.c +++ b/src/engine/Transaction.c @@ -36,6 +36,7 @@ #include "BackendP.h" #include "GNCIdP.h" #include "Group.h" +#include "Scrub.h" #include "Transaction.h" #include "TransactionP.h" #include "TransLog.h" @@ -1331,6 +1332,8 @@ xaccTransCommitEdit (Transaction *trans) xaccSplitSetValue(s, gnc_numeric_neg(split->value)); } + xaccTransScrubSplitImbalance (trans); + trans->open &= ~DEFER_REBALANCE; xaccTransRebalance (trans);