//------------------------------------------------------------------------------------------------------------------------------ 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 CImputationCout GetImputation(IElementACout elt) { if (elt == null) { return(null); } CImputationCout imputation = null; m_dicImputations.TryGetValue(elt, out imputation); return(imputation); }
//------------------------------------------------------------------------------------------------------------------------------ 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); }
//--------------------------------------------------------- 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); }
//--------------------------------------------------------- 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; }