Beispiel #1
0
        /// <summary>Получить значение без учёта тарифов!</summary>
        public decimal FromulaNotTrKf(clValue value)
        {
            if (_sample == null)
            {
                MessageBox.Show("Не выбран отбор!");
                return(0);
            }
            decimal result      = 0;
            string  formulaText = value.CalculationFormula.Formula;

            var formula = Helpers.CalcHelper.GetFormula(formulaText);

            SetConst(formula, value);

            /// <summary>Коэффициент</summary>
            formula.TrySetValue(Const_Class.Coeff, 1);
            /// <summary>Тариф загрязнения</summary>
            formula.TrySetValue(Const_Class.TariffPollution, 1);
            formula.TrySetValue(Const_Class.Tariff, 1);

            foreach (var vol in _sample.Volumes)
            {
                formula.TrySetValue(Const_Class.Volume, (decimal)vol.Value);
                result += GetRoundedFormulaSumm(formula);
            }
            return(result);
        }
Beispiel #2
0
        /// <summary>Выполнение формул С объёмом</summary>
        public KeyValuePair <uint, decimal> RunFormula(clValue value, uint volumeID = 0)
        {
            decimal result      = 0;
            string  formulaText = value.CalculationFormula.Formula;

            var formula = Helpers.CalcHelper.GetFormula(formulaText);

            if (SetConst(formula, value))
            {
                if (volumeID > 0)
                {
                    Volume volume = _sample.Volumes.First(x => x.ID == volumeID);

                    var period = Helpers.LogicHelper.PeiodLogic.FirstModel(volume.PeriodID);

                    if (value.PriceNorm == null)
                    {
                        formula.TrySetValue(Const_Class.Tariff, period.Price);
                    }

                    formula.TrySetValue(Const_Class.Volume, (decimal)volume.Value);

                    result += GetRoundedFormulaSumm(formula);
                }
                else if (Norm.CurtName.Contains("621"))
                {
                    foreach (var volume in _sample.Volumes)
                    {
                        var period = Helpers.LogicHelper.PeiodLogic.FirstModel(volume.PeriodID);

                        if (value.PriceNorm == null)
                        {
                            formula.TrySetValue(Const_Class.Tariff, period.Price);
                        }

                        formula.TrySetValue(Const_Class.Volume, (decimal)volume.Value);

                        result += Math_Class.CalculateStroku(formulaText, 7);
                    }
                }
                else
                {
                    result = GetRoundedFormulaSumm(formula);
                }
            }

            return(new KeyValuePair <uint, decimal>(value.Pollution.ID, result));
        }
Beispiel #3
0
        /// <summary>Заполнение констант</summary>
        public static bool SetConst(Formulator.Formula formula, clValue value)
        {
            /// <summary>Фактическая концентрация</summary>
            formula.TrySetValue(Const_Class.FaktDensities, value.Value);
            /// <summary>Допустимая концентрация(НОРМА)</summary>
            if (formula.GetVarriable(Const_Class.PermissibleDensities) != null)
            {
                if (value.ValueNorm != null && value.ValueNorm.To > 0)
                {
                    formula.TrySetValue(Const_Class.PermissibleDensities, value.ValueNorm.To);
                }
                else
                {
                    return(false);
                }
            }

            /// <summary>Коэффициент</summary>
            if (formula.GetVarriable(Const_Class.Coeff) != null)
            {
                if (value.CoefficientValue != null && value.CoefficientValue.Value > 0)
                {
                    formula.TrySetValue(Const_Class.Coeff, value.CoefficientValue.Value);
                }
                else
                {
                    return(false);
                }
            }

            /// <summary>Тариф загрязнения</summary>
            if (formula.GetVarriable(Const_Class.TariffPollution) != null)
            {
                if (value.PriceNorm != null && value.PriceNorm.Price > 0)
                {
                    formula.TrySetValue(Const_Class.TariffPollution, value.PriceNorm.Price);
                }
                else
                {
                    return(false);
                }
            }

            return(true);
        }
Beispiel #4
0
 /// <summary>Заполнение констант</summary>
 public static void SetConst(ref string formula, clValue value)
 {
     /// <summary>Фактическая концентрация</summary>
     formula = formula.Replace(Const_Class.FaktDensities, value.Value.ToString());
     /// <summary>Допустимая концентрация(НОРМА)</summary>
     if (value.ValueNorm != null)
     {
         formula = formula.Replace(Const_Class.PermissibleDensities, value.ValueNorm.To.ToString());
     }
     /// <summary>Коэффициент</summary>
     if (value.CoefficientValue != null)
     {
         formula = formula.Replace(Const_Class.Coeff, value.CoefficientValue.Value.ToString());
     }
     /// <summary>Тариф загрязнения</summary>
     if (value.PriceNorm != null)
     {
         formula = formula.Replace(Const_Class.TariffPollution, value.PriceNorm.Price.ToString());
     }
 }