rem: nouvelle_ope_2 -> devise = nouvelle_ope -> devise;
add: p_tab_nom_de_compte_variable = p_tab_nom_de_compte + nouvelle_ope_2 -> no_compte;
context: void validation_ope_de_ventilation ( struct structure_operation *operation ){  GSList *liste_struct_ventilations;  /* rcupration de la liste de ventilations */  liste_struct_ventilations = gtk_object_get_data ( GTK_OBJECT ( formulaire ),						    "liste_adr_ventilation" );  /*   si cette liste est  -1, c'est qu'elle est null, donc rien  faire */  if ( liste_struct_ventilations == GINT_TO_POINTER ( -1 ))    return;  while ( liste_struct_ventilations )    {      struct struct_ope_ventil *ope_ventil;      ope_ventil = liste_struct_ventilations -> data;      /*       si cette op est supprime, c'est ici */      /* cela sous entend qu'elle existait dj */      /* et si c'tait un virement, l'autre va tre automatiquement supprime */      if ( ope_ventil -> supprime )	{	  /* petite protection quand mme, normalement le texte ne devrait jamais apparaitre */	  if ( !ope_ventil -> no_operation )	    dialogue ( _("Strange... a breakdown line is to be deleted though it is not yet registered..."));	  else	    {	      GSList *tmp;	      p_tab_nom_de_compte_variable = p_tab_nom_de_compte_courant;	      tmp = g_slist_find_custom ( LISTE_OPERATIONS,					  GINT_TO_POINTER ( ope_ventil -> no_operation ),					  (GCompareFunc) recherche_operation_par_no );	      if ( tmp )		supprime_operation  ( tmp -> data );	    }	}      else	{	  /* l'opration ne doit pas tre supprime, c'est qu'elle doit tre cre ou modifie */	  /* 	  on n'a pas  s'embter avec des changements de virements ou autres trucs bizarres, dans */	  /* ce cas il y aura eu une suppression puis une nouvelle opration */	  if ( ope_ventil -> no_operation )	    {	      /* c'est une modif d'opration */	      GSList *tmp;	      p_tab_nom_de_compte_variable = p_tab_nom_de_compte_courant;	      tmp = g_slist_find_custom ( LISTE_OPERATIONS,					  GINT_TO_POINTER ( ope_ventil -> no_operation ),					  (GCompareFunc) recherche_operation_par_no );	      if ( tmp )		{		  struct structure_operation *ope_modifiee;		  ope_modifiee = tmp -> data;		  /* on rcupre d'abord les modifs de l'op de ventil */		  ope_modifiee -> montant = ope_ventil -> montant;		  ope_modifiee -> categorie = ope_ventil -> categorie;		  ope_modifiee -> sous_categorie = ope_ventil -> sous_categorie;		  if ( ope_ventil -> notes )		    ope_modifiee -> notes = g_strdup ( ope_ventil -> notes );		  ope_modifiee -> no_exercice = ope_ventil -> no_exercice;		  ope_modifiee -> imputation = ope_ventil -> imputation;		  ope_modifiee -> sous_imputation = ope_ventil -> sous_imputation;		  if ( ope_ventil -> no_piece_comptable )		    ope_modifiee -> no_piece_comptable = g_strdup ( ope_ventil -> no_piece_comptable );		  /* on rcupre ensuite les modifs de la ventilation */		  ope_modifiee -> jour = operation -> jour;		  ope_modifiee -> mois = operation -> mois;		  ope_modifiee -> annee = operation -> annee;		  ope_modifiee -> date = g_date_new_dmy ( operation -> jour,							  operation -> mois,							  operation -> annee );		  ope_modifiee -> jour_bancaire = operation -> jour_bancaire;		  ope_modifiee -> mois_bancaire = operation -> mois_bancaire;		  ope_modifiee -> annee_bancaire = operation -> annee_bancaire;		  if ( operation -> jour_bancaire )		    ope_modifiee -> date_bancaire = g_date_new_dmy ( operation -> jour_bancaire,								     operation -> mois_bancaire,								     operation -> annee_bancaire );		  ope_modifiee -> no_compte = operation -> no_compte;		  ope_modifiee -> devise = operation -> devise;		  ope_modifiee -> une_devise_compte_egale_x_devise_ope = operation -> une_devise_compte_egale_x_devise_ope;		  ope_modifiee -> taux_change = operation -> taux_change;		  ope_modifiee -> frais_change = operation -> frais_change;		  ope_modifiee -> tiers = operation -> tiers;		  ope_modifiee -> type_ope = operation -> type_ope;		  ope_modifiee -> pointe = operation -> pointe;		  ope_modifiee -> auto_man = operation -> auto_man;		  ope_modifiee -> no_rapprochement = operation -> no_rapprochement;		  /* thoriquement, cette ligne n'est pas ncessaire vu que c'est une modif d'op de ventil */		  ope_modifiee -> no_operation_ventilee_associee = operation -> no_operation;		  /* si cette op de ventil est un virement, on met  jour la contre opration */		  if ( ope_ventil -> relation_no_operation )		    {		      /*  soit c'tait un virement, et on modifie l'op associe */		      /* soit c'est un nouveau virement, et on cre l'op associe */		      p_tab_nom_de_compte_variable = p_tab_nom_de_compte + ope_ventil -> relation_no_compte;		      MISE_A_JOUR = 1;		      if ( ope_ventil -> relation_no_operation != -1 )			{			  /* c'tait dj un virement vers ce compte */			  tmp = g_slist_find_custom ( LISTE_OPERATIONS,						      GINT_TO_POINTER ( ope_ventil -> relation_no_operation ),						      (GCompareFunc) recherche_operation_par_no );			  if ( tmp )			    {			      struct structure_operation *ope_modifiee_2;			      ope_modifiee_2 = tmp -> data;			      /* on commence par mettre le type choisi */			      ope_modifiee_2 -> type_ope = ope_ventil -> no_type_associe;			      ope_modifiee_2 -> montant = -ope_modifiee -> montant;			      ope_modifiee_2 -> categorie = ope_modifiee -> categorie;			      ope_modifiee_2 -> sous_categorie = ope_modifiee -> sous_categorie;			      if ( ope_modifiee -> notes )				ope_modifiee_2 -> notes = g_strdup ( ope_modifiee -> notes );			      ope_modifiee_2 -> imputation = ope_modifiee -> imputation;			      ope_modifiee_2 -> sous_imputation = ope_modifiee -> sous_imputation;			      if ( ope_modifiee -> no_piece_comptable )				ope_modifiee_2 -> no_piece_comptable = g_strdup ( ope_modifiee -> no_piece_comptable );			      ope_modifiee_2 -> jour = ope_modifiee -> jour;			      ope_modifiee_2 -> mois = ope_modifiee -> mois;			      ope_modifiee_2 -> annee = ope_modifiee -> annee;			  			      ope_modifiee_2 -> date = g_date_new_dmy ( operation -> jour,									operation -> mois,									operation -> annee );			      ope_modifiee_2 -> jour_bancaire = ope_modifiee -> jour_bancaire;			      ope_modifiee_2 -> mois_bancaire = ope_modifiee -> mois_bancaire;			      ope_modifiee_2 -> annee_bancaire = ope_modifiee -> annee_bancaire;			      if ( operation -> jour_bancaire )				ope_modifiee_2 -> date_bancaire = g_date_new_dmy ( operation -> jour_bancaire,										   operation -> mois_bancaire,										   operation -> annee_bancaire );			      ope_modifiee_2 -> devise = ope_modifiee -> devise;			      ope_modifiee_2 -> une_devise_compte_egale_x_devise_ope = ope_modifiee -> une_devise_compte_egale_x_devise_ope;			      ope_modifiee_2 -> taux_change = ope_modifiee -> taux_change;			      ope_modifiee_2 -> frais_change = ope_modifiee -> frais_change;			      ope_modifiee_2 -> tiers = ope_modifiee -> tiers;			      ope_modifiee_2 -> auto_man = ope_modifiee -> auto_man;			      ope_modifiee_2 -> no_exercice = ope_modifiee -> no_exercice;			    }			}		      else			{			  /* c'est un nouveau virement, on doit crer l'op associe */			  struct structure_operation *nouvelle_ope_2;			  nouvelle_ope_2 = calloc ( 1,						    sizeof ( struct structure_operation ));			  /* on commence par mettre le type choisi */			  nouvelle_ope_2 -> type_ope = ope_ventil -> no_type_associe;			  nouvelle_ope_2 -> no_compte = ope_ventil -> relation_no_compte;			  nouvelle_ope_2 -> montant = -ope_modifiee ->  montant;			  nouvelle_ope_2 -> categorie = ope_modifiee ->  categorie;			  nouvelle_ope_2 -> sous_categorie = ope_modifiee ->  sous_categorie;			  if ( ope_modifiee -> notes )			    nouvelle_ope_2 -> notes = g_strdup ( ope_modifiee ->  notes );			  nouvelle_ope_2 -> imputation = ope_modifiee ->  imputation;			  nouvelle_ope_2 -> sous_imputation = ope_modifiee ->  sous_imputation;			  if ( ope_modifiee -> no_piece_comptable )			    nouvelle_ope_2 -> no_piece_comptable = g_strdup ( ope_modifiee ->  no_piece_comptable );			  nouvelle_ope_2 -> jour = ope_modifiee ->  jour;			  nouvelle_ope_2 -> mois = ope_modifiee ->  mois;			  nouvelle_ope_2 -> annee = ope_modifiee ->  annee;			  			  nouvelle_ope_2 -> date = g_date_new_dmy ( operation -> jour,								    operation -> mois,								    operation -> annee );			  nouvelle_ope_2 -> jour_bancaire = ope_modifiee ->  jour_bancaire;			  nouvelle_ope_2 -> mois_bancaire = ope_modifiee ->  mois_bancaire;			  nouvelle_ope_2 -> annee_bancaire = ope_modifiee ->  annee_bancaire;			  if ( operation -> jour_bancaire )			    nouvelle_ope_2 -> date_bancaire = g_date_new_dmy ( operation -> jour_bancaire,									       operation -> mois_bancaire,									       operation -> annee_bancaire );			  nouvelle_ope_2 -> devise = ope_modifiee ->  devise;			  nouvelle_ope_2 -> une_devise_compte_egale_x_devise_ope = ope_modifiee ->  une_devise_compte_egale_x_devise_ope;			  nouvelle_ope_2 -> taux_change = ope_modifiee ->  taux_change;			  nouvelle_ope_2 -> frais_change = ope_modifiee ->  frais_change;			  nouvelle_ope_2 -> tiers = ope_modifiee ->  tiers;			  nouvelle_ope_2 -> auto_man = ope_modifiee ->  auto_man;			  nouvelle_ope_2 -> no_exercice = ope_modifiee ->  no_exercice;			  ajout_operation ( nouvelle_ope_2 );			  /* on met les relations */			  ope_modifiee -> relation_no_operation = nouvelle_ope_2 -> no_operation;			  ope_modifiee -> relation_no_compte = nouvelle_ope_2 -> no_compte;			  nouvelle_ope_2 -> relation_no_operation = ope_modifiee ->  no_operation;			  nouvelle_ope_2 -> relation_no_compte = ope_modifiee ->  no_compte;			}		    }		}	    }	  else	    {	      /* c'est une nouvelle opration */	      /*  on la cre, l'ajoute et si c'est un virement on cre la contre opration */	      struct structure_operation *nouvelle_ope;	      nouvelle_ope = calloc ( 1,				      sizeof ( struct structure_operation ));	      /* on rcupre d'abord les modifs de l'op de ventil */	      nouvelle_ope -> montant = ope_ventil -> montant;	      nouvelle_ope -> categorie = ope_ventil -> categorie;	      nouvelle_ope -> sous_categorie = ope_ventil -> sous_categorie;	      if ( ope_ventil -> notes )		nouvelle_ope -> notes = g_strdup ( ope_ventil -> notes );	      nouvelle_ope -> imputation = ope_ventil -> imputation;	      nouvelle_ope -> sous_imputation = ope_ventil -> sous_imputation;	      if ( ope_ventil -> no_piece_comptable )		nouvelle_ope -> no_piece_comptable = g_strdup ( ope_ventil -> no_piece_comptable );	      nouvelle_ope -> no_exercice = ope_ventil -> no_exercice;	      /* on rcupre ensuite les modifs de la ventilation */	      nouvelle_ope -> jour = operation -> jour;	      nouvelle_ope -> mois = operation -> mois;	      nouvelle_ope -> annee = operation -> annee;	      nouvelle_ope -> date = g_date_new_dmy ( operation -> jour,						      operation -> mois,						      operation -> annee );	      nouvelle_ope -> jour_bancaire = operation -> jour_bancaire;	      nouvelle_ope -> mois_bancaire = operation -> mois_bancaire;	      nouvelle_ope -> annee_bancaire = operation -> annee_bancaire;	      if ( operation -> jour_bancaire )		nouvelle_ope -> date_bancaire = g_date_new_dmy ( operation -> jour_bancaire,								 operation -> mois_bancaire,								 operation -> annee_bancaire );	      nouvelle_ope -> no_compte = operation -> no_compte;	      nouvelle_ope -> devise = operation -> devise;	      nouvelle_ope -> une_devise_compte_egale_x_devise_ope = operation -> une_devise_compte_egale_x_devise_ope;	      nouvelle_ope -> taux_change = operation -> taux_change;	      nouvelle_ope -> frais_change = operation -> frais_change;	      nouvelle_ope -> tiers = operation -> tiers;	      nouvelle_ope -> type_ope = operation -> type_ope;	      nouvelle_ope -> pointe = operation -> pointe;	      nouvelle_ope -> auto_man = operation -> auto_man;	      nouvelle_ope -> no_rapprochement = operation -> no_rapprochement;	      nouvelle_ope -> no_operation_ventilee_associee = operation -> no_operation;	      /* on ajoute cette op  la liste */	      ajout_operation ( nouvelle_ope );	      /* si cette op de ventil est un virement, on cre la contre opration */	      if ( ope_ventil -> relation_no_operation )		{		  struct structure_operation *nouvelle_ope_2;		  nouvelle_ope_2 = calloc ( 1,					    sizeof ( struct structure_operation ));		  /* on commence par mettre le type choisi */		  nouvelle_ope_2 -> type_ope = ope_ventil -> no_type_associe;		  nouvelle_ope_2 -> no_compte = ope_ventil -> relation_no_compte;		  nouvelle_ope_2 -> montant = -nouvelle_ope -> montant;		  nouvelle_ope_2 -> categorie = nouvelle_ope -> categorie;		  nouvelle_ope_2 -> sous_categorie = nouvelle_ope -> sous_categorie;		  if ( nouvelle_ope -> notes )		    nouvelle_ope_2 -> notes = g_strdup ( nouvelle_ope -> notes );		  nouvelle_ope_2 -> imputation = nouvelle_ope -> imputation;		  nouvelle_ope_2 -> sous_imputation = nouvelle_ope -> sous_imputation;		  if ( nouvelle_ope -> no_piece_comptable )		    nouvelle_ope_2 -> no_piece_comptable = g_strdup ( nouvelle_ope -> no_piece_comptable );		  nouvelle_ope_2 -> jour = nouvelle_ope -> jour;		  nouvelle_ope_2 -> mois = nouvelle_ope -> mois;		  nouvelle_ope_2 -> annee = nouvelle_ope -> annee;			  		  nouvelle_ope_2 -> date = g_date_new_dmy ( operation -> jour,							    operation -> mois,							    operation -> annee );		  nouvelle_ope_2 -> jour_bancaire = nouvelle_ope -> jour_bancaire;		  nouvelle_ope_2 -> mois_bancaire = nouvelle_ope -> mois_bancaire;		  nouvelle_ope_2 -> annee_bancaire = nouvelle_ope -> annee_bancaire;		  if ( operation -> jour_bancaire )		    nouvelle_ope_2 -> date_bancaire = g_date_new_dmy ( operation -> jour_bancaire,								       operation -> mois_bancaire,								       operation -> annee_bancaire );		  nouvelle_ope_2 -> devise = nouvelle_ope -> devise;		  nouvelle_ope_2 -> une_devise_compte_egale_x_devise_ope = nouvelle_ope -> une_devise_compte_egale_x_devise_ope;		  nouvelle_ope_2 -> taux_change = nouvelle_ope -> taux_change;		  nouvelle_ope_2 -> frais_change = nouvelle_ope -> frais_change;		  nouvelle_ope_2 -> tiers = nouvelle_ope -> tiers;		  nouvelle_ope_2 -> auto_man = nouvelle_ope -> auto_man;		  nouvelle_ope_2 -> no_exercice = nouvelle_ope -> no_exercice;		  ajout_operation ( nouvelle_ope_2 );		  /* on met les relations */		  nouvelle_ope -> relation_no_operation = nouvelle_ope_2 -> no_operation;		  nouvelle_ope -> relation_no_compte = nouvelle_ope_2 -> no_compte;		  nouvelle_ope_2 -> relation_no_operation = nouvelle_ope -> no_operation;		  nouvelle_ope_2 -> relation_no_compte = nouvelle_ope -> no_compte;		}	    }	}      liste_struct_ventilations = liste_struct_ventilations -> next;    }}