MH: Darstellung des Urlaubskontos gefixt

This commit is contained in:
Marcel Hirschle
2022-08-02 07:52:34 +02:00
parent ca20e775fd
commit 97fcc669c1

View File

@@ -454,8 +454,16 @@ namespace BeWo.Service.Plugins
DateTime startForLoop = (spanne.Start.Value.Year == year) ? spanne.Start.Value : new DateTime(year, 1, 1);
// Tage auf den Zähler addieren, solange das sich erhöhende Datum vor dem Enddatum ist und wenn das Datum kein Wochenend- oder Feiertag ist
#region neu
// Variable wird für jeden Tag hochgezählt und resettet, sobald wieder Montag ist. So kann vermieden werden, dass bei einer Arbeitswoche von unter 5 Tagen trotzdem 5 Tage Urlab abgezogen werden
var tageInDerWoche = 0;
#endregion
while (startForLoop <= spanne.End.Value)
{
if (startForLoop.DayOfWeek == DayOfWeek.Monday)
tageInDerWoche = 0;
var currentContract = contractsAndWeeklyDays.FirstOrDefault(c => startForLoop >= c.Key.EntryDate && startForLoop <= c.Key.ContractEndDate || startForLoop >= c.Key.EntryDate && c.Key.ContractEndDate == null);
if (currentContract.Key == null)
{
@@ -464,8 +472,11 @@ namespace BeWo.Service.Plugins
}
else
{
if (!CheckIstWochenende(currentContract.Value, startForLoop.DayOfWeek) && !IstFeiertag(startForLoop))
if (!CheckIstWochenende(currentContract.Value, startForLoop.DayOfWeek) && !IstFeiertag(startForLoop) && tageInDerWoche < currentContract.Value )
{
summeTage++;
tageInDerWoche++;
}
}
@@ -881,15 +892,23 @@ namespace BeWo.Service.Plugins
end = maxend;
}
var tageInDerWoche = 0m;
while (start <= end)
{
if (!CheckIstWochenende(workdays, start.DayOfWeek) && !IstFeiertag(start))
if (start.DayOfWeek == DayOfWeek.Monday)
tageInDerWoche = 0;
if (!CheckIstWochenende(workdays, start.DayOfWeek) && !IstFeiertag(start) && tageInDerWoche < workdays.Value && tageInDerWoche + 1 <= workdays.Value)
{
if (start.Date == end.Date && start.TimeOfDay != end.TimeOfDay)
{
days += 0.5m;
tageInDerWoche += 0.5m;
}
else
{
days++;
tageInDerWoche++;
}
}
start = start.AddDays(1);