43 #include "gncBillTermP.h"
44 #include "gncInvoiceP.h"
49 #define _GNC_MOD_NAME GNC_ID_INVOICE
53 #define TABLE_NAME "invoices"
54 #define TABLE_VERSION 3
56 #define MAX_ID_LEN 2048
57 #define MAX_NOTES_LEN 2048
58 #define MAX_BILLING_ID_LEN 2048
63 {
"id", CT_STRING, MAX_ID_LEN,
COL_NNUL, NULL, INVOICE_ID },
64 {
"date_opened", CT_TIMESPEC, 0, 0, NULL, INVOICE_OPENED },
65 {
"date_posted", CT_TIMESPEC, 0, 0, NULL, INVOICE_POSTED },
66 {
"notes", CT_STRING, MAX_NOTES_LEN,
COL_NNUL,
"notes" },
67 {
"active", CT_BOOLEAN, 0,
COL_NNUL, NULL, QOF_PARAM_ACTIVE },
69 "currency", CT_COMMODITYREF, 0,
COL_NNUL, NULL, NULL,
73 "owner", CT_OWNERREF, 0, 0, NULL, NULL,
76 {
"terms", CT_BILLTERMREF, 0, 0, NULL, INVOICE_TERMS },
77 {
"billing_id", CT_STRING, MAX_BILLING_ID_LEN, 0, NULL, INVOICE_BILLINGID },
78 {
"post_txn", CT_TXREF, 0, 0, NULL, INVOICE_POST_TXN },
80 "post_lot", CT_LOTREF, 0, 0, NULL, NULL,
83 {
"post_acc", CT_ACCOUNTREF, 0, 0, NULL, INVOICE_ACC },
85 "billto", CT_OWNERREF, 0, 0, NULL, NULL,
89 "charge_amt", CT_NUMERIC, 0, 0, NULL, NULL,
101 g_return_val_if_fail( be != NULL, NULL );
102 g_return_val_if_fail( row != NULL, NULL );
105 pInvoice = gncInvoiceLookup( be->
book, guid );
106 if ( pInvoice == NULL )
108 pInvoice = gncInvoiceCreate( be->
book );
111 qof_instance_mark_clean( QOF_INSTANCE(pInvoice) );
122 g_return_if_fail( be != NULL );
126 gnc_sql_statement_dispose( stmt );
127 if ( result != NULL )
132 row = gnc_sql_result_get_first_row( result );
133 while ( row != NULL )
135 GncInvoice* pInvoice = load_single_invoice( be, row );
136 if ( pInvoice != NULL )
138 list = g_list_append( list, pInvoice );
140 row = gnc_sql_result_get_next_row( result );
142 gnc_sql_result_dispose( result );
158 g_return_if_fail( be != NULL );
165 else if ( version < TABLE_VERSION )
174 PINFO(
"Invoices table upgraded from version %d to version %d\n", version, TABLE_VERSION);
186 gboolean is_ok = TRUE;
188 g_return_val_if_fail( inst != NULL, FALSE );
189 g_return_val_if_fail( GNC_IS_INVOICE(inst), FALSE );
190 g_return_val_if_fail( be != NULL, FALSE );
192 invoice = GNC_INVOICE(inst);
194 is_infant = qof_instance_get_infant( inst );
207 if ( op != OP_DB_DELETE )
210 is_ok = gnc_sql_save_commodity( be, gncInvoiceGetCurrency( invoice ) );
237 invoice_should_be_saved(
GncInvoice *invoice )
241 g_return_val_if_fail( invoice != NULL, FALSE );
244 id = gncInvoiceGetID( invoice );
245 if (
id == NULL || *
id ==
'\0' )
254 write_single_invoice(
QofInstance *term_p, gpointer data_p )
258 g_return_if_fail( term_p != NULL );
259 g_return_if_fail( GNC_IS_INVOICE(term_p) );
260 g_return_if_fail( data_p != NULL );
262 if ( s->is_ok && invoice_should_be_saved( GNC_INVOICE(term_p) ) )
264 s->is_ok = save_invoice( s->be, term_p );
273 g_return_val_if_fail( be != NULL, FALSE );
292 g_return_if_fail( be != NULL );
293 g_return_if_fail( row != NULL );
294 g_return_if_fail( pObject != NULL );
295 g_return_if_fail( table_row != NULL );
297 val = gnc_sql_row_get_value_at_col_name( row, table_row->
col_name );
298 if ( val != NULL && G_VALUE_HOLDS_STRING( val ) && g_value_get_string( val ) != NULL )
301 invoice = gncInvoiceLookup( be->
book, &guid );
302 if ( invoice != NULL )
306 qof_instance_increase_editlevel (pObject);
308 qof_instance_decrease_editlevel (pObject);
312 (*setter)( pObject, (
const gpointer)invoice );
317 PWARN(
"Invoice ref '%s' not found", g_value_get_string( val ) );
323 = { load_invoice_guid,
330 gnc_invoice_sql_initialize(
void )
334 GNC_SQL_BACKEND_VERSION,
338 create_invoice_tables,
gboolean qof_object_register_backend(QofIdTypeConst type_name, const char *backend_name, gpointer be_data)
const GncGUID * qof_instance_get_guid(gconstpointer)
gint gnc_sql_get_table_version(const GncSqlBackend *be, const gchar *table_name)
void gnc_sql_upgrade_table(GncSqlBackend *be, const gchar *table_name, const GncSqlColumnTableEntry *col_table)
#define G_LOG_DOMAIN
Functions providing the SX List as a plugin page.
#define PINFO(format, args...)
load and save data to SQL
void gnc_sql_add_colname_to_list(const GncSqlColumnTableEntry *table_row, GList **pList)
load and save accounts data to SQL
GncSqlStatement * gnc_sql_create_select_statement(GncSqlBackend *be, const gchar *table_name)
gboolean qof_instance_get_destroying(gconstpointer ptr)
gboolean string_to_guid(const gchar *string, GncGUID *guid)
gboolean gnc_sql_create_table(GncSqlBackend *be, const gchar *table_name, gint table_version, const GncSqlColumnTableEntry *col_table)
load and save data to SQL
void gnc_sql_register_col_type_handler(const gchar *colType, const GncSqlColumnTypeHandler *handler)
void gnc_sql_add_objectref_guid_col_info_to_list(const GncSqlBackend *be, const GncSqlColumnTableEntry *table_row, GList **pList)
gpointer(* QofAccessFunc)(gpointer object, const QofParam *param)
load and save accounts data to SQL
#define PWARN(format, args...)
const GncGUID * gnc_sql_load_guid(const GncSqlBackend *be, GncSqlRow *row)
gboolean gnc_sql_set_table_version(GncSqlBackend *be, const gchar *table_name, gint version)
load and save owner data to SQL
void gnc_sql_add_gvalue_objectref_guid_to_slist(const GncSqlBackend *be, QofIdTypeConst obj_name, const gpointer pObject, const GncSqlColumnTableEntry *table_row, GSList **pList)
void gnc_sql_slots_load_for_list(GncSqlBackend *be, GList *list)
void qof_object_foreach(QofIdTypeConst type_name, QofBook *book, QofInstanceForeachCB cb, gpointer user_data)
GncSqlResult * gnc_sql_execute_select_statement(GncSqlBackend *be, GncSqlStatement *stmt)
void gnc_sql_load_object(const GncSqlBackend *be, GncSqlRow *row, QofIdTypeConst obj_name, gpointer pObject, const GncSqlColumnTableEntry *table)
const gchar * gobj_param_name
gboolean gnc_sql_slots_delete(GncSqlBackend *be, const GncGUID *guid)
void(* QofSetterFunc)(gpointer, gpointer)
gboolean gnc_sql_do_db_operation(GncSqlBackend *be, E_DB_OPERATION op, const gchar *table_name, QofIdTypeConst obj_name, gpointer pObject, const GncSqlColumnTableEntry *table)
load and save invoice data to SQL
Commodity handling public routines.
gboolean gnc_sql_slots_save(GncSqlBackend *be, const GncGUID *guid, gboolean is_infant, KvpFrame *pFrame)
const gchar * QofLogModule