rem: list_tmp = list_struct_accounts;  while ( list_tmp ) { gint i;  i = gsb_account_get_no_account ( list_tmp -> data );  if ( !g_strcasecmp ( gsb_account_get_name (i), tableau_char[1] ) ) echeance -> compte_virement = i;  list_tmp = list_tmp -> next; }
add: echeance -> compte_virement = gsb_account_get_no_account_by_name ( tableau_char[1] );
context: void fin_edition_echeance ( void ){    struct operation_echeance *echeance;    gchar **tableau_char;    gchar *pointeur_char;    GSList *pointeur_liste;    gint compte_virement;    compte_virement = 0;    /* on vérifie que les date et date_limite sont correctes */    if ( !modifie_date ( widget_formulaire_echeancier[SCHEDULER_FORM_DATE] ))    {	dialogue_error_hint ( _("Grisbi can't parse date.  For a list of date formats that Grisbi can use, refer to Grisbi manual."),			      g_strdup_printf ( _("Invalid date '%s'"), 						gtk_entry_get_text ( GTK_ENTRY(widget_formulaire_echeancier[SCHEDULER_FORM_DATE]) ) ) );	gtk_widget_grab_focus ( widget_formulaire_echeancier[SCHEDULER_FORM_DATE] );	gtk_entry_select_region ( GTK_ENTRY (  widget_formulaire_echeancier[SCHEDULER_FORM_DATE]),				  0,				  -1);	return;    }    if ( gtk_widget_get_style ( widget_formulaire_echeancier[SCHEDULER_FORM_FINAL_DATE] ) == style_entree_formulaire[ENCLAIR]	 &&	 strcmp ( g_strstrip ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( widget_formulaire_echeancier[SCHEDULER_FORM_FINAL_DATE] ))),		  _("None") ))	if ( !modifie_date ( widget_formulaire_echeancier[SCHEDULER_FORM_FINAL_DATE] ))	{	    dialogue_error_hint ( _("Grisbi can't parse date.  For a list of date formats that Grisbi can use, refer to Grisbi manual."),				  g_strdup_printf ( _("Invalid final date '%s'"), 						    gtk_entry_get_text ( GTK_ENTRY(widget_formulaire_echeancier[SCHEDULER_FORM_DATE]) ) ) );	    gtk_widget_grab_focus ( widget_formulaire_echeancier[SCHEDULER_FORM_FINAL_DATE] );	    gtk_entry_select_region ( GTK_ENTRY (  widget_formulaire_echeancier[SCHEDULER_FORM_FINAL_DATE]),				      0,				      -1);	    return;	}    /* vérifie  si c'est une opération ventilée, */    /* si c'est le cas, si la liste des ventilation existe (soit adr de liste, soit -1), on va l'enregistrer plus tard */    /* sinon on va ventiler tout de suite */    if ( !strcmp ( g_strstrip ( gtk_combofix_get_text ( GTK_COMBOFIX ( widget_formulaire_echeancier[SCHEDULER_FORM_CATEGORY] ))),		   _("Breakdown of transaction") )	 &&	 !gtk_object_get_data ( GTK_OBJECT ( formulaire_echeancier ),				"liste_adr_ventilation" ))    {	enregistre_ope_au_retour_echeances = 1;	/* We check if one of the subtransactions of the breakdown of	   transaction is a transfer on itself. */	pointeur_liste = gtk_object_get_data ( GTK_OBJECT ( formulaire_echeancier ),					       "liste_adr_ventilation" );	while ( pointeur_liste &&		pointeur_liste != GINT_TO_POINTER ( -1 ))	  {	    struct struct_ope_ventil *ope_ventil;	    ope_ventil = pointeur_liste -> data;	    if ( ope_ventil -> relation_no_compte != -1 &&		 ope_ventil -> relation_no_compte == 		 recupere_no_compte ( widget_formulaire_echeancier[SCHEDULER_FORM_ACCOUNT] ))	      {		  dialogue_error_hint ( _("This breakdown of transaction has a transfer on itself.  Either change the sub transaction to transfer on another account or change account of the transaction itself."),					_("Invalid breakdown of transaction."));		return;	      }	    pointeur_liste = pointeur_liste -> next;	  }	if ( gtk_widget_get_style ( widget_formulaire_echeancier[TRANSACTION_FORM_DEBIT] ) == style_entree_formulaire[ENCLAIR] )	    ventiler_operation_echeances ( -my_strtod ( g_strstrip ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( widget_formulaire_echeancier[SCHEDULER_FORM_DEBIT] ))),							NULL ));	else	    ventiler_operation_echeances ( my_strtod ( g_strstrip ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( widget_formulaire_echeancier[SCHEDULER_FORM_CREDIT] ))),						       NULL ));	return;    }    /* vérification que ce n'est pas un virement sur lui-même */    if ( !g_strcasecmp ( g_strstrip ( gtk_combofix_get_text ( GTK_COMBOFIX ( widget_formulaire_echeancier[SCHEDULER_FORM_CATEGORY] ))),			 g_strconcat ( COLON(_("Transfer")),				       COMPTE_ECHEANCE,				       NULL )))    {	dialogue_error_hint ( _("Transfers can't be associated with their own account.  Please associate another account with this transfer."),			      _("Invalid transfer."));	return;    }    /* si c'est un virement, on vérifie que le compte existe  */    pointeur_char = g_strstrip ( gtk_combofix_get_text ( GTK_COMBOFIX ( widget_formulaire_echeancier[SCHEDULER_FORM_CATEGORY] )));    if ( !g_strncasecmp ( pointeur_char, _("Transfer"), 8 ))    {	tableau_char = g_strsplit ( pointeur_char, ":", 2 );	/* S'il n'y a rien après "Transfer", alors : */	if ( !tableau_char[1] ||	     !strlen ( tableau_char[1] ) )	{	    dialogue_error_hint ( _("Transfer is not associated with an account.  Please associate a valid account with this transfer."),				  _("Invalid transfer.") );	    return;	}	if ( tableau_char[1] )	{	    tableau_char[1] = g_strstrip ( tableau_char[1] );	    GSList *list_tmp;	    compte_virement = -1;	    list_tmp = list_struct_accounts;	    while ( list_tmp )	    {		gint i;		i = gsb_account_get_no_account ( list_tmp -> data );		if ( !g_strcasecmp ( gsb_account_get_name (i),				     tableau_char[1] ) )		    compte_virement = i;		list_tmp = list_tmp -> next;	    }	    if ( compte_virement == -1 )	    {		dialogue_error_hint ( _("Associated account of this transfer does not exist.  Please associate a valid account with this transfer."),				      _("Invalid transfer.") );		return;	    }	}	g_strfreev ( tableau_char );    }    /* vérification si c'est une échéance auto que ce n'est pas un chèque */    if ( GPOINTER_TO_INT ( gtk_object_get_data ( GTK_OBJECT ( GTK_OPTION_MENU ( widget_formulaire_echeancier[SCHEDULER_FORM_MODE]  ) -> menu_item ),						 "auto_man" )) == 1	 &&	 GTK_WIDGET_VISIBLE ( widget_formulaire_echeancier[SCHEDULER_FORM_TYPE] )	 &&	 ((struct struct_type_ope  *)( gtk_object_get_data ( GTK_OBJECT ( GTK_OPTION_MENU ( widget_formulaire_echeancier[SCHEDULER_FORM_TYPE] ) -> menu_item ),							     "adr_type" )))->numerotation_auto )    {	dialogue_error_hint ( _("Impossible to create or entry an automatic scheduled transaction\n with a cheque or a method of payment with an automatic incremental number."),			      _("Invalid scheduled transaction.") );	return;    }    /* récupération de l'opération : soit l'adr de la struct, soit NULL si nouvelle */    echeance = gtk_object_get_data ( GTK_OBJECT ( formulaire_echeancier ),				     "adr_echeance" );    /* on sépare ici en 2 parties : si le label label_saisie_modif contient Modification, c'est une modif ou une nvelle échéance, */    /* s'il contient Saisie, on enregistre l'opé */    if ( strcmp ( GTK_LABEL ( label_saisie_modif ) -> label,		  _("Input") ) )    {	/*       on commence ici la partie modification / nouvelle échéance */	/* si c'est une nouvelle échéance, on la crée */	/* et on lui met son numéro tout de suite */	if ( !echeance )	{	    echeance = calloc ( 1,				sizeof ( struct operation_echeance ));	    echeance -> no_operation = ++no_derniere_echeance;	    nb_echeances++;	}	/* récupère la date */	pointeur_char = g_strstrip ( (gchar *) gtk_entry_get_text ( GTK_ENTRY (widget_formulaire_echeancier[SCHEDULER_FORM_DATE] )));	tableau_char = g_strsplit ( pointeur_char,				    "/",				    3 );	echeance -> jour = my_strtod ( tableau_char[0],				       NULL );	echeance -> mois = my_strtod ( tableau_char[1],				       NULL );	echeance -> annee = my_strtod (tableau_char[2],				       NULL );	echeance ->date = g_date_new_dmy ( echeance ->jour,					   echeance ->mois,					   echeance ->annee);	/* récupération du tiers, s'il n'existe pas, on le crée */	if ( gtk_widget_get_style ( GTK_COMBOFIX ( widget_formulaire_echeancier[SCHEDULER_FORM_PARTY] ) -> entry ) == style_entree_formulaire[ENCLAIR] )	{	    pointeur_char = gtk_combofix_get_text ( GTK_COMBOFIX ( widget_formulaire_echeancier[SCHEDULER_FORM_PARTY] ));	    echeance -> tiers  = tiers_par_nom ( pointeur_char,						 1 ) -> no_tiers;	}	/* récupération du montant */	if ( gtk_widget_get_style ( widget_formulaire_echeancier[SCHEDULER_FORM_DEBIT] ) == style_entree_formulaire[ENCLAIR] )	    echeance -> montant = -calcule_total_entree (widget_formulaire_echeancier[SCHEDULER_FORM_DEBIT] );	else	    echeance -> montant = calcule_total_entree (widget_formulaire_echeancier[SCHEDULER_FORM_CREDIT] );	/* récupération de la devise */	echeance -> devise = ((struct struct_devise *)( gtk_object_get_data ( GTK_OBJECT ( GTK_OPTION_MENU ( widget_formulaire_echeancier[SCHEDULER_FORM_DEVISE] ) -> menu_item ),									      "adr_devise" ))) -> no_devise;	/* récupération du no de compte */	echeance -> compte = recupere_no_compte ( widget_formulaire_echeancier[SCHEDULER_FORM_ACCOUNT] );	/*   récupération des catégories / sous-catég, s'ils n'existent pas, on les crée */	/* s'il n'y a pas de catég, ce n'es pas un virement non plus, donc on met compte_virement à -1 */	if ( gtk_widget_get_style ( GTK_COMBOFIX ( widget_formulaire_echeancier[SCHEDULER_FORM_CATEGORY] ) -> entry ) == style_entree_formulaire[ENCLAIR] )	{	    struct struct_categ *categ;	    tableau_char = g_strsplit ( g_strstrip ( gtk_combofix_get_text ( GTK_COMBOFIX ( widget_formulaire_echeancier[SCHEDULER_FORM_CATEGORY] ))),					":",					2 );	    tableau_char[0] = g_strstrip ( tableau_char[0] );	    if ( tableau_char[1] )		tableau_char[1] = g_strstrip ( tableau_char[1] );	    if ( strlen ( tableau_char[0] ) )	    {		if ( !strcmp ( tableau_char[0],			       _("Transfer") )		     && tableau_char[1]		     && strlen ( tableau_char[1]) )		{		    /* c'est un virement, il n'y a donc aucune catégorie */		    GSList *list_tmp;		    echeance -> categorie = 0;		    echeance -> sous_categorie = 0;		    echeance -> operation_ventilee = 0;		    /* recherche le no de compte du virement */		    list_tmp = list_struct_accounts;		    while ( list_tmp )		    {			gint i;			i = gsb_account_get_no_account ( list_tmp -> data );			if ( !g_strcasecmp ( gsb_account_get_name (i),					     tableau_char[1] ) )			    echeance -> compte_virement = i;			list_tmp = list_tmp -> next;		    }		}		else		{		    /* 		    si c'est une opération ventilée, c'est ici que ça se passe ! */		    if ( !strcmp ( tableau_char[0],				   _("Breakdown of transaction") ))		    {			/* c'est une ventilation, il n'y a donc aucune catégorie */			/* on va appeler la fonction validation_ope_de_ventilation */			/* qui va créer les nouvelles opé*/			validation_ope_de_ventilation_echeances ( echeance );			echeance -> categorie = 0;			echeance -> sous_categorie = 0;			echeance -> operation_ventilee = 1;			echeance -> compte_virement = 0;		    }		    else		    {				struct struct_sous_categ *sous_categ;			categ = categ_par_nom ( tableau_char[0],						1,						0,						0 );			if ( categ )			{			    echeance -> categorie = categ -> no_categ;			    sous_categ = sous_categ_par_nom ( categ,							      tableau_char[1],							      1 );			    if ( sous_categ )				echeance -> sous_categorie = sous_categ -> no_sous_categ;			}			echeance -> compte_virement = 0;			echeance -> operation_ventilee = 0;		    }		}	    }	    g_strfreev ( tableau_char );	}	else	    echeance -> compte_virement = -1;	/* récupération du type d'opération */	if ( GTK_WIDGET_VISIBLE ( widget_formulaire_echeancier[SCHEDULER_FORM_TYPE] ))	{	    echeance -> type_ope = GPOINTER_TO_INT ( gtk_object_get_data ( GTK_OBJECT ( GTK_OPTION_MENU ( widget_formulaire_echeancier[SCHEDULER_FORM_TYPE] ) -> menu_item ),									   "no_type" ));	    if ( GTK_WIDGET_VISIBLE ( widget_formulaire_echeancier[SCHEDULER_FORM_CHEQUE] )		 &&		 gtk_widget_get_style ( widget_formulaire_echeancier[SCHEDULER_FORM_CHEQUE] ) == style_entree_formulaire[ENCLAIR] )		echeance -> contenu_type = g_strdup ( g_strstrip ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( widget_formulaire_echeancier[SCHEDULER_FORM_CHEQUE] ))));	}	/* récupération du no d'exercice */	echeance -> no_exercice = GPOINTER_TO_INT ( gtk_object_get_data ( GTK_OBJECT ( GTK_OPTION_MENU ( widget_formulaire_echeancier[SCHEDULER_FORM_EXERCICE] ) -> menu_item ),									  "no_exercice" ));	/* récupération de l'imputation budgétaire */	if ( gtk_widget_get_style ( GTK_COMBOFIX ( widget_formulaire_echeancier[SCHEDULER_FORM_BUDGETARY] ) -> entry ) == style_entree_formulaire[ENCLAIR] )	{	    struct struct_imputation *imputation;	    pointeur_char = gtk_combofix_get_text ( GTK_COMBOFIX ( widget_formulaire_echeancier[SCHEDULER_FORM_BUDGETARY] ));	    tableau_char = g_strsplit ( pointeur_char,					":",					2 );	    imputation = imputation_par_nom ( tableau_char[0],					      1,					      echeance -> montant < 0,					      0 );	    if ( imputation )	    {		struct struct_sous_imputation *sous_imputation;		echeance -> imputation = imputation -> no_imputation;		sous_imputation = sous_imputation_par_nom ( imputation,							    tableau_char[1],							    1 );		if ( sous_imputation )		    echeance -> sous_imputation = sous_imputation -> no_sous_imputation;	    }	    g_strfreev ( tableau_char );	}	/*       récupération de auto_man */	echeance -> auto_man = GPOINTER_TO_INT ( gtk_object_get_data ( GTK_OBJECT ( GTK_OPTION_MENU ( widget_formulaire_echeancier[SCHEDULER_FORM_MODE]  ) -> menu_item ),								       "auto_man" ) );	/* récupération des notes */	if ( gtk_widget_get_style ( widget_formulaire_echeancier[SCHEDULER_FORM_NOTES] ) == style_entree_formulaire[ENCLAIR] )	    echeance -> notes = g_strdup ( g_strstrip ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( widget_formulaire_echeancier[SCHEDULER_FORM_NOTES] ))));	/* récupération de la fréquence */	echeance -> periodicite = GPOINTER_TO_INT ( gtk_object_get_data ( GTK_OBJECT ( GTK_OPTION_MENU ( widget_formulaire_echeancier[SCHEDULER_FORM_FREQUENCY]  ) -> menu_item ),									  "periodicite" ) );	if ( echeance -> periodicite == 4 )	{	    echeance -> intervalle_periodicite_personnalisee = GPOINTER_TO_INT ( gtk_object_get_data ( GTK_OBJECT ( GTK_OPTION_MENU ( widget_formulaire_echeancier[SCHEDULER_FORM_FREQ_CUSTOM_MENU]  ) -> menu_item ),												       "intervalle_perso" ) );	    echeance -> periodicite_personnalisee = my_strtod ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( widget_formulaire_echeancier[SCHEDULER_FORM_FREQ_CUSTOM_NB] )),								NULL );	}	if ( echeance -> periodicite	     &&	     gtk_widget_get_style ( widget_formulaire_echeancier[SCHEDULER_FORM_FINAL_DATE] ) == style_entree_formulaire[ENCLAIR] )	{	    /* traitement de la date limite */	    tableau_char = g_strsplit ( g_strstrip ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( widget_formulaire_echeancier[SCHEDULER_FORM_FINAL_DATE] ))),					"/",					3 );	    echeance -> jour_limite = my_strtod ( tableau_char[0],						  NULL );	    echeance -> mois_limite = my_strtod ( tableau_char[1],						  NULL );	    echeance -> annee_limite = my_strtod (tableau_char[2],						  NULL );	    echeance->date_limite = g_date_new_dmy ( echeance->jour_limite,						     echeance->mois_limite,						     echeance->annee_limite);	}	/* si c'est une nouvelle opé,  on l'ajoute à la liste */	if ( !gtk_object_get_data ( GTK_OBJECT ( formulaire_echeancier ),				    "adr_echeance" ) )	    liste_struct_echeances = g_slist_insert_sorted ( liste_struct_echeances,							     echeance,							     (GCompareFunc) comparaison_date_echeance );    }    else    {	/* on commence ici la partie saisie de l'échéance */	struct structure_operation *operation;	gint virement;	struct struct_devise *devise;	/* crée l'opération */	operation = calloc ( 1,			     sizeof ( struct structure_operation ) ); 	/* récupère la date */	pointeur_char = g_strstrip ( (gchar *) gtk_entry_get_text ( GTK_ENTRY (widget_formulaire_echeancier[SCHEDULER_FORM_DATE] )));	tableau_char = g_strsplit ( pointeur_char,				    "/",				    3 );	operation -> jour = my_strtod ( tableau_char[0],					NULL );	operation -> mois = my_strtod ( tableau_char[1],					NULL );	operation -> annee = my_strtod (tableau_char[2],					NULL );	operation ->date = g_date_new_dmy ( operation ->jour,					    operation ->mois,					    operation ->annee);	/* récupération du no de compte */	operation -> no_compte = recupere_no_compte ( widget_formulaire_echeancier[SCHEDULER_FORM_ACCOUNT] );	/* récupération du tiers, s'il n'existe pas, on le crée */	if ( gtk_widget_get_style ( GTK_COMBOFIX ( widget_formulaire_echeancier[SCHEDULER_FORM_PARTY] ) -> entry ) == style_entree_formulaire[ENCLAIR] )	{	    pointeur_char = gtk_combofix_get_text ( GTK_COMBOFIX ( widget_formulaire_echeancier[SCHEDULER_FORM_PARTY] ));	    operation -> tiers = tiers_par_nom ( pointeur_char,						 1 ) -> no_tiers;	}	/* récupération du montant */	if ( gtk_widget_get_style ( widget_formulaire_echeancier[SCHEDULER_FORM_DEBIT] ) == style_entree_formulaire[ENCLAIR] )	    operation -> montant = -my_strtod ( g_strstrip ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( widget_formulaire_echeancier[SCHEDULER_FORM_DEBIT] ))),						NULL );	else	    operation -> montant = my_strtod ( g_strstrip ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( widget_formulaire_echeancier[SCHEDULER_FORM_CREDIT] ))),					       NULL );	/* récupération de la devise */	devise = gtk_object_get_data ( GTK_OBJECT ( GTK_OPTION_MENU ( widget_formulaire_echeancier[SCHEDULER_FORM_DEVISE] ) -> menu_item),				       "adr_devise" );	/* 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 */	if ( !devise_compte	     ||	     devise_compte -> no_devise != gsb_account_get_currency (operation -> no_compte) )	    devise_compte = devise_par_no ( gsb_account_get_currency (operation -> no_compte) );	operation -> devise = devise -> no_devise;	if ( !( operation -> no_operation		||		devise -> no_devise == gsb_account_get_currency (operation -> no_compte)		||		( devise_compte -> passage_euro && !strcmp ( devise -> nom_devise, _("Euro") ))		||		( !strcmp ( devise_compte -> 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 ( devise_compte, devise, 1,				     (gdouble ) 0, (gdouble ) 0, FALSE );	    operation -> taux_change = taux_de_change[0];	    operation -> frais_change = taux_de_change[1];	    if ( operation -> taux_change < 0 )	    {		operation -> taux_change = -operation -> taux_change;		operation -> une_devise_compte_egale_x_devise_ope = 1;	    }	}	/*   récupération des catégories / sous-catég, s'ils n'existent pas, on les crée */	virement = 0;	if ( gtk_widget_get_style ( GTK_COMBOFIX ( widget_formulaire_echeancier[SCHEDULER_FORM_CATEGORY] ) -> entry ) == style_entree_formulaire[ENCLAIR] )	{	    struct struct_categ *categ;	    tableau_char = g_strsplit ( g_strstrip ( gtk_combofix_get_text ( GTK_COMBOFIX ( widget_formulaire_echeancier[SCHEDULER_FORM_CATEGORY] ))),					":",					2 );	    tableau_char[0] = g_strstrip ( tableau_char[0] );	    if ( tableau_char[1] )		tableau_char[1] = g_strstrip ( tableau_char[1] );	    if ( strlen ( tableau_char[0] ) )	    {		if ( !strcmp ( tableau_char[0],			       _("Transfer") )		     && tableau_char[1]		     && strlen ( tableau_char[1]) )		{		    /* c'est un virement, il n'y a donc aucune catétorie */		    operation -> categorie = 0;		    operation -> sous_categorie = 0;		    virement = 1;		}		else		{		    categ = categ_par_nom ( tableau_char[0],					    1,					    0,					    0 );		    if ( categ )		    {			struct struct_sous_categ *sous_categ;			operation -> categorie = categ -> no_categ;			sous_categ = sous_categ_par_nom ( categ,							  tableau_char[1],							  1 );			if ( sous_categ )			    operation -> sous_categorie = sous_categ -> no_sous_categ;		    }		}	    }	    g_strfreev ( tableau_char );	}	/* récupération du type d'opération */	if ( GTK_WIDGET_VISIBLE ( widget_formulaire_echeancier[SCHEDULER_FORM_TYPE] ))	{	    operation -> type_ope = GPOINTER_TO_INT ( gtk_object_get_data ( GTK_OBJECT ( GTK_OPTION_MENU ( widget_formulaire_echeancier[SCHEDULER_FORM_TYPE] ) -> menu_item ),									    "no_type" ));	    if ( GTK_WIDGET_VISIBLE ( widget_formulaire_echeancier[SCHEDULER_FORM_CHEQUE] )		 &&		 gtk_widget_get_style ( widget_formulaire_echeancier[SCHEDULER_FORM_CHEQUE] ) == style_entree_formulaire[ENCLAIR] )	    {		struct struct_type_ope *type;		type = gtk_object_get_data ( GTK_OBJECT ( GTK_OPTION_MENU ( widget_formulaire_echeancier[SCHEDULER_FORM_TYPE] ) -> menu_item ),					     "adr_type" );		operation -> contenu_type = g_strdup ( g_strstrip ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( widget_formulaire_echeancier[SCHEDULER_FORM_CHEQUE] ))));		if ( type -> numerotation_auto )		    type -> no_en_cours = ( my_atoi ( operation -> contenu_type ));	    }	}	/* récupÃ©ration du no d'exercice */	if ( GPOINTER_TO_INT ( gtk_object_get_data ( GTK_OBJECT ( GTK_OPTION_MENU ( widget_formulaire_echeancier[SCHEDULER_FORM_EXERCICE] ) -> menu_item ),						     "no_exercice" )) == -2 )	    operation -> no_exercice = recherche_exo_correspondant ( operation -> date );	else	    operation -> no_exercice = GPOINTER_TO_INT ( gtk_object_get_data ( GTK_OBJECT ( GTK_OPTION_MENU ( widget_formulaire_echeancier[SCHEDULER_FORM_EXERCICE] ) -> menu_item ),									       "no_exercice" ));	/* récupération de l'imputation budgétaire */	if ( gtk_widget_get_style ( GTK_COMBOFIX ( widget_formulaire_echeancier[SCHEDULER_FORM_BUDGETARY] ) -> entry ) == style_entree_formulaire[ENCLAIR] )	{	    struct struct_imputation *imputation;	    pointeur_char = gtk_combofix_get_text ( GTK_COMBOFIX ( widget_formulaire_echeancier[SCHEDULER_FORM_BUDGETARY] ));	    tableau_char = g_strsplit ( pointeur_char,					":",					2 );	    imputation = imputation_par_nom ( tableau_char[0],					      1,					      operation -> montant < 0,					      0 );	    if ( imputation )	    {		struct struct_sous_imputation *sous_imputation;		operation -> imputation = imputation -> no_imputation;		sous_imputation = sous_imputation_par_nom ( imputation,							    tableau_char[1],							    1 );		if ( sous_imputation )		    operation -> sous_imputation = sous_imputation -> no_sous_imputation;	    }	    else		operation -> sous_imputation = 0;	    g_strfreev ( tableau_char );	}	/*       récupération de auto_man */	operation -> auto_man = GPOINTER_TO_INT ( gtk_object_get_data ( GTK_OBJECT ( GTK_OPTION_MENU ( widget_formulaire_echeancier[SCHEDULER_FORM_MODE]  ) -> menu_item ),									"auto_man" ) );	/* récupération des notes */	if ( gtk_widget_get_style ( widget_formulaire_echeancier[SCHEDULER_FORM_NOTES] ) == style_entree_formulaire[ENCLAIR] )	    operation -> notes = g_strdup ( g_strstrip ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( widget_formulaire_echeancier[SCHEDULER_FORM_NOTES] ))));	/*   on a fini de remplir l'opé, on peut l'ajouter à la liste */	/* 	c'est forcemment une nouvelle opé, donc on utilise gsb_transactions_list_append_new_transaction */	gsb_transactions_append_transaction ( operation );	gsb_transactions_list_append_new_transaction ( operation );	/* si c'est un virement, on crée la contre opération et met les relations */	/* FIXME : ça serait bien de faire apparaitre un bouton de contre type ope dans le formulaire qd virement */	if ( virement )	    cree_contre_operation_echeance ( operation,					     compte_virement,					     operation -> type_ope );	/* 	si c'était une échéance ventilée, c'est ici qu'on fait joujou */	pointeur_liste = gtk_object_get_data ( GTK_OBJECT ( formulaire_echeancier ),					       "liste_adr_ventilation" );	while ( pointeur_liste		&&		pointeur_liste != GINT_TO_POINTER ( -1 ))	{	    struct struct_ope_ventil *ope_ventil;	    struct structure_operation *operation_fille;	    /* 	    la mère est donc une ventil */	    operation -> operation_ventilee = 1;	    ope_ventil = pointeur_liste -> data;	    operation_fille = calloc ( 1,				       sizeof ( struct structure_operation ));	    operation_fille -> montant = ope_ventil -> montant;	    operation_fille -> categorie = ope_ventil -> categorie;	    operation_fille -> sous_categorie = ope_ventil -> sous_categorie;	    if ( ope_ventil -> notes )		operation_fille -> notes = g_strdup ( ope_ventil -> notes );	    operation_fille -> imputation = ope_ventil -> imputation;	    operation_fille -> sous_imputation = ope_ventil -> sous_imputation;	    if ( ope_ventil -> no_piece_comptable )		operation_fille -> no_piece_comptable = g_strdup ( ope_ventil -> no_piece_comptable);	    operation_fille -> no_exercice = ope_ventil -> no_exercice;	    /* 	    le reste est identique à la mère */	    operation_fille -> jour = operation -> jour;	    operation_fille -> mois = operation -> mois;	    operation_fille -> annee = operation -> annee;	    operation_fille -> date = g_date_new_dmy ( operation_fille -> jour,						       operation_fille -> mois,						       operation_fille -> annee );	    if ( operation -> jour_bancaire )	    {		operation_fille -> jour_bancaire = operation -> jour_bancaire;		operation_fille -> mois_bancaire = operation -> mois_bancaire;		operation_fille -> annee_bancaire = operation -> annee_bancaire;		operation_fille -> date_bancaire = g_date_new_dmy ( operation_fille -> jour_bancaire,								    operation_fille -> mois_bancaire,								    operation_fille -> annee_bancaire );	    }	    operation_fille -> no_compte = operation -> no_compte;	    operation_fille -> devise = operation -> devise;	    operation_fille -> une_devise_compte_egale_x_devise_ope = operation -> une_devise_compte_egale_x_devise_ope;	    operation_fille -> taux_change = operation -> taux_change;	    operation_fille -> frais_change = operation -> frais_change;	    operation_fille -> tiers = operation -> tiers;	    operation_fille -> pointe = operation -> pointe;	    operation_fille -> auto_man = operation -> auto_man;	    operation_fille -> no_operation_ventilee_associee = operation -> no_operation;	    /*   on a fini de remplir l'opé, on peut l'ajouter à la liste */	    /* 	    comme c'est une opé de ventilation, elle ne sera pas affiché et ne changera */	    /* 		rien au solde, donc on l'ajoute juste à la sliste */	    gsb_transactions_append_transaction ( operation_fille );	    /* 	    on vérifie maintenant si c'est un virement */	    if ( ope_ventil -> relation_no_operation == -1 )	    {		/* cette opé de ventil est un virement */		cree_contre_operation_echeance ( operation_fille,						 ope_ventil -> relation_no_compte,						 ope_ventil -> no_type_associe );	    }	    update_transaction_in_trees ( operation_fille );	    pointeur_liste = pointeur_liste -> next;	}	/* passe l'échéance à la prochaine date */	incrementation_echeance ( echeance );	/* réaffiche les option menu de la périodicité, des banques et de l'automatisme, effacés pour une saisie d'opé */	gtk_widget_show ( widget_formulaire_echeancier[SCHEDULER_FORM_MODE] );	gtk_widget_show ( widget_formulaire_echeancier[SCHEDULER_FORM_FREQUENCY] );	gtk_widget_show ( widget_formulaire_echeancier[SCHEDULER_FORM_FREQUENCY] );	update_transaction_in_trees ( operation );        }    if ( mise_a_jour_combofix_categ_necessaire )	mise_a_jour_combofix_categ ();    formulaire_echeancier_a_zero ();    if ( !etat.formulaire_echeancier_toujours_affiche )	gtk_widget_hide ( frame_formulaire_echeancier );    mise_a_jour_liste_echeances_manuelles_accueil = 1;    mise_a_jour_liste_echeances_auto_accueil = 1;    remplissage_liste_echeance ();    gtk_widget_grab_focus ( tree_view_liste_echeances );    modification_fichier ( TRUE );}