/** * used to compare 2 iters and sort the by value date or date if not exist * always put the white line below * * \param model the GtkTreeModel * \param iter_1 * \param iter_2 * * \return -1 if iter_1 is above iter_2 * */ gint gsb_transactions_list_sort_by_value_date ( gint transaction_number_1, gint transaction_number_2 ) { gint return_value; const GDate *value_date_1 = NULL; const GDate *value_date_2 = NULL; if (conf.transactions_list_primary_sorting == 2) return gsb_transactions_list_sort_by_date (transaction_number_1, transaction_number_2); /* need to work a little more here because value date is not obligatory filled, * if we compare 2 transactions and 1 has no value date, set the value date before */ value_date_1 = gsb_data_transaction_get_value_date ( transaction_number_1 ); if ( !value_date_1 && !conf.transactions_list_primary_sorting ) value_date_1 = gsb_data_transaction_get_date ( transaction_number_1 ); value_date_2 = gsb_data_transaction_get_value_date ( transaction_number_2 ); if ( !value_date_2 && !conf.transactions_list_primary_sorting ) value_date_2 = gsb_data_transaction_get_date ( transaction_number_2 ); if ( value_date_1 ) { if (value_date_2) return_value = g_date_compare ( value_date_1, value_date_2); else return_value = -1; } else { if (value_date_2) return_value = 1; else return gsb_transactions_list_sort_by_date ( transaction_number_1, transaction_number_2 ); } if ( return_value ) return return_value; else return gsb_transactions_list_sort_initial_by_secondary_key ( transaction_number_1, transaction_number_2 ); }
/** * find the right function to sort the list and sort the 2 iters given * * \param model * \param iter_1 * \param iter_2 * \param no_sort permit to find the right function * * \return -1 if iter_1 is above iter_2 * */ gint gsb_transactions_list_sort_by_no_sort ( gint transaction_number_1, gint transaction_number_2, gint element_number ) { gchar* tmpstr; switch (element_number) { case ELEMENT_DATE: /* = 1 */ return ( gsb_transactions_list_sort_by_date ( transaction_number_1, transaction_number_2)); break; case ELEMENT_VALUE_DATE: return ( gsb_transactions_list_sort_by_value_date ( transaction_number_1, transaction_number_2)); break; case ELEMENT_PARTY: return ( gsb_transactions_list_sort_by_party ( transaction_number_1, transaction_number_2)); break; case ELEMENT_BUDGET: return ( gsb_transactions_list_sort_by_budget ( transaction_number_1, transaction_number_2)); break; case ELEMENT_CREDIT: return ( gsb_transactions_list_sort_by_credit ( transaction_number_1, transaction_number_2)); break; case ELEMENT_DEBIT: return ( gsb_transactions_list_sort_by_debit ( transaction_number_1, transaction_number_2)); break; case ELEMENT_BALANCE: /* balance, normally, shouldn't be here... in case, give back the date */ return ( gsb_transactions_list_sort_by_date ( transaction_number_1, transaction_number_2)); break; case ELEMENT_AMOUNT: return ( gsb_transactions_list_sort_by_amount ( transaction_number_1, transaction_number_2)); break; case ELEMENT_PAYMENT_TYPE: return ( gsb_transactions_list_sort_by_type ( transaction_number_1, transaction_number_2)); break; case ELEMENT_RECONCILE_NB: return ( gsb_transactions_list_sort_by_reconcile_nb ( transaction_number_1, transaction_number_2)); break; case ELEMENT_EXERCICE: return ( gsb_transactions_list_sort_by_financial_year ( transaction_number_1, transaction_number_2)); break; case ELEMENT_CATEGORY: return ( gsb_transactions_list_sort_by_category ( transaction_number_1, transaction_number_2)); break; case ELEMENT_MARK: return ( gsb_transactions_list_sort_by_mark ( transaction_number_1, transaction_number_2)); break; case ELEMENT_VOUCHER: return ( gsb_transactions_list_sort_by_voucher ( transaction_number_1, transaction_number_2)); break; case ELEMENT_NOTES: return ( gsb_transactions_list_sort_by_notes ( transaction_number_1, transaction_number_2)); break; case ELEMENT_BANK: return ( gsb_transactions_list_sort_by_bank ( transaction_number_1, transaction_number_2)); break; case ELEMENT_NO: return ( gsb_transactions_list_sort_by_no ( transaction_number_1, transaction_number_2)); break; case ELEMENT_CHQ: return ( gsb_transactions_list_sort_by_chq ( transaction_number_1, transaction_number_2)); break; default : tmpstr = g_strdup_printf ( _("ask for the sort number %d which doesn't exist... return by date"), element_number ); warning_debug (tmpstr); g_free(tmpstr); return ( gsb_transactions_list_sort_by_date ( transaction_number_1, transaction_number_2)); } }