rem: GDate *derniere_date;
add: GDate *last_date;
context: void ajout_opes_importees ( struct struct_compte_importation *compte_import ){    GSList *liste_tmp;    GDate *derniere_date;    gint demande_confirmation;    gint no_compte;        /* on se place sur le compte dans lequel on va importer les opés */    no_compte = recupere_no_compte ( compte_import -> bouton_compte );    /* si le compte importé a une id, on la vérifie ici */    /*     si elle est absente, on met celle importée */    /*     si elle est différente, on demande si on la remplace */    if ( compte_import -> id_compte )    {	if ( gsb_account_get_id (no_compte) )	{	    if ( g_strcasecmp ( gsb_account_get_id (no_compte),				compte_import -> id_compte ))	    {		/* 		l'id du compte choisi et l'id du compte importé sont différents */		/* 		    on propose encore d'arrêter... */		if ( question_yes_no_hint ( _("The id of the imported and chosen accounts are different"),					    _("Perhaps you choose a wrong account ?  If you choose to continue, the id of the account will be changed.  Do you want to continue ?")))		    gsb_account_set_id (no_compte,					g_strdup ( compte_import -> id_compte ));		else		    return;	    }	}	else	    gsb_account_set_id (no_compte,				g_strdup ( compte_import -> id_compte ));    }    /* on fait un premier tour de la liste des opés pour repérer celles qui sont déjà entrées */    /*   si on n'importe que du ofx, c'est facile, chaque opé est repérée par une id */    /*     donc si l'opé importée a une id, il suffit de rechercher l'id dans le compte, si elle */    /*     n'y est pas l'opé est à enregistrer */    /*     si on importe du qif ou du html, il n'y a pas d'id. donc soit on retrouve une opé semblable */    /*     (cad même montant et même date, on ne fait pas joujou avec le tiers car l'utilisateur */    /* a pu le changer), et on demande à l'utilisateur quoi faire, sinon on enregistre l'opé */    /*   pour gagner en rapidité, on va récupérer la dernière date du compte, toutes les opés importées */    /* qui ont une date supérieure sont automatiquement acceptées */    liste_tmp = gsb_account_get_transactions_list (no_compte);    derniere_date = NULL;    while ( liste_tmp )    {	struct structure_operation *operation;	operation = liste_tmp -> data;	if ( !derniere_date	     ||	     g_date_compare ( operation -> date,			      derniere_date ) > 0 )	    derniere_date = operation -> date;	liste_tmp = liste_tmp -> next;    }    liste_tmp = compte_import -> operations_importees;    demande_confirmation = 0;    while ( liste_tmp )    {	struct struct_ope_importation *operation_import;	operation_import = liste_tmp -> data;	/* on ne fait le tour de la liste des opés que si la date de l'opé importée est inférieure à la dernière date */	/* de la liste */	if ( g_date_compare ( derniere_date,			      operation_import -> date ) >= 0 )	{	    /* 	    si l'opé d'import a une id, on recherche ça en priorité */	    if ( operation_import -> id_operation		 &&		 operation_par_id ( operation_import -> id_operation,				    no_compte ))		/* comme on est sûr que cette opé a déjà été enregistree, on met l'action à 2, cad on demande l'avis de personne pour */		    /*     pas l'enregistrer */		    operation_import -> action = 2;	    /* 	    si l'opé d'import a un no de chq, on le recherche */	    if ( operation_import -> action != 2		 &&		 operation_import -> cheque		 &&		 operation_par_cheque ( operation_import -> cheque,					no_compte ))		/* 	comme on est sûr que cette opé a déjà été enregistree, on met l'action à 2, cad on demande l'avis de personne pour */		/*  pas l'enregistrer */		operation_import -> action = 2;	    /* on fait donc le tour de la liste des opés pour retrouver une opé comparable */	    /* si elle n'a pas déjà été retrouvée par id... */	    if ( operation_import -> action != 2 )	    {		GDate *date_debut_comparaison;		GDate *date_fin_comparaison;		GSList *liste_ope;		date_debut_comparaison = g_date_new_dmy ( g_date_get_day ( operation_import -> date ),							  g_date_get_month ( operation_import -> date ),							  g_date_get_year ( operation_import -> date ));		g_date_subtract_days ( date_debut_comparaison,				       valeur_echelle_recherche_date_import );		date_fin_comparaison = g_date_new_dmy ( g_date_get_day ( operation_import -> date ),							g_date_get_month ( operation_import -> date ),							g_date_get_year ( operation_import -> date ));		g_date_add_days ( date_fin_comparaison,				  valeur_echelle_recherche_date_import );		liste_ope = gsb_account_get_transactions_list (no_compte);		while ( liste_ope )		{		    struct structure_operation *operation;		    operation = liste_ope -> data;		    if ( fabs ( operation -> montant - operation_import -> montant ) < 0.01			 &&			 ( g_date_compare ( operation -> date,					    date_debut_comparaison ) >= 0 )			 &&			 ( g_date_compare ( operation -> date,					    date_fin_comparaison ) <= 0 )			 &&			 !operation_import -> ope_de_ventilation )		    {			/* l'opé a la même date et le même montant, on la marque pour demander quoi faire à l'utilisateur */			operation_import -> action = 1; 			operation_import -> ope_correspondante = operation;			demande_confirmation = 1;		    }		    liste_ope = liste_ope -> next;		}	    }	}	liste_tmp = liste_tmp -> next;    }    /*   à ce niveau, toutes les opés douteuses ont été marquées, on appelle la fonction qui */    /* se charge de demander à l'utilisateur que faire */    if ( demande_confirmation )	confirmation_enregistrement_ope_import ( compte_import );    /* on fait le tour des opés de ce compte et enregistre les opés */    /* la variable derniere_operation est utilisée pour garder le numéro de l'opé */    /* précédente pour les ventilations */    derniere_operation_enregistrement_ope_import = 0;    liste_tmp = compte_import -> operations_importees;    while ( liste_tmp )    {	struct struct_ope_importation *operation_import;	operation_import = liste_tmp -> data;	/* vérifie qu'on doit bien l'enregistrer */	if ( !operation_import -> action )	{	    /* on récupère à ce niveau la devise choisie dans la liste */	    operation_import -> devise = GPOINTER_TO_INT ( gtk_object_get_data ( GTK_OBJECT ( GTK_OPTION_MENU ( compte_import -> bouton_devise ) -> menu_item ),										 "no_devise" ));	    enregistre_ope_importee ( operation_import,				      no_compte );	} 	liste_tmp = liste_tmp -> next;    }    gsb_account_set_update_list ( no_compte,				  1 );/*     calcule_solde_compte ( no_compte ); *//*     calcule_solde_pointe_compte ( no_compte ); */}