gboolean GNC_IS_OWNER (QofInstance *ent) { if (!ent) return FALSE; return (GNC_IS_VENDOR(ent) || GNC_IS_CUSTOMER(ent) || GNC_IS_EMPLOYEE(ent) || GNC_IS_JOB(ent)); }
/* ================================================================= */ bool GncSqlVendorBackend::commit (GncSqlBackend* sql_be, QofInstance* inst) { GncVendor* v; const GncGUID* guid; E_DB_OPERATION op; gboolean is_infant; gboolean is_ok = TRUE; g_return_val_if_fail (inst != NULL, FALSE); g_return_val_if_fail (GNC_IS_VENDOR (inst), FALSE); g_return_val_if_fail (sql_be != NULL, FALSE); v = GNC_VENDOR (inst); is_infant = qof_instance_get_infant (inst); if (qof_instance_get_destroying (inst)) { op = OP_DB_DELETE; } else if (sql_be->pristine() || is_infant) { op = OP_DB_INSERT; } else { op = OP_DB_UPDATE; } if (op != OP_DB_DELETE) { // Ensure the commodity is in the db is_ok = sql_be->save_commodity (gncVendorGetCurrency(v)); } if (is_ok) { is_ok = sql_be->do_db_operation(op, TABLE_NAME, GNC_ID_VENDOR, v, col_table); } if (is_ok) { // Now, commit or delete any slots guid = qof_instance_get_guid (inst); if (!qof_instance_get_destroying (inst)) { is_ok = gnc_sql_slots_save (sql_be, guid, is_infant, inst); } else { is_ok = gnc_sql_slots_delete (sql_be, guid); } } return is_ok; }
static void write_single_vendor (QofInstance* term_p, gpointer data_p) { auto s = reinterpret_cast<write_objects_t*>(data_p); g_return_if_fail (term_p != NULL); g_return_if_fail (GNC_IS_VENDOR (term_p)); g_return_if_fail (data_p != NULL); if (vendor_should_be_saved (GNC_VENDOR (term_p))) { s->commit (term_p); } }
static void write_single_vendor( QofInstance *term_p, gpointer data_p ) { write_objects_t* s = (write_objects_t*)data_p; g_return_if_fail( term_p != NULL ); g_return_if_fail( GNC_IS_VENDOR(term_p) ); g_return_if_fail( data_p != NULL ); if ( s->is_ok && vendor_should_be_saved( GNC_VENDOR(term_p) ) ) { s->is_ok = save_vendor( s->be, term_p ); } }