40 #include "gncCustomerP.h"
42 #include "gncEmployeeP.h"
43 #include "gncVendorP.h"
47 typedef void (*OwnerSetterFunc)( gpointer,
GncOwner* );
48 typedef GncOwner* (*OwnerGetterFunc)(
const gpointer );
63 g_return_if_fail( be != NULL );
64 g_return_if_fail( row != NULL );
65 g_return_if_fail( pObject != NULL );
66 g_return_if_fail( table_row != NULL );
69 buf = g_strdup_printf(
"%s_type", table_row->
col_name );
70 val = gnc_sql_row_get_value_at_col_name( row, buf );
73 buf = g_strdup_printf(
"%s_guid", table_row->
col_name );
74 val = gnc_sql_row_get_value_at_col_name( row, buf );
77 if ( val != NULL && G_VALUE_HOLDS_STRING( val ) && g_value_get_string( val ) != NULL )
85 case GNC_OWNER_CUSTOMER:
91 cust = gncCustomerLookup( book, pGuid );
94 cust = gncCustomerCreate( book );
95 gncCustomerSetGUID( cust, &guid );
98 gncOwnerInitCustomer( &owner, cust );
108 job = gncJobLookup( book, pGuid );
111 job = gncJobCreate( book );
112 gncJobSetGUID( job, &guid );
115 gncOwnerInitJob( &owner, job );
119 case GNC_OWNER_VENDOR:
125 vendor = gncVendorLookup( book, pGuid );
126 if ( vendor == NULL )
128 vendor = gncVendorCreate( book );
129 gncVendorSetGUID( vendor, &guid );
132 gncOwnerInitVendor( &owner, vendor );
136 case GNC_OWNER_EMPLOYEE:
142 employee = gncEmployeeLookup( book, pGuid );
143 if ( employee == NULL )
145 employee = gncEmployeeCreate( book );
146 gncEmployeeSetGUID( employee, &guid );
149 gncOwnerInitEmployee( &owner, employee );
154 PWARN(
"Invalid owner type: %d\n", type );
159 qof_instance_increase_editlevel (pObject);
161 qof_instance_decrease_editlevel (pObject);
165 (*setter)( pObject, &owner );
176 g_return_if_fail( be != NULL );
177 g_return_if_fail( table_row != NULL );
178 g_return_if_fail( pList != NULL );
180 buf = g_strdup_printf(
"%s_type", table_row->
col_name );
183 info->
type = BCT_INT;
188 *pList = g_list_append( *pList, info );
190 buf = g_strdup_printf(
"%s_guid", table_row->
col_name );
193 info->
type = BCT_STRING;
198 *pList = g_list_append( *pList, info );
206 buf = g_strdup_printf(
"%s_type", table_row->
col_name );
207 (*pList) = g_list_append( (*pList), buf );
208 buf = g_strdup_printf(
"%s_guid", table_row->
col_name );
209 (*pList) = g_list_append( (*pList), buf );
216 GValue* subfield_value;
223 OwnerGetterFunc getter;
225 g_return_if_fail( be != NULL );
226 g_return_if_fail( obj_name != NULL );
227 g_return_if_fail( pObject != NULL );
228 g_return_if_fail( table_row != NULL );
231 owner = (*getter)( pObject );
235 buf = g_strdup_printf(
"%s_type", table_row->
col_name );
236 subfield_value = g_new0( GValue, 1 );
237 g_value_init( subfield_value, G_TYPE_INT );
239 g_value_set_int( subfield_value, type );
240 (*pList) = g_slist_append( (*pList), subfield_value );
243 buf = g_strdup_printf(
"%s_guid", table_row->
col_name );
244 subfield_value = g_new0( GValue, 1 );
247 case GNC_OWNER_CUSTOMER:
255 case GNC_OWNER_VENDOR:
259 case GNC_OWNER_EMPLOYEE:
264 PWARN(
"Invalid owner type: %d\n", type );
266 g_value_init( subfield_value, G_TYPE_STRING );
273 g_value_take_string( subfield_value, g_strdup_printf(
"%s", guid_buf ) );
276 (*pList) = g_slist_append( (*pList), subfield_value );
281 subfield_value = g_new0( GValue, 1 );
282 g_value_init( subfield_value, G_TYPE_STRING );
283 g_value_set_string( subfield_value,
"NULL" );
284 (*pList) = g_slist_append( (*pList), subfield_value );
285 subfield_value = g_new0( GValue, 1 );
286 g_value_init( subfield_value, G_TYPE_STRING );
287 g_value_set_string( subfield_value,
"NULL" );
288 (*pList) = g_slist_append( (*pList), subfield_value );
294 add_owner_col_info_to_list,
296 add_gvalue_owner_to_slist
301 gnc_owner_sql_initialize(
void )
const GncGUID * qof_instance_get_guid(gconstpointer)
QofAccessFunc gnc_sql_get_getter(QofIdTypeConst obj_name, const GncSqlColumnTableEntry *table_row)
#define G_LOG_DOMAIN
Functions providing the SX List as a plugin page.
const gchar * QofIdTypeConst
gboolean string_to_guid(const gchar *string, GncGUID *guid)
load and save data to SQL
void gnc_sql_register_col_type_handler(const gchar *colType, const GncSqlColumnTypeHandler *handler)
gchar * guid_to_string_buff(const GncGUID *guid, gchar *buff)
gint64 gnc_sql_get_integer_value(const GValue *value)
#define PWARN(format, args...)
GncSqlBasicColumnType type
load and save owner data to SQL
#define GUID_ENCODING_LENGTH
const gchar * gobj_param_name
GncOwnerType gncOwnerGetType(const GncOwner *owner)
GncJob * gncOwnerGetJob(const GncOwner *owner)
void(* QofSetterFunc)(gpointer, gpointer)
GncVendor * gncOwnerGetVendor(const GncOwner *owner)
GncCustomer * gncOwnerGetCustomer(const GncOwner *owner)
GncEmployee * gncOwnerGetEmployee(const GncOwner *owner)
const gchar * QofLogModule