rem: if ( g_date_compare ( last_date, imported_transaction -> date ) >= 0 )
add: if ( last_date && g_date_compare ( last_date, imported_transaction -> date ) >= 0 )
context: void gsb_import_add_imported_transactions ( struct struct_compte_importation *imported_account,					    gint account_number ){    GSList *list_tmp;    GDate *last_date;    gint demande_confirmation;    GSList *list_tmp_transactions;    /* 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 ( imported_account -> id_compte )    {	if ( gsb_data_account_get_id (account_number) )	{	    if ( g_strcasecmp ( gsb_data_account_get_id (account_number),				imported_account -> 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_data_account_set_id (account_number,					g_strdup ( imported_account -> id_compte ));		else		    return;	    }	}	else	    gsb_data_account_set_id (account_number,				g_strdup ( imported_account -> 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 */    list_tmp_transactions = gsb_data_transaction_get_transactions_list ();    last_date = NULL;    while ( list_tmp_transactions )    {	gint transaction_number_tmp;	transaction_number_tmp = gsb_data_transaction_get_transaction_number (list_tmp_transactions -> data);	if ( gsb_data_transaction_get_account_number (transaction_number_tmp) == account_number )	{	    if ( !last_date		 ||		 g_date_compare ( gsb_data_transaction_get_date (transaction_number_tmp),				  last_date ) > 0 )		last_date = gsb_data_transaction_get_date (transaction_number_tmp);	}	list_tmp_transactions = list_tmp_transactions -> next;    }    list_tmp = imported_account -> operations_importees;    demande_confirmation = 0;    while ( list_tmp )    {	struct struct_ope_importation *imported_transaction;	imported_transaction = list_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 ( last_date,			      imported_transaction -> date ) >= 0 )	{	    /* 	    si l'opé d'import a une id, on recherche ça en priorité */	    if ( imported_transaction -> id_operation		 &&		 operation_par_id ( imported_transaction -> id_operation,				    account_number ))		/* 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 */		    imported_transaction -> action = 2;	    /* 	    si l'opé d'import a un no de chq, on le recherche */	    if ( imported_transaction -> action != 2		 &&		 imported_transaction -> cheque		 &&		 operation_par_cheque ( imported_transaction -> cheque,					account_number ))		/* 	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 */		imported_transaction -> 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 ( imported_transaction -> action != 2 )	    {		GDate *date_debut_comparaison;		GDate *date_fin_comparaison;		date_debut_comparaison = g_date_new_dmy ( g_date_get_day ( imported_transaction -> date ),							  g_date_get_month ( imported_transaction -> date ),							  g_date_get_year ( imported_transaction -> date ));		g_date_subtract_days ( date_debut_comparaison,				       valeur_echelle_recherche_date_import );		date_fin_comparaison = g_date_new_dmy ( g_date_get_day ( imported_transaction -> date ),							g_date_get_month ( imported_transaction -> date ),							g_date_get_year ( imported_transaction -> date ));		g_date_add_days ( date_fin_comparaison,				  valeur_echelle_recherche_date_import );		list_tmp_transactions = gsb_data_transaction_get_transactions_list ();		while ( list_tmp_transactions )		{		    gint transaction_number_tmp;		    transaction_number_tmp = gsb_data_transaction_get_transaction_number (list_tmp_transactions -> data);		    if ( gsb_data_transaction_get_account_number (transaction_number_tmp) == account_number )		    {			if ( fabs ( gsb_data_transaction_get_amount (transaction_number_tmp)- imported_transaction -> montant ) < 0.01			     &&			     ( g_date_compare ( gsb_data_transaction_get_date (transaction_number_tmp),						date_debut_comparaison ) >= 0 )			     &&			     ( g_date_compare ( gsb_data_transaction_get_date (transaction_number_tmp),						date_fin_comparaison ) <= 0 )			     &&			     !imported_transaction -> ope_de_ventilation )			{			    /* l'opé a la même date et le même montant, on la marque pour demander quoi faire à l'utilisateur */			    imported_transaction -> action = 1; 			    imported_transaction -> ope_correspondante = gsb_data_transaction_get_pointer_to_transaction (transaction_number_tmp);			    demande_confirmation = 1;			}		    }		    list_tmp_transactions = list_tmp_transactions -> next;		}	    }	}	list_tmp = list_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 ( imported_account );    /* 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 */    mother_transaction_number = 0;    list_tmp = imported_account -> operations_importees;    while ( list_tmp )    {	struct struct_ope_importation *imported_transaction;	imported_transaction = list_tmp -> data;	/* vérifie qu'on doit bien l'enregistrer */	if ( !imported_transaction -> action )	{	    /* on récupère à ce niveau la devise choisie dans la liste */	    imported_transaction -> devise = GPOINTER_TO_INT ( gtk_object_get_data ( GTK_OBJECT ( GTK_OPTION_MENU ( imported_account -> bouton_devise ) -> menu_item ),										 "no_devise" ));	    gsb_import_create_transaction ( imported_transaction,					    account_number );	} 	list_tmp = list_tmp -> next;    }    gsb_data_account_set_update_list ( account_number,				  1 );/*     calcule_solde_compte ( account_number ); *//*     calcule_solde_pointe_compte ( account_number ); */}