//------------------------------------------------------------------------------- //Annule les modifications réalisées sur l'objet public CResultAErreur AnnuleModificationsPrevisionnelles(int nIdVersionObjet) { CResultAErreur result = CResultAErreur.True; using (CContexteDonnee contexte = new CContexteDonnee(IdSession, true, false)) { CSessionClient session = CSessionClient.GetSessionForIdSession(IdSession); result = session.BeginTrans(); if (!result) { return(result); } CVersionDonneesObjet versionObjet = new CVersionDonneesObjet(contexte); if (!versionObjet.ReadIfExists(nIdVersionObjet)) { return(result); //Rien à annuler } CVersionDonnees versionPrev = versionObjet.VersionDonnees; if (versionPrev.TypeVersion.Code != CTypeVersion.TypeVersion.Previsionnelle) { result.EmpileErreur(I.T("Cannot cancel archive operation|220")); return(result); } result = AnnuleModificationPrevisionnelle(versionObjet); if (result) { result = contexte.SaveAll(true); if (result) { result = session.CommitTrans(); } else { result = session.RollbackTrans(); } } } return(result); }
//------------------------------------------------------ private TreeNode CreateNodeObjet(TreeNodeCollection nodes, CObjetDonneeAIdNumerique objet) { if (objet == null) { TreeNode newNode = new TreeNode(I.T("No value|107")); newNode.Tag = null; newNode.ImageIndex = c_nImageUnchanged; newNode.SelectedImageIndex = c_nImageUnchanged; nodes.Add(newNode); return(newNode); } int nImage = c_nImageUnchanged; if (m_version.TypeVersion.Code == CTypeVersion.TypeVersion.Previsionnelle) { StringBuilder blIdsVersionsInteressantes = new StringBuilder(); blIdsVersionsInteressantes.Append(m_version.Id); foreach (int nId in m_nIdsVersionsSuccessives) { blIdsVersionsInteressantes.Append(";"); blIdsVersionsInteressantes.Append(nId); } //Version prévisionnelle //L'élément a-t-il été supprimé ? CFiltreData filtre = new CFiltreDataAvance( CVersionDonneesObjet.c_nomTable, CVersionDonneesObjet.c_champTypeOperation + "=@1 and " + CVersionDonneesObjet.c_champTypeElement + "=@2 and " + CVersionDonneesObjet.c_champIdElement + "=@3 and " + CVersionDonnees.c_champId + " in (" + blIdsVersionsInteressantes.ToString() + ")", (int)CTypeOperationSurObjet.TypeOperation.Suppression, objet.GetType().ToString(), objet.Id); //si prévisionnelle, y a t il une création depuis la version de référence ? CVersionDonneesObjet versionObjet = new CVersionDonneesObjet(m_contexteDonnees); if (versionObjet.ReadIfExists(filtre)) { nImage = c_nImageDelete; } else { //Y a t-il un ajout ? filtre.Parametres[0] = (int)CTypeOperationSurObjet.TypeOperation.Ajout; if (versionObjet.ReadIfExists(filtre)) { nImage = c_nImageAdd; } else { //Modification ? filtre.Parametres[0] = (int)CTypeOperationSurObjet.TypeOperation.Modification; if (versionObjet.ReadIfExists(filtre)) { nImage = c_nImageEdit; } } } } else //Version archive ou étiquette { if (objet.IdVersionDatabase != null) { //L'objet appartient à une version, il a donc été supprimé nImage = c_nImageDelete; } else { //Trouve t-on un ajout depuis la version de référence ? CVersionDonneesObjet versionObjet = new CVersionDonneesObjet(m_contexteDonnees); CFiltreData filtre = new CFiltreDataAvance( CVersionDonneesObjet.c_nomTable, CVersionDonneesObjet.c_champTypeOperation + "=@1 and " + CVersionDonneesObjet.c_champTypeElement + "=@2 and " + CVersionDonneesObjet.c_champIdElement + "=@3 and " + CVersionDonnees.c_champId + ">=@4 and " + CVersionDonnees.c_nomTable + "." + CVersionDonnees.c_champTypeVersion + "=@5", (int)CTypeOperationSurObjet.TypeOperation.Ajout, objet.GetType().ToString(), objet.Id, m_version.Id, (int)CTypeVersion.TypeVersion.Archive); if (versionObjet.ReadIfExists(filtre)) { nImage = c_nImageAdd; } else { filtre.Parametres[0] = (int)CTypeOperationSurObjet.TypeOperation.Modification; if (versionObjet.ReadIfExists(filtre)) { nImage = c_nImageEdit; } } } } TreeNode node = new TreeNode(objet.DescriptionElement); node.ImageIndex = nImage; node.SelectedImageIndex = nImage; node.Tag = objet; //Ajoute un faux fils nodes.Add(node); AddFakeNode(node); return(node); }