mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
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:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
/********************************************************************\
|
||||
\********************************************************************/
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user