/* ================================================================= */ 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 xmlNodePtr vendor_dom_tree_create (GncVendor* vendor) { xmlNodePtr ret; GncBillTerm* term; GncTaxTable* taxtable; ret = xmlNewNode (NULL, BAD_CAST gnc_vendor_string); xmlSetProp (ret, BAD_CAST "version", BAD_CAST vendor_version_string); xmlAddChild (ret, guid_to_dom_tree (vendor_guid_string, qof_instance_get_guid (QOF_INSTANCE (vendor)))); xmlAddChild (ret, text_to_dom_tree (vendor_name_string, gncVendorGetName (vendor))); xmlAddChild (ret, text_to_dom_tree (vendor_id_string, gncVendorGetID (vendor))); xmlAddChild (ret, gnc_address_to_dom_tree (vendor_addr_string, gncVendorGetAddr (vendor))); maybe_add_string (ret, vendor_notes_string, gncVendorGetNotes (vendor)); term = gncVendorGetTerms (vendor); if (term) xmlAddChild (ret, guid_to_dom_tree (vendor_terms_string, qof_instance_get_guid (QOF_INSTANCE (term)))); xmlAddChild (ret, text_to_dom_tree (vendor_taxincluded_string, gncTaxIncludedTypeToString ( gncVendorGetTaxIncluded (vendor)))); xmlAddChild (ret, int_to_dom_tree (vendor_active_string, gncVendorGetActive (vendor))); xmlAddChild (ret, commodity_ref_to_dom_tree (vendor_currency_string, gncVendorGetCurrency (vendor))); xmlAddChild (ret, int_to_dom_tree (vendor_taxtableoverride_string, gncVendorGetTaxTableOverride (vendor))); taxtable = gncVendorGetTaxTable (vendor); if (taxtable) xmlAddChild (ret, guid_to_dom_tree (vendor_taxtable_string, qof_instance_get_guid (QOF_INSTANCE (taxtable)))); /* xmlAddChild won't do anything with a NULL, so tests are superfluous. */ xmlAddChild (ret, qof_instance_slots_to_dom_tree (vendor_slots_string, QOF_INSTANCE (vendor))); return ret; }
gnc_commodity * gncOwnerGetCurrency (const GncOwner *owner) { if (!owner) return NULL; switch (owner->type) { case GNC_OWNER_NONE: case GNC_OWNER_UNDEFINED: default: return NULL; case GNC_OWNER_CUSTOMER: return gncCustomerGetCurrency (owner->owner.customer); case GNC_OWNER_VENDOR: return gncVendorGetCurrency (owner->owner.vendor); case GNC_OWNER_EMPLOYEE: return gncEmployeeGetCurrency (owner->owner.employee); case GNC_OWNER_JOB: return gncOwnerGetCurrency (gncJobGetOwner (owner->owner.job)); } }