mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
Remove redundant routines and place a single copy in a common location.
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@7687 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
parent
c43bef4a62
commit
1d98fa5497
@ -354,26 +354,6 @@ void gnc_entry_ledger_set_default_order (GncEntryLedger *ledger,
|
||||
gnc_entry_ledger_display_refresh (ledger);
|
||||
}
|
||||
|
||||
static GSList *
|
||||
build_param_list (char const *param, ...)
|
||||
{
|
||||
GSList *param_list = NULL;
|
||||
char const *this_param;
|
||||
va_list ap;
|
||||
|
||||
if (!param)
|
||||
return NULL;
|
||||
|
||||
va_start (ap, param);
|
||||
|
||||
for (this_param = param; this_param; this_param = va_arg (ap, const char *))
|
||||
param_list = g_slist_prepend (param_list, (gpointer)this_param);
|
||||
|
||||
va_end (ap);
|
||||
|
||||
return g_slist_reverse (param_list);
|
||||
}
|
||||
|
||||
static void create_invoice_query (GncEntryLedger *ledger)
|
||||
{
|
||||
QueryNew *q, *q1;
|
||||
@ -425,7 +405,7 @@ static void create_invoice_query (GncEntryLedger *ledger)
|
||||
}
|
||||
|
||||
q = gncQueryCreateFor (GNC_ENTRY_MODULE_NAME);
|
||||
gncQueryAddGUIDMatch (q, build_param_list (type, QUERY_PARAM_GUID, NULL),
|
||||
gncQueryAddGUIDMatch (q, gncQueryBuildParamList (type, QUERY_PARAM_GUID, NULL),
|
||||
gncInvoiceGetGUID (ledger->invoice), QUERY_OR);
|
||||
|
||||
/* Term 3 */
|
||||
@ -441,31 +421,31 @@ static void create_invoice_query (GncEntryLedger *ledger)
|
||||
* ( Entry->BillTo == NULL AND Entry->Bill->BillTo == Invoice->parent )
|
||||
*/
|
||||
|
||||
gncQueryAddGUIDMatch (q2, build_param_list (ENTRY_BILLTO,
|
||||
QUERY_PARAM_GUID, NULL),
|
||||
gncQueryAddGUIDMatch (q2, gncQueryBuildParamList (ENTRY_BILLTO,
|
||||
QUERY_PARAM_GUID, NULL),
|
||||
NULL, QUERY_AND);
|
||||
gncQueryAddGUIDMatch (q2, build_param_list (ENTRY_BILL, INVOICE_BILLTO,
|
||||
QUERY_PARAM_GUID, NULL),
|
||||
gncQueryAddGUIDMatch (q2, gncQueryBuildParamList (ENTRY_BILL, INVOICE_BILLTO,
|
||||
QUERY_PARAM_GUID, NULL),
|
||||
invoice_parent, QUERY_AND);
|
||||
gncQueryAddGUIDMatch (q2, build_param_list (ENTRY_BILLTO,
|
||||
QUERY_PARAM_GUID, NULL),
|
||||
gncQueryAddGUIDMatch (q2, gncQueryBuildParamList (ENTRY_BILLTO,
|
||||
QUERY_PARAM_GUID, NULL),
|
||||
invoice_parent, QUERY_OR);
|
||||
|
||||
/* Entry->Billable == TRUE AND Entry->Bill->Is-Posted? == TRUE */
|
||||
gncQueryAddBooleanMatch (q2, build_param_list (ENTRY_BILLABLE, NULL),
|
||||
gncQueryAddBooleanMatch (q2, gncQueryBuildParamList (ENTRY_BILLABLE, NULL),
|
||||
TRUE, QUERY_AND);
|
||||
gncQueryAddBooleanMatch (q2, build_param_list (ENTRY_BILL,
|
||||
INVOICE_IS_POSTED, NULL),
|
||||
gncQueryAddBooleanMatch (q2, gncQueryBuildParamList (ENTRY_BILL,
|
||||
INVOICE_IS_POSTED, NULL),
|
||||
TRUE, QUERY_AND);
|
||||
|
||||
/* Entry->Order->real-parent == Invoice->parent */
|
||||
gncQueryAddGUIDMatch (q2, build_param_list (ENTRY_ORDER, ORDER_OWNER,
|
||||
OWNER_PARENTG, NULL),
|
||||
gncQueryAddGUIDMatch (q2, gncQueryBuildParamList (ENTRY_ORDER, ORDER_OWNER,
|
||||
OWNER_PARENTG, NULL),
|
||||
invoice_parent, QUERY_OR);
|
||||
|
||||
/* Entry->Invoice == NULL */
|
||||
gncQueryAddGUIDMatch (q2, build_param_list (ENTRY_INVOICE,
|
||||
QUERY_PARAM_GUID, NULL),
|
||||
gncQueryAddGUIDMatch (q2, gncQueryBuildParamList (ENTRY_INVOICE,
|
||||
QUERY_PARAM_GUID, NULL),
|
||||
NULL, QUERY_AND);
|
||||
|
||||
|
||||
|
@ -57,22 +57,6 @@ build_param_list_internal (const char *first, va_list rest)
|
||||
return (g_slist_reverse (list));
|
||||
}
|
||||
|
||||
static GSList *
|
||||
build_param_list (char const *param, ...)
|
||||
{
|
||||
GSList *param_list;
|
||||
va_list ap;
|
||||
|
||||
if (!param)
|
||||
return NULL;
|
||||
|
||||
va_start (ap, param);
|
||||
param_list = build_param_list_internal (param, ap);
|
||||
va_end (ap);
|
||||
|
||||
return param_list;
|
||||
}
|
||||
|
||||
/********************************************************************
|
||||
* xaccQueryGetSplitsUniqueTrans
|
||||
* Get splits but no more than one from a given transaction.
|
||||
@ -283,11 +267,11 @@ xaccQueryAddAccountGUIDMatch(Query *q, AccountGUIDList *guid_list,
|
||||
switch (how) {
|
||||
case GUID_MATCH_ANY:
|
||||
case GUID_MATCH_NONE:
|
||||
param_list = build_param_list (SPLIT_ACCOUNT, QUERY_PARAM_GUID, NULL);
|
||||
param_list = gncQueryBuildParamList (SPLIT_ACCOUNT, QUERY_PARAM_GUID, NULL);
|
||||
break;
|
||||
case GUID_MATCH_ALL:
|
||||
param_list = build_param_list (SPLIT_TRANS, TRANS_SPLITLIST,
|
||||
SPLIT_ACCOUNT_GUID, NULL);
|
||||
param_list = gncQueryBuildParamList (SPLIT_TRANS, TRANS_SPLITLIST,
|
||||
SPLIT_ACCOUNT_GUID, NULL);
|
||||
break;
|
||||
default:
|
||||
PERR ("Invalid match type: %d", how);
|
||||
@ -393,7 +377,7 @@ xaccQueryAddDateMatchTS (Query * q,
|
||||
return;
|
||||
}
|
||||
|
||||
param_list = build_param_list (SPLIT_TRANS, TRANS_DATE_POSTED, NULL);
|
||||
param_list = gncQueryBuildParamList (SPLIT_TRANS, TRANS_DATE_POSTED, NULL);
|
||||
gncQueryAddTerm (tmp_q, param_list, pred_data, QUERY_AND);
|
||||
}
|
||||
|
||||
@ -404,7 +388,7 @@ xaccQueryAddDateMatchTS (Query * q,
|
||||
return;
|
||||
}
|
||||
|
||||
param_list = build_param_list (SPLIT_TRANS, TRANS_DATE_POSTED, NULL);
|
||||
param_list = gncQueryBuildParamList (SPLIT_TRANS, TRANS_DATE_POSTED, NULL);
|
||||
gncQueryAddTerm (tmp_q, param_list, pred_data, QUERY_AND);
|
||||
}
|
||||
|
||||
@ -486,7 +470,7 @@ xaccQueryAddClearedMatch(Query * q, cleared_match_t how, QueryOp op)
|
||||
if (!pred_data)
|
||||
return;
|
||||
|
||||
param_list = build_param_list (SPLIT_RECONCILE, NULL);
|
||||
param_list = gncQueryBuildParamList (SPLIT_RECONCILE, NULL);
|
||||
|
||||
gncQueryAddTerm (q, param_list, pred_data, op);
|
||||
}
|
||||
@ -501,11 +485,11 @@ xaccQueryAddGUIDMatch(Query * q, const GUID *guid,
|
||||
return;
|
||||
|
||||
if (!safe_strcmp (id_type, GNC_ID_SPLIT))
|
||||
param_list = build_param_list (QUERY_PARAM_GUID, NULL);
|
||||
param_list = gncQueryBuildParamList (QUERY_PARAM_GUID, NULL);
|
||||
else if (!safe_strcmp (id_type, GNC_ID_TRANS))
|
||||
param_list = build_param_list (SPLIT_TRANS, QUERY_PARAM_GUID, NULL);
|
||||
param_list = gncQueryBuildParamList (SPLIT_TRANS, QUERY_PARAM_GUID, NULL);
|
||||
else if (!safe_strcmp (id_type, GNC_ID_ACCOUNT))
|
||||
param_list = build_param_list (SPLIT_ACCOUNT, QUERY_PARAM_GUID, NULL);
|
||||
param_list = gncQueryBuildParamList (SPLIT_ACCOUNT, QUERY_PARAM_GUID, NULL);
|
||||
else
|
||||
PERR ("Invalid match type: %s", id_type);
|
||||
|
||||
@ -544,11 +528,11 @@ xaccQueryAddKVPMatch(Query *q, GSList *path, const kvp_value *value,
|
||||
return;
|
||||
|
||||
if (!safe_strcmp (id_type, GNC_ID_SPLIT))
|
||||
param_list = build_param_list (SPLIT_KVP, NULL);
|
||||
param_list = gncQueryBuildParamList (SPLIT_KVP, NULL);
|
||||
else if (!safe_strcmp (id_type, GNC_ID_TRANS))
|
||||
param_list = build_param_list (SPLIT_TRANS, TRANS_KVP, NULL);
|
||||
param_list = gncQueryBuildParamList (SPLIT_TRANS, TRANS_KVP, NULL);
|
||||
else if (!safe_strcmp (id_type, GNC_ID_ACCOUNT))
|
||||
param_list = build_param_list (SPLIT_ACCOUNT, ACCOUNT_KVP, NULL);
|
||||
param_list = gncQueryBuildParamList (SPLIT_ACCOUNT, ACCOUNT_KVP, NULL);
|
||||
else
|
||||
PERR ("Invalid match type: %s", id_type);
|
||||
|
||||
|
@ -552,6 +552,26 @@ static void query_clear_compiles (QueryNew *q)
|
||||
/********************************************************************/
|
||||
/* PUBLISHED API FUNCTIONS */
|
||||
|
||||
GSList *
|
||||
gncQueryBuildParamList (char const *param, ...)
|
||||
{
|
||||
GSList *param_list = NULL;
|
||||
char const *this_param;
|
||||
va_list ap;
|
||||
|
||||
if (!param)
|
||||
return NULL;
|
||||
|
||||
va_start (ap, param);
|
||||
|
||||
for (this_param = param; this_param; this_param = va_arg (ap, const char *))
|
||||
param_list = g_slist_prepend (param_list, (gpointer)this_param);
|
||||
|
||||
va_end (ap);
|
||||
|
||||
return g_slist_reverse (param_list);
|
||||
}
|
||||
|
||||
void gncQueryAddTerm (QueryNew *q, GSList *param_list,
|
||||
QueryPredData_t pred_data, QueryOp op)
|
||||
{
|
||||
|
@ -31,6 +31,8 @@ typedef enum {
|
||||
|
||||
/* Basic API Functions */
|
||||
|
||||
GSList * gncQueryBuildParamList (char const *param, ...);
|
||||
|
||||
/* Create a new query. A Query MUST be set with a 'search-for' type.
|
||||
* you can create and set this value in one step or two */
|
||||
QueryNew * gncQueryCreate (void);
|
||||
|
@ -129,8 +129,6 @@ gnc_RegWindow_set_pcd (RegWindow *data, gpointer pcd)
|
||||
static int last_width = 0;
|
||||
static int last_stock_width = 0;
|
||||
|
||||
static GSList *date_param = NULL;
|
||||
|
||||
/** PROTOTYPES ******************************************************/
|
||||
|
||||
static void gnc_register_help_changed_cb( GNCSplitReg *gsr, gpointer data );
|
||||
@ -336,6 +334,7 @@ gnc_register_set_date_range(RegWindow *regData)
|
||||
{
|
||||
RegDateWindow *regDateData;
|
||||
GtkToggleButton *toggle;
|
||||
GSList *date_param;
|
||||
Query *query;
|
||||
|
||||
if (!regData)
|
||||
@ -356,12 +355,9 @@ gnc_register_set_date_range(RegWindow *regData)
|
||||
|
||||
toggle = GTK_TOGGLE_BUTTON(regDateData->show_earliest);
|
||||
|
||||
if (date_param == NULL) {
|
||||
date_param = g_slist_prepend (NULL, TRANS_DATE_POSTED);
|
||||
date_param = g_slist_prepend (date_param, SPLIT_TRANS);
|
||||
}
|
||||
|
||||
date_param = gncQueryBuildParamList(TRANS_DATE_POSTED, SPLIT_TRANS, NULL);
|
||||
gncQueryPurgeTerms (query, date_param);
|
||||
g_slist_free(date_param);
|
||||
|
||||
if (!gtk_toggle_button_get_active(toggle))
|
||||
{
|
||||
@ -858,15 +854,12 @@ regWindowLedger( GNCLedgerDisplay *ledger )
|
||||
"Show All Transactions",
|
||||
TRUE );
|
||||
|
||||
/* Where does date_param come from? A file-static? Ick. -- jsled */
|
||||
if (date_param == NULL) {
|
||||
date_param = g_slist_prepend (NULL, TRANS_DATE_POSTED);
|
||||
date_param = g_slist_prepend (date_param, SPLIT_TRANS);
|
||||
}
|
||||
|
||||
{
|
||||
GSList *date_param = gncQueryBuildParamList(TRANS_DATE_POSTED,
|
||||
SPLIT_TRANS, NULL);
|
||||
Query *q = gnc_ledger_display_get_query (regData->ledger);
|
||||
has_date = gncQueryHasTermType (q, date_param);
|
||||
g_slist_free(date_param);
|
||||
}
|
||||
|
||||
if (has_date)
|
||||
|
Loading…
Reference in New Issue
Block a user