/// <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); }
/// <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)); }
/// <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); }
/// <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()); } }