示例#1
0
/**
 * 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;
}
示例#3
0
/**
 * 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;
}
示例#4
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));
    }
}