static gboolean price_parse_xml_sub_node(GNCPrice *p, xmlNodePtr sub_node, QofBook *book) { if (!p || !sub_node) return FALSE; gnc_price_begin_edit (p); if (g_strcmp0("price:id", (char*)sub_node->name) == 0) { GncGUID *c = dom_tree_to_guid(sub_node); if (!c) return FALSE; gnc_price_set_guid(p, c); g_free(c); } else if (g_strcmp0("price:commodity", (char*)sub_node->name) == 0) { gnc_commodity *c = dom_tree_to_commodity_ref(sub_node, book); if (!c) return FALSE; gnc_price_set_commodity(p, c); } else if (g_strcmp0("price:currency", (char*)sub_node->name) == 0) { gnc_commodity *c = dom_tree_to_commodity_ref(sub_node, book); if (!c) return FALSE; gnc_price_set_currency(p, c); } else if (g_strcmp0("price:time", (char*)sub_node->name) == 0) { Timespec t = dom_tree_to_timespec(sub_node); if (!dom_tree_valid_timespec(&t, sub_node->name)) return FALSE; gnc_price_set_time(p, t); } else if (g_strcmp0("price:source", (char*)sub_node->name) == 0) { char *text = dom_tree_to_text(sub_node); if (!text) return FALSE; gnc_price_set_source(p, text); g_free(text); } else if (g_strcmp0("price:type", (char*)sub_node->name) == 0) { char *text = dom_tree_to_text(sub_node); if (!text) return FALSE; gnc_price_set_typestr(p, text); g_free(text); } else if (g_strcmp0("price:value", (char*)sub_node->name) == 0) { gnc_numeric *value = dom_tree_to_gnc_numeric(sub_node); if (!value) return FALSE; gnc_price_set_value(p, *value); g_free(value); } gnc_price_commit_edit (p); return TRUE; }
static gboolean trn_currency_handler(xmlNodePtr node, gpointer trans_pdata) { struct trans_pdata *pdata = trans_pdata; Transaction *trn = pdata->trans; gnc_commodity *ref; ref = dom_tree_to_commodity_ref(node, pdata->book); xaccTransSetCurrency(trn, ref); return TRUE; }
static gboolean employee_currency_handler (xmlNodePtr node, gpointer employee_pdata) { struct employee_pdata *pdata = employee_pdata; gnc_commodity *com; com = dom_tree_to_commodity_ref(node, pdata->book); g_return_val_if_fail (com, FALSE); gncEmployeeSetCurrency (pdata->employee, com); return TRUE; }
static gboolean invoice_currency_handler (xmlNodePtr node, gpointer invoice_pdata) { struct invoice_pdata* pdata = static_cast<decltype (pdata)> (invoice_pdata); gnc_commodity* com; com = dom_tree_to_commodity_ref (node, pdata->book); g_return_val_if_fail (com, FALSE); gncInvoiceSetCurrency (pdata->invoice, com); return TRUE; }
static gboolean customer_currency_handler (xmlNodePtr node, gpointer customer_pdata) { struct customer_pdata *pdata = customer_pdata; gnc_commodity *com; com = dom_tree_to_commodity_ref(node, pdata->book); g_return_val_if_fail (com, FALSE); gncCustomerSetCurrency (pdata->customer, com); return TRUE; }
static gboolean vendor_currency_handler (xmlNodePtr node, gpointer vendor_pdata) { struct vendor_pdata* pdata = static_cast<decltype (pdata)> (vendor_pdata); gnc_commodity* com; com = dom_tree_to_commodity_ref (node, pdata->book); g_return_val_if_fail (com, FALSE); gncVendorSetCurrency (pdata->vendor, com); return TRUE; }