/** * compared by date and by party * * \param none but the local variables transaction_number_1 and transaction_number_2 MUST be set * * \return -1 if amount_2 is above amount_number_1 * */ gint gsb_transactions_list_sort_by_date_and_party ( gint transaction_number_1, gint transaction_number_2 ) { gint return_value; gsb_real amount_1; gsb_real amount_2; if ( !gsb_data_transaction_get_date (transaction_number_1) ) { return 1; } if ( !gsb_data_transaction_get_date (transaction_number_2) ) { return -1; } return_value = g_date_compare ( gsb_data_transaction_get_date (transaction_number_1), gsb_data_transaction_get_date (transaction_number_2)); if ( return_value == 0 ) { /* no difference in the dates, sort by amount of transaction */ amount_1 = gsb_data_transaction_get_amount ( transaction_number_1 ); amount_2 = gsb_data_transaction_get_amount ( transaction_number_2 ); return_value = gsb_transactions_list_sort_by_party ( transaction_number_1, transaction_number_2 ); } return return_value; }
/** * compared by date and by party * * \param none but the local variables transaction_number_1 and transaction_number_2 MUST be set * * \return -1 if amount_2 is above amount_number_1 * */ gint gsb_transactions_list_sort_by_date_and_party ( gint transaction_number_1, gint transaction_number_2 ) { gint return_value; if ( !gsb_data_transaction_get_date (transaction_number_1) ) { return 1; } if ( !gsb_data_transaction_get_date (transaction_number_2) ) { return -1; } return_value = g_date_compare ( gsb_data_transaction_get_date (transaction_number_1), gsb_data_transaction_get_date (transaction_number_2)); if ( return_value == 0 ) { /* no difference in the dates, sort by party */ return_value = gsb_transactions_list_sort_by_party ( transaction_number_1, transaction_number_2 ); } return return_value; }
/** * used to compare 2 iters and sort the by secondary key: * no or amount or payee_name * 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_initial_by_secondary_key ( gint transaction_number_1, gint transaction_number_2 ) { if ( conf.transactions_list_secondary_sorting == 1 ) return gsb_transactions_list_sort_by_amount ( transaction_number_1, transaction_number_2 ); else if ( conf.transactions_list_secondary_sorting == 2 ) return gsb_transactions_list_sort_by_party ( transaction_number_1, transaction_number_2 ); else if ( conf.transactions_list_secondary_sorting == 3 ) return gsb_transactions_list_sort_by_date_and_no ( transaction_number_1, transaction_number_2 ); else return 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)); } }