示例#1
0
文件: Scrub.c 项目: Bob-IT/gnucash
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;
}
示例#2
0
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 );
}