Esempio n. 1
0
        //--------------------------------------------------------------------------
        public double GetCoutResume(bool bCoutReel)
        {
            Dictionary <IElementACout, bool> setElementToAPrendreEnCompte = new Dictionary <IElementACout, bool>();

            FillSetElementsACoutPourResumeCout(bCoutReel, setElementToAPrendreEnCompte);
            Dictionary <IElementACout, CImputationsCouts> cacheImputations = new Dictionary <IElementACout, CImputationsCouts>();
            //On a tous les besoins dans un hashet, maintenant, il faut sommer les couts
            double fCout = 0;

            foreach (KeyValuePair <IElementACout, bool> kv in setElementToAPrendreEnCompte)
            {
                if (kv.Value)
                {
                    IElementACout element = kv.Key;
                    if (element is CBesoin)
                    {
                        bool bSourceInSet = false;
                        foreach (IElementACout elt in element.GetSourcesDeCout(bCoutReel))
                        {
                            if (setElementToAPrendreEnCompte.ContainsKey(elt))
                            {
                                bSourceInSet = true;
                                break;
                            }
                        }
                        if (!bSourceInSet)
                        {
                            fCout += bCoutReel ? element.CoutReel : element.CoutPrevisionnel;
                        }
                        else
                        {
                            foreach (IElementACout source in element.GetSourcesDeCout(bCoutReel))
                            {
                                if (!setElementToAPrendreEnCompte.ContainsKey(source))
                                //Si la source est dans le set, elle sera ajoutée, donc on ne la prend pas
                                {
                                    CImputationsCouts imputations = null;
                                    if (!cacheImputations.TryGetValue(source, out imputations))
                                    {
                                        imputations = source.GetImputationsAFaireSurUtilisateursDeCout();
                                        cacheImputations[source] = imputations;
                                    }

                                    fCout += imputations.GetCoutImputéeA(element, bCoutReel);
                                }
                            }
                        }
                    }
                }
            }
            return(fCout);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
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);
     }
 }
Esempio n. 4
0
 //------------------------------------------------------------------------------------------------------------------------------
 private static void FillDicSources(
     bool bCoutReel,
     IElementACout elementACout,
     bool bRecursif,
     Dictionary <IElementACout, IElementACout[]> elementsToSource)
 {
     if (elementsToSource.ContainsKey(elementACout))
     {
         return;
     }
     IElementACout[] sources = elementACout.GetSourcesDeCout(bCoutReel);
     elementsToSource[elementACout] = sources;
     if (bRecursif)
     {
         foreach (IElementACout source in sources)
         {
             FillDicSources(bCoutReel, source, true, elementsToSource);
         }
     }
 }
Esempio n. 5
0
        //---------------------------------------------------------
        void itemElementACout_DropDownOpening(object sender, EventArgs e)
        {
            ToolStripMenuItem item = sender as ToolStripMenuItem;
            IElementACout     elt  = item != null ? item.Tag as IElementACout : null;

            if (elt != null)
            {
                if (item.DropDownItems.Count == 1 && item.DropDownItems[0].Tag == null)
                {
                    item.DropDownItems.Clear();

                    foreach (IElementACout source in elt.GetSourcesDeCout(m_bMenuForCoutReel))
                    {
                        ToolStripItem itemFils = CreateItemSatisfaction(elt, source);
                        if (itemFils != null)
                        {
                            item.DropDownItems.Add(itemFils);
                        }
                    }
                }
            }
        }
Esempio n. 6
0
        public void ShowMenuDetailCalcul(
            IElementACout utilisateur,
            CItemBesoin itemBesoin,
            ContextMenuStrip menu,
            bool bCoutReel,
            Control ctrlRepere)
        {
            m_bMenuForCoutReel = bCoutReel;
            foreach (ToolStripItem item in new ArrayList(menu.Items))
            {
                menu.Items.Remove(item);
                item.Dispose();
            }
            if (utilisateur != null)
            {
                foreach (IElementACout elt in utilisateur.GetSourcesDeCout(bCoutReel))
                {
                    ToolStripItem item = CreateItemSatisfaction(utilisateur, elt);
                    if (item != null)
                    {
                        menu.Items.Add(item);
                    }
                }
                if (menu.Items.Count > 0)
                {
                    menu.Items.Add(new ToolStripSeparator());
                }

                ToolStripMenuItem itemSatisfaction = new ToolStripMenuItem();
                double            fCout            = bCoutReel ? utilisateur.CoutReel : utilisateur.CoutPrevisionnel;
                itemSatisfaction.Text  = (menu.Items.Count > 0 ? "--->" : "") + fCout.ToString("0.####");
                itemSatisfaction.Image = Resources.PuzzleMal20;
                menu.Items.Add(itemSatisfaction);

                bool bShouldAddSeparateur = true;

                if (itemBesoin != null)
                {
                    foreach (CItemBesoin childItem in itemBesoin.ChildItems)
                    {
                        if (childItem.Besoin.GetImputationsAFaireSurUtilisateursDeCout().GetCoutImputéeA(utilisateur, bCoutReel) == 0)
                        {
                            if (bShouldAddSeparateur)
                            {
                                menu.Items.Add(new ToolStripSeparator());
                            }
                            bShouldAddSeparateur = false;
                            ToolStripMenuItem item = new ToolStripMenuItem();
                            double            fVal = bCoutReel ? childItem.CoutReel : childItem.CoutPrevisionnel;
                            item.Text  = fVal.ToString("0.####") + "   " + childItem.Besoin.Libelle;
                            item.Image = DynamicClassAttribute.GetImage(childItem.Besoin.GetType());
                            menu.Items.Add(item);
                        }
                    }
                }
            }
            if (menu.Items.Count > 0)
            {
                menu.Show(ctrlRepere, new Point(0, ctrlRepere.Height));
            }
        }