//--------------------------------------------------------
        public override CResultAErreur TraitementAvantSauvegarde(CContexteDonnee contexte)
        {
            CResultAErreur result = base.TraitementAvantSauvegarde(contexte);

            if (!result)
            {
                return(result);
            }
            DataTable table = contexte.Tables[GetNomTable()];

            if (table == null)
            {
                return(result);
            }
            HashSet <CMetaProjet> lstMetaProjetsARecalculer = new HashSet <CMetaProjet>();

            foreach (DataRow row in new ArrayList(table.Rows))
            {
                if (row.RowState == DataRowState.Added || row.RowState == DataRowState.Modified)
                {
                    CRelationMetaProjet_Projet rel = new CRelationMetaProjet_Projet(row);
                    if (rel != null && rel.MetaProjet != null && rel.MetaProjet.IsValide())
                    {
                        lstMetaProjetsARecalculer.Add(rel.MetaProjet);
                    }
                }
                if (row.RowState == DataRowState.Deleted)
                {
                    if (row.HasVersion(DataRowVersion.Original))
                    {
                        CRelationMetaProjet_Projet rel = new CRelationMetaProjet_Projet(row);
                        rel.VersionToReturn = DataRowVersion.Original;
                        try
                        {
                            CMetaProjet meta = rel.MetaProjet;
                            if (meta != null && meta.IsValide())
                            {
                                lstMetaProjetsARecalculer.Add(meta);
                            }
                        }
                        catch { }
                    }
                }
            }
            foreach (CMetaProjet meta in lstMetaProjetsARecalculer)
            {
                meta.UpdateDateDebutPlanifieeFromChilds(false);
                meta.UpdateDateFinPlanifieeFromChilds(false);
                meta.CalcProgress(false);
            }
            return(result);
        }
        //-------------------------------------------------------------------
        public override CResultAErreur VerifieDonnees(CObjetDonnee objet)
        {
            CResultAErreur result = CResultAErreur.True;

            try
            {
                CRelationMetaProjet_Projet proj = (CRelationMetaProjet_Projet)objet;

                if (proj.Projet == null)
                {
                    result.EmpileErreur(I.T("Meta project link must be associated to a project|20181"));
                }
                if (proj.MetaProjet == null)
                {
                    result.EmpileErreur(I.T("Meta project link must be associated to a meta project|20182"));
                }
            }
            catch (Exception e)
            {
                result.EmpileErreur(new CErreurException(e));
            }
            return(result);
        }