Beispiel #1
0
        private void Calc644(BaseCalc_Class calc)
        {
            int index = 1;

            BaseCalc_Class.clValue[] values;
            List <decimal>           summa = new List <decimal>();

            values = calc.Value.OrderBy(x => x.Pollution.Number).ToArray();

            foreach (var vol in _sample.Volumes)
            {
                Period period = Helpers.LogicHelper.PeiodLogic.FirstModel(vol.PeriodID);
                foreach (var value in values)
                {
                    SetDefCol(index, value);

                    decimal K = calc.RunFormula(value).Value;

                    table.value.Add(new MyTools.C_ValueCell(K, index - 1, 7));
                    //summa.Add(calc.Answer.First(x => x.Key == vol.ID).Value.Summ.First(x => x.Key == one._Pollution.ID).Value);
                    summa.Add(calc.Answer.First(x => x.Key == vol.ID).Value.Summ.First(x => x.PollutionID == value.Pollution.ID).Summ);
                    //summa.Add(Math.Round(K * (decimal)vol.Value * period.Price, 2, MidpointRounding.AwayFromZero));
                    table.value.Add(new MyTools.C_ValueCell(summa.Last().ToMoney(), index - 1, 8, style: Styles.s_RLTB_RC_T10_W));
                    index++;
                }

                table.value.Add(new MyTools.C_ValueCell(period.Price.ToMoney(), index - values.Length - 1, 4, values.Length - 1));
                table.value.Add(new MyTools.C_ValueCell(vol.Value, index - values.Length - 1, 5, values.Length - 1, 1));
            }

            table.value.Add(new MyTools.C_ValueCell(summa.Sum().ToMoney(), index - 1, 8, style: Styles.s_RLTB_RC_T10_W));
            GeneralSumma.Add(Math.Round(summa.Sum() * (1 + AdditionnTable.GetPeriod.NDS / 100), 2, MidpointRounding.AwayFromZero));
            table.value.Add(new MyTools.C_ValueCell(GeneralSumma.Last().ToMoney(), index, 8, style: Styles.s_RLTB_RC_T10_W_B));
        }
Beispiel #2
0
        private void FormulControl(BaseCalc_Class calc)
        {
            string formula = string.Empty;

            foreach (var one in PollutionBase_Class.AllCalculationFormul.Where(x => x.Label.Length > 0).OrderBy(x => x.Number).GroupBy(x => x.Label))
            {
                foreach (var pol in one.Select(x => x.PollutionID))
                {
                    if (calc.Value.Select(x => x.Pollution.ID).Contains(pol))
                    {
                        formula += $" + {one.Key}";
                        goto Next;
                    }
                }
                Substitute.AddExchange(one.Key, (e) => e.Row.ZeroHeight = true, 1);
                Next :;
            }
            Substitute.AddExchange(mark.formula, formula.Substring(3), 1);
        }
        /// <summary>Протестит значения на косяки</summary>
        public static HitModePollution[] TestValues(BaseCalc_Class calc)
        {
            var last = LastHitObject(calc.Objecte.ID);
            List <HitModePollution> result = new List <HitModePollution>();

            foreach (var mode in HitModePollutions.Where(x => x.Joint && x.Formula.Length > 0))
            {
                string             formula = mode.Formula;
                HitSelectPollution joint   = last.FirstOrDefault(x => x.IDHitModePollution == mode.ID);
                //formula = formula.Replace(Const_Class.Multiplier, mode.Multi(joint == null ? 0 : joint.Number).ToString());
                //formula = formula.Replace(Const_Class.Summa, calc.Answer.Sum(x=>x.Value.Summ).ToString());
                formula = formula.Replace(Const_Class.Limit, AdditionnTable.ListPeriod.Last(x => x.YM <= DateControl_Class.SelectMonth).MinLimits.ToString());

                if (mode.PollutionID > 0)
                {
                    if (calc.Value.FirstOrDefault(x => x.Pollution.ID == mode.PollutionID) != null)
                    {
                        BaseCalc_Class.SetConst(ref formula, calc.Value.First(x => x.Pollution.ID == mode.PollutionID));
                        if (Math_Class.Get_Comparison_Calc(formula))
                        {
                            result.Add(mode);
                        }
                    }
                }
                else
                {
                    foreach (var one in calc.Value)
                    {
                        BaseCalc_Class.SetConst(ref formula, one);
                        if (Math_Class.Get_Comparison_Calc(formula))
                        {
                            result.Add(mode);
                        }
                    }
                }
            }
            return(result.ToArray());
        }
Beispiel #4
0
        private bool Calc621(BaseCalc_Class calc, bool PriceNorm)
        {
            calc.Calc();
            int index = 1;

            BaseCalc_Class.clValue[] noNormValues;
            List <decimal>           summa = new List <decimal>();

            if (PriceNorm)
            {
                noNormValues = calc.Value.Where(x => x.PriceNorm != null).OrderBy(x => x.Pollution.Number).ToArray();

                foreach (var vol in _sample.Volumes)
                {
                    foreach (var one in noNormValues)
                    {
                        var volume = calc.Answer.FirstOrDefault(x => x.Key == vol.ID);

                        if (volume.Value == null)
                        {
                            continue;
                        }

                        var value = volume.Value.Summ.FirstOrDefault(x => x.PollutionID == one.Pollution.ID);

                        if (value == null)
                        {
                            continue;
                        }

                        SetDefCol(index, one);

                        table.value.Add(new MyTools.C_ValueCell(calc.FromulaNotTrKf(one), index - 1, 5));

                        table.value.Add(new MyTools.C_ValueCell(Math.Round(one.PriceNorm.Price, 2), index - 1, 6));

                        table.value.Add(new MyTools.C_ValueCell(one.CoefficientValue != null ? Math.Round(one.CoefficientValue.Value, 1) : 1, index - 1, 7));

                        //summa.Add(Math.Round(calc.RunFormula(one), 2, MidpointRounding.AwayFromZero));
                        summa.Add(calc.Answer.First(x => x.Key == vol.ID).Value.Summ.First(x => x.PollutionID == one.Pollution.ID).Summ);
                        table.value.Add(new MyTools.C_ValueCell(summa.Last().ToMoney(), index - 1, 8, style: Styles.s_RLTB_RC_T10_W));

                        index++;
                    }
                }

                table.value.Add(new MyTools.C_ValueCell(_sample.Volumes.Sum(x => x.Value), 0, 4, index - 2));
                table.value.Add(new MyTools.C_ValueCell(summa.Sum().ToMoney(), index - 1, 8, style: Styles.s_RLTB_RC_T10_W));
                GeneralSumma.Add(Math.Round(summa.Sum() * (1 + AdditionnTable.GetPeriod.NDS / 100), 2, MidpointRounding.AwayFromZero));
                table.value.Add(new MyTools.C_ValueCell(GeneralSumma.Last().ToMoney(), index, 8, style: Styles.s_RLTB_RC_T10_W_B));
            }
            else
            {
                noNormValues = calc.Value.Where(x => x.PriceNorm == null).OrderBy(x => x.Pollution.Number).ToArray();

                if (noNormValues.Length == 0)
                {
                    return(false);
                }

                foreach (var vol in _sample.Volumes)
                {
                    foreach (var one in noNormValues)
                    {
                        var answerVolume = calc.Answer.FirstOrDefault(x => x.Key == vol.ID);

                        if (answerVolume.Value != null)
                        {
                            var pollutionValue = answerVolume.Value.Summ.FirstOrDefault(x => x.PollutionID == one.Pollution.ID);

                            if (pollutionValue != null)
                            {
                                SetDefCol(index, one);

                                //table.value.Add(new MyTools.C_ValueCell(calc.RunningFormulaVolume(one, vol.ID), index - 1, 5));
                                summa.Add(pollutionValue.Summ);
                                //summa.Add(Math.Round(calc.RunFormula(one, vol.ID), 2));
                                table.value.Add(new MyTools.C_ValueCell(summa.Last().ToMoney(), index - 1, 8, style: Styles.s_RLTB_RC_T10_W));

                                index++;
                            }
                        }
                    }

                    table.value.Add(new MyTools.C_ValueCell(vol.Value, index - noNormValues.Length - 1, 6, noNormValues.Length - 1, 1));
                    table.value.Add(new MyTools.C_ValueCell(Math.Round(Helpers.LogicHelper.PeiodLogic.FirstModel(vol.PeriodID).Price, 2, MidpointRounding.AwayFromZero), index - noNormValues.Length - 1, 4, noNormValues.Length - 1, 1));
                }

                table.value.Add(new MyTools.C_ValueCell(summa.Sum().ToMoney(), index - 1, 8, style: Styles.s_RLTB_RC_T10_W));
                GeneralSumma.Add(Math.Round(summa.Sum() * (1 + AdditionnTable.GetPeriod.NDS / 100), 2, MidpointRounding.AwayFromZero));
                table.value.Add(new MyTools.C_ValueCell(GeneralSumma.Last().ToMoney(), index, 8, style: Styles.s_RLTB_RC_T10_W_B));
            }

            return(true);
        }