示例#1
0
文件: CStock.cs 项目: ykebaili/Timos
        public CRelationTypeEquipement_Stock GetRelationTypeEquipemetStock(CTypeEquipement typeEquipement)
        {
            if (typeEquipement == null)
            {
                return(null);
            }

            CRelationTypeEquipement_Stock rel = new CRelationTypeEquipement_Stock(this.ContexteDonnee);

            if (rel.ReadIfExists(
                    new CFiltreData(
                        CStock.c_champId + " = @1 and " + CTypeEquipement.c_champId + " = @2 ",
                        this.Id,
                        typeEquipement.Id)))
            {
                return(rel);
            }
            else
            {
                rel.CreateNewInCurrentContexte();
                rel.Stock          = this;
                rel.TypeEquipement = typeEquipement;

                return(rel);
            }
        }
        //------------------------------------------------------------------------------------
        public override CResultAErreur TraitementAvantSauvegarde(CContexteDonnee contexte)
        {
            CResultAErreur result = base.TraitementAvantSauvegarde(contexte);

            if (!result)
            {
                return(result);
            }

            DataTable      dt        = contexte.Tables[CRelationTypeEquipement_Stock.c_nomTable];
            ArrayList      rows      = new ArrayList(dt.Rows);
            CResultAErreur resultloc = CResultAErreur.True;

            foreach (DataRow row in rows)
            {
                if (row.RowState == DataRowState.Modified || row.RowState == DataRowState.Added)
                {
                    CRelationTypeEquipement_Stock rel = new CRelationTypeEquipement_Stock(row);
                    int nbApres = rel.NombreEnStock;

                    if (row.HasVersion(DataRowVersion.Original))
                    {
                        DataRowVersion currentVersion = rel.VersionToReturn;
                        rel.VersionToReturn = DataRowVersion.Original;
                        int nbAvant = rel.NombreEnStock;
                        rel.VersionToReturn = currentVersion;
                        // Si seuil Alerte atteint
                        if (nbAvant > rel.StockAlerteApplique && nbApres <= rel.StockAlerteApplique)
                        {
                            rel.EnregistreEvenement(CRelationTypeEquipement_Stock.c_champEventStockAlerte, false);
                        }
                        // Si seuil Critique atteint
                        if (nbAvant > rel.StockCritiqueApplique && nbApres <= rel.StockCritiqueApplique)
                        {
                            rel.EnregistreEvenement(CRelationTypeEquipement_Stock.c_champEventStockCritique, false);
                        }
                    }
                }
            }
            return(result);
        }
        /// ////////////////////////////////////////////////////////////
        public override CResultAErreur VerifieDonnees(CObjetDonnee objet)
        {
            CResultAErreur result = CResultAErreur.True;

            try
            {
                CRelationTypeEquipement_Stock relation = (CRelationTypeEquipement_Stock)objet;
                if (relation.TypeEquipement == null)
                {
                    result.EmpileErreur(I.T("The Equipment type cannot be null|109"));
                }
                if (relation.Stock == null)
                {
                    result.EmpileErreur(I.T("The Stock cannot be null|205"));
                }
            }
            catch (Exception e)
            {
                result.EmpileErreur(new CErreurException(e));
            }
            return(result);
        }
示例#4
0
        //----------------------------------------------------------------------------------
        public override CResultAErreur TraitementAvantSauvegarde(CContexteDonnee contexte)
        {
            CResultAErreur result = base.TraitementAvantSauvegarde(contexte);

            if (!result)
            {
                return(result);
            }

            DataTable      dt        = contexte.Tables[CEquipement.c_nomTable];
            ArrayList      rows      = new ArrayList(dt.Rows);
            CResultAErreur resultloc = CResultAErreur.True;

            foreach (DataRow row in rows)
            {
                if (row.RowState == DataRowState.Modified || row.RowState == DataRowState.Added || row.RowState == DataRowState.Deleted)
                {
                    CEquipement eqpt = new CEquipement(row);

                    /*if (eqpt.ParametrageCoordonneesApplique == null)
                     *      eqpt.Coordonnee = "";*/


                    CStock stockApres = null;
                    if (row.RowState != DataRowState.Deleted)
                    {
                        stockApres = eqpt.EmplacementStock;
                    }

                    if (row.HasVersion(DataRowVersion.Original))
                    {
                        DataRowVersion currentVersion = eqpt.VersionToReturn;
                        eqpt.VersionToReturn = DataRowVersion.Original;
                        CTypeEquipement typeAvant  = eqpt.TypeEquipement;
                        CStock          stockAvant = eqpt.EmplacementStock;
                        eqpt.VersionToReturn = currentVersion;

                        if (stockAvant == stockApres)
                        {
                            return(result);
                        }

                        if (stockAvant != null && stockAvant.IsValide())
                        {
                            // Descrémente le nombre en stock
                            CRelationTypeEquipement_Stock rel = stockAvant.GetRelationTypeEquipemetStock(typeAvant);
                            if (rel != null && rel.NombreEnStock > 0)
                            {
                                int nbAvant = rel.NombreEnStock;
                                rel.Row[CRelationTypeEquipement_Stock.c_champNombreEnStock] = rel.NombreEnStock - 1;
                            }
                        }
                    }


                    if (stockApres != null && stockApres.IsValide())
                    {
                        // Incrémente le nombre en stock
                        CRelationTypeEquipement_Stock rel = stockApres.GetRelationTypeEquipemetStock(eqpt.TypeEquipement);
                        if (rel != null)
                        {
                            rel.Row[CRelationTypeEquipement_Stock.c_champNombreEnStock] = rel.NombreEnStock + 1;
                        }
                    }

                    result = SObjetAFilsACoordonneeServeur.TraitementAvantSauvegarde(eqpt);
                    if (!result)
                    {
                        return(result);
                    }
                }
            }

            return(result);
        }