void xaccAccountTreeScrubCommodities (Account *acc) { if (!acc) return; xaccAccountTreeForEachTransaction (acc, scrub_trans_currency_helper, NULL); scrub_account_commodity_helper (acc, NULL); gnc_account_foreach_descendant (acc, scrub_account_commodity_helper, NULL); }
bool GncSqlBackend::write_transactions() { auto obe = m_backend_registry.get_object_backend(GNC_ID_TRANS); write_objects_t data{this, TRUE, obe.get()}; (void)xaccAccountTreeForEachTransaction ( gnc_book_get_root_account (m_book), write_tx, &data); update_progress(); return data.is_ok; }
bool GncSqlBackend::write_template_transactions() { auto obe = m_backend_registry.get_object_backend(GNC_ID_TRANS); write_objects_t data{this, true, obe.get()}; auto ra = gnc_book_get_template_root (m_book); if (gnc_account_n_descendants (ra) > 0) { (void)xaccAccountTreeForEachTransaction (ra, write_tx, &data); update_progress(); } return data.is_ok; }
xmlNodePtr gnc_book_dom_tree_create(QofBook *book) { xmlNodePtr ret; G_GNUC_UNUSED gboolean allow_incompat = TRUE; ret = xmlNewNode(NULL, BAD_CAST gnc_book_string); xmlSetProp(ret, BAD_CAST "version", BAD_CAST gnc_v2_book_version_string); xmlAddChild(ret, guid_to_dom_tree(book_id_string, qof_book_get_guid(book))); if (qof_instance_get_slots (QOF_INSTANCE (book))) { xmlNodePtr kvpnode = kvp_frame_to_dom_tree(book_slots_string, qof_instance_get_slots (QOF_INSTANCE (book))); if (kvpnode) xmlAddChild(ret, kvpnode); } #ifdef IMPLEMENT_BOOK_DOM_TREES_LATER /* theoretically, we should be adding all the below to the book * but in fact, there's enough brain damage in the code already * that we are only going to hand-edit the file at a higher layer. * And that's OK, since its probably a performance boost anyway. */ xmlAddChild(ret, gnc_commodity_dom_tree_create( gnc_commodity_table_get_table(book))); xmlAddChild(ret, gnc_pricedb_dom_tree_create(gnc_pricedb_get_db(book))); if (allow_incompat) { accnode = gnc_account_dom_tree_create(account, FALSE); xmlAddChild (ret, rootAccNode); } append_account_tree (ret, gnc_book_get_root(book)); xaccAccountTreeForEachTransaction (gnc_book_get_root_account(book), traverse_txns, ret); /* xxx FIXME hack alert how are we going to handle * gnc_book_get_template_group handled ??? */ xmlAddChild(ret, gnc_schedXaction_dom_tree_create( gnc_book_get_schedxactions(book))); #endif return ret; }
static void run_test (void) { QofSession *session; Account *root; QofBook *book; session = get_random_session (); book = qof_session_get_book (session); root = gnc_book_get_root_account (book); add_random_transactions_to_book (book, 20); xaccAccountTreeForEachTransaction (root, test_trans_query, book); qof_session_end (session); }