MH: VacationService generelle Rundung der Urlaubstage angepasst.

This commit is contained in:
2026-01-26 14:36:09 +01:00
parent cbbf1e8ef4
commit 0ce74287ae

View File

@@ -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);
}