static void gnc_plugin_business_cmd_export_employee (GtkAction *action, GncMainWindowActionData *mw) { QofSession *current_session, *chart_session; QofBook *book; QofCollection *coll; gchar *filename; gboolean success; current_session = gnc_get_current_session(); book = qof_session_get_book(current_session); chart_session = qof_session_new(); success = FALSE; filename = gnc_file_dialog(_("Export Employees to XML"), NULL, NULL, GNC_FILE_DIALOG_EXPORT); if (filename) { gchar* url = g_strdup_printf( "qsf:%s", filename ); qof_session_begin(chart_session, url, TRUE, TRUE); coll = qof_book_get_collection(book, GNC_ID_EMPLOYEE); success = qof_instance_copy_coll_r(chart_session, coll); if (success) { qof_session_save(chart_session, NULL); } g_free(url); } show_session_error(qof_session_get_error(chart_session), filename, GNC_FILE_DIALOG_EXPORT); qof_session_end(chart_session); g_free(filename); gnc_set_current_session(current_session); }
static void test_recursion (QofSession *original, guint counter) { QofSession *copy; QofCollection *grand_coll; struct tally c; QofBook *book; guint d, e, f; c.nulls = 0; c.total = 0; c.collect = 0; c.book = NULL; book = qof_session_get_book(original); grand_coll = qof_book_get_collection(book, GRAND_MODULE_NAME); copy = qof_session_new(); if (debug) { /* FIXME XML backend can't handle STDOUT * qof_session_begin(copy, QOF_STDOUT, TRUE, FALSE); */ } /* TODO: implement QOF_TYPE_CHOICE testing. */ qof_instance_copy_coll_r(copy, grand_coll); /* test the original */ qof_object_foreach(GRAND_MODULE_NAME, book, check_cb, &c); book = qof_session_get_book(copy); /* test the copy */ d = c.nulls; e = c.total; f = c.collect; c.nulls = 0; c.total = 0; c.collect = 0; c.book = book; qof_object_foreach(GRAND_MODULE_NAME, book, check_cb, &c); do_test((d == c.nulls), "Null parents do not match"); do_test((e == c.total), "Total parents do not match"); do_test((f == c.collect), "Number of children in descendents does not match"); if (counter == 4 && debug == TRUE) { /* FIXME XML backend can't handle STDOUT * qof_session_save(copy, NULL); qof_session_save(original, NULL); */ } qof_session_end(copy); copy = NULL; }