private ToolStripItem CreateItemSatisfaction(IElementACout utilisateur, IElementACout source) { CImputationsCouts imputation = source.GetImputationsAFaireSurUtilisateursDeCout(); if (imputation != null) { CImputationCout i = imputation.GetImputation(utilisateur); if (i != null && i.Poids != 0) { double fVal = imputation.GetCoutImputéeA(utilisateur, m_bMenuForCoutReel); ToolStripMenuItem itemElementACout = new ToolStripMenuItem(); itemElementACout.Text = fVal.ToString("0.####") + " "; if (source is ISatisfactionBesoin) { itemElementACout.Text += ((ISatisfactionBesoin)source).LibelleSatisfactionComplet; } else { itemElementACout.Text += source.Libelle; } if (source is ISatisfactionBesoin && utilisateur is CBesoin) { double fPct = CUtilSatisfaction.GetPourcentageFor((CBesoin)utilisateur, (ISatisfactionBesoin)source); itemElementACout.Text += " (" + fPct.ToString("0.##") + "%)"; } else { itemElementACout.Text += " (100%)"; } itemElementACout.Tag = source; itemElementACout.Image = DynamicClassAttribute.GetImage(source.GetType()); if (fVal == 0) { itemElementACout.BackColor = Color.LightPink; } if (source.GetSourcesDeCout(m_bMenuForCoutReel).Length > 0) { ToolStripMenuItem dummy = new ToolStripMenuItem(); itemElementACout.DropDownItems.Add(dummy); itemElementACout.DropDownOpening += new EventHandler(itemElementACout_DropDownOpening); } itemElementACout.MouseUp += new MouseEventHandler(itemElementACout_MouseUp); return(itemElementACout); } } return(null); }
//-------------------------------------------------- private string GetKey(IElementACout element, bool bCoutReel) { string strType = element.GetType().Sc2iTypeId(); string strIdUniversel = ""; if (element.Row.RowState == DataRowState.Deleted || element.Row.RowState == DataRowState.Detached) { strIdUniversel = (string)element.Row[CObjetDonnee.c_champIdUniversel, DataRowVersion.Original]; } else { strIdUniversel = element.IdUniversel; } return(strType + "|" + strIdUniversel + "|" + (bCoutReel ? "1" : "0")); }
//------------------------------------------------------------------------------------------------------------------------------ private static void InvalideLeCoutDesSources(IElementACout elt, bool bCoutReel, HashSet <Type> typesAInvalider, HashSet <IElementACout> elementsFaits) { if (elt == null || elt.Row.RowState == DataRowState.Deleted || elt.Row.RowState == DataRowState.Detached) { return; } if (elementsFaits.Contains(elt)) { return; } elementsFaits.Add(elt); foreach (IElementACout source in elt.GetSourcesDeCout(bCoutReel)) { InvalideLeCoutDesSources(source, bCoutReel, typesAInvalider, elementsFaits); } if (typesAInvalider.Contains(elt.GetType())) { OnChangeCout(elt, bCoutReel, false); } }