예제 #1
0
        //-------------------------------------------------------------------
        public override CResultAErreur TraitementAvantSauvegarde(CContexteDonnee contexte)
        {
            CResultAErreur result = base.TraitementAvantSauvegarde(contexte);

            if (!result)
            {
                return(result);
            }
            DataTable table = contexte.Tables[CValorisationElement.c_nomTable];

            if (table == null)
            {
                return(result);
            }
            ArrayList lst = new ArrayList(table.Rows);

            foreach (DataRow row in lst)
            {
                if (row.RowState != DataRowState.Unchanged)
                {
                    ///Cherche les impacts sur les couts
                    CValorisationElement valorisation = new CValorisationElement(row);
                    if (row.RowState == DataRowState.Deleted)
                    {
                        valorisation.VersionToReturn = DataRowVersion.Original;
                    }
                    CLotValorisation lot = valorisation.LotValorisation;
                    if (lot.Row.RowState == DataRowState.Deleted)
                    {
                        lot.VersionToReturn = DataRowVersion.Original;
                    }
                    foreach (CLivraisonLotValorisation livs in lot.RelationsLivraisons)
                    {
                        CLivraisonEquipement livraison = livs.Livraison;
                        if (livraison == null)
                        {
                            continue;
                        }
                        if (livraison.Row.RowState == DataRowState.Deleted)
                        {
                            livraison.VersionToReturn = DataRowVersion.Original;
                        }
                        CCommande commande = livraison.Commande;
                        if (commande == null || commande.Row.RowState == DataRowState.Deleted)
                        {
                            continue;//la commande a été supprimée
                        }
                        CListeObjetsDonnees lignes = commande.Lignes;
                        foreach (CLigneCommande ligne in lignes)
                        {
                            if (ligne.Row.RowState != DataRowState.Deleted)
                            {
                                CUtilElementACout.OnChangeCout(ligne, true, false);//changement du cout réel
                            }
                        }
                    }
                }
            }
            return(result);
        }
예제 #2
0
 //------------------------------------------------
 public void SetCoutAvecCalculDesParents(double fValeur, bool bCoutReel)
 {
     SetCoutSansCalculDesParents(fValeur, bCoutReel);
     if (bCoutReel)
     {
         CUtilElementACout.OnChangeCout(this, true, false);
     }
 }
예제 #3
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);
        }
예제 #4
0
        public void AfterTotalChanged(CBesoin besoin)
        {
            if (m_bIsDispatchingCout || besoin == null)
            {
                return;
            }
            m_bIsDispatchingCout = true;
            bool bHasDeps = false;

            foreach (CBesoin b in besoin.GetTousLesBesoinsDontLeCoutEstDépendantDeMonCout())
            {
                CUtilElementACout.OnChangeCout(b, false, false);
                CUtilElementACout.OnChangeCout(b, true, false);
                RefreshBesoin(b, false);
                bHasDeps = true;
            }
            m_panelResumeElementACout.Init(m_phaseSpecifications);
            if (bHasDeps)
            {
                m_panelDessin.Invalidate();
            }
            m_bIsDispatchingCout = false;
        }
예제 #5
0
 public static CResultAErreur CalculeCoutEnTraitementAvantSauvegarde(CContexteDonnee ctxDonnee, Hashtable tableDatas)
 {
     return(CUtilElementACout.RecalculeCoutsARecalculer(ctxDonnee));
 }
예제 #6
0
        //--------------------------------------------------------------------
        protected override void m_panelDessin_DragDrop(object sender, DragEventArgs e)
        {
            HideHighlight();
            DragDropEffects eff = GetDragDropEffect(e);

            if (eff == DragDropEffects.Move && !LockEdition)
            {
                base.m_panelDessin_DragDrop(sender, e);
            }
            if (eff == DragDropEffects.Link && m_nIdBesoinLinkingSatisfaction != null && m_satisfactionEnCoursDragDrop != null)
            {
                CItemBesoin item = Items[m_nIdBesoinLinkingSatisfaction.Value] as CItemBesoin;
                if (item != null && item.Besoin != null && m_satisfactionEnCoursDragDrop.CanSatisfaire(item.Besoin))
                {
                    if (CUtilElementACout.IsSourceDe(item.Besoin, m_satisfactionEnCoursDragDrop))
                    {
                        CFormAlerte.Afficher(I.T("Can not perform requested operation. @1 is a solution of @2|20675",
                                                 item.Besoin.Libelle,
                                                 m_satisfactionEnCoursDragDrop.LibelleSatisfactionComplet), EFormAlerteType.Exclamation);
                        return;
                    }
                    if (CFormAlerte.Afficher(I.T("@1 will be considered as a solution of @2. Continue ?|20631",
                                                 m_satisfactionEnCoursDragDrop.LibelleSatisfactionComplet, item.Besoin.Libelle),
                                             EFormAlerteBoutons.OuiNon, EFormAlerteType.Question) == DialogResult.Yes)
                    {
                        CBesoin besoin = item.Besoin;
                        if (LockEdition)
                        {
                            besoin = item.Besoin;
                            besoin.BeginEdit();
                        }
                        besoin.AddSatisfaction(m_satisfactionEnCoursDragDrop, null);
                        if (LockEdition)
                        {
                            CResultAErreur result = besoin.CommitEdit();
                            if (!result)
                            {
                                CFormAlerte.Afficher(result.Erreur);
                                besoin.CancelEdit();
                            }
                        }
                        RefreshItem(item);
                        m_panelDessin.Invalidate();
                    }
                    else
                    {
                        e.Effect = DragDropEffects.None;
                    }
                }
            }
            else if (eff == DragDropEffects.Copy && m_phaseSpecifications != null && !LockEdition)
            {
                CBesoin besoinDrag = m_satisfactionEnCoursDragDrop as CBesoin;
                if (besoinDrag != null && besoinDrag.PhaseSpecifications != m_phaseSpecifications)
                {
                    CItemBesoin newItem = CreateSoluce(besoinDrag);
                    RenumerotteItems();
                    Refresh();
                }
            }
        }