r16717 - gnucash/branches/gda-dev2/src - 1) Get tax table saving/restoring framework working (I don't know if

Phil Longstaff plongstaff at cvs.gnucash.org
Mon Dec 24 16:33:15 EST 2007


Author: plongstaff
Date: 2007-12-24 16:33:15 -0500 (Mon, 24 Dec 2007)
New Revision: 16717
Trac: http://svn.gnucash.org/trac/changeset/16717

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-recurrence-gda.c
   gnucash/branches/gda-dev2/src/backend/gda/gnc-slots-gda.c
   gnucash/branches/gda-dev2/src/business/business-core/gda/gnc-tax-table-gda.c
   gnucash/branches/gda-dev2/src/business/business-core/gncTaxTable.c
   gnucash/branches/gda-dev2/src/business/business-core/gncTaxTableP.h
   gnucash/branches/gda-dev2/src/engine/gnc-engine.c
Log:
1) Get tax table saving/restoring framework working (I don't know if
they are actually saved/restored), but they are not ignored.
2) Don't try to load the postgres backend



Modified: gnucash/branches/gda-dev2/src/backend/gda/gnc-backend-gda.c
===================================================================
--- gnucash/branches/gda-dev2/src/backend/gda/gnc-backend-gda.c	2007-12-24 21:18:09 UTC (rev 16716)
+++ gnucash/branches/gda-dev2/src/backend/gda/gnc-backend-gda.c	2007-12-24 21:33:15 UTC (rev 16717)
@@ -582,7 +582,7 @@
     g_return_if_fail( pData->version == GNC_GDA_BACKEND_VERSION );
 
     /* If this has already been handled, or is not the correct handler, return */
-    g_return_if_fail( strcmp( pData->type_name, be_data->inst->e_type ) == 0 );
+    if( strcmp( pData->type_name, be_data->inst->e_type ) != 0 ) return;
     g_return_if_fail( !be_data->ok );
 
     if( pData->commit != NULL ) {
@@ -626,8 +626,7 @@
     qof_object_foreach_backend( GNC_GDA_BACKEND, commit_cb, &be_data );
 
     if( !be_data.ok ) {
-        g_critical( "gnc_gda_commit_edit(): Unknown object type %s\n",
-                inst->e_type );
+        g_critical( "gnc_gda_commit_edit(): Unknown object type '%s'\n", inst->e_type );
         return;
     }
 
@@ -739,7 +738,8 @@
     g_return_if_fail( type != NULL && pData != NULL && be_data != NULL );
     g_return_if_fail( pData->version == GNC_GDA_BACKEND_VERSION );
 
-    g_return_if_fail( strcmp( type, be_data->pQueryInfo->searchObj ) == 0 );
+	// Is this the right item?
+    if( strcmp( type, be_data->pQueryInfo->searchObj ) != 0 ) return;
     g_return_if_fail( !be_data->ok );
 
     if( pData->compile_query != NULL ) {
@@ -867,10 +867,11 @@
 
     g_return_if_fail( type != NULL && pData != NULL && be_data != NULL );
     g_return_if_fail( pData->version == GNC_GDA_BACKEND_VERSION );
-    g_return_if_fail( strcmp( type, be_data->pQueryInfo->searchObj ) == 0 );
-
     g_return_if_fail( !be_data->ok );
 
+	// Is this the right item?
+    if( strcmp( type, be_data->pQueryInfo->searchObj ) != 0 ) return;
+
     if( pData->run_query != NULL ) {
         (pData->run_query)( be_data->be, be_data->pCompiledQuery );
         be_data->ok = TRUE;

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	2007-12-24 21:18:09 UTC (rev 16716)
+++ gnucash/branches/gda-dev2/src/backend/gda/gnc-backend-util-gda.c	2007-12-24 21:33:15 UTC (rev 16717)
@@ -129,12 +129,27 @@
     return cond;
 }
 /* ----------------------------------------------------------------- */
+static gpointer
+get_autoinc_id( gpointer pObject, const QofParam* param )
+{
+    // Just need a 0 to force a new recurrence id
+    return (gpointer)0;
+}
+
+static void
+set_autoinc_id( gpointer pObject, gpointer pValue )
+{
+    // Nowhere to put the ID
+}
+
 QofAccessFunc
 gnc_gda_get_getter( QofIdTypeConst obj_name, const col_cvt_t* table_row )
 {
     QofAccessFunc getter;
 
-    if( table_row->param_name != NULL ) {
+	if( (table_row->flags & COL_AUTOINC) != 0 ) {
+		getter = get_autoinc_id;
+    } else if( table_row->param_name != NULL ) {
         getter = qof_class_get_parameter_getter( obj_name,
                                                 table_row->param_name );
     } else {
@@ -1221,7 +1236,9 @@
     col_type_handler_t* pHandler;
 
     for( col = 0; table[col].col_name != NULL; col++ ) {
-        if( table[col].param_name != NULL ) {
+		if( (table[col].flags & COL_AUTOINC) != 0 ) {
+			setter = set_autoinc_id;
+        } else if( table[col].param_name != NULL ) {
             setter = qof_class_get_parameter_setter( obj_name,
                                                     table[col].param_name );
         } else {

Modified: gnucash/branches/gda-dev2/src/backend/gda/gnc-recurrence-gda.c
===================================================================
--- gnucash/branches/gda-dev2/src/backend/gda/gnc-recurrence-gda.c	2007-12-24 21:18:09 UTC (rev 16716)
+++ gnucash/branches/gda-dev2/src/backend/gda/gnc-recurrence-gda.c	2007-12-24 21:33:15 UTC (rev 16717)
@@ -51,8 +51,6 @@
 	Recurrence* pRecurrence;
 } recurrence_info_t;
 
-static gpointer get_recurrence_id( gpointer pObject, const QofParam* param );
-static void set_recurrence_id( gpointer pObject, gpointer pValue );
 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* );
@@ -64,8 +62,7 @@
 
 static col_cvt_t col_table[] =
 {
-    { "recurrence_id",           CT_INT,    0,                                     COL_NNUL|COL_AUTOINC, NULL, NULL,
-            get_recurrence_id, set_recurrence_id },
+    { "recurrence_id",           CT_INT,    0,                                     COL_NNUL|COL_AUTOINC },
     { "obj_guid",                CT_GUID,   0,                                     COL_NNUL,             NULL, NULL,
             get_obj_guid, set_obj_guid },
     { "recurrence_mult",         CT_INT,    0,                                     COL_NNUL,             NULL, NULL,
@@ -88,19 +85,6 @@
 /* ================================================================= */
 
 static gpointer
-get_recurrence_id( gpointer pObject, const QofParam* param )
-{
-    // Just need a 0 to force a new recurrence id
-    return (gpointer)0;
-}
-
-static void
-set_recurrence_id( gpointer pObject, gpointer pValue )
-{
-    // Nowhere to put the ID
-}
-
-static gpointer
 get_obj_guid( gpointer pObject, const QofParam* param )
 {
     recurrence_info_t* pInfo = (recurrence_info_t*)pObject;

Modified: gnucash/branches/gda-dev2/src/backend/gda/gnc-slots-gda.c
===================================================================
--- gnucash/branches/gda-dev2/src/backend/gda/gnc-slots-gda.c	2007-12-24 21:18:09 UTC (rev 16716)
+++ gnucash/branches/gda-dev2/src/backend/gda/gnc-slots-gda.c	2007-12-24 21:33:15 UTC (rev 16717)
@@ -51,8 +51,6 @@
     GString* path;
 } slot_info_t;
 
-static gpointer get_slot_id( gpointer pObject, const QofParam* param );
-static void set_slot_id( gpointer pObject, gpointer pValue );
 static gpointer get_obj_guid( gpointer pObject, const QofParam* param );
 static void set_obj_guid( gpointer pObject, gpointer pValue );
 static gpointer get_path( gpointer pObject, const QofParam* param );
@@ -77,7 +75,7 @@
 
 static col_cvt_t col_table[] =
 {
-    { "slot_id",      CT_INT,      0,                     COL_NNUL|COL_AUTOINC, NULL, NULL, get_slot_id,      set_slot_id },
+    { "slot_id",      CT_INT,      0,                     COL_NNUL|COL_AUTOINC },
     { "obj_guid",     CT_GUID,     0,                     COL_NNUL,             NULL, NULL, get_obj_guid,     set_obj_guid },
     { "name",         CT_STRING,   SLOT_MAX_PATHNAME_LEN, COL_NNUL,             NULL, NULL, get_path,         set_path },
     { "slot_type",    CT_INT,      0,                     COL_NNUL,             NULL, NULL, get_slot_type,    set_slot_type, },
@@ -102,19 +100,6 @@
 /* ================================================================= */
 
 static gpointer
-get_slot_id( gpointer pObject, const QofParam* param )
-{
-    // Just need a 0 to force a new slot id
-    return (gpointer)0;
-}
-
-static void
-set_slot_id( gpointer pObject, gpointer pValue )
-{
-    // Nowhere to put the ID
-}
-
-static gpointer
 get_obj_guid( gpointer pObject, const QofParam* param )
 {
     slot_info_t* pInfo = (slot_info_t*)pObject;

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	2007-12-24 21:18:09 UTC (rev 16716)
+++ gnucash/branches/gda-dev2/src/business/business-core/gda/gnc-tax-table-gda.c	2007-12-24 21:33:15 UTC (rev 16717)
@@ -69,6 +69,7 @@
 			get_child, (QofSetterFunc)gncTaxTableSetChild },
 	{ "parent",    CT_TAXTABLEREF, 0,			 0,        NULL, NULL,
 			(QofAccessFunc)gncTaxTableGetParent, (QofSetterFunc)gncTaxTableSetParent },
+	{ NULL }
 };
 
 #define TTENTRIES_TABLE_NAME "taxtable_entries"
@@ -76,21 +77,22 @@
 static col_cvt_t ttentries_col_table[] =
 {
 	{ "id",       CT_INT,         0, COL_NNUL|COL_AUTOINC },
-	{ "taxtable", CT_TAXTABLEREF, 0, COL_NNUL,            NULL },
+	{ "taxtable", CT_TAXTABLEREF, 0, COL_NNUL,            NULL, NULL,
+			(QofAccessFunc)gncTaxTableEntryGetTable, set_obj_guid },
 	{ "account",  CT_ACCOUNTREF,  0, COL_NNUL,            NULL, NULL,
 			(QofAccessFunc)gncTaxTableEntryGetAccount, (QofSetterFunc)gncTaxTableEntrySetAccount },
 	{ "amount",   CT_NUMERIC,     0, COL_NNUL,            NULL, NULL,
 			(QofAccessFunc)gncTaxTableEntryGetAmount, (QofSetterFunc)gncTaxTableEntrySetAmount },
 	{ "type",     CT_INT,         0, COL_NNUL,            NULL, NULL,
 			(QofAccessFunc)gncTaxTableEntryGetType, (QofSetterFunc)gncTaxTableEntrySetType },
-	{ NULL },
+	{ NULL }
 };
 
 /* Special column table because we need to be able to access the table by
 a column other than the primary key */
 static col_cvt_t guid_col_table[] =
 {
-    { "obj_guid", CT_GUID, 0, 0, NULL, NULL, get_obj_guid, set_obj_guid },
+    { "taxtable", CT_GUID, 0, 0, NULL, NULL, get_obj_guid, set_obj_guid },
     { NULL }
 };
 
@@ -195,6 +197,7 @@
     gnc_gda_load_object( be, pModel, row, GNC_ID_TAXTABLE, tt, tt_col_table );
     gnc_gda_slots_load( be, qof_instance_get_guid( QOF_INSTANCE(tt)),
                         qof_instance_get_slots( QOF_INSTANCE(tt) ) );
+	load_taxtable_entries( be, tt );
 
     qof_instance_mark_clean( QOF_INSTANCE(tt) );
 
@@ -324,7 +327,7 @@
     static GncGdaDataType_t be_data =
     {
         GNC_GDA_BACKEND_VERSION,
-        GNC_ID_ORDER,
+        GNC_ID_TAXTABLE,
         gnc_gda_save_taxtable,				/* commit */
         load_all_taxtables,					/* initial_load */
         create_taxtable_tables				/* create_tables */

Modified: gnucash/branches/gda-dev2/src/business/business-core/gncTaxTable.c
===================================================================
--- gnucash/branches/gda-dev2/src/business/business-core/gncTaxTable.c	2007-12-24 21:18:09 UTC (rev 16716)
+++ gnucash/branches/gda-dev2/src/business/business-core/gncTaxTable.c	2007-12-24 21:33:15 UTC (rev 16717)
@@ -675,6 +675,12 @@
   return entry->amount;
 }
 
+GncTaxTable* gncTaxTableEntryGetTable( const GncTaxTableEntry* entry )
+{
+  if (!entry) return NULL;
+  return entry->table;
+}
+
 int gncTaxTableEntryCompare (const GncTaxTableEntry *a, const GncTaxTableEntry *b)
 {
   char *name_a, *name_b;

Modified: gnucash/branches/gda-dev2/src/business/business-core/gncTaxTableP.h
===================================================================
--- gnucash/branches/gda-dev2/src/business/business-core/gncTaxTableP.h	2007-12-24 21:18:09 UTC (rev 16716)
+++ gnucash/branches/gda-dev2/src/business/business-core/gncTaxTableP.h	2007-12-24 21:33:15 UTC (rev 16717)
@@ -63,6 +63,8 @@
  */
 GncTaxTable * gncTaxTableObtainTwin (const GncTaxTable *from, QofBook *book);
 
+GncTaxTable* gncTaxTableEntryGetTable( const GncTaxTableEntry* entry );
+
 #define gncTaxTableSetGUID(E,G) qof_instance_set_guid(QOF_INSTANCE(E),(G))
 
 #endif /* GNC_TAXTABLEP_H_ */

Modified: gnucash/branches/gda-dev2/src/engine/gnc-engine.c
===================================================================
--- gnucash/branches/gda-dev2/src/engine/gnc-engine.c	2007-12-24 21:18:09 UTC (rev 16716)
+++ gnucash/branches/gda-dev2/src/engine/gnc-engine.c	2007-12-24 21:33:15 UTC (rev 16717)
@@ -79,7 +79,7 @@
     { "gncmod-backend-gda", TRUE },
     { GNC_LIB_NAME, TRUE },
     /* shouldn't the PG gnc-module do this instead of US doing it? */
-    { "gncmod-backend-postgres", FALSE },
+//    { "gncmod-backend-postgres", FALSE },
     { NULL, FALSE } }, *lib;
   gnc_engine_init_hook_t hook;
   GList * cur;



More information about the gnucash-changes mailing list