rem: insere_operation_dans_liste ( contre_operation );
add: gsb_transactions_append_transaction ( contre_operation );
context: struct structure_operation *ajoute_contre_operation_echeance_dans_liste ( struct structure_operation *operation,									  gint compte_virement,									  gint contre_type_ope ){    /*   si c'Ã©tait un virement, on crée une copie de l'opé, on l'ajout à la liste puis on remplit les relations */    struct structure_operation *contre_operation;    struct struct_devise *contre_devise;    struct struct_devise *devise;    contre_operation = calloc ( 1,				sizeof ( struct structure_operation ) );    contre_operation -> no_compte = compte_virement;    /* remplit la nouvelle opé */    contre_operation -> jour = operation -> jour;    contre_operation -> mois = operation -> mois;    contre_operation -> annee = operation -> annee;    contre_operation ->date = g_date_new_dmy ( contre_operation->jour,					       contre_operation->mois,					       contre_operation->annee);    contre_operation -> montant = -operation -> montant;    /* si c'est la devise du compte ou si c'est un compte qui doit passer à l'euro ( la transfo se fait au niveau */    /* de l'affichage de la liste ) ou si c'est un compte en euro et l'opé est dans une devise qui doit passer à l'euro -> ok */    contre_devise = devise_par_no ( gsb_account_get_currency (compte_virement) );    contre_operation -> devise = operation -> devise;    /* récupération de la devise */    devise = devise_par_no ( operation -> devise );    if ( !( contre_operation-> no_operation	    ||	    devise -> no_devise == gsb_account_get_currency (compte_virement)	    ||	    ( contre_devise -> passage_euro && !strcmp ( devise -> nom_devise, _("Euro") ))	    ||	    ( !strcmp ( contre_devise -> nom_devise, _("Euro") ) && devise -> passage_euro )))    {	/* c'est une devise étrangère, on demande le taux de change et les frais de change */	demande_taux_de_change ( contre_devise, devise, 1,				 (gdouble ) 0, (gdouble ) 0, FALSE );	contre_operation -> taux_change = taux_de_change[0];	contre_operation -> frais_change = taux_de_change[1];	if ( contre_operation -> taux_change < 0 )	{	    contre_operation -> taux_change = -contre_operation -> taux_change;	    contre_operation -> une_devise_compte_egale_x_devise_ope = 1;	}    }    else    {	contre_operation -> taux_change = 0;	contre_operation -> frais_change = 0;    }    contre_operation -> tiers = operation -> tiers;    contre_operation -> categorie = 0;    contre_operation -> sous_categorie = 0;    if ( operation -> notes )	contre_operation -> notes = g_strdup ( operation -> notes);    contre_operation -> auto_man = operation -> auto_man;    contre_operation -> type_ope = contre_type_ope;    if ( operation -> contenu_type )	contre_operation -> contenu_type = g_strdup ( operation -> contenu_type );    contre_operation -> no_exercice = operation -> no_exercice;    contre_operation -> imputation = operation -> imputation;    contre_operation -> sous_imputation = operation -> sous_imputation;    /*   on a fini de remplir l'opé, on peut l'ajouter à la liste */    insere_operation_dans_liste ( contre_operation );    /* on met maintenant les relations entre les différentes opé */    operation -> relation_no_operation = contre_operation -> no_operation;    operation -> relation_no_compte = contre_operation -> no_compte;    contre_operation -> relation_no_operation = operation -> no_operation;    contre_operation -> relation_no_compte = operation -> no_compte;    return ( contre_operation );}