Ejemplo n.º 1
0
 //---------------------------------------------------------
 public void AddImputation(IElementACout elt, double fRatio, CRelationBesoin_Satisfaction relationAssociée)
 {
     if (elt != null)
     {
         AddImputation(new CImputationCout(elt, fRatio, relationAssociée));
     }
 }
Ejemplo n.º 2
0
        //------------------------------------------------------------------------------------------------------------------------------
        public static void SetPourcentageFor(CBesoin besoin, ISatisfactionBesoin satisfaction, double fPourcentageSouhaité)
        {
            CImputationsCouts imputations = satisfaction.GetImputationsAFaireSurUtilisateursDeCout();
            CImputationCout   imputation  = imputations.GetImputation(besoin);

            if (fPourcentageSouhaité < 100 && fPourcentageSouhaité >= 0)
            {
                if (imputations != null)
                {
                    double fPoids = imputations.PoidsTotal - imputation.Poids;
                    if (fPoids == 0)
                    {
                        return;
                    }
                    CListeObjetsDonnees lst = satisfaction.RelationsSatisfaits;
                    lst.Filtre = new CFiltreData(CBesoin.c_champId + "=@1", besoin.Id);
                    if (lst.Count != 0)
                    {
                        double fCalc = fPourcentageSouhaité / 100.0 * fPoids / (1 - fPourcentageSouhaité / 100.0);
                        CRelationBesoin_Satisfaction rel = lst[0] as CRelationBesoin_Satisfaction;
                        rel.RatioCoutReel = fCalc;
                    }
                }
            }
        }
        //////////////////////////////////////////////////////////////////////
        public override CResultAErreur VerifieDonnees(CObjetDonnee objet)
        {
            CResultAErreur result = CResultAErreur.True;

            try
            {
                CRelationBesoin_Satisfaction rel = (CRelationBesoin_Satisfaction)objet;

                return(result);
            }
            catch (Exception e)
            {
                result.EmpileErreur(new CErreurException(e));
            }
            return(result);
        }
Ejemplo n.º 4
0
 public CImputationCout(IElementACout utilisateurDeCout, double fPoids, CRelationBesoin_Satisfaction relationAssociée)
 {
     UtilisateurDeCout = utilisateurDeCout;
     Poids             = fPoids;
     RelationAssociee  = relationAssociée;
 }
Ejemplo n.º 5
0
        //------------------------------------------------------------------------------------------------------------------------------
        /// <summary>
        /// Se base sur le champ PRT_COST_TO_RECALCULATE pour savoir ce qu'il faut recalculer
        /// </summary>
        /// <param name="contexte"></param>
        /// <returns></returns>
        public static CResultAErreur RecalculeCoutsARecalculer(CContexteDonnee contexte)
        {
            CResultAErreur result = CResultAErreur.True;

            if (m_listeTypesElementsACouts == null)
            {
                m_listeTypesElementsACouts = new List <Type>();
                foreach (Assembly ass in CGestionnaireAssemblies.GetAssemblies())
                {
                    foreach (Type tp in ass.GetTypes())
                    {
                        if (typeof(IElementACout).IsAssignableFrom(tp))
                        {
                            m_listeTypesElementsACouts.Add(tp);
                        }
                    }
                }
            }
            List <IElementACout> lstARecalculerReel         = new List <IElementACout>();
            List <IElementACout> lstARecalculerPrevisionnel = new List <IElementACout>();

            foreach (Type tp in m_listeTypesElementsACouts)
            {
                string    strNomTable = CContexteDonnee.GetNomTableForType(tp);
                DataTable table       = contexte.Tables[strNomTable];
                if (table != null)
                {
                    DataRow[] rows = table.Select(c_champCoutsParentsARecalculer + "<>0");
                    foreach (DataRow row in rows)
                    {
                        IElementACout elt = Activator.CreateInstance(tp, new object[] { row }) as IElementACout;
                        if ((elt.TypesCoutsParentsARecalculer & ETypeCout.réel) == ETypeCout.réel)
                        {
                            lstARecalculerReel.Add(elt);
                        }
                        if ((elt.TypesCoutsParentsARecalculer & ETypeCout.Prévisionnel) == ETypeCout.Prévisionnel)
                        {
                            lstARecalculerPrevisionnel.Add(elt);
                        }
                    }
                    //Récupère également les lignes supprimées
                    rows = table.Select("", "", DataViewRowState.Deleted);
                    foreach (DataRow row in rows)
                    {
                        IElementACout elt = Activator.CreateInstance(tp, new object[] { row }) as IElementACout;
                        lstARecalculerPrevisionnel.Add(elt);
                        lstARecalculerReel.Add(elt);
                    }
                }
            }
            DataTable tableRels = contexte.Tables[CRelationBesoin_Satisfaction.c_nomTable];

            if (tableRels != null)
            {
                DataRow[] rowsRels = tableRels.Select("", "", DataViewRowState.Added | DataViewRowState.Deleted);
                foreach (DataRow row in rowsRels)
                {
                    CRelationBesoin_Satisfaction rel = new CRelationBesoin_Satisfaction(row);
                    if (row.RowState == DataRowState.Deleted)
                    {
                        rel.VersionToReturn = DataRowVersion.Original;
                    }
                    IElementACout elt = rel.Satisfaction;
                    lstARecalculerPrevisionnel.Add(elt);
                    lstARecalculerReel.Add(elt);
                }
            }



            HashSet <DataRow> setCalcules = new HashSet <DataRow>();

            foreach (IElementACout elt in lstARecalculerPrevisionnel)
            {
                RecalcCoutMontant(elt, false, setCalcules);
            }

            setCalcules = new HashSet <DataRow>();
            foreach (IElementACout elt in lstARecalculerReel)
            {
                RecalcCoutMontant(elt, true, setCalcules);
            }


            return(result);
        }
Ejemplo n.º 6
0
 public void AddRelation(CRelationBesoin_Satisfaction relation)
 {
     m_strIds = null;
     m_lstIdsRelations.Add(relation.Id);
     DateLastAcces = DateTime.Now;
 }