[Gnucash-changes] r13165 - gnucash/trunk/src/gnome-utils - Add two columns to the Accounts page: "Total (Period)" & "Balance (Period)"

Chris Shoemaker chris at cvs.gnucash.org
Wed Feb 8 23:53:43 EST 2006


Author: chris
Date: 2006-02-08 23:53:43 -0500 (Wed, 08 Feb 2006)
New Revision: 13165
Trac: http://svn.gnucash.org/trac/changeset/13165

Modified:
   gnucash/trunk/src/gnome-utils/gnc-tree-view-account.c
Log:
   Add two columns to the Accounts page: "Total (Period)" & "Balance (Period)"
   These are the recursive and non-recursive, respectively, period balances,
   where the accounting period is specified in the preferences.


Modified: gnucash/trunk/src/gnome-utils/gnc-tree-view-account.c
===================================================================
--- gnucash/trunk/src/gnome-utils/gnc-tree-view-account.c	2006-02-09 04:41:42 UTC (rev 13164)
+++ gnucash/trunk/src/gnome-utils/gnc-tree-view-account.c	2006-02-09 04:53:43 UTC (rev 13165)
@@ -45,6 +45,7 @@
 #include "gnc-icons.h"
 #include "gnc-ui-util.h"
 #include "dialog-utils.h"
+#include "window-main-summarybar.h"
 
 #define SAMPLE_ACCOUNT_VALUE "$1,000,000.00"
 
@@ -337,7 +338,46 @@
   return 1;
 }
 
+#define RECURSE GINT_TO_POINTER(1)
 
+static void
+cdf_period(GtkTreeViewColumn *col, GtkCellRenderer *cell, 
+           GtkTreeModel *s_model, GtkTreeIter *iter, gpointer data)
+{
+    Account *acct;
+    time_t t1, t2;
+    const char *str;
+
+    g_return_if_fail(GTK_TREE_VIEW_COLUMN(col));
+    g_return_if_fail(GTK_CELL_RENDERER(cell));
+    g_return_if_fail(GTK_TREE_MODEL_SORT(s_model));
+
+    acct = gnc_tree_view_account_get_account_from_iter(s_model, iter);
+    t1 = gnc_main_window_summary_get_start();
+    t2 = gnc_main_window_summary_get_end();
+    
+    if (t2 > t1) {
+        GValue *value;
+        gnc_numeric b1, b2, b3;  
+        g_value_init (value, G_TYPE_STRING);
+
+        if (data == 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);
+        if (gnc_reverse_balance (acct))
+            b3 = gnc_numeric_neg (b3);
+        
+        str = xaccPrintAmount(b3, gnc_account_print_info(acct, TRUE));
+
+    } else str = "";    
+    g_object_set(cell, "text", str, NULL);
+}
+
 /************************************************************/
 /*                    New View Creation                     */
 /************************************************************/
@@ -445,6 +485,17 @@
 				   GNC_TREE_MODEL_ACCOUNT_COL_COLOR_BALANCE,
 				   GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS,
 				   sort_by_balance_value);
+
+  {
+      GtkTreeViewColumn *col = gnc_tree_view_add_numeric_column(
+          view, _("Balance (Period)"), "balance-period", SAMPLE_ACCOUNT_VALUE, 
+          GNC_TREE_VIEW_COLUMN_DATA_NONE, GNC_TREE_VIEW_COLUMN_COLOR_NONE, 
+          GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS, NULL);
+      GtkCellRenderer *cr = gnc_tree_view_column_get_renderer(col);
+      gtk_tree_view_column_set_cell_data_func(
+          col, cr, cdf_period, NULL, NULL);
+  }
+  
   gnc_tree_view_add_numeric_column(view, _("Cleared"), "cleared",
 				   SAMPLE_ACCOUNT_VALUE,
 				   GNC_TREE_MODEL_ACCOUNT_COL_CLEARED,
@@ -493,6 +544,16 @@
 				   GNC_TREE_MODEL_ACCOUNT_COL_COLOR_TOTAL,
 				   GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS,
 				   sort_by_total_value);
+  {
+      GtkTreeViewColumn *col = gnc_tree_view_add_numeric_column(
+          view, _("Total (Period)"), "total-period", SAMPLE_ACCOUNT_VALUE, 
+          GNC_TREE_VIEW_COLUMN_DATA_NONE, GNC_TREE_VIEW_COLUMN_COLOR_NONE, 
+          GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS, NULL);
+      GtkCellRenderer *cr = gnc_tree_view_column_get_renderer(col);
+      gtk_tree_view_column_set_cell_data_func(
+          col, cr, cdf_period, RECURSE, NULL);
+  }
+  
   priv->notes_column
     = gnc_tree_view_add_text_column(view, _("Notes"), "notes", NULL,
                                     "Sample account notes.",



More information about the gnucash-changes mailing list