rem: ventiler_operation ( g_strtod ( g_strstrip ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( widget_formulaire_operations[4] ))),
add: ventiler_operation ( my_strtod ( g_strstrip ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( widget_formulaire_operations[4] ))),
context: gint verification_validation_operation ( struct structure_operation *operation ){  gchar **tableau_char;  GSList *liste_tmp;  p_tab_nom_de_compte_variable = p_tab_nom_de_compte_courant;  /* on vrifie qu'il y a bien une date */  if ( gtk_widget_get_style ( widget_formulaire_operations[1] ) != style_entree_formulaire[0] )    {      dialogue ( PRESPACIFY(_("Error: you must enter a date.")));      return (FALSE);    }  /* vrifie que la date est correcte */  if ( !modifie_date ( widget_formulaire_operations[1] ))    {      dialogue ( PRESPACIFY(_("Error: invalid date")) );      gtk_widget_grab_focus ( widget_formulaire_operations[1] );      gtk_entry_select_region ( GTK_ENTRY (  widget_formulaire_operations[1]),				0,				-1);      return (FALSE);    }  /*   la date est correcte, il faut l'enregistrer dans date_courante */  strncpy ( date_courante,	    (gchar *) gtk_entry_get_text ( GTK_ENTRY (  widget_formulaire_operations[1])),	    10 );  /* vrifie que la date de valeur est correcte */  if ( gtk_widget_get_style ( widget_formulaire_operations[7] ) == style_entree_formulaire[0]       &&       !modifie_date ( widget_formulaire_operations[7] ))    {      dialogue ( PRESPACIFY(_("Error: invalid date.")) );      gtk_widget_grab_focus ( widget_formulaire_operations[7] );      gtk_entry_select_region ( GTK_ENTRY (  widget_formulaire_operations[7]), 				0,				-1);      return (FALSE);    }  /* vrification que ce n'est pas un virement sur lui-mme */  /* et que le compte de virement existe */  if ( gtk_widget_get_style ( GTK_COMBOFIX ( widget_formulaire_operations[8] ) -> entry ) == style_entree_formulaire[0] )    {      tableau_char = g_strsplit ( gtk_combofix_get_text ( GTK_COMBOFIX ( widget_formulaire_operations[8] )),				  ":",				  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, on fait les vrifications */	      /* si c'est un virement vers un compte supprim, laisse passer */	      if ( strcmp ( tableau_char[1],			    _("Deleted account") ) )		{		  /* recherche le no de compte du virement */		  gint compte_virement;		  gint i;		  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++;		    }		  p_tab_nom_de_compte_variable = p_tab_nom_de_compte_courant;		  if ( compte_virement == -1 )		    {		      dialogue ( _("Warning: the associated account for this transfer is invalid") );		      return (FALSE);		    }		  if ( compte_virement == compte_courant )		    {		      dialogue ( PRESPACIFY(_("Error: impossible to transfer an account   \n    on itself")));		      return (FALSE);		    }		}	    }	}      g_strfreev ( tableau_char );    }  /*   pour les types qui sont  incrmentation automatique ( surtout les chques ) */  /* on fait le tour des operations pour voir si le no n'a pas dj t utilis */  /* si operation n'est pas nul, c'est une modif donc on ne fait pas ce test */  if ( GTK_WIDGET_VISIBLE ( widget_formulaire_operations[10] ))    {      struct struct_type_ope *type;      type = gtk_object_get_data ( GTK_OBJECT ( GTK_OPTION_MENU ( widget_formulaire_operations[9] ) -> menu_item ),				   "adr_type" );      if ( type -> numerotation_auto )	{	  gchar *no_cheque;	  /* vrifie s'il y a quelque chose */	  if ( gtk_widget_get_style ( widget_formulaire_operations[10] ) == style_entree_formulaire[1] )	    {	      if ( question ( _("Selected method of payment has an automatic incremental number\nbut doesn't contain any number.\nContinue anyway?") ) )		goto sort_test_cheques;	      else		return (FALSE);	    }	  /* vrifie si le no de chque n'est pas dj utilis */	  if ( gtk_widget_get_style ( widget_formulaire_operations[10] ) == style_entree_formulaire[0] )	    {	      liste_tmp = LISTE_OPERATIONS;	      no_cheque = g_strstrip ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( widget_formulaire_operations[10] )));	      while ( liste_tmp )		{		  struct structure_operation *operation_tmp;		  operation_tmp = liste_tmp -> data;		  if ( operation_tmp -> type_ope == type -> no_type		       &&		       operation_tmp -> contenu_type		       &&		       !strcmp ( operation_tmp -> contenu_type,				 no_cheque ))		    {		      /*  on a trouv le mme no de chque, si c'est une nouvelle op, c'est pas normal, */		      /* si c'est une modif d'op, c'est normal que si c'est cette op qu'on a trouv */		      if ( !operation			   ||			   operation_tmp -> no_operation != operation -> no_operation )			{			  if ( question ( _("Warning: this cheque number is already used.\nContinue anyway?") ))			    goto sort_test_cheques;			  else			    return (FALSE);			}		    }		  liste_tmp = liste_tmp -> next;		}	    }	}    }  sort_test_cheques :    /*   vrifie tout de suite si c'est une opration ventile, */    /*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_operations[8] ))),		   _("Breakdown of transaction") )	 &&	 !gtk_object_get_data ( GTK_OBJECT ( formulaire ),				"liste_adr_ventilation" ))      {	enregistre_ope_au_retour = 1;	if ( gtk_widget_get_style ( widget_formulaire_operations[3] ) == style_entree_formulaire[0] )	  ventiler_operation ( -g_strtod ( g_strstrip ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( widget_formulaire_operations[3] ))),					   NULL ));	else	  ventiler_operation ( g_strtod ( g_strstrip ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( widget_formulaire_operations[4] ))),					  NULL ));	return (FALSE);      }  /*   on vrifie si le tiers est un tat, que c'est une nouvelle oprations */  if ( !strncmp ( g_strstrip ( gtk_combofix_get_text ( GTK_COMBOFIX ( widget_formulaire_operations[2] ))),		  COLON(_("Report")),		  7 ))    {      gint trouve;      /* on vrifie d'abord si c'est une modif d'op */      if ( operation )	{	  dialogue ( _("Error: a transaction with a multiple third party must be a new one.") );	  return (FALSE);	}      /* on vrifie maintenant si l'tat existe */      tableau_char = g_strsplit ( g_strstrip ( gtk_combofix_get_text ( GTK_COMBOFIX ( widget_formulaire_operations[2] ))),				  ":",				  2 );      tableau_char[1] = g_strstrip ( tableau_char[1] );      liste_tmp = liste_struct_etats;      trouve = 0;      while ( liste_tmp )	{	  struct struct_etat *etat;	  etat = liste_tmp -> data;	  if ( !strcmp ( etat -> nom_etat,			 tableau_char[1] ))	    {	      trouve = 1;	      liste_tmp = NULL;	    }	  else	    liste_tmp = liste_tmp -> next;	}      g_strfreev ( tableau_char );      if ( !trouve )	{	  dialogue ( _("Error: invalid multiple third party.") );	  return (FALSE);	}    }  return ( TRUE );}