예제 #1
0
        //-------------------------------------------------------------------------------
        //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);
        }
예제 #2
0
        //------------------------------------------------------
        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);
        }