Example #1
0
 //Сохранение периода расчета в ControllerData, saveStartStop = true - сохраняются также время запуска расчета, время останова и т.д.
 private void SavePeriod(bool saveStartStop)
 {
     try
     {
         _lastErrorPos = saveStartStop || _lastErrorPos != 1 ? 0 : 2;
         UpdateTablo();
         _sysResult.PutSubValue("PeriodInfo", "PeriodBegin", PeriodBegin.ToString());
         _sysResult.PutSubValue("PeriodInfo", "PeriodEnd", PeriodEnd.ToString());
         if (_lastErrorTime == PeriodBegin)
         {
             _sysResult.PutSubValue("LastErrorInfo", "ErrorText", _lastErrorText);
             _sysResult.PutSubValue("LastErrorInfo", "ErrorPeriodBegin", _lastErrorTime.ToString());
         }
         if (saveStartStop)
         {
             _lastErrorPos = 0;
             _sysResult.PutSubValue("PeriodInfo", "CalcName", CalcName);
             _sysResult.PutSubValue("PeriodInfo", "StartMoment", StartMoment.ToString());
             _sysResult.PutSubValue("PeriodInfo", "StartTime", StartTime.ToString());
             _sysResult.PutSubValue("PeriodInfo", "StopTime", StopTime.ToString());
             _sysResult.PutSubValue("PeriodInfo", "IsStopTime", IsStopTime ? "True" : "False");
         }
     }
     catch (Exception ex)
     {
         AddError("Ошибка записи в SysTabl файла результатов", ex);
     }
 }
Example #2
0
        //Добавить нагрузку
        public void PrintQ(int number, int offset, DxfDocument printQ)
        {
            var pivot       = new Line(new Vector2(0 + offset, 0), new Vector2(0 + offset, 10));
            var lineEnd     = new Line(new Vector2(-2 + offset, 10), new Vector2(4 + offset, 10));
            var lineStart   = new Line(new Vector2(-4 + offset, 0), new Vector2(2 + offset, 0));
            var arrowEnd    = AddArrow(new Vector2(4 + offset, 10), Directions.Right);
            var arrowStart  = AddArrow(new Vector2(-4 + offset, 0), Directions.Left);
            var endMoment   = AddMomentLines(new Vector2(0 + offset, 10), EndMoment) ?? new List <Line>();
            var startMoment = AddMomentLines(new Vector2(0 + offset, 0), StartMoment) ?? new List <Line>();
            var lines       = new List <Line>()
            {
                pivot, lineEnd, lineStart
            };

            lines = lines.Union(arrowEnd).Union(arrowStart).Union(endMoment).Union(startMoment).ToList();
            foreach (var line in lines)
            {
                line.Lineweight = Lineweight.W30;
            }

            var textEnd         = new Text("Q" + number.ToString() + "к", new Vector2(5 + offset, 10), 1);
            var textStart       = new Text("Q" + number.ToString() + "н", new Vector2(-7 + offset, 0), 1);
            var textEndMoment   = new Text(EndMoment.ToString("#.###; #.###"), new Vector2(-8 + offset, 12), 1);
            var textStartMoment = new Text(StartMoment.ToString("#.###; #.###"), new Vector2(3 + offset, 0), 1);
            var textLength      = new Text(Length.ToString("#.###;") + "м", new Vector2(1 + offset, 5), 1);

            List <EntityObject> load = new List <EntityObject>();

            if (Load != 0)
            {
                load.AddRange(AddLoad(new Vector2(-2 + offset, 0), new Vector2(-2 + offset, 10), Directions.Right));
                var textLoad = new Text(Load.ToString("####") + "кН/м", new Vector2(-8 + offset, 5), 1);
                load.Add(textLoad);
            }

            List <EntityObject> objects = new List <EntityObject>()
            {
                textEnd, textStart, textEndMoment, textStartMoment, textLength
            };

            objects = objects.Union(lines).Union(load).ToList();

            printQ.AddEntity(objects);
        }
        public static void ScheduleCalculate()
        {
            Globals.TaskList.Sort(TPC);
            DateTime StartMoment = new DateTime();

            StartMoment = DateTime.Now;
            DateTime WeekDayStart = DateTime.Now, WeekDayEnd = DateTime.Now;
            bool     checker;
            int      y, m, d, h, n, s;

            foreach (TaskObject element in Globals.TaskList)
            {
                backpoint :;
                switch (StartMoment.DayOfWeek)
                {
                case DayOfWeek.Monday :
                    WeekDayStart = Globals.MondayStartTime;
                    WeekDayEnd   = Globals.MondayEndTime;
                    break;

                case DayOfWeek.Tuesday:
                    WeekDayStart = Globals.TuesdayStartTime;
                    WeekDayEnd   = Globals.TuesdayEndTime;
                    break;

                case DayOfWeek.Wednesday:
                    WeekDayStart = Globals.WednesdayStartTime;
                    WeekDayEnd   = Globals.WednesdayEndTime;
                    break;

                case DayOfWeek.Thursday:
                    WeekDayStart = Globals.ThursdayStartTime;
                    WeekDayEnd   = Globals.ThursdayEndTime;
                    break;

                case DayOfWeek.Friday:
                    WeekDayStart = Globals.FridayStartTime;
                    WeekDayEnd   = Globals.FridayEndTime;
                    break;

                case DayOfWeek.Saturday:
                    WeekDayStart = Globals.SaturdayStartTime;
                    WeekDayEnd   = Globals.SaturdayEndTime;
                    break;

                case DayOfWeek.Sunday:
                    WeekDayStart = Globals.SundayStartTime;
                    WeekDayEnd   = Globals.SundayEndTime;
                    break;
                }

                checker = true;

                checker = StartMoment.TimeOfDay < Globals.WakeUpTime.TimeOfDay;

                if (checker)
                {
                    //StartMoment.AddHours(Globals.WakeUpTime.Hour - StartMoment.Hour);
                    y           = StartMoment.Year;
                    m           = StartMoment.Month;
                    d           = StartMoment.Day;
                    h           = Globals.WakeUpTime.Hour;
                    n           = 0;
                    s           = 0;
                    StartMoment = new DateTime(y, m, d, h, n, s);
                }

                checker = StartMoment.AddHours(element.EstimatedTime).TimeOfDay > WeekDayStart.TimeOfDay && StartMoment.TimeOfDay < WeekDayEnd.TimeOfDay;

                if (checker)
                {
                    //StartMoment.AddHours(-StartMoment.Hour + WeekDayEnd.Hour);
                    y           = StartMoment.Year;
                    m           = StartMoment.Month;
                    d           = StartMoment.Day;
                    h           = WeekDayEnd.Hour;
                    n           = 0;
                    s           = 0;
                    StartMoment = new DateTime(y, m, d, h, n, s);
                }

                checker = StartMoment.AddHours(element.EstimatedTime).TimeOfDay < Globals.BedTime.TimeOfDay;

                if (checker)
                {
                    element.StartDate = StartMoment;
                    element.EndDate   = element.StartDate.AddHours(element.EstimatedTime);

                    y = element.EndDate.Year;
                    m = element.EndDate.Month;
                    d = element.EndDate.Day;
                    h = element.EndDate.Hour + 1;
                    n = element.EndDate.Minute;
                    s = element.EndDate.Second;

                    StartMoment = new DateTime(y, m, d, h, n, s);
                }
                else
                {
                    //StartMoment.AddHours(Globals.WakeUpTime.Hour-StartMoment.Hour);
                    //StartMoment.AddMinutes(-StartMoment.Minute);
                    y           = StartMoment.Year;
                    m           = StartMoment.Month;
                    d           = StartMoment.Day + 1;
                    h           = Globals.WakeUpTime.Hour;
                    n           = 0;
                    s           = 0;
                    StartMoment = new DateTime(y, m, d, h, n, s);
                    goto backpoint;
                }
            }
        }
        private void PrijsBerekening()
        {
            double btwPercentage = 0.06;

            if (Arrengement == Arrengement.Wellness)
            {
                VastePrijs = (double)Limousine.WellnessPrijs;
                TotaalMetKortingExclusiefBtw = (double)Limousine.WellnessPrijs;
            }
            else if (Arrengement == Arrengement.Wedding)
            {
                //maximum aantal uren controle nog toevoegen.
                OverUurPrijs  = Math.Round(Limousine.EersteUurPrijs * 0.65 / 5) * 5;
                AantalOverUur = AantalUur - 7;
                TotaalMetKortingExclusiefBtw = AantalOverUur * OverUurPrijs;
                //TotaalExclusiefBtw = WeddingExtraUrenPrijsBerekening(AantalUur, Limousine);

                VastePrijs = (double)Limousine.WeddingPrijs;
                TotaalMetKortingExclusiefBtw += VastePrijs;
            }
            else if (Arrengement == Arrengement.NightLife)
            {
                NachtUurPrijs  = Math.Round(Limousine.EersteUurPrijs * 1.4 / 5) * 5;
                AantalNachtUur = AantalUur - 7;
                TotaalMetKortingExclusiefBtw = AantalNachtUur * NachtUurPrijs;

                VastePrijs = (double)Limousine.NightlifePrijs;
                TotaalMetKortingExclusiefBtw += VastePrijs;
            }
            else if (Arrengement == Arrengement.Business || Arrengement == Arrengement.Airport)
            {
                EersteUurPrijs  = Limousine.EersteUurPrijs;
                AantalEersteUur = 1;
                TotaalMetKortingExclusiefBtw = EersteUurPrijs * AantalEersteUur;

                DateTime eindMoment = StartMoment.AddHours(AantalUur);

                //geen nachturen (BUITEN)
                if (StartMoment.Hour < 22 && StartMoment.Hour >= 7 && AantalUur < 22 - StartMoment.Hour)
                {
                    AantalStandaardUur = AantalUur - 1;
                }
                //Enkel nachturen (BINNEN)
                else if (StartMoment.Hour >= 22 && (eindMoment.Hour < 7 || eindMoment.Day == StartMoment.Day))
                {
                    AantalNachtUur = AantalUur - 1;
                }
                //begint voor de nachturen
                else if (StartMoment.Hour < 22 && StartMoment.Hour >= 7)
                {
                    //loopt niet door tot de volgende ochtend
                    if (eindMoment.Hour < 7 || eindMoment.Day == StartMoment.Day)
                    {
                        AantalStandaardUur = 22 - StartMoment.Hour - 1;
                        AantalNachtUur     = AantalUur - 1 - AantalStandaardUur;
                    }
                    //loopt wel door tot de volgende ochtend
                    else
                    {
                        //begint ervoor, loopt door tot na => maximaal aantal nachturen
                        AantalNachtUur     = 9;
                        AantalStandaardUur = AantalUur - 1 - AantalNachtUur;
                    }
                }
                //begint in de nachturen, en loopt door tot erna
                else
                {
                    AantalStandaardUur = eindMoment.Hour - 7;
                    AantalNachtUur     = AantalUur - 1 - AantalStandaardUur;
                }
                StandaarUurPrijs              = Math.Round((Limousine.EersteUurPrijs * 0.65) / 5) * 5;
                NachtUurPrijs                 = Math.Round((Limousine.EersteUurPrijs * 1.4) / 5) * 5;
                TotaalMetKortingExclusiefBtw += AantalStandaardUur * StandaarUurPrijs;
                TotaalMetKortingExclusiefBtw += AantalNachtUur * NachtUurPrijs;
            }
            else
            {
                throw new NotImplementedException("New Arrengement is not properly implemented.");
            }
            TotaalMetKortingExclusiefBtw = Math.Round((TotaalMetKortingExclusiefBtw * (1 - (AangerekendeKorting / 100))) * 100) / 100;
            BtwBedrag       = Math.Round((TotaalMetKortingExclusiefBtw * btwPercentage) * 100) / 100;
            TotaalTeBetalen = (TotaalMetKortingExclusiefBtw + BtwBedrag);
        }