示例#1
0
 private void m_imageTache_MouseMove(object sender, MouseEventArgs e)
 {
     m_bHasDrag = false;
     if ((e.Button & MouseButtons.Left) == MouseButtons.Left && m_ptMouseDownTache != null)
     {
         Point pt = new Point(Math.Abs(e.X - m_ptMouseDownTache.Value.X),
                              Math.Abs(e.Y - m_ptMouseDownTache.Value.Y));
         if (pt.X > 4 || pt.Y > 4)
         {
             CItemBesoin item = CurrentItem as CItemBesoin;
             StartDragDrop(
                 new Point(e.X, e.Y),
                 DragDropEffects.Move | DragDropEffects.Link | DragDropEffects.Copy,
                 new CDonneeAdditionnelleDragDrop(typeof(sc2i.data.CReferenceObjetDonnee), new sc2i.data.CReferenceObjetDonnee(Besoin))
                 );
             m_bHasDrag = true;
             CBesoin besoin = item.Besoin;
             ((CControleListeBesoins)AssociatedListControl).RefreshBesoin(besoin, true);
             besoin = besoin.BesoinParent;
             while (besoin != null)
             {
                 ((CControleListeBesoins)AssociatedListControl).RefreshBesoin(besoin, false);
                 besoin = besoin.BesoinParent;
             }
             AssociatedListControl.Refresh();
         }
     }
 }
示例#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;
                    }
                }
            }
        }
示例#3
0
        //--------------------------------------------------
        private void m_btnAddBesoin_LinkClicked(object sender, EventArgs e)
        {
            if (m_phaseSpecifications != null && !LockEdition)
            {
                CBesoin besoin = new CBesoin(PhaseSpecifications.ContexteDonnee);
                besoin.CreateNewInCurrentContexte();
                besoin.PhaseSpecifications = PhaseSpecifications;
                if (m_phaseSpecifications.Projet != null && m_phaseSpecifications.Projet.TypeProjet != null)
                {
                    besoin.TypeBesoinCode = m_phaseSpecifications.Projet.TypeProjet.CodeTypeBesoinParDefaut;
                }

                CItemBesoin item = new CItemBesoin(besoin, null);
                item.Tag = besoin;
                if (Items.Length > 0)
                {
                    CItemBesoin lastItem = Items[Items.Length - 1] as CItemBesoin;
                    if (lastItem != null && lastItem.Besoin != null)
                    {
                        besoin.BesoinParent = lastItem.Besoin.BesoinParent;
                    }
                }
                AddItem(item, true);
                CurrentItemIndex = item.Index;
            }
        }
示例#4
0
        //---------------------------------------------------------------
        private CItemBesoin CreateSoluce(CBesoin besoinSolutionné)
        {
            CBesoin newBesoin = new CBesoin(m_phaseSpecifications.ContexteDonnee);

            newBesoin.CreateNewInCurrentContexte();
            newBesoin.PhaseSpecifications = m_phaseSpecifications;

            Dictionary <int, int> dicMap = newBesoin.CopyFromTemplate(besoinSolutionné);

            if (dicMap != null)
            {
                foreach (KeyValuePair <int, int> kv in dicMap)
                {
                    CBesoin bOriginal = new CBesoin(m_phaseSpecifications.ContexteDonnee);
                    if (bOriginal.ReadIfExists(kv.Key, false))
                    {
                        if (!bOriginal.HasChildren)
                        {
                            CBesoin bNew = new CBesoin(m_phaseSpecifications.ContexteDonnee);
                            if (bNew.ReadIfExists(kv.Value, false))
                            {
                                bOriginal.AddSatisfaction(bNew, null);
                            }
                        }
                    }
                }
            }
            CItemBesoin item = new CItemBesoin(newBesoin, null);

            AddItem(item, false);
            item.Index = Items.Count();
            AddItemsFils(item);

            return(item);
        }
示例#5
0
        //---------------------------------------------------
        public void RecalculeSuivants(CNiveauMapSatisfaction niveau)
        {
            //Récupère le niveau suivant
            CNiveauMapSatisfaction niveauSuiv = null;

            foreach (CNiveauMapSatisfaction niveauAutre in m_listeNiveaux)
            {
                if (niveauAutre.NiveauSatisfaction == niveau.NiveauSatisfaction + 1)
                {
                    niveauSuiv = niveauAutre;
                    break;
                }
            }
            if (niveauSuiv == null)
            {
                //Création du niveau précédent
                niveauSuiv = new CNiveauMapSatisfaction(this, niveau.NiveauSatisfaction + 1);
                m_listeNiveaux.Add(niveauSuiv);
            }

            HashSet <CDessinSatisfaction> dessinsRacinesToRemove = new HashSet <CDessinSatisfaction>();

            foreach (CDessinSatisfaction dessin in niveauSuiv.Dessins)
            {
                if (dessin.DessinParent == null)
                {
                    dessinsRacinesToRemove.Add(dessin);
                }
            }

            foreach (CDessinSatisfaction dessin in niveau.Dessins)
            {
                CBesoin besoin = dessin.Satisfaction as CBesoin;
                if (besoin != null)
                {
                    string strLib = besoin.Libelle;
                    foreach (CRelationBesoin_Satisfaction rel in besoin.RelationsSatisfactions)
                    {
                        CDessinSatisfaction dessinBesoin = GetDessin(rel.Satisfaction);
                        if (dessinBesoin == null && rel.Satisfaction != null)
                        {
                            dessinBesoin = new CDessinSatisfaction(niveauSuiv, rel.Satisfaction);
                            niveauSuiv.AddSatisfactionVisible(dessinBesoin);
                        }
                        dessinsRacinesToRemove.Remove(dessinBesoin);
                    }
                }
            }

            //retire les besoins racine qui doivent virer
            foreach (CDessinSatisfaction dessin in dessinsRacinesToRemove)
            {
                niveauSuiv.RemoveDessinPourToujours(dessin);
            }

            if (niveauSuiv.Dessins.Count() > 0)
            {
                RecalculeSuivants(niveauSuiv);
            }
        }
示例#6
0
        //--------------------------------------------------------------
        public void InitFrom(CBesoin besoin, IDonneeBesoin donnee)
        {
            CDonneeBesoinTypeEquipement dT = donnee as CDonneeBesoinTypeEquipement;

            if (dT != null)
            {
                if (dT.Quantite != null)
                {
                    Quantite = new CValeurUnite(dT.Quantite, "");
                }
                if (dT.CoutUnitaire != null)
                {
                    CoutUnitaire = new CValeurUnite(dT.CoutUnitaire.Value, "");
                }
                return;
            }
            CDonneeBesoinQuantiteCU dQ = donnee as CDonneeBesoinQuantiteCU;

            if (dQ != null)
            {
                Quantite     = dQ.Quantite;
                CoutUnitaire = dQ.CoutUnitaire;
                return;
            }
        }
示例#7
0
        //------------------------------------------------------
        public void Init(IDonneeBesoin calcul, CBesoin besoin, CItemBesoin itemBesoin, IEnumerable <CItemBesoin> items)
        {
            m_calculPourcentage = calcul as CDonneeBesoinPourcentage;
            m_besoin            = besoin;
            m_items             = items;

            if (m_calculPourcentage != null && besoin != null)
            {
                Visible = true;
                m_txtPourcentage.DoubleValue = m_calculPourcentage.Pourcentage;
                StringBuilder bl = new StringBuilder( );
                foreach (CBesoinDependance dep in besoin.LiensBesoinsDontJeDepend)
                {
                    bl.Append(dep.BesoinReference.Index);
                    bl.Append(';');
                }
                if (bl.Length > 0)
                {
                    bl.Remove(bl.Length - 1, 1);
                }
                m_txtReferences.Text = bl.ToString();
            }
            else
            {
                Visible = false;
            }
        }
 public void Init(IDonneeBesoin calcul, CBesoin besoin, CItemBesoin itemBesoin, IEnumerable <CItemBesoin> items)
 {
     m_bIsInitializing = true;
     m_calculQte       = calcul as CDonneeBesoinQuantiteCU;
     if (m_calculQte != null)
     {
         Visible = true;
         m_txtQuantité.UnitValue = m_calculQte.Quantite;
         m_lblUniteCU.Text       = "";
         m_uniteCU = null;
         if (m_calculQte.CoutUnitaire != null)
         {
             m_txtCoutUnitaire.DoubleValue = m_calculQte.CoutUnitaire.Valeur;
             if (m_calculQte.Quantite != null && m_calculQte.Quantite.IUnite != null)
             {
                 string strU = CUtilUnite.GetUniteInverse(m_calculQte.CoutUnitaire.Unite);
                 IUnite u    = CGestionnaireUnites.GetUnite(strU);
                 if (u != null && u.Classe.GlobalId == m_calculQte.Quantite.IUnite.Classe.GlobalId)
                 {
                     m_uniteCU         = u;
                     m_lblUniteCU.Text = u.LibelleCourt;
                 }
             }
         }
         else
         {
             m_txtCoutUnitaire.DoubleValue = null;
         }
     }
     m_bIsInitializing = false;
 }
示例#9
0
 //-----------------------------------------------------------------------
 private void UpdateMarge()
 {
     if (CurrentItem != null)
     {
         CBesoin besoin = CurrentItem.Tag as CBesoin;
         m_picMarge.Width = besoin.Niveau * 10;
     }
 }
        //--------------------------------------------------------------
        public double?CalculeCout(CBesoin besoin)
        {
            double?fCU = CoutUnitaire;

            if (fCU != null)
            {
                return(fCU * (double)m_nQuantite);
            }
            return(null);
        }
示例#11
0
        //--------------------------------------------------------------------
        private void AddItemBesoinEtFils(CItemBesoin itemParent, CBesoin besoin, List <CCustomizableListItem> lstItems)
        {
            CItemBesoin item = new CItemBesoin(besoin, itemParent);

            lstItems.Add(item);
            foreach (CBesoin besoinFils in besoin.BesoinsFils)
            {
                AddItemBesoinEtFils(item, besoinFils, lstItems);
            }
        }
示例#12
0
        //------------------------------------------------------------------------------
        private void afficherLaPhaseToolStripMenuItem_Click(object sender, EventArgs e)
        {
            CBesoin besoin = m_satisfactionSel as CBesoin;

            if (besoin != null && besoin.PhaseSpecifications != null)
            {
                CPhaseSpecifications phase = besoin.PhaseSpecifications;
                Init(phase);
                Refresh();
            }
        }
示例#13
0
        //---------------------------------------------------------------
        internal void AddItemsFils(CItemBesoin itemParent)
        {
            CBesoin b = itemParent.Besoin;

            foreach (CBesoin fils in b.BesoinsFils)
            {
                CItemBesoin item = new CItemBesoin(fils, itemParent);
                item.Index = fils.Index;
                AddItem(item, false);
                AddItemsFils(item);
            }
        }
 public void Init(IDonneeBesoin calcul, CBesoin besoin, CItemBesoin itemBesoin, IEnumerable <CItemBesoin> items)
 {
     m_bIsInitializing = true;
     m_besoin          = besoin;
     m_donneeOperation = calcul as CDonneeBesoinTypeOperation;
     if (m_donneeOperation != null)
     {
         Visible = true;
         FillFromDonnee();
     }
     m_bIsInitializing = false;
 }
示例#15
0
        private void m_picDragBesoin_DragEnter(object sender, DragEventArgs e)
        {
            CReferenceObjetDonnee refObj = e.Data.GetData(typeof(CReferenceObjetDonnee)) as CReferenceObjetDonnee;

            if (refObj != null)
            {
                CBesoin besoin = refObj.GetObjet(m_commande.ContexteDonnee) as CBesoin;
                if (besoin.DonneeBesoin is CDonneeBesoinTypeEquipement)
                {
                    e.Effect = DragDropEffects.Link;
                }
            }
        }
示例#16
0
 public virtual void Init(IDonneeBesoin calcul, CBesoin besoin, CItemBesoin itemBesoin, IEnumerable <CItemBesoin> items)
 {
     m_bIsInitializing   = true;
     m_besoin            = besoin;
     m_donneeConsommable = calcul as CDonneeBesoinTypeConsommable;
     if (m_donneeConsommable != null)
     {
         Visible = true;
         InitTypeConsommable();
         m_txtSelectTypeConsommable.ElementSelectionne = m_donneeConsommable.GetTypeConsommable(besoin.ContexteDonnee);
     }
     m_bIsInitializing = false;
 }
示例#17
0
        //------------------------------------------------------------------------------------------------------------------------------
        public static bool IsDirectSatisfactionFor(ISatisfactionBesoin satisfaction, CBesoin besoin)
        {
            if (besoin == null || satisfaction == null)
            {
                return(false);
            }
            CListeObjetsDonnees lstSatisfaits = satisfaction.RelationsSatisfaits;

            lstSatisfaits.Filtre = new CFiltreData(CBesoin.c_champId + "=@1",
                                                   besoin.Id);
            int nCoutn = lstSatisfaits.Count;

            return(nCoutn > 0);
        }
 public void Init(IDonneeBesoin calcul, CBesoin besoin, CItemBesoin itemBesoin, IEnumerable <CItemBesoin> items)
 {
     m_bIsInitializing  = true;
     m_donneeEquipement = calcul as CDonneeBesoinTypeEquipement;
     m_besoin           = besoin;
     if (m_donneeEquipement != null)
     {
         Visible = true;
         m_txtSelectTypeEquipement.Init(typeof(CTypeEquipement),
                                        "Libelle", false);
         m_txtSelectTypeEquipement.ElementSelectionne = m_donneeEquipement.GetTypeEquipement(besoin.ContexteDonnee);
     }
     m_bIsInitializing = false;
 }
示例#19
0
        //---------------------------------------------
        public double CalcImputationAFaireSur(IElementACout elementACout, bool bCoutReel)
        {
            if (elementACout == null || elementACout.Row.RowState == DataRowState.Deleted)
            {
                return(0);
            }
            CBesoin besoin = elementACout as CBesoin;

            if (besoin != null)
            {
                return(CUtilElementACout.CalcImputationAFaireSur(this, besoin, bCoutReel));
            }
            return(0);
        }
示例#20
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);
        }
示例#21
0
 //--------------------------------------------------------------------
 public CItemBesoin GetItem(CBesoin besoin)
 {
     if (besoin == null)
     {
         return(null);
     }
     foreach (CItemBesoin item in Items)
     {
         if (besoin.Equals(item.Besoin))
         {
             return(item);
         }
     }
     return(null);
 }
示例#22
0
        //--------------------------------------------------------------
        public double?CalculeCout(CBesoin besoin)
        {
            double?fValeur = null;

            if (m_valeurQuantite != null && m_valeurCU != null)
            {
                try
                {
                    CValeurUnite v = m_valeurQuantite * m_valeurCU;
                    fValeur = v.Valeur;
                }
                catch { }
            }
            return(fValeur);
        }
示例#23
0
        //--------------------------------------------------------------------
        public void RefreshBesoin(CBesoin besoin, bool bAvecFils)
        {
            CItemBesoin item = GetItem(besoin);

            if (item != null)
            {
                RefreshItem(item);
                if (bAvecFils)
                {
                    foreach (CBesoin fils in besoin.BesoinsFils)
                    {
                        RefreshBesoin(fils, true);
                    }
                }
            }
        }
示例#24
0
        public override DragDropEffects GetDragDropEffect(DragEventArgs eventArgs)
        {
            m_nIdBesoinLinkingSatisfaction = null;
            IDataObject     data = eventArgs.Data;
            DragDropEffects e    = DragDropEffects.None;

            if (!LockEdition)
            {
                e = base.GetDragDropEffect(eventArgs);
            }
            if (e != DragDropEffects.None)
            {
                return(e);
            }
            if (m_phaseSpecifications == null)
            {
                return(e);
            }

            if (m_satisfactionEnCoursDragDrop != null)
            {
                //Regarde si la satisfaction peut satisfaire le besoin sous la souris
                Point pt         = m_panelDessin.PointToClient(new Point(eventArgs.X, eventArgs.Y));
                int?  nItemIndex = GetItemIndexAtPosition(pt.Y);
                if (nItemIndex != null)
                {
                    CItemBesoin item = Items[nItemIndex.Value] as CItemBesoin;
                    if (item != null && item.Besoin != null &&
                        m_satisfactionEnCoursDragDrop.CanSatisfaire(item.Besoin))
                    {
                        m_nIdBesoinLinkingSatisfaction = item.Index;
                        return(DragDropEffects.Link);
                    }
                }
                else
                {
                    CBesoin besoinDrag = m_satisfactionEnCoursDragDrop as CBesoin;
                    if (besoinDrag != null && besoinDrag.PhaseSpecifications != m_phaseSpecifications && !LockEdition)
                    {
                        return(DragDropEffects.Copy);
                    }
                }
            }


            return(e);
        }
        //--------------------------------------------------------------
        public void InitFrom(CBesoin besoin, IDonneeBesoin donnee)
        {
            CDonneeBesoinQuantiteCU dCU = donnee as CDonneeBesoinQuantiteCU;

            if (dCU != null)
            {
                if (dCU.Quantite != null)
                {
                    Quantite = (int)dCU.Quantite.Valeur;
                }
                if (dCU.CoutUnitaire != null)
                {
                    m_bIsCoutTarif = false;
                    CoutUnitaire   = dCU.CoutUnitaire.Valeur;
                }
            }
        }
示例#26
0
 //---------------------------------------------------------------
 public double?CalculeCout(CBesoin besoin)
 {
     if (besoin.HasChildren)
     {
         double fTotal = 0;
         foreach (CBesoin b in besoin.BesoinsFils)
         {
             double?fCout = b.CoutSaisiTotalSansRegroupement;
             if (fCout != null)
             {
                 fTotal += fCout.Value;
             }
         }
         return(fTotal);
     }
     return(CoutSaisi);
 }
示例#27
0
        //------------------------------------------------------
        private int CalculeRectangles(ISatisfactionBesoin satisfaction, int nIndexNiveau, int nYTop)
        {
            int  nNextPos     = nYTop;
            bool bMargeOnNext = false;
            List <ISatisfactionBesoin> lstFils = new List <ISatisfactionBesoin>();
            CBesoin besoin = satisfaction as CBesoin;

            if (besoin != null)
            {
                foreach (CRelationBesoin_Satisfaction sat in besoin.RelationsSatisfactions)
                {
                    ISatisfactionBesoin fils = sat.Satisfaction;
                    if (fils != null)
                    {
                        if (m_setSatisfactionsIntegrés.Contains(fils) && !m_dicSatisfactionToRect.ContainsKey(fils))
                        {
                            lstFils.Add(fils);
                        }
                    }
                }
            }
            for (int nFils = 0; nFils < lstFils.Count; nFils++)
            {
                ISatisfactionBesoin fils = lstFils[nFils];
                if (!m_dicSatisfactionToRect.ContainsKey(fils))
                {
                    if (bMargeOnNext)
                    {
                        nNextPos += m_nMargeVerticale;
                    }
                    m_dicSatisfactionToRect[fils] = null;
                    nNextPos     = CalculeRectangles(fils, nIndexNiveau + 1, nNextPos);
                    bMargeOnNext = true;
                }
            }
            int       nHauteurTotale = Math.Max(m_nHauteurSatisfactionDefaut, nNextPos - nYTop);
            int       nX             = GetXIndexNiveau(nIndexNiveau, m_nLargeurNiveauDefaut, m_nLargeurFleches);
            Rectangle rct            = new Rectangle(nX, nYTop + nHauteurTotale / 2 - m_nMargeVerticale,
                                                     m_nLargeurNiveauDefaut,
                                                     m_nHauteurSatisfactionDefaut);

            m_dicSatisfactionToRect[satisfaction] = new CInfoDessinSatisfaction(rct, satisfaction, m_setSatisfactionsExpanded.Contains(satisfaction));
            return(nYTop + nHauteurTotale);
        }
示例#28
0
        //--------------------------------------------------------------------
        public void Init(CBesoin besoin)
        {
            CurrentItemIndex = null;
            Items            = new CCustomizableListItem[0];
            m_besoin         = besoin;

            if (m_besoin != null)
            {
                List <CCustomizableListItem> items        = new List <CCustomizableListItem>();
                CListeObjetsDonnees          lstQuantites = m_besoin.Quantites;
                lstQuantites.Filtre = new CFiltreData(CBesoinQuantite.c_champIdQteParente + " is null");
                foreach (CBesoinQuantite q in lstQuantites)
                {
                    AddItemQuantiteEtFils(null, q, items);
                }
                Items = items.ToArray();
            }
            Refresh();
        }
示例#29
0
 public void Init(IDonneeBesoin calcul, CBesoin besoin, CItemBesoin itemBesoin, IEnumerable <CItemBesoin> items)
 {
     m_bIsInitializing = true;
     m_donneeProjet    = calcul as CDonneeBesoinProjet;
     m_besoin          = besoin;
     if (m_donneeProjet != null)
     {
         if (!besoin.HasChildren)
         {
             m_txtCoutUnitaire.Visible     = true;
             m_txtCoutUnitaire.DoubleValue = m_donneeProjet.CoutSaisi;
         }
         else
         {
             m_txtCoutUnitaire.Visible = false;
         }
     }
     m_bIsInitializing = false;
 }
示例#30
0
        //------------------------------------------------------
        private CNiveau CalculeNiveauSuivant(  )
        {
            CNiveau niveauSuiv = m_listeNiveaux[m_listeNiveaux.Count - 1];
            CNiveau niveau     = new CNiveau(m_listeNiveaux[m_listeNiveaux.Count - 1].Niveau + 1);

            foreach (ISatisfactionBesoin sat in niveauSuiv.Satisfactions)
            {
                CBesoin besoin = sat as CBesoin;
                if (besoin != null)
                {
                    foreach (CRelationBesoin_Satisfaction rel in besoin.RelationsSatisfactions)
                    {
                        niveau.AddSatisfaction(this, rel.Satisfaction);
                    }
                }
            }
            m_listeNiveaux.Add(niveau);
            return(niveau);
        }