static void load_all_commodities( GncSqlBackend* be ) { GncSqlStatement* stmt; GncSqlResult* result; gnc_commodity_table* pTable; pTable = gnc_commodity_table_get_table( be->book ); stmt = gnc_sql_create_select_statement( be, COMMODITIES_TABLE ); if ( stmt == NULL ) return; result = gnc_sql_execute_select_statement( be, stmt ); gnc_sql_statement_dispose( stmt ); if ( result != NULL ) { gnc_commodity* pCommodity; GncSqlRow* row = gnc_sql_result_get_first_row( result ); gchar* sql; while ( row != NULL ) { pCommodity = load_single_commodity( be, row ); if ( pCommodity != NULL ) { GncGUID guid; guid = *qof_instance_get_guid( QOF_INSTANCE(pCommodity) ); pCommodity = gnc_commodity_table_insert( pTable, pCommodity ); qof_instance_set_guid( QOF_INSTANCE(pCommodity), &guid ); } row = gnc_sql_result_get_next_row( result ); } gnc_sql_result_dispose( result ); sql = g_strdup_printf( "SELECT DISTINCT guid FROM %s", COMMODITIES_TABLE ); gnc_sql_slots_load_for_sql_subquery( be, sql, (BookLookupFn)gnc_commodity_find_commodity_by_guid ); g_free( sql ); } }
int ofx_proc_security_cb(const struct OfxSecurityData data, void * security_user_data) { const char* cusip = NULL; const char* default_fullname = NULL; const char* default_mnemonic = NULL; if (data.unique_id_valid) { cusip = data.unique_id; } if (data.secname_valid) { default_fullname = data.secname; } if (data.ticker_valid) { default_mnemonic = data.ticker; } if (auto_create_commodity) { gnc_commodity *commodity = gnc_import_select_commodity(cusip, FALSE, default_fullname, default_mnemonic); if (!commodity) { QofBook *book = gnc_get_current_book(); gnc_quote_source *source; gint source_selection = 0; // FIXME: This is just a wild guess const char *commodity_namespace = NULL; int fraction = 1; if (data.unique_id_type_valid) { commodity_namespace = data.unique_id_type; } g_warning("Creating a new commodity, cusip=%s", cusip); /* Create the new commodity */ commodity = gnc_commodity_new(book, default_fullname, commodity_namespace, default_mnemonic, cusip, fraction); /* Also set a single quote source */ gnc_commodity_begin_edit(commodity); gnc_commodity_user_set_quote_flag (commodity, TRUE); source = gnc_quote_source_lookup_by_ti (SOURCE_SINGLE, source_selection); gnc_commodity_set_quote_source(commodity, source); gnc_commodity_commit_edit(commodity); /* Remember the commodity */ gnc_commodity_table_insert(gnc_get_current_commodities(), commodity); /* Remember this new commodity for us as well */ ofx_created_commodites = g_list_prepend(ofx_created_commodites, commodity); } } else { gnc_import_select_commodity(cusip, TRUE, default_fullname, default_mnemonic); } return 0; }