gnucash maint: Multiple changes pushed

Geert Janssens gjanssens at code.gnucash.org
Tue Jun 10 06:28:45 EDT 2014


Updated	 via  https://github.com/Gnucash/gnucash/commit/2182746b (commit)
	 via  https://github.com/Gnucash/gnucash/commit/247f0867 (commit)
	from  https://github.com/Gnucash/gnucash/commit/8e56cc88 (commit)



commit 2182746baf775b8494bf4dc297789554fabdbf3b
Author: Geert Janssens <janssens-geert at telenet.be>
Date:   Tue Jun 10 13:40:28 2014 +0200

    Bug 723442 - Report Options - Report Name too short

diff --git a/src/gnome-utils/dialog-options.c b/src/gnome-utils/dialog-options.c
index 7df387d..e493331 100644
--- a/src/gnome-utils/dialog-options.c
+++ b/src/gnome-utils/dialog-options.c
@@ -1637,7 +1637,7 @@ gnc_option_set_ui_widget_string (GNCOption *option, GtkBox *page_box,
                      G_CALLBACK(gnc_option_changed_widget_cb), option);
 
     gtk_box_pack_start(GTK_BOX(*enclosing), label, FALSE, FALSE, 0);
-    gtk_box_pack_start(GTK_BOX(*enclosing), value, FALSE, FALSE, 0);
+    gtk_box_pack_start(GTK_BOX(*enclosing), value, TRUE, TRUE, 0);
     gtk_widget_show_all(*enclosing);
     return value;
 }

commit 247f086703731e3379c8eaae22e18de0179a3fbb
Author: Carsten Rinke <carsten.rinke at gmx.de>
Date:   Wed Mar 26 21:34:35 2014 +0100

    Bug726674-BudgetReverseSignSupport

diff --git a/src/engine/gnc-budget.c b/src/engine/gnc-budget.c
index ae1e2e3..86a4a66 100644
--- a/src/engine/gnc-budget.c
+++ b/src/engine/gnc-budget.c
@@ -35,6 +35,8 @@
 #include "gnc-budget.h"
 #include "gnc-commodity.h"
 #include "gnc-gdate-utils.h"
+#include "gnc-prefs.h"
+/*#include "app-utils/gnc-ui-util.h" for gnc_reverse_balance */
 
 static QofLogModule log_module = GNC_MOD_ENGINE;
 
@@ -496,6 +498,52 @@ gnc_budget_unset_account_period_value(GncBudget *budget, const Account *account,
 
 }
 
+/******************************************************\
+ * this helper function has been placed here, because *
+ * the "original" function gnc_reverse_balance is not *
+ * reachable from here with the current build setup   *
+\******************************************************/
+
+gboolean
+gnc_is_account_reverse_balance (const Account *account)
+{
+    int type;
+
+    type = xaccAccountGetType (account);
+
+    if (gnc_prefs_get_bool (GNC_PREFS_GROUP_GENERAL, "reversed-accounts-incomeexpense"))
+    {
+	switch (type) {
+            case ACCT_TYPE_INCOME: return TRUE;
+              break;
+            case ACCT_TYPE_EXPENSE: return TRUE;
+              break;
+            default: return FALSE;
+              break;
+        }
+    }
+    else if (gnc_prefs_get_bool (GNC_PREFS_GROUP_GENERAL, "reversed-accounts-credit"))
+    {
+	switch (type) {
+            case ACCT_TYPE_LIABILITY: return TRUE;
+              break;
+            case ACCT_TYPE_PAYABLE: return TRUE;
+              break;
+            case ACCT_TYPE_EQUITY: return TRUE;
+              break;
+            case ACCT_TYPE_INCOME: return TRUE;
+              break;
+            case ACCT_TYPE_CREDIT: return TRUE;
+              break;
+            default: return FALSE;
+              break;
+        }
+    }
+
+    return FALSE;
+
+}
+
 /* period_num is zero-based */
 /* What happens when account is deleted, after we have an entry for it? */
 void
@@ -524,7 +572,12 @@ gnc_budget_set_account_period_value(GncBudget *budget, const Account *account,
     if (gnc_numeric_check(val))
         kvp_frame_set_value(frame, path, NULL);
     else
+    {
+        if (gnc_is_account_reverse_balance (account))
+            val = gnc_numeric_neg (val);
+
         kvp_frame_set_numeric(frame, path, val);
+    }
     qof_instance_set_dirty(&budget->inst);
     gnc_budget_commit_edit(budget);
 
@@ -570,6 +623,10 @@ gnc_budget_get_account_period_value(const GncBudget *budget, const Account *acco
     g_sprintf(bufend, "/%d", period_num);
 
     numeric = kvp_frame_get_numeric(frame, path);
+
+    if (gnc_is_account_reverse_balance (account))
+        numeric = gnc_numeric_neg (numeric);
+
     /* This still returns zero if unset, but callers can check for that. */
     return numeric;
 }
diff --git a/src/engine/gnc-budget.h b/src/engine/gnc-budget.h
index 35815d0..3d2ce1f 100644
--- a/src/engine/gnc-budget.h
+++ b/src/engine/gnc-budget.h
@@ -136,6 +136,9 @@ Timespec gnc_budget_get_period_start_date(const GncBudget* budget, guint period_
 /** Get the ending date of the Budget period*/
 Timespec gnc_budget_get_period_end_date(const GncBudget* budget, guint period_num);
 
+/* local helper to check what preferences have been set for account reverse */
+gboolean gnc_is_account_reverse_balance (const Account *account);
+
 /* Period indices are zero-based. */
 void gnc_budget_set_account_period_value(
     GncBudget* budget, const Account* account, guint period_num, gnc_numeric val);
diff --git a/src/gnome/gnc-plugin-page-budget.c b/src/gnome/gnc-plugin-page-budget.c
index f76f881..6025a40 100644
--- a/src/gnome/gnc-plugin-page-budget.c
+++ b/src/gnome/gnc-plugin-page-budget.c
@@ -869,10 +869,6 @@ estimate_budget_helper(GtkTreeModel *model, GtkTreePath *path,
         num = recurrenceGetAccountPeriodValue(&priv->r, acct, i);
         if (!gnc_numeric_check(num))
         {
-            if (gnc_reverse_balance (acct))
-                num = gnc_numeric_neg (num);
-
-
             num = gnc_numeric_convert(num, GNC_DENOM_AUTO,
                                       GNC_HOW_DENOM_SIGFIGS(priv->sigFigs) | GNC_HOW_RND_ROUND_HALF_UP);
             gnc_budget_set_account_period_value(
diff --git a/src/report/standard-reports/budget-barchart.scm b/src/report/standard-reports/budget-barchart.scm
index ccc1372..8c9b361 100644
--- a/src/report/standard-reports/budget-barchart.scm
+++ b/src/report/standard-reports/budget-barchart.scm
@@ -120,36 +120,51 @@
 
       ;; Loop though periods
       (while (< period num-periods)
-
-        ;; Add calc new running sum and add to list
-	(if running-sum 
-          (set! bgt-sum (+ bgt-sum 
-            (gnc-numeric-to-double
-              (gnc-budget-get-account-period-value budget acct period))))
-          
-	  (set! bgt-sum 
-            (gnc-numeric-to-double
-              (gnc-budget-get-account-period-value budget acct period)))
-        )
-        (set! bgt-vals (append bgt-vals (list bgt-sum)))
-
-	(if running-sum
-	  (set! act-sum (+ act-sum
-            (gnc-numeric-to-double
-              (gnc-budget-get-account-period-actual-value budget acct period))))
-	  
-	  (set! act-sum
-            (gnc-numeric-to-double
-              (gnc-budget-get-account-period-actual-value budget acct period)))
-	)
-        (set! act-vals (append act-vals (list act-sum)))
-
-	;; Add period to date list
-        (set! date (gnc-budget-get-period-start-date budget period))
-        (set! date-list (append date-list (list (gnc-print-date date))))
-
-	(set! period (+ period 1))
-      )
+        (let
+          (
+            (budget-period-value
+              (gnc-budget-get-account-period-value budget acct period)
+            )
+            (actual-period-value
+              (gnc-budget-get-account-period-actual-value budget acct period)
+            )
+          )
+
+          ;; take care of the reverse account preference
+          ;; only needed for the actual value
+          ;; for the budget value this is already included
+          (if (gnc-reverse-balance acct)
+            (set! actual-period-value
+              (gnc-numeric-neg actual-period-value)
+            )
+          )
+
+          ;; do the conversion
+          (set! budget-period-value (gnc-numeric-to-double budget-period-value))
+          (set! actual-period-value (gnc-numeric-to-double actual-period-value))
+
+          ;; Add calc new running sum and add to list
+          (if running-sum
+            (set! bgt-sum (+ bgt-sum budget-period-value))
+            ;; else
+            (set! bgt-sum budget-period-value)
+          )
+          (set! bgt-vals (append bgt-vals (list bgt-sum)))
+
+          (if running-sum
+	    (set! act-sum (+ act-sum actual-period-value))
+	    ;; else
+	    (set! act-sum actual-period-value)
+	  )
+          (set! act-vals (append act-vals (list act-sum)))
+
+	  ;; Add period to date list
+          (set! date (gnc-budget-get-period-start-date budget period))
+          (set! date-list (append date-list (list (gnc-print-date date))))
+
+	  (set! period (+ period 1))
+        );; end of let
+      );; end of while
 
       ;; Add data to chart
       (gnc:html-barchart-append-column! chart bgt-vals)
diff --git a/src/report/standard-reports/budget-income-statement.scm b/src/report/standard-reports/budget-income-statement.scm
index bb110f4..042949e 100644
--- a/src/report/standard-reports/budget-income-statement.scm
+++ b/src/report/standard-reports/budget-income-statement.scm
@@ -570,11 +570,32 @@
           ;; Total expenses.
           (set! expense-total
             (gnc:get-assoc-account-balances-total expense-account-balances))
+          (if (gnc-reverse-balance (car expense-accounts))
+             (set! expense-total
+               (gnc:commodity-collector-get-negated expense-total)
+             )
+          )
 
           ;; Function to get individual expense account total.
           (set! expense-get-balance-fn
             (lambda (account start-date end-date)
-              (gnc:select-assoc-account-balance expense-account-balances account)))
+              (let
+                (
+                  (individual-balance
+                    (gnc:select-assoc-account-balance
+                      expense-account-balances
+                      account
+                    )
+                  )
+                )
+                (if (gnc-reverse-balance account)
+                  (gnc:commodity-collector-get-negated individual-balance)
+                  ;; else
+                  individual-balance
+                )
+              )
+            )
+          )
 
 
 	  (gnc:report-percent-done 10)
@@ -592,13 +613,33 @@
           ;; Total revenue.
           (set! revenue-total
             (gnc:get-assoc-account-balances-total revenue-account-balances))
+          (if (not (gnc-reverse-balance (car revenue-accounts)))
+             (set! revenue-total
+               (gnc:commodity-collector-get-negated revenue-total)
+             )
+          )
 
           ;; Function to get individual revenue account total.
           ;; Budget revenue is always positive, so this must be negated.
           (set! revenue-get-balance-fn
             (lambda (account start-date end-date)
-              (gnc:commodity-collector-get-negated
-                (gnc:select-assoc-account-balance revenue-account-balances account))))
+              (let
+                (
+                  (individual-balance
+                    (gnc:select-assoc-account-balance
+                      revenue-account-balances
+                      account
+                    )
+                  )
+                )
+                (if (gnc-reverse-balance account)
+                  (gnc:commodity-collector-get-negated individual-balance)
+                  ;; else
+                  individual-balance
+                )
+              )
+            )
+          )
 
 
 	  (gnc:report-percent-done 20)



Summary of changes:
 src/engine/gnc-budget.c                            | 57 ++++++++++++++++
 src/engine/gnc-budget.h                            |  3 +
 src/gnome-utils/dialog-options.c                   |  2 +-
 src/gnome/gnc-plugin-page-budget.c                 |  4 --
 src/report/standard-reports/budget-barchart.scm    | 75 +++++++++++++---------
 .../standard-reports/budget-income-statement.scm   | 47 +++++++++++++-
 6 files changed, 150 insertions(+), 38 deletions(-)



More information about the gnucash-changes mailing list