static int get_num_xactions_before_date(QofBook *book, time64 close_date) { QofQuery *q; GSList *param; QofQueryPredData *pred; GList *res, *n; int cnt = 0; q = qof_query_create_for(GNC_ID_TRANS); qof_query_set_max_results(q, -1); qof_query_set_book (q, book); /* Look for transactions earlier than the closing date */ param = g_slist_prepend (NULL, TRANS_DATE_POSTED); pred = qof_query_date_predicate (QOF_COMPARE_LTE, QOF_DATE_MATCH_NORMAL, close_date); qof_query_add_term (q, param, pred, QOF_QUERY_FIRST_TERM); /* Run the query, find how many transactions there are */ res = qof_query_run (q); cnt = 0; for (n = res; n; n = n->next) cnt ++; qof_query_destroy (q); return cnt; }
void xaccQueryAddDateMatchTS (QofQuery * q, gboolean use_start, Timespec sts, gboolean use_end, Timespec ets, QofQueryOp op) { QofQuery *tmp_q = NULL; QofQueryPredData *pred_data; GSList *param_list; if (!q || (!use_start && !use_end)) return; tmp_q = qof_query_create (); if (use_start) { pred_data = qof_query_date_predicate (QOF_COMPARE_GTE, QOF_DATE_MATCH_NORMAL, sts); if (!pred_data) { qof_query_destroy (tmp_q); return; } param_list = qof_query_build_param_list (SPLIT_TRANS, TRANS_DATE_POSTED, NULL); qof_query_add_term (tmp_q, param_list, pred_data, QOF_QUERY_AND); } if (use_end) { pred_data = qof_query_date_predicate (QOF_COMPARE_LTE, QOF_DATE_MATCH_NORMAL, ets); if (!pred_data) { qof_query_destroy (tmp_q); return; } param_list = qof_query_build_param_list (SPLIT_TRANS, TRANS_DATE_POSTED, NULL); qof_query_add_term (tmp_q, param_list, pred_data, QOF_QUERY_AND); } qof_query_merge_in_place (q, tmp_q, op); qof_query_destroy (tmp_q); }
SplitQList splitsList = buildSplitListDateSort(expenseAccountsList); buildMiniJournalStruct(splitsList); } #if 0 /* get all transactions earlier than the specified date */ QofQuery *qr = qof_query_create_for (GNC_ID_SPLIT); qof_query_set_book(qr, ::gnc_account_get_book(selectedAccount)); // To look for dates, you need to create a "PredData" object Timespec calve_date; //calve_date = gdate_to_timespec(trans.getGDatePosted()); QofQueryPredData *pred_data = qof_query_date_predicate (QOF_COMPARE_LTE, QOF_DATE_MATCH_NORMAL, calve_date); // and additionally a "query parameter" object GSList *param_list = qof_query_build_param_list (TRANS_DATE_POSTED, NULL); // The "PredData" and the "query parameter" object are added to this query qof_query_add_term (qr, param_list, pred_data, QOF_QUERY_FIRST_TERM); // Query is run; result is returned GList *result = qof_query_run (qr); SplitQList querySplitList = Split::fromGList(result); Split qSplit; int numOfQuerSplits = querySplitList.count(); for(i=0; i < numOfQuerSplits; ++i)