//Сохранение периода расчета в 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); } }
//Добавить нагрузку 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); }