diff --git a/Service/Plugins/VacationService.cs b/Service/Plugins/VacationService.cs index 38a806264..b5af44935 100644 --- a/Service/Plugins/VacationService.cs +++ b/Service/Plugins/VacationService.cs @@ -926,9 +926,9 @@ namespace BeWo.Service.Plugins if (year >= start && year <= end) workdays = contract.WeeklyDays; - // Durch jedes Jahr des Vertrags gehen und vertr. Urlaubsanspruch setzen. Noch keine Abwesenheiten, nur Urlaubsanspruch + // Durch jedes Jahr des Vertrags gehen und vertr. Urlaubsanspruch setzen. Noch keine Abwesenheiten/ResturlaubVorjahr, nur Urlaubsanspruch for (int i = start; i <= end; i++) - { + { if (konten.ContainsKey(i)) { // Konto für aktuelles Jahr in Schleife auswählen @@ -1010,7 +1010,8 @@ namespace BeWo.Service.Plugins var absYear = tuple.Item1; var absence = tuple.Item2; - + if(absYear == 2026) + { } _Feiertage = GetFeiertage(absYear); // Resturlaub aus Vorjahr übertragen @@ -1030,7 +1031,11 @@ namespace BeWo.Service.Plugins } var current = konten[absYear]; - + if (absYear == 2025) + { + + } + // Start und Ende auf Jahresanfang/-ende setzen, wenn Start des Urlaubs im Vorjahr oder Ende des Urlaubs im nächsten Jahr liegt var start = DateTimeExtensions.GetMax(absence.Start, new DateTime(absYear, 1, 1)); var end = DateTimeExtensions.GetMin(absence.End, new DateTime(absYear, 12, 31)); @@ -1331,16 +1336,19 @@ namespace BeWo.Service.Plugins public virtual decimal UrlaubstageRunden(decimal urlaubstage) { - if (urlaubstage - (int)urlaubstage <= 0.1m) + // Bis 0.25 wird abgerundet + if (urlaubstage - (int)urlaubstage < 0.25m) { urlaubstage = Math.Round(urlaubstage, MidpointRounding.AwayFromZero); } - else if (urlaubstage - (int)urlaubstage <= 0.5m) + // Zwischen 0.25 und 0.75 wird auf 0.5 gerundet + else if (urlaubstage - (int)urlaubstage < 0.75m) { decimal digits = urlaubstage - (int)urlaubstage; urlaubstage = urlaubstage - digits + 0.5m; } - else if (urlaubstage - (int)urlaubstage <= 1.0m) + // Ab 0.75 auf nächste volle Zahl aufrunden + else { urlaubstage = Math.Ceiling(urlaubstage); }