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