コード例 #1
0
/**
 * 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 );
}
コード例 #2
0
/**
 * 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));
    }
}