static void move_quote_source (Account *account, gpointer data) { gnc_commodity *com; gnc_quote_source *quote_source; gboolean new_style = GPOINTER_TO_INT(data); const char *source, *tz; com = xaccAccountGetCommodity(account); if (!com) return; if (!new_style) { source = dxaccAccountGetPriceSrc(account); if (!source || !*source) return; tz = dxaccAccountGetQuoteTZ(account); PINFO("to %8s from %s", gnc_commodity_get_mnemonic(com), xaccAccountGetName(account)); gnc_commodity_set_quote_flag(com, TRUE); quote_source = gnc_quote_source_lookup_by_internal(source); if (!quote_source) quote_source = gnc_quote_source_add_new(source, FALSE); gnc_commodity_set_quote_source(com, quote_source); gnc_commodity_set_quote_tz(com, tz); } dxaccAccountSetPriceSrc(account, NULL); dxaccAccountSetQuoteTZ(account, NULL); return; }
static void set_commodity_value(xmlNodePtr node, gnc_commodity* com) { if (g_strcmp0((char*) node->name, cmdty_fraction) == 0) { gint64 val; char *string; string = (char*) xmlNodeGetContent (node->xmlChildrenNode); if (string_to_gint64(string, &val)) { gnc_commodity_set_fraction(com, val); } xmlFree (string); } else if (g_strcmp0((char*)node->name, cmdty_get_quotes) == 0) { gnc_commodity_set_quote_flag(com, TRUE); } else if (g_strcmp0((char*)node->name, cmdty_quote_source) == 0) { gnc_quote_source *source; char *string; string = (char*) xmlNodeGetContent (node->xmlChildrenNode); source = gnc_quote_source_lookup_by_internal(string); if (!source) source = gnc_quote_source_add_new(string, FALSE); gnc_commodity_set_quote_source(com, source); xmlFree (string); } else if (g_strcmp0((char*)node->name, cmdty_slots) == 0) { /* We ignore the results here */ dom_tree_create_instance_slots(node, QOF_INSTANCE(com)); } else { struct com_char_handler *mark; for (mark = com_handlers; mark->tag; mark++) { if (g_strcmp0(mark->tag, (char*)node->name) == 0) { gchar* val = dom_tree_to_text(node); g_strstrip(val); (mark->func)(com, val); g_free(val); break; } } } }
static void set_quote_source_name( gpointer pObject, gpointer pValue ) { gnc_commodity* pCommodity; const gchar* quote_source_name = (const gchar*)pValue; gnc_quote_source* quote_source; g_return_if_fail( pObject != NULL ); // g_return_if_fail( GNC_IS_COMMODITY(pObject) ); if ( pValue == NULL ) return; pCommodity = (gnc_commodity*)(pObject); quote_source = gnc_quote_source_lookup_by_internal( quote_source_name ); gnc_commodity_set_quote_source( pCommodity, quote_source ); }
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; }