rem: echeance -> notes = g_strdup ( g_strstrip ( gtk_entry_get_text ( GTK_ENTRY ( widget_formulaire_echeancier[14] ))));
add: echeance -> notes = g_strdup ( g_strstrip ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( widget_formulaire_echeancier[14] ))));
context: void fin_edition_echeance ( void ){  struct operation_echeance *echeance;  gchar **tableau_char;  gchar *pointeur_char;  GSList *pointeur_liste;  gint rafraichir_categ;  gint compte_virement;  compte_virement = 0;  rafraichir_categ = 0;  /* on vrifie que les date et date_limite sont correctes */  if ( !modifie_date ( widget_formulaire_echeancier[0] ))    {      dialogue ( PRESPACIFY(_("Error: invalid date")) );      gtk_widget_grab_focus ( widget_formulaire_echeancier[0] );      gtk_entry_select_region ( GTK_ENTRY (  widget_formulaire_echeancier[0]),				0,				-1);      return;    }  if ( gtk_widget_get_style ( widget_formulaire_echeancier[16] ) == style_entree_formulaire[0]       &&       strcmp ( g_strstrip ( gtk_entry_get_text ( GTK_ENTRY ( widget_formulaire_echeancier[16] ))),		_("None") ))    if ( !modifie_date ( widget_formulaire_echeancier[16] ))      {	dialogue ( PRESPACIFY(_("Error: invalid limit date")) );	gtk_widget_grab_focus ( widget_formulaire_echeancier[16] );	gtk_entry_select_region ( GTK_ENTRY (  widget_formulaire_echeancier[16]),				  0,				  -1);	return;      }  /* vrification que ce n'est pas un virement sur lui-mme */  if ( !g_strcasecmp ( g_strstrip ( gtk_combofix_get_text ( GTK_COMBOFIX ( widget_formulaire_echeancier[6] ))),		       g_strconcat ( COLON(_("Transfer")),				     COMPTE_ECHEANCE,				     NULL )))    {      dialogue ( PRESPACIFY(_("Error: impossible to transfer an account   \n    on itself")));      return;    }  /* si c'est un virement, on vrifie que le compte existe  */  pointeur_char = g_strstrip ( gtk_combofix_get_text ( GTK_COMBOFIX ( widget_formulaire_echeancier[6] )));  if ( !g_strncasecmp ( pointeur_char,			_("Transfer"),			8 ))    {      gint i;      tableau_char = g_strsplit ( pointeur_char,				  ":",				  2 );	        if ( tableau_char[1] )	{	  tableau_char[1] = g_strstrip ( tableau_char[1] );	  p_tab_nom_de_compte_variable = p_tab_nom_de_compte;	  compte_virement = -1;	  for ( i = 0 ; i < nb_comptes ; i++ )	    {	      if ( !g_strcasecmp ( NOM_DU_COMPTE,				   tableau_char[1] ) )		compte_virement = i;	      p_tab_nom_de_compte_variable++;	    }	  if ( compte_virement == -1 )	    {	      dialogue ( _("Warning: the associated account for this transfer is invalid") );	      return;	    }	}      g_strfreev ( tableau_char );    }  /* vrification si c'est une chance auto que ce n'est pas un chque */  if ( GPOINTER_TO_INT ( gtk_object_get_data ( GTK_OBJECT ( GTK_OPTION_MENU ( widget_formulaire_echeancier[13]  ) -> menu_item ),					       "auto_man" )) == 1       &&       GTK_WIDGET_VISIBLE ( widget_formulaire_echeancier[7] )       &&       ((struct struct_type_ope  *)( gtk_object_get_data ( GTK_OBJECT ( GTK_OPTION_MENU ( widget_formulaire_echeancier[7] ) -> menu_item ),							   "adr_type" )))->numerotation_auto )    {      dialogue ( PRESPACIFY(_("Impossible to create or entry an automatic scheduled transaction\n with a cheque or a method of payment with an automatic incremental number.")) );      return;    }  /*   rcupration de l'opration : soit l'adr de la struct, soit NULL si nouvelle */  echeance = gtk_object_get_data ( GTK_OBJECT ( formulaire_echeancier ),				   "adr_echeance" );  /*   on spare ici en 2 parties : si le label label_saisie_modif contient Modification, c'est une modif ou une nvelle chance, */  /* s'il contient Saisie, on enregistre l'op */  if ( strcmp ( GTK_LABEL ( label_saisie_modif ) -> label,		_("Input") ) )    {      /*       on commence ici la partie modification / nouvelle chance */      /* si c'est une nouvelle chance, on la cre */      if ( !echeance )	echeance = calloc ( 1,			    sizeof ( struct operation_echeance ));      /* rcupre la date */      pointeur_char = g_strstrip ( gtk_entry_get_text ( GTK_ENTRY (widget_formulaire_echeancier[0] )));      tableau_char = g_strsplit ( pointeur_char,				  "/",				  3 );      echeance -> jour = g_strtod ( tableau_char[0],				    NULL );      echeance -> mois = g_strtod ( tableau_char[1],				    NULL );      echeance -> annee = g_strtod (tableau_char[2],				    NULL );      echeance ->date = g_date_new_dmy ( echeance ->jour,					 echeance ->mois,					 echeance ->annee);      /* rcupration du tiers, s'il n'existe pas, on le cre */      if ( gtk_widget_get_style ( GTK_COMBOFIX ( widget_formulaire_echeancier[1] ) -> entry ) == style_entree_formulaire[0] )	{	  pointeur_char = g_strstrip ( gtk_combofix_get_text ( GTK_COMBOFIX ( widget_formulaire_echeancier[1] )));	  if ( ( pointeur_liste = g_slist_find_custom ( liste_struct_tiers,							pointeur_char,							( GCompareFunc ) recherche_tiers_par_nom )) )	    echeance -> tiers = (( struct struct_tiers * )( pointeur_liste -> data )) -> no_tiers;	  else	    {	      echeance -> tiers = (( struct struct_tiers * )( ajoute_nouveau_tiers ( pointeur_char ))) -> no_tiers;	      mise_a_jour_tiers();	    }	}      /* rcupration du montant */      if ( gtk_widget_get_style ( widget_formulaire_echeancier[2] ) == style_entree_formulaire[0] )	echeance -> montant = -g_strtod ( g_strstrip ( gtk_entry_get_text ( GTK_ENTRY ( widget_formulaire_echeancier[2] ))),					  NULL );      else	echeance -> montant = g_strtod ( g_strstrip ( gtk_entry_get_text ( GTK_ENTRY ( widget_formulaire_echeancier[3] ))),					 NULL );      /* rcupration de la devise */       echeance -> devise = ((struct struct_devise *)( gtk_object_get_data ( GTK_OBJECT ( GTK_OPTION_MENU ( widget_formulaire_echeancier[4] ) -> menu_item ),									    "adr_devise" ))) -> no_devise;       /* rcupration du no de compte */      echeance -> compte = GPOINTER_TO_INT ( gtk_object_get_data ( GTK_OBJECT ( GTK_OPTION_MENU ( widget_formulaire_echeancier[5]  ) -> menu_item ),								   "no_compte" ) );     /*   rcupration des catgories / sous-catg, s'ils n'existent pas, on les cre */      if ( gtk_widget_get_style ( GTK_COMBOFIX ( widget_formulaire_echeancier[6] ) -> entry ) == style_entree_formulaire[0] )	{	  struct struct_categ *categ;      	  tableau_char = g_strsplit ( g_strstrip ( gtk_combofix_get_text ( GTK_COMBOFIX ( widget_formulaire_echeancier[6] ))),				      ":",				      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 catgorie */		  gint i;		  echeance -> categorie = 0;		  echeance -> sous_categorie = 0;		  /* recherche le no de compte du virement */		  p_tab_nom_de_compte_variable = p_tab_nom_de_compte;		  for ( i = 0 ; i < nb_comptes ; i++ )		    {		      if ( !g_strcasecmp ( NOM_DU_COMPTE,					   tableau_char[1] ) )			echeance -> compte_virement = i;		      p_tab_nom_de_compte_variable++;		    }		}	      else		{		  pointeur_liste = g_slist_find_custom ( liste_struct_categories,							 tableau_char[0],							 ( GCompareFunc ) recherche_categorie_par_nom );		  if ( pointeur_liste )		    {		      categ = pointeur_liste -> data;		      rafraichir_categ = 0;		    }		  else		    {		      categ = ajoute_nouvelle_categorie ( tableau_char[0] );		      rafraichir_categ = 1;		    }	  		  echeance -> categorie = categ -> no_categ;	  		  if ( tableau_char[1] && strlen (tableau_char[1]) )		    {		      struct struct_sous_categ *sous_categ;		  		      pointeur_liste = g_slist_find_custom ( categ -> liste_sous_categ,							     tableau_char[1],							     ( GCompareFunc ) recherche_sous_categorie_par_nom );	      		      if ( pointeur_liste )			{			  sous_categ = pointeur_liste -> data;			  rafraichir_categ = 0;			}		      else			{			  sous_categ = ajoute_nouvelle_sous_categorie ( tableau_char[1],									categ );			  rafraichir_categ = 1;			}		      echeance -> sous_categorie = sous_categ -> no_sous_categ;		    }		}	    }	  g_strfreev ( tableau_char );	}      else	echeance -> compte_virement = -1;      /* rcupration du type d'opration */      if ( GTK_WIDGET_VISIBLE ( widget_formulaire_echeancier[7] ))	{	  echeance -> type_ope = GPOINTER_TO_INT ( gtk_object_get_data ( GTK_OBJECT ( GTK_OPTION_MENU ( widget_formulaire_echeancier[7] ) -> menu_item ),									 "no_type" ));	  if ( GTK_WIDGET_VISIBLE ( widget_formulaire_echeancier[8] )	       &&	       gtk_widget_get_style ( widget_formulaire_echeancier[8] ) == style_entree_formulaire[0] )	    echeance -> contenu_type = g_strdup ( g_strstrip ( gtk_entry_get_text ( GTK_ENTRY ( widget_formulaire_echeancier[8] ))));	}      /* rcupration du no d'exercice */      echeance -> no_exercice = GPOINTER_TO_INT ( gtk_object_get_data ( GTK_OBJECT ( GTK_OPTION_MENU ( widget_formulaire_echeancier[9] ) -> menu_item ),									"no_exercice" ));      /* rcupration de l'imputation budgtaire */      if ( gtk_widget_get_style ( GTK_COMBOFIX ( widget_formulaire_echeancier[10] ) -> entry ) == style_entree_formulaire[0] )	{	  struct struct_imputation *imputation;      	  pointeur_char = gtk_combofix_get_text ( GTK_COMBOFIX ( widget_formulaire_echeancier[10] ));	  tableau_char = g_strsplit ( pointeur_char,				      ":",				      2 );      	  tableau_char[0] = g_strstrip ( tableau_char[0] );	  if ( tableau_char[1] )	    tableau_char[1] = g_strstrip ( tableau_char[1] );	  pointeur_liste = g_slist_find_custom ( liste_struct_imputation,						 tableau_char[0],						 ( GCompareFunc ) recherche_imputation_par_nom );	  if ( pointeur_liste )	    imputation = pointeur_liste -> data;	  else	    {	      imputation = ajoute_nouvelle_imputation ( tableau_char[0] );	      if ( echeance -> montant < 0 )		imputation -> type_imputation = 1;	      else		imputation -> type_imputation = 0;	    }	  echeance -> imputation = imputation -> no_imputation;	  	  if ( tableau_char[1] && strlen (tableau_char[1]) )	    {	      struct struct_sous_imputation *sous_imputation;		  	      pointeur_liste = g_slist_find_custom ( imputation -> liste_sous_imputation,						     tableau_char[1],						     ( GCompareFunc ) recherche_sous_imputation_par_nom );	      	      if ( pointeur_liste )		sous_imputation = pointeur_liste -> data;	      else		sous_imputation = ajoute_nouvelle_sous_imputation ( tableau_char[1],								    imputation );		  	      echeance -> sous_imputation = sous_imputation -> no_sous_imputation;	    }	  else	    echeance -> sous_imputation = 0;	  g_strfreev ( tableau_char );	}      /*       rcupration de auto_man */      echeance -> auto_man = GPOINTER_TO_INT ( gtk_object_get_data ( GTK_OBJECT ( GTK_OPTION_MENU ( widget_formulaire_echeancier[13]  ) -> menu_item ),								     "auto_man" ) );      /* rcupration des notes */      if ( gtk_widget_get_style ( widget_formulaire_echeancier[14] ) == style_entree_formulaire[0] )	echeance -> notes = g_strdup ( g_strstrip ( gtk_entry_get_text ( GTK_ENTRY ( widget_formulaire_echeancier[14] ))));      /* rcupration de la frquence */      echeance -> periodicite = GPOINTER_TO_INT ( gtk_object_get_data ( GTK_OBJECT ( GTK_OPTION_MENU ( widget_formulaire_echeancier[15]  ) -> 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[18]  ) -> menu_item ),												     "intervalle_perso" ) );	  echeance -> periodicite_personnalisee = g_strtod ( gtk_entry_get_text ( GTK_ENTRY ( widget_formulaire_echeancier[17] )),							     NULL );	}      if ( echeance -> periodicite	   &&	   gtk_widget_get_style ( widget_formulaire_echeancier[16] ) == style_entree_formulaire[0] )	{	  /* traitement de la date limite */	  tableau_char = g_strsplit ( g_strstrip ( gtk_entry_get_text ( GTK_ENTRY ( widget_formulaire_echeancier[16] ))),				      "/",				      3 );	  echeance -> jour_limite = strtod ( tableau_char[0],					     NULL );	  echeance -> mois_limite = strtod ( tableau_char[1],					     NULL );	  echeance -> annee_limite = 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 lui met un no et on l'ajoute  la liste */      if ( !echeance -> no_operation )	{	  echeance -> no_operation = ++no_derniere_echeance;	  nb_echeances++;	  gsliste_echeances = g_slist_insert_sorted ( gsliste_echeances,						      echeance,						      (GCompareFunc) comparaison_date_echeance );	}    }  else    {      /* on commence ici la partie saisie de l'chance */      struct structure_operation *operation;      gint virement;      struct struct_devise *devise;      /* cre l'opration */      operation = calloc ( 1,			   sizeof ( struct structure_operation ) );       /* rcupre la date */      pointeur_char = g_strstrip ( gtk_entry_get_text ( GTK_ENTRY (widget_formulaire_echeancier[0] )));      tableau_char = g_strsplit ( pointeur_char,				  "/",				  3 );      operation -> jour = g_strtod ( tableau_char[0],				     NULL );      operation -> mois = g_strtod ( tableau_char[1],				     NULL );      operation -> annee = g_strtod (tableau_char[2],				     NULL );      operation ->date = g_date_new_dmy ( operation ->jour,					  operation ->mois,					  operation ->annee);      /* rcupration du no de compte */      operation -> no_compte = GPOINTER_TO_INT ( gtk_object_get_data ( GTK_OBJECT ( GTK_OPTION_MENU ( widget_formulaire_echeancier[5]  ) -> menu_item ),								       "no_compte" ) );      /* rcupration du tiers, s'il n'existe pas, on le cre */      if ( gtk_widget_get_style ( GTK_COMBOFIX ( widget_formulaire_echeancier[1] ) -> entry ) == style_entree_formulaire[0] )	{	  pointeur_char = g_strstrip ( gtk_combofix_get_text ( GTK_COMBOFIX ( widget_formulaire_echeancier[1] )));	  if ( ( pointeur_liste = g_slist_find_custom ( liste_struct_tiers,							pointeur_char,							( GCompareFunc ) recherche_tiers_par_nom )) )	    operation -> tiers = (( struct struct_tiers * )( pointeur_liste -> data )) -> no_tiers;	  else	    {	      operation -> tiers = (( struct struct_tiers * )( ajoute_nouveau_tiers ( pointeur_char ))) -> no_tiers;	      mise_a_jour_tiers ();	    }	}      /* rcupration du montant */      if ( gtk_widget_get_style ( widget_formulaire_echeancier[2] ) == style_entree_formulaire[0] )	operation -> montant = -g_strtod ( g_strstrip ( gtk_entry_get_text ( GTK_ENTRY ( widget_formulaire_echeancier[2] ))),					   NULL );      else	operation -> montant = g_strtod ( g_strstrip ( gtk_entry_get_text ( GTK_ENTRY ( widget_formulaire_echeancier[3] ))),					  NULL );      /* rcupration de la devise */       devise = gtk_object_get_data ( GTK_OBJECT ( GTK_OPTION_MENU ( widget_formulaire_echeancier[4] ) -> 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 */      p_tab_nom_de_compte_variable = p_tab_nom_de_compte + operation -> no_compte;      if ( !devise_compte	   ||	   devise_compte -> no_devise != DEVISE )	devise_compte = g_slist_find_custom ( liste_struct_devises,					      GINT_TO_POINTER ( DEVISE ),					      ( GCompareFunc ) recherche_devise_par_no ) -> data;      operation -> devise = devise -> no_devise;      if ( !( operation -> no_operation	      ||	      devise -> no_devise == DEVISE	      ||	      ( devise_compte -> passage_euro && !strcmp ( devise -> nom_devise, _("Euro") ))	      ||	      ( !strcmp ( devise_compte -> nom_devise, _("Euro") ) && devise -> passage_euro )))	{	  /* c'est une devise trangre, on demande le taux de change et les frais de change */	  demande_taux_de_change ( devise_compte,				   devise,				   1,				   (gdouble ) 0,				   (gdouble ) 0 );	  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;	    }	}      /*   rcupration des catgories / sous-catg, s'ils n'existent pas, on les cre */      virement = 0;      if ( gtk_widget_get_style ( GTK_COMBOFIX ( widget_formulaire_echeancier[6] ) -> entry ) == style_entree_formulaire[0] )	{	  struct struct_categ *categ;      	  tableau_char = g_strsplit ( g_strstrip ( gtk_combofix_get_text ( GTK_COMBOFIX ( widget_formulaire_echeancier[6] ))),				      ":",				      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 cattorie */		  operation -> categorie = 0;		  operation -> sous_categorie = 0;		  virement = 1;		}	      else		{		  pointeur_liste = g_slist_find_custom ( liste_struct_categories,							 tableau_char[0],							 ( GCompareFunc ) recherche_categorie_par_nom );		  if ( pointeur_liste )		    {		      categ = pointeur_liste -> data;		      rafraichir_categ = 0;		    }		  else		    {		      categ = ajoute_nouvelle_categorie ( tableau_char[0] );		      rafraichir_categ = 1;		    }	  		  operation -> categorie = categ -> no_categ;	  		  if ( tableau_char[1] && strlen (tableau_char[1]) )		    {		      struct struct_sous_categ *sous_categ;		  		      pointeur_liste = g_slist_find_custom ( categ -> liste_sous_categ,							     tableau_char[1],							     ( GCompareFunc ) recherche_sous_categorie_par_nom );	      		      if ( pointeur_liste )			{			  sous_categ = pointeur_liste -> data;			  rafraichir_categ = 0;			}		      else			{			  sous_categ = ajoute_nouvelle_sous_categorie ( tableau_char[1],									categ );			  rafraichir_categ = 1;			}		  		      operation -> sous_categorie = sous_categ -> no_sous_categ;		    }		}	    }	  g_strfreev ( tableau_char );	}       /* rcupration du type d'opration */      if ( GTK_WIDGET_VISIBLE ( widget_formulaire_echeancier[7] ))	{	  operation -> type_ope = GPOINTER_TO_INT ( gtk_object_get_data ( GTK_OBJECT ( GTK_OPTION_MENU ( widget_formulaire_echeancier[7] ) -> menu_item ),									 "no_type" ));	  if ( GTK_WIDGET_VISIBLE ( widget_formulaire_echeancier[8] )	       &&	       gtk_widget_get_style ( widget_formulaire_echeancier[8] ) == style_entree_formulaire[0] )	    {	      struct struct_type_ope *type;	      type = gtk_object_get_data ( GTK_OBJECT ( GTK_OPTION_MENU ( widget_formulaire_echeancier[7] ) -> menu_item ),					   "adr_type" );	      operation -> contenu_type = g_strdup ( g_strstrip ( gtk_entry_get_text ( GTK_ENTRY ( widget_formulaire_echeancier[8] ))));	      if ( type -> numerotation_auto )		type -> no_en_cours = ( atoi ( operation -> contenu_type ));	    }	}      /* rcupration du no d'exercice */      if ( GPOINTER_TO_INT ( gtk_object_get_data ( GTK_OBJECT ( GTK_OPTION_MENU ( widget_formulaire_echeancier[9] ) -> 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[9] ) -> menu_item ),									   "no_exercice" ));      /* rcupration de l'imputation budgtaire */      if ( gtk_widget_get_style ( GTK_COMBOFIX ( widget_formulaire_echeancier[10] ) -> entry ) == style_entree_formulaire[0] )	{	  struct struct_imputation *imputation;      	  pointeur_char = gtk_combofix_get_text ( GTK_COMBOFIX ( widget_formulaire_echeancier[10] ));	  tableau_char = g_strsplit ( pointeur_char,				      ":",				      2 );      	  tableau_char[0] = g_strstrip ( tableau_char[0] );	  if ( tableau_char[1] )	    tableau_char[1] = g_strstrip ( tableau_char[1] );	  pointeur_liste = g_slist_find_custom ( liste_struct_imputation,						 tableau_char[0],						 ( GCompareFunc ) recherche_imputation_par_nom );	  if ( pointeur_liste )	    imputation = pointeur_liste -> data;	  else	    {	      imputation = ajoute_nouvelle_imputation ( tableau_char[0] );	      if ( operation -> montant < 0 )		imputation -> type_imputation = 1;	      else		imputation -> type_imputation = 0;	    }	  operation -> imputation = imputation -> no_imputation;	  	  if ( tableau_char[1] && strlen (tableau_char[1]) )	    {	      struct struct_sous_imputation *sous_imputation;		  	      pointeur_liste = g_slist_find_custom ( imputation -> liste_sous_imputation,						     tableau_char[1],						     ( GCompareFunc ) recherche_sous_imputation_par_nom );	      	      if ( pointeur_liste )		sous_imputation = pointeur_liste -> data;	      else		sous_imputation = ajoute_nouvelle_sous_imputation ( tableau_char[1],								    imputation );		  	      operation -> sous_imputation = sous_imputation -> no_sous_imputation;	    }	  else	    operation -> sous_imputation = 0;	  g_strfreev ( tableau_char );	}      /*       rcupration de auto_man */      operation -> auto_man = GPOINTER_TO_INT ( gtk_object_get_data ( GTK_OBJECT ( GTK_OPTION_MENU ( widget_formulaire_echeancier[13]  ) -> menu_item ),								     "auto_man" ) );      /* rcupration des notes */      if ( gtk_widget_get_style ( widget_formulaire_echeancier[14] ) == style_entree_formulaire[0] )	operation -> notes = g_strdup ( g_strstrip ( gtk_entry_get_text ( GTK_ENTRY ( widget_formulaire_echeancier[14] ))));      /*   on a fini de remplir l'op, on peut l'ajouter  la liste */      ajout_operation ( operation );      /*   si c'tait un virement, on cre une copie de l'op, on l'ajout  la liste puis on remplit les relations */      if ( virement )	{	  struct structure_operation *operation_2;	  struct struct_devise *devise_compte_2;	  operation_2 = calloc ( 1,				 sizeof ( struct structure_operation ) );	  operation_2 -> no_compte = compte_virement;      	  /* remplit la nouvelle op */      	  operation_2 -> jour = operation -> jour;	  operation_2 -> mois = operation -> mois;	  operation_2 -> annee = operation -> annee;	  operation_2 ->date = g_date_new_dmy ( operation_2->jour,						operation_2->mois,						operation_2->annee);	  operation_2 -> 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 */	  p_tab_nom_de_compte_variable = p_tab_nom_de_compte + compte_virement;	  devise_compte_2 = g_slist_find_custom ( liste_struct_devises,						  GINT_TO_POINTER ( DEVISE ),						  ( GCompareFunc ) recherche_devise_par_no ) -> data;	  operation_2 -> devise = operation -> devise;	  if ( !( operation_2-> no_operation		  ||		  devise -> no_devise == DEVISE		  ||		  ( devise_compte_2 -> passage_euro && !strcmp ( devise -> nom_devise, _("Euro") ))		  ||		  ( !strcmp ( devise_compte_2 -> nom_devise, _("Euro") ) && devise -> passage_euro )))	    {	      /* c'est une devise trangre, on demande le taux de change et les frais de change */	  	      demande_taux_de_change ( devise_compte_2,				       devise,				       1,				       (gdouble ) 0,				       (gdouble ) 0 );	      operation_2 -> taux_change = taux_de_change[0];	      operation_2 -> frais_change = taux_de_change[1];	      if ( operation_2 -> taux_change < 0 )		{		  operation_2 -> taux_change = -operation_2 -> taux_change;		  operation_2 -> une_devise_compte_egale_x_devise_ope = 1;		}	    }	  else	    {	      operation_2 -> taux_change = 0;	      operation_2 -> frais_change = 0;	    }	  operation_2 -> tiers = operation -> tiers;	  operation_2 -> categorie = 0;	  operation_2 -> sous_categorie = 0;	  if ( operation -> notes )	    operation_2 -> notes = g_strdup ( operation -> notes);	  operation_2 -> auto_man = operation -> auto_man;	  operation_2 -> type_ope = operation -> type_ope;	  if ( operation -> contenu_type )	    operation_2 -> contenu_type = g_strdup ( operation -> contenu_type );	  operation_2 -> no_exercice = operation -> no_exercice;	  operation_2 -> imputation = operation -> imputation;	  operation_2 -> sous_imputation = operation -> sous_imputation;	  /*   on a fini de remplir l'op, on peut l'ajouter  la liste */	  ajout_operation ( operation_2 );	  /* on met maintenant les relations entre les diffrentes op */	  operation -> relation_no_operation = operation_2 -> no_operation;	  operation -> relation_no_compte = operation_2 -> no_compte;	  operation_2 -> relation_no_operation = operation -> no_operation;	  operation_2 -> relation_no_compte = operation -> no_compte;	  /* on met  jour le compte courant pour le virement (il a t mis  jour avec ajout opration, mais sans les liens de virement) */	  p_tab_nom_de_compte_variable = p_tab_nom_de_compte + operation -> no_compte;	  MISE_A_JOUR = 1;	  verification_mise_a_jour_liste ();	}      /* passe l'chance  la prochaine date */      incrementation_echeance ( echeance );      /* raffiche les option menu de la priodicit, des banques et de l'automatisme, effacs pour une saisie d'op */      gtk_widget_show ( widget_formulaire_echeancier[13] );      gtk_widget_show ( widget_formulaire_echeancier[15] );      gtk_widget_show ( widget_formulaire_echeancier[15] );    }  if ( rafraichir_categ )    mise_a_jour_categ ();  formulaire_echeancier_a_zero ();  if ( !etat.formulaire_echeancier_toujours_affiche )    gtk_widget_hide ( frame_formulaire_echeancier );  update_liste_echeances_manuelles_accueil ();  update_liste_echeances_auto_accueil ();  remplissage_liste_echeance ();  gtk_widget_grab_focus ( liste_echeances );  modification_fichier ( TRUE );}