Пример #1
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;
                    }
                }
            }
        }
Пример #2
0
        //---------------------------------------------------------
        public CImputationCout GetImputation(IElementACout elt)
        {
            if (elt == null)
            {
                return(null);
            }
            CImputationCout imputation = null;

            m_dicImputations.TryGetValue(elt, out imputation);
            return(imputation);
        }
Пример #3
0
        //------------------------------------------------------------------------------------------------------------------------------
        public static double GetPourcentageFor(CBesoin besoin, ISatisfactionBesoin satisfaction)
        {
            CImputationsCouts imputations = satisfaction.GetImputationsAFaireSurUtilisateursDeCout();
            CImputationCout   imputation  = imputations.GetImputation(besoin);

            if (imputations == null)
            {
                return(0);
            }
            if (imputations.PoidsTotal > 0)
            {
                return(imputation.Poids / imputations.PoidsTotal * 100);
            }
            return(0);
        }
Пример #4
0
        //---------------------------------------------------------
        public double GetCoutImputéeA(IElementACout elt, bool bCoutReel)
        {
            double fCout = bCoutReel?ElementSource.CoutReel:ElementSource.CoutPrevisionnel;

            if (fCout == 0)
            {
                return(0);
            }
            CImputationCout imputation = null;

            if (m_dicImputations.TryGetValue(elt, out imputation))
            {
                if (PoidsTotal > 0)
                {
                    return(imputation.Poids / PoidsTotal * fCout);
                }
            }
            return(0);
        }
Пример #5
0
        //---------------------------------------------------------
        public void AddImputation(CImputationCout imputation)
        {
            CImputationCout old = null;

            if (imputation.UtilisateurDeCout.Row.RowState == System.Data.DataRowState.Deleted)
            {
                return;
            }
            if (m_dicImputations.TryGetValue(imputation.UtilisateurDeCout, out old))
            {
                if (old.Poids == 0)
                {
                    m_listImputations.Remove(old);
                }
                else
                {
                    return;
                }
            }
            m_dicImputations[imputation.UtilisateurDeCout] = imputation;
            m_listImputations.Add(imputation);
            m_fPoidsTotal += imputation.Poids;
        }