40 #include "gncEntryP.h"
41 #include "gncOrderP.h"
42 #include "gncInvoiceP.h"
43 #include "gncTaxTableP.h"
51 #define _GNC_MOD_NAME GNC_ID_ENTRY
55 #define TABLE_NAME "entries"
56 #define TABLE_VERSION 3
57 #define MAX_DESCRIPTION_LEN 2048
58 #define MAX_ACTION_LEN 2048
59 #define MAX_NOTES_LEN 2048
60 #define MAX_DISCTYPE_LEN 2048
61 #define MAX_DISCHOW_LEN 2048
63 static void entry_set_invoice( gpointer pObject, gpointer val );
64 static void entry_set_bill( gpointer pObject, gpointer val );
69 {
"date", CT_TIMESPEC, 0,
COL_NNUL, NULL, ENTRY_DATE },
70 {
"date_entered", CT_TIMESPEC, 0, 0, NULL, ENTRY_DATE_ENTERED },
71 {
"description", CT_STRING, MAX_DESCRIPTION_LEN, 0,
"description" },
72 {
"action", CT_STRING, MAX_ACTION_LEN, 0, NULL, ENTRY_ACTION },
73 {
"notes", CT_STRING, MAX_NOTES_LEN, 0, NULL, ENTRY_NOTES },
74 {
"quantity", CT_NUMERIC, 0, 0, NULL, ENTRY_QTY },
75 {
"i_acct", CT_ACCOUNTREF, 0, 0, NULL, ENTRY_IACCT },
76 {
"i_price", CT_NUMERIC, 0, 0, NULL, ENTRY_IPRICE },
78 "i_discount", CT_NUMERIC, 0, 0, NULL, NULL,
82 "invoice", CT_INVOICEREF, 0, 0, NULL, NULL,
85 {
"i_disc_type", CT_STRING, MAX_DISCTYPE_LEN, 0, NULL, ENTRY_INV_DISC_TYPE },
86 {
"i_disc_how", CT_STRING, MAX_DISCHOW_LEN, 0, NULL, ENTRY_INV_DISC_HOW },
87 {
"i_taxable", CT_BOOLEAN, 0, 0, NULL, ENTRY_INV_TAXABLE },
88 {
"i_taxincluded", CT_BOOLEAN, 0, 0, NULL, ENTRY_INV_TAX_INC },
90 "i_taxtable", CT_TAXTABLEREF, 0, 0, NULL, NULL,
93 {
"b_acct", CT_ACCOUNTREF, 0, 0, NULL, ENTRY_BACCT },
94 {
"b_price", CT_NUMERIC, 0, 0, NULL, ENTRY_BPRICE },
96 "bill", CT_INVOICEREF, 0, 0, NULL, NULL,
99 {
"b_taxable", CT_BOOLEAN, 0, 0, NULL, ENTRY_BILL_TAXABLE },
100 {
"b_taxincluded", CT_BOOLEAN, 0, 0, NULL, ENTRY_BILL_TAX_INC },
102 "b_taxtable", CT_TAXTABLEREF, 0, 0, NULL, NULL,
106 "b_paytype", CT_INT, 0, 0, NULL, NULL,
109 {
"billable", CT_BOOLEAN, 0, 0, NULL, ENTRY_BILLABLE },
110 {
"billto", CT_OWNERREF, 0, 0, NULL, ENTRY_BILLTO },
112 "order_guid", CT_ORDERREF, 0, 0, NULL, NULL,
119 entry_set_invoice( gpointer pObject, gpointer val )
124 g_return_if_fail( pObject != NULL );
125 g_return_if_fail( GNC_IS_ENTRY(pObject) );
126 g_return_if_fail( val != NULL );
127 g_return_if_fail( GNC_IS_INVOICE(val) );
129 entry = GNC_ENTRY(pObject);
130 invoice = GNC_INVOICE(val);
132 gncInvoiceAddEntry( invoice, entry );
136 entry_set_bill( gpointer pObject, gpointer val )
141 g_return_if_fail( pObject != NULL );
142 g_return_if_fail( GNC_IS_ENTRY(pObject) );
143 g_return_if_fail( val != NULL );
144 g_return_if_fail( GNC_IS_INVOICE(val) );
146 entry = GNC_ENTRY(pObject);
147 bill = GNC_INVOICE(val);
158 g_return_val_if_fail( be != NULL, NULL );
159 g_return_val_if_fail( row != NULL, NULL );
162 pEntry = gncEntryLookup( be->
book, guid );
163 if ( pEntry == NULL )
165 pEntry = gncEntryCreate( be->
book );
168 qof_instance_mark_clean( QOF_INSTANCE(pEntry) );
179 g_return_if_fail( be != NULL );
183 gnc_sql_statement_dispose( stmt );
184 if ( result != NULL )
189 row = gnc_sql_result_get_first_row( result );
190 while ( row != NULL )
192 GncEntry* pEntry = load_single_entry( be, row );
193 if ( pEntry != NULL )
195 list = g_list_append( list, pEntry );
197 row = gnc_sql_result_get_next_row( result );
199 gnc_sql_result_dispose( result );
215 g_return_if_fail( be != NULL );
222 else if ( version < TABLE_VERSION )
231 PINFO(
"Entries table upgraded from version %d to version %d\n", version, TABLE_VERSION);
239 g_return_val_if_fail( inst != NULL, FALSE );
240 g_return_val_if_fail( GNC_IS_ENTRY(inst), FALSE );
241 g_return_val_if_fail( be != NULL, FALSE );
248 write_single_entry(
QofInstance *term_p, gpointer data_p )
251 GncEntry* entry = GNC_ENTRY(term_p);
253 g_return_if_fail( term_p != NULL );
254 g_return_if_fail( GNC_IS_ENTRY(term_p) );
255 g_return_if_fail( data_p != NULL );
258 if ( s->is_ok && (gncEntryGetOrder( entry ) != NULL || gncEntryGetInvoice( entry ) != NULL ||
259 gncEntryGetBill( entry ) != NULL) )
261 s->is_ok = save_entry( s->be, term_p );
270 g_return_val_if_fail( be != NULL, FALSE );
281 gnc_entry_sql_initialize(
void )
285 GNC_SQL_BACKEND_VERSION,
gboolean qof_object_register_backend(QofIdTypeConst type_name, const char *backend_name, gpointer be_data)
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 accounts data to SQL
GncSqlStatement * gnc_sql_create_select_statement(GncSqlBackend *be, const gchar *table_name)
gboolean gnc_sql_create_table(GncSqlBackend *be, const gchar *table_name, gint table_version, const GncSqlColumnTableEntry *col_table)
load and save data to SQL
gpointer(* QofAccessFunc)(gpointer object, const QofParam *param)
load and save accounts data to SQL
const GncGUID * gnc_sql_load_guid(const GncSqlBackend *be, GncSqlRow *row)
load and save order data to SQL
gboolean gnc_sql_set_table_version(GncSqlBackend *be, const gchar *table_name, gint version)
load and save owner data to SQL
void gnc_sql_slots_load_for_list(GncSqlBackend *be, GList *list)
void gncBillAddEntry(GncInvoice *bill, GncEntry *entry)
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)
load and save entry data to SQL
gboolean gnc_sql_commit_standard_item(GncSqlBackend *be, QofInstance *inst, const gchar *tableName, QofIdTypeConst obj_name, const GncSqlColumnTableEntry *col_table)
void(* QofSetterFunc)(gpointer, gpointer)
load and save invoice data to SQL
const gchar * QofLogModule
load and save tax table data to SQL