/******************************************************* * get_filter_times * * get the start and end times from the dialog *******************************************************/ static void get_filter_times (CsvExportInfo *info) { time64 time_val; if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(info->csvd.start_date_choose))) { time_val = gnc_date_edit_get_date (GNC_DATE_EDIT(info->csvd.start_date)); time_val = gnc_time64_get_day_start (time_val); info->csvd.start_time = time_val; } else { if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(info->csvd.start_date_today))) info->csvd.start_time = gnc_time64_get_today_start(); else info->csvd.start_time = 0; } if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(info->csvd.end_date_choose))) { time_val = gnc_date_edit_get_date (GNC_DATE_EDIT(info->csvd.end_date)); time_val = gnc_time64_get_day_end (time_val); info->csvd.end_time = time_val; } else { if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(info->csvd.end_date_today))) info->csvd.end_time = gnc_time64_get_today_end(); else info->csvd.end_time = gnc_time (NULL); } }
static time64 lookup_end_date_option(const gchar *section, const gchar *key_choice, const gchar *key_absolute, const gchar *key_relative, GDate *fy_end) { gchar *choice; time64 time; int which; choice = gnc_gconf_get_string(section, key_choice, NULL); if (choice && strcmp(choice, "absolute") == 0) { time = gnc_gconf_get_int(section, key_absolute, NULL); time = gnc_time64_get_day_end(time); } else { which = gnc_gconf_get_int(section, key_relative, NULL); time = gnc_accounting_period_end_time64(which, fy_end, NULL); } g_free(choice); if (time == 0) time = -1; return time; }
GtkWidget * gnc_reconcile_view_new (Account *account, GNCReconcileViewType type, time64 statement_date) { GNCReconcileView *view; GtkListStore *liststore; gboolean include_children, auto_check; GList *accounts = NULL; GList *splits; Query *query; g_return_val_if_fail (account, NULL); g_return_val_if_fail ((type == RECLIST_DEBIT) || (type == RECLIST_CREDIT), NULL); view = g_object_new (GNC_TYPE_RECONCILE_VIEW, NULL); /* Create the list store with 6 columns and add to treeview, column 0 will be a pointer to the entry */ liststore = gtk_list_store_new (6, G_TYPE_POINTER, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_BOOLEAN ); gtk_tree_view_set_model (GTK_TREE_VIEW (view), GTK_TREE_MODEL (liststore)); g_object_unref (liststore); view->account = account; view->view_type = type; view->statement_date = statement_date; query = qof_query_create_for (GNC_ID_SPLIT); qof_query_set_book (query, gnc_get_current_book ()); include_children = xaccAccountGetReconcileChildrenStatus (account); if (include_children) accounts = gnc_account_get_descendants (account); /* match the account */ accounts = g_list_prepend (accounts, account); xaccQueryAddAccountMatch (query, accounts, QOF_GUID_MATCH_ANY, QOF_QUERY_AND); g_list_free (accounts); /* limit the matches to CREDITs and DEBITs only, depending on the type */ if (type == RECLIST_CREDIT) xaccQueryAddValueMatch(query, gnc_numeric_zero (), QOF_NUMERIC_MATCH_CREDIT, QOF_COMPARE_GTE, QOF_QUERY_AND); else xaccQueryAddValueMatch(query, gnc_numeric_zero (), QOF_NUMERIC_MATCH_DEBIT, QOF_COMPARE_GTE, QOF_QUERY_AND); /* limit the matches only to Cleared and Non-reconciled splits */ xaccQueryAddClearedMatch (query, CLEARED_NO | CLEARED_CLEARED, QOF_QUERY_AND); /* Initialize the QueryList */ gnc_reconcile_view_construct (view, query); /* find the list of splits to auto-reconcile */ auto_check = gnc_prefs_get_bool (GNC_PREFS_GROUP_RECONCILE, GNC_PREF_CHECK_CLEARED); if (auto_check) { time64 statement_date_day_end = gnc_time64_get_day_end(statement_date); for (splits = qof_query_run (query); splits; splits = splits->next) { Split *split = splits->data; char recn = xaccSplitGetReconcile (split); time64 trans_date = xaccTransGetDate (xaccSplitGetParent (split)); /* Just an extra verification that our query is correct ;) */ g_assert (recn == NREC || recn == CREC); if (recn == CREC && gnc_difftime (trans_date, statement_date_day_end) <= 0) g_hash_table_insert (view->reconciled, split, split); } } /* Free the query -- we don't need it anymore */ qof_query_destroy (query); return GTK_WIDGET (view); }