rem: ope_ventil -> relation_no_operation = -1;
context: void validation_ope_de_ventilation_echeances ( struct operation_echeance *operation ){    GSList *liste_struct_ventilations;    /* récupération de la liste de ventilations */    liste_struct_ventilations = gtk_object_get_data ( GTK_OBJECT ( formulaire_echeancier ),						      "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 supprimée, c'est ici */	/* cela sous entend qu'elle existait déjà */	if ( ope_ventil -> supprime )	{	    /* petite protection quand même, normalement le texte ne devrait jamais apparaitre */	    if ( !ope_ventil -> no_operation )		dialogue_warning ( _("A breakdown line is to be deleted thought it is not yet registered."));	    else		supprime_echeance ( echeance_par_no (ope_ventil -> no_operation ));	}	else	{	    /* l'opération ne doit pas être supprimée, c'est qu'elle doit être créée ou modifiÃÂ©e */	    /* 	  on n'a pas à s'embêter avec des changements de virements ou autres trucs bizarres, dans */	    /* ce cas il y aura eu une suppression puis une nouvelle opération */	    if ( ope_ventil -> no_operation )	    {		/* c'est une modif d'opération */		struct operation_echeance *ope_modifiee;		ope_modifiee = echeance_par_no ( ope_ventil -> no_operation );		if ( ope_modifiee )		{		    /* on récupère 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;		    ope_modifiee -> compte_virement = ope_ventil -> relation_no_compte;		    ope_modifiee -> type_contre_ope = ope_ventil -> no_type_associe;		    /* on récupère 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 -> compte = operation -> compte;		    ope_modifiee -> devise = operation -> devise;		    ope_modifiee -> tiers = operation -> tiers;		    ope_modifiee -> type_ope = operation -> type_ope;		    ope_modifiee -> auto_man = operation -> auto_man;		    /* théoriquement, cette ligne n'est pas nécessaire vu que c'est une modif d'opé de ventil */		    ope_modifiee -> no_operation_ventilee_associee = operation -> no_operation;		}	    }	    else	    {		/* c'est une nouvelle opération */		/*  on la crée, l'ajoute et si c'est un virement on crée la contre opération */		struct operation_echeance *nouvelle_ope;		nouvelle_ope = calloc ( 1,					sizeof ( struct operation_echeance ));		/* on récupère d'abord les modifs de l'opé de ventil */		ope_ventil -> relation_no_operation = -1;		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;		nouvelle_ope -> no_exercice = ope_ventil -> no_exercice;		nouvelle_ope -> compte_virement = ope_ventil -> relation_no_compte;		nouvelle_ope -> type_contre_ope = ope_ventil -> no_type_associe;		/* on récupère 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 -> compte = operation -> compte;		nouvelle_ope -> devise = operation -> devise;		nouvelle_ope -> tiers = operation -> tiers;		nouvelle_ope -> type_ope = operation -> type_ope;		nouvelle_ope -> auto_man = operation -> auto_man;		nouvelle_ope -> no_operation_ventilee_associee = operation -> no_operation;		/* on ajoute cette opé à la liste */		nouvelle_ope -> no_operation = ++no_derniere_echeance;		nb_echeances++;		liste_struct_echeances = g_slist_insert_sorted ( liste_struct_echeances,								 nouvelle_ope,								 (GCompareFunc) comparaison_date_echeance );	    }	}	liste_struct_ventilations = liste_struct_ventilations -> next;    }}