Collapse duplicated code into a single function.

git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@13652 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
David Hampton
2006-03-17 04:25:24 +00:00
parent d31b9d27c1
commit 5420a183ad
4 changed files with 18 additions and 15 deletions

View File

@@ -1768,6 +1768,17 @@ xaccAccountGetBalanceAsOfDateInCurrency(
include_children);
}
gnc_numeric
xaccAccountGetBalanceChangeForPeriod (Account *acc, time_t t1, time_t t2, gboolean recurse)
{
gnc_numeric b1, b2;
b1 = xaccAccountGetBalanceAsOfDateInCurrency(acc, t1, NULL, recurse);
b2 = xaccAccountGetBalanceAsOfDateInCurrency(acc, t2, NULL, recurse);
return gnc_numeric_sub(b2, b1, GNC_DENOM_AUTO, GNC_HOW_DENOM_FIXED);
}
/********************************************************************\
\********************************************************************/

View File

@@ -407,6 +407,10 @@ gnc_numeric xaccAccountGetProjectedMinimumBalanceInCurrency (
gnc_numeric xaccAccountGetBalanceAsOfDateInCurrency(
Account *account, time_t date, gnc_commodity *report_commodity,
gboolean include_children);
gnc_numeric xaccAccountGetBalanceChangeForPeriod (
Account *acc, time_t date1, time_t date2, gboolean recurse);
/** @} */
/** @name Account Children and Parents.

View File

@@ -246,18 +246,13 @@ recurrenceGetPeriodTime(const Recurrence *r, guint period_num, gboolean end)
gnc_numeric
recurrenceGetAccountPeriodValue(const Recurrence *r, Account *acc, guint n)
{
gnc_numeric num1, num2;
time_t t1, t2;
// FIXME: maybe zero is not best error return val.
g_return_val_if_fail(r && acc, gnc_numeric_zero());
t1 = recurrenceGetPeriodTime(r, n, FALSE);
t2 = recurrenceGetPeriodTime(r, n, TRUE);
num1 = xaccAccountGetBalanceAsOfDateInCurrency(acc, t1, NULL, TRUE);
num2 = xaccAccountGetBalanceAsOfDateInCurrency(acc, t2, NULL, TRUE);
return gnc_numeric_sub(num2, num1, GNC_DENOM_AUTO, GNC_HOW_DENOM_FIXED);
return xaccAccountGetBalanceChangeForPeriod (acc, t1, t2, TRUE);
}
void

View File

@@ -605,7 +605,7 @@ gnc_tree_model_account_compute_period_balance(GncTreeModelAccount *model,
{
GncTreeModelAccountPrivate *priv;
time_t t1, t2;
gnc_numeric b1, b2, b3;
gnc_numeric b3;
priv = GNC_TREE_MODEL_ACCOUNT_GET_PRIVATE(model);
if (acct == priv->toplevel)
@@ -617,14 +617,7 @@ gnc_tree_model_account_compute_period_balance(GncTreeModelAccount *model,
if (t1 > t2)
return g_strdup("");
if (recurse) {
b1 = xaccAccountGetBalanceAsOfDateInCurrency(acct, t1, NULL, TRUE);
b2 = xaccAccountGetBalanceAsOfDateInCurrency(acct, t2, NULL, TRUE);
} else {
b1 = xaccAccountGetBalanceAsOfDate(acct, t1);
b2 = xaccAccountGetBalanceAsOfDate(acct, t2);
}
b3 = gnc_numeric_sub(b2, b1, GNC_DENOM_AUTO, GNC_HOW_DENOM_FIXED);
b3 = xaccAccountGetBalanceChangeForPeriod(acct, t1, t2, recurse);
if (gnc_reverse_balance (acct))
b3 = gnc_numeric_neg (b3);