r17082 - gnucash/branches/gda-dev2/src - 1) Ensure that 'enabled' and 'instance_count' are saved for scheduled

Phil Longstaff plongstaff at cvs.gnucash.org
Sun Apr 13 13:41:19 EDT 2008


Author: plongstaff
Date: 2008-04-13 13:41:18 -0400 (Sun, 13 Apr 2008)
New Revision: 17082
Trac: http://svn.gnucash.org/trac/changeset/17082

Modified:
   gnucash/branches/gda-dev2/src/backend/gda/gnc-backend-gda.c
   gnucash/branches/gda-dev2/src/backend/gda/gnc-backend-util-gda.c
   gnucash/branches/gda-dev2/src/backend/gda/gnc-lots-gda.c
   gnucash/branches/gda-dev2/src/backend/gda/gnc-recurrence-gda.c
   gnucash/branches/gda-dev2/src/backend/gda/gnc-schedxaction-gda.c
   gnucash/branches/gda-dev2/src/business/business-core/gda/gnc-bill-term-gda.c
   gnucash/branches/gda-dev2/src/business/business-core/gda/gnc-tax-table-gda.c
Log:
1) Ensure that 'enabled' and 'instance_count' are saved for scheduled
transactions.
2) When storing sx recurrences, use the correct sx guid to tie them to
3) Fix up some boolean and int value handling when getting and setting
values.



Modified: gnucash/branches/gda-dev2/src/backend/gda/gnc-backend-gda.c
===================================================================
--- gnucash/branches/gda-dev2/src/backend/gda/gnc-backend-gda.c	2008-04-12 20:28:21 UTC (rev 17081)
+++ gnucash/branches/gda-dev2/src/backend/gda/gnc-backend-gda.c	2008-04-13 17:41:18 UTC (rev 17082)
@@ -549,7 +549,7 @@
 
     for( ; schedXactions != NULL; schedXactions = schedXactions->next ) {
         tmpSX = schedXactions->data;
-	gnc_gda_save_schedxaction( QOF_INSTANCE( tmpSX ), be );
+		gnc_gda_save_schedxaction( QOF_INSTANCE( tmpSX ), be );
     }
 }
 

Modified: gnucash/branches/gda-dev2/src/backend/gda/gnc-backend-util-gda.c
===================================================================
--- gnucash/branches/gda-dev2/src/backend/gda/gnc-backend-util-gda.c	2008-04-12 20:28:21 UTC (rev 17081)
+++ gnucash/branches/gda-dev2/src/backend/gda/gnc-backend-util-gda.c	2008-04-13 17:41:18 UTC (rev 17082)
@@ -254,6 +254,8 @@
     = { load_string, create_string_col,
         get_gvalue_string_for_query, get_gvalue_string_cond };
 /* ----------------------------------------------------------------- */
+typedef gint (*IntAccessFunc)( const gpointer );
+typedef void (*IntSetterFunc)( const gpointer, gint );
 
 static void
 load_int( const GncGdaBackend* be, GdaDataModel* pModel, gint row,
@@ -262,6 +264,7 @@
 {
     const GValue* val;
     gint int_value;
+	IntSetterFunc i_setter;
 
 	g_return_if_fail( be != NULL );
 	g_return_if_fail( pModel != NULL );
@@ -278,7 +281,8 @@
     if( table_row->gobj_param_name != NULL ) {
 		g_object_set( pObject, table_row->gobj_param_name, int_value, NULL );
     } else {
-    	(*setter)( pObject, GINT_TO_POINTER(int_value) );
+		i_setter = (IntSetterFunc)setter;
+    	(*i_setter)( pObject, int_value );
     }
 }
 
@@ -287,7 +291,7 @@
                 const gpointer pObject, const col_cvt_t* table_row, GValue* value )
 {
     gint int_value;
-    QofAccessFunc getter;
+    IntAccessFunc i_getter;
 
 	g_return_if_fail( be != NULL );
 	g_return_if_fail( obj_name != NULL );
@@ -297,8 +301,8 @@
 
     memset( value, 0, sizeof( GValue ) );
 
-    getter = gnc_gda_get_getter( obj_name, table_row );
-    int_value = GPOINTER_TO_INT((*getter)( pObject, NULL ));
+    i_getter = (IntAccessFunc)gnc_gda_get_getter( obj_name, table_row );
+    int_value = (*i_getter)( pObject );
     g_value_init( value, G_TYPE_INT );
     g_value_set_int( value, int_value );
 }
@@ -356,6 +360,8 @@
         { load_int, create_int_col,
             get_gvalue_int_for_query, get_gvalue_int_cond };
 /* ----------------------------------------------------------------- */
+typedef gboolean (*BooleanAccessFunc)( const gpointer );
+typedef void (*BooleanSetterFunc)( const gpointer, gboolean );
 
 static void
 load_boolean( const GncGdaBackend* be, GdaDataModel* pModel, gint row,
@@ -364,6 +370,7 @@
 {
     const GValue* val;
     gint int_value;
+	BooleanSetterFunc b_setter;
 
 	g_return_if_fail( be != NULL );
 	g_return_if_fail( pModel != NULL );
@@ -380,7 +387,8 @@
     if( table_row->gobj_param_name != NULL ) {
 		g_object_set( pObject, table_row->gobj_param_name, int_value, NULL );
     } else {
-    	(*setter)( pObject, GINT_TO_POINTER(int_value) );
+		b_setter = (BooleanSetterFunc)setter;
+    	(*b_setter)( pObject, int_value ? TRUE : FALSE );
     }
 }
 
@@ -389,7 +397,7 @@
                 const gpointer pObject, const col_cvt_t* table_row, GValue* value )
 {
     gint int_value;
-    QofAccessFunc getter;
+    BooleanAccessFunc b_getter;
 
 	g_return_if_fail( be != NULL );
 	g_return_if_fail( obj_name != NULL );
@@ -399,8 +407,8 @@
 
     memset( value, 0, sizeof( GValue ) );
 
-    getter = gnc_gda_get_getter( obj_name, table_row );
-    int_value = GPOINTER_TO_INT((*getter)( pObject, NULL ));
+    b_getter = (BooleanAccessFunc)gnc_gda_get_getter( obj_name, table_row );
+    int_value = ((*b_getter)( pObject )) ? 1 : 0;
     g_value_init( value, G_TYPE_INT );
     g_value_set_int( value, int_value );
 }

Modified: gnucash/branches/gda-dev2/src/backend/gda/gnc-lots-gda.c
===================================================================
--- gnucash/branches/gda-dev2/src/backend/gda/gnc-lots-gda.c	2008-04-12 20:28:21 UTC (rev 17081)
+++ gnucash/branches/gda-dev2/src/backend/gda/gnc-lots-gda.c	2008-04-13 17:41:18 UTC (rev 17082)
@@ -45,13 +45,14 @@
 
 static gpointer get_lot_account( gpointer pObject, const QofParam* param );
 static void set_lot_account( gpointer pObject, gpointer pValue );
-static void set_lot_is_closed( gpointer pObject, gpointer pValue );
+static void set_lot_is_closed( gpointer pObject, gboolean value );
 
 static const col_cvt_t col_table[] =
 {
     { "guid",         CT_GUID,    0, COL_NNUL|COL_PKEY, "guid" },
     { "account_guid", CT_GUID,    0, COL_NNUL,          NULL, NULL, get_lot_account,   set_lot_account },
-    { "is_closed",    CT_BOOLEAN, 0, COL_NNUL,          NULL, NULL, (QofAccessFunc)gnc_lot_is_closed, set_lot_is_closed },
+    { "is_closed",    CT_BOOLEAN, 0, COL_NNUL,          NULL, NULL,
+		(QofAccessFunc)gnc_lot_is_closed, (QofSetterFunc)set_lot_is_closed },
     { NULL }
 };
 
@@ -87,10 +88,9 @@
 }
 
 static void
-set_lot_is_closed( gpointer pObject, gpointer pValue )
+set_lot_is_closed( gpointer pObject, gboolean closed )
 {
     GNCLot* lot = GNC_LOT(pObject);
-    gboolean closed = GPOINTER_TO_INT(pValue);
 
 	g_return_if_fail( pObject != NULL );
 	g_return_if_fail( GNC_IS_LOT(pObject) );

Modified: gnucash/branches/gda-dev2/src/backend/gda/gnc-recurrence-gda.c
===================================================================
--- gnucash/branches/gda-dev2/src/backend/gda/gnc-recurrence-gda.c	2008-04-12 20:28:21 UTC (rev 17081)
+++ gnucash/branches/gda-dev2/src/backend/gda/gnc-recurrence-gda.c	2008-04-13 17:41:18 UTC (rev 17082)
@@ -53,8 +53,8 @@
 
 static gpointer get_obj_guid( gpointer pObject, const QofParam* param );
 static void set_obj_guid( gpointer pObject, gpointer pValue );
-static gpointer get_recurrence_mult( gpointer pObject, const QofParam* );
-static void set_recurrence_mult( gpointer pObject, gpointer pValue );
+static gint get_recurrence_mult( gpointer pObject );
+static void set_recurrence_mult( gpointer pObject, gint value );
 static gpointer get_recurrence_period_type( gpointer pObject, const QofParam* );
 static void set_recurrence_period_type( gpointer pObject, gpointer pValue );
 static gpointer get_recurrence_period_start( gpointer pObject, const QofParam* );
@@ -65,7 +65,7 @@
     { "obj_guid",                CT_GUID,   0,                                     COL_NNUL, NULL, NULL,
             get_obj_guid, set_obj_guid },
     { "recurrence_mult",         CT_INT,    0,                                     COL_NNUL, NULL, NULL,
-            get_recurrence_mult, set_recurrence_mult },
+            (QofAccessFunc)get_recurrence_mult, (QofSetterFunc)set_recurrence_mult },
     { "recurrence_period_type",  CT_STRING, BUDGET_MAX_RECURRENCE_PERIOD_TYPE_LEN, COL_NNUL, NULL, NULL,
 			get_recurrence_period_type, set_recurrence_period_type },
     { "recurrence_period_start", CT_GDATE,  0,                                     COL_NNUL, NULL, NULL,
@@ -99,29 +99,26 @@
     // Nowhere to put the GUID
 }
 
-static gpointer
-get_recurrence_mult( gpointer pObject, const QofParam* param )
+static gint
+get_recurrence_mult( gpointer pObject )
 {
     recurrence_info_t* pInfo = (recurrence_info_t*)pObject;
-    static guint m;
 	
-	g_return_val_if_fail( pObject != NULL, NULL );
-	g_return_val_if_fail( pInfo->pRecurrence != NULL, NULL );
+	g_return_val_if_fail( pObject != NULL, 0 );
+	g_return_val_if_fail( pInfo->pRecurrence != NULL, 0 );
 
-	m = pInfo->pRecurrence->mult;
-    return GUINT_TO_POINTER(m);
+	return pInfo->pRecurrence->mult;
 }
 
 static void
-set_recurrence_mult( gpointer pObject, gpointer pValue )
+set_recurrence_mult( gpointer pObject, gint value )
 {
     recurrence_info_t* pInfo = (recurrence_info_t*)pObject;
-    guint m = GPOINTER_TO_UINT(pValue);
 
 	g_return_if_fail( pObject != NULL );
 	g_return_if_fail( pInfo->pRecurrence != NULL );
 
-    pInfo->pRecurrence->mult = m;
+    pInfo->pRecurrence->mult = value;
 }
 
 static gpointer

Modified: gnucash/branches/gda-dev2/src/backend/gda/gnc-schedxaction-gda.c
===================================================================
--- gnucash/branches/gda-dev2/src/backend/gda/gnc-schedxaction-gda.c	2008-04-12 20:28:21 UTC (rev 17081)
+++ gnucash/branches/gda-dev2/src/backend/gda/gnc-schedxaction-gda.c	2008-04-13 17:41:18 UTC (rev 17082)
@@ -50,10 +50,11 @@
 
 #define SX_MAX_NAME_LEN 2048
 
-static gpointer get_autocreate( gpointer pObject, const QofParam* param );
-static void set_autocreate( gpointer pObject, gpointer pValue );
-static gpointer get_autonotify( gpointer pObject, const QofParam* param );
-static void set_autonotify( gpointer pObject, gpointer pValue );
+static gboolean get_autocreate( gpointer pObject );
+static void set_autocreate( gpointer pObject, gboolean value );
+static gboolean get_autonotify( gpointer pObject );
+static void set_autonotify( gpointer pObject, gboolean value );
+static gint get_instance_count( gpointer pObject );
 static gpointer get_template_act_guid( gpointer pObject, const QofParam* param );
 static void set_template_act_guid( gpointer pObject, gpointer pValue );
 
@@ -61,20 +62,24 @@
 {
     { "guid",              CT_GUID,    0,               COL_NNUL|COL_PKEY, "guid" },
     { "name",              CT_STRING,  SX_MAX_NAME_LEN, 0,                 NULL, GNC_SX_NAME },
+	{ "enabled",           CT_BOOLEAN, 0,               COL_NNUL,          NULL, NULL,
+			(QofAccessFunc)xaccSchedXactionGetEnabled, (QofSetterFunc)xaccSchedXactionSetEnabled },
     { "start_date",        CT_GDATE,   0,               COL_NNUL,          NULL, GNC_SX_START_DATE },
     { "last_occur",        CT_GDATE,   0,               0,                 NULL, GNC_SX_LAST_DATE },
     { "num_occur",         CT_INT,     0,               COL_NNUL,          NULL, GNC_SX_NUM_OCCUR },
     { "rem_occur",         CT_INT,     0,               COL_NNUL,          NULL, GNC_SX_REM_OCCUR },
     { "auto_create",       CT_BOOLEAN, 0,               COL_NNUL,          NULL, NULL,
-			get_autocreate,        set_autocreate },
+			(QofAccessFunc)get_autocreate,        (QofSetterFunc)set_autocreate },
     { "auto_notify",       CT_BOOLEAN, 0,               COL_NNUL,          NULL, NULL,
-			get_autonotify,        set_autonotify },
+			(QofAccessFunc)get_autonotify,        (QofSetterFunc)set_autonotify },
     { "adv_creation",      CT_INT,     0,               COL_NNUL,          NULL, NULL,
             (QofAccessFunc)xaccSchedXactionGetAdvanceCreation,
             (QofSetterFunc)xaccSchedXactionSetAdvanceCreation },
     { "adv_notify",        CT_INT,     0,               COL_NNUL,          NULL, NULL,
             (QofAccessFunc)xaccSchedXactionGetAdvanceReminder,
             (QofSetterFunc)xaccSchedXactionSetAdvanceReminder },
+	{ "instance_count",    CT_INT,     0,               COL_NNUL,          NULL, NULL,
+			(QofAccessFunc)get_instance_count, (QofSetterFunc)gnc_sx_set_instance_count },
     { "template_act_guid", CT_GUID,    0,               COL_NNUL,          NULL, NULL,
 			get_template_act_guid, set_template_act_guid },
     { NULL }
@@ -82,64 +87,73 @@
 
 /* ================================================================= */
 
-static gpointer
-get_autocreate( gpointer pObject, const QofParam* param )
+static gboolean
+get_autocreate( gpointer pObject )
 {
     const SchedXaction* pSx = GNC_SX(pObject);
     gboolean autoCreate;
     gboolean autoNotify;
 
-	g_return_val_if_fail( pObject != NULL, NULL );
-	g_return_val_if_fail( GNC_IS_SX(pObject), NULL );
+	g_return_val_if_fail( pObject != NULL, FALSE );
+	g_return_val_if_fail( GNC_IS_SX(pObject), FALSE );
 
     xaccSchedXactionGetAutoCreate( pSx, &autoCreate, &autoNotify );
-    return GINT_TO_POINTER(autoCreate);
+    return autoCreate;
 }
 
 static void 
-set_autocreate( gpointer pObject, gpointer pValue )
+set_autocreate( gpointer pObject, gboolean value )
 {
     SchedXaction* pSx = GNC_SX(pObject);
-    gboolean autoCreate;
     gboolean autoNotify;
+	gboolean dummy;
 
 	g_return_if_fail( pObject != NULL );
 	g_return_if_fail( GNC_IS_SX(pObject) );
 
-    xaccSchedXactionGetAutoCreate( pSx, &autoCreate, &autoNotify );
-    autoCreate = GPOINTER_TO_INT(pValue);
-    xaccSchedXactionSetAutoCreate( pSx, autoCreate, autoNotify );
+    xaccSchedXactionGetAutoCreate( pSx, &dummy, &autoNotify );
+    xaccSchedXactionSetAutoCreate( pSx, value, autoNotify );
 }
 
-static gpointer
-get_autonotify( gpointer pObject, const QofParam* param )
+static gboolean
+get_autonotify( gpointer pObject )
 {
     const SchedXaction* pSx = GNC_SX(pObject);
     gboolean autoCreate;
     gboolean autoNotify;
 
-	g_return_val_if_fail( pObject != NULL, NULL );
-	g_return_val_if_fail( GNC_IS_SX(pObject), NULL );
+	g_return_val_if_fail( pObject != NULL, FALSE );
+	g_return_val_if_fail( GNC_IS_SX(pObject), FALSE );
 
     xaccSchedXactionGetAutoCreate( pSx, &autoCreate, &autoNotify );
-    return GINT_TO_POINTER(autoNotify);
+    return autoNotify;
 }
 
 static void 
-set_autonotify( gpointer pObject, gpointer pValue )
+set_autonotify( gpointer pObject, gboolean value )
 {
     SchedXaction* pSx = GNC_SX(pObject);
     gboolean autoCreate;
-    gboolean autoNotify;
+    gboolean dummy;
 
 	g_return_if_fail( pObject != NULL );
 	g_return_if_fail( GNC_IS_SX(pObject) );
 
-    xaccSchedXactionGetAutoCreate( pSx, &autoCreate, &autoNotify );
-    autoNotify = GPOINTER_TO_INT(pValue);
-    xaccSchedXactionSetAutoCreate( pSx, autoCreate, autoNotify );
+    xaccSchedXactionGetAutoCreate( pSx, &autoCreate, &dummy );
+    xaccSchedXactionSetAutoCreate( pSx, autoCreate, value );
 }
 
+static gint
+get_instance_count( gpointer pObject )
+{
+    const SchedXaction* pSx = GNC_SX(pObject);
+
+	g_return_val_if_fail( pObject != NULL, FALSE );
+	g_return_val_if_fail( GNC_IS_SX(pObject), FALSE );
+
+    return gnc_sx_get_instance_count( pSx, NULL );
+}
+
 static gpointer
 get_template_act_guid( gpointer pObject, const QofParam* param )
 {
@@ -261,10 +275,10 @@
 		op = OP_DB_ADD_OR_UPDATE;
 	}
     (void)gnc_gda_do_db_operation( be, op, SCHEDXACTION_TABLE, /*GNC_ID_SCHEDXACTION*/GNC_SX_ID, pSx, col_table );
+    guid = qof_instance_get_guid( inst );
 	gnc_gda_recurrence_save_list( be, guid, gnc_sx_get_schedule( pSx ) );
 
     // Now, commit any slots
-    guid = qof_instance_get_guid( inst );
     if( !qof_instance_get_destroying(inst) ) {
         gnc_gda_slots_save( be, guid, qof_instance_get_slots( inst ) );
     } else {

Modified: gnucash/branches/gda-dev2/src/business/business-core/gda/gnc-bill-term-gda.c
===================================================================
--- gnucash/branches/gda-dev2/src/business/business-core/gda/gnc-bill-term-gda.c	2008-04-12 20:28:21 UTC (rev 17081)
+++ gnucash/branches/gda-dev2/src/business/business-core/gda/gnc-bill-term-gda.c	2008-04-13 17:41:18 UTC (rev 17082)
@@ -44,7 +44,7 @@
 #define MAX_DESCRIPTION_LEN 2048
 #define MAX_TYPE_LEN 2048
 
-static void set_invisible( gpointer data, gpointer value );
+static void set_invisible( gpointer data, gboolean value );
 
 #define TABLE_NAME "billterms"
 
@@ -70,14 +70,13 @@
 };
 
 static void
-set_invisible( gpointer data, gpointer value )
+set_invisible( gpointer data, gboolean value )
 {
 	GncBillTerm* term = GNC_BILLTERM(data);
-	gboolean b = GPOINTER_TO_INT(value);
 
 	g_return_if_fail( term != NULL );
 
-	if( b ) {
+	if( value ) {
 		gncBillTermMakeInvisible( term );
 	}
 }

Modified: gnucash/branches/gda-dev2/src/business/business-core/gda/gnc-tax-table-gda.c
===================================================================
--- gnucash/branches/gda-dev2/src/business/business-core/gda/gnc-tax-table-gda.c	2008-04-12 20:28:21 UTC (rev 17081)
+++ gnucash/branches/gda-dev2/src/business/business-core/gda/gnc-tax-table-gda.c	2008-04-13 17:41:18 UTC (rev 17082)
@@ -42,7 +42,7 @@
 
 static QofLogModule log_module = G_LOG_DOMAIN;
 
-static void set_invisible( gpointer data, gpointer value );
+static void set_invisible( gpointer data, gboolean value );
 
 typedef struct {
     GncGdaBackend* be;
@@ -64,7 +64,7 @@
 	{ "name",      CT_STRING,      MAX_NAME_LEN, COL_NNUL,          NULL, GNC_TT_NAME },
 	{ "refcount",  CT_INT64,       0,            COL_NNUL,          NULL, GNC_TT_REFCOUNT },
 	{ "invisible", CT_BOOLEAN,     0,            COL_NNUL,          NULL, NULL,
-			(QofAccessFunc)gncTaxTableGetInvisible, set_invisible },
+			(QofAccessFunc)gncTaxTableGetInvisible, (QofSetterFunc)set_invisible },
 	{ "child",     CT_TAXTABLEREF, 0,			 0,                 NULL, NULL,
 			get_child, (QofSetterFunc)gncTaxTableSetChild },
 	{ "parent",    CT_TAXTABLEREF, 0,			 0,                 NULL, NULL,
@@ -112,15 +112,14 @@
 }
 
 static void
-set_invisible( gpointer data, gpointer value )
+set_invisible( gpointer data, gboolean value )
 {
 	GncTaxTable* tt = GNC_TAXTABLE(data);
-	gboolean b = GPOINTER_TO_INT(value);
 
 	g_return_if_fail( data != NULL );
 	g_return_if_fail( GNC_IS_TAXTABLE(data) );
 
-	if( b ) {
+	if( value ) {
 		gncTaxTableMakeInvisible( tt );
 	}
 }



More information about the gnucash-changes mailing list