MH: Dienstplanung

This commit is contained in:
Marcel Hirschle
2022-04-22 15:41:01 +02:00
parent 603ba4a99e
commit 49a0dd68e9

View File

@@ -707,7 +707,8 @@ namespace BeWo.Service.Dienstplanung
DienstplanerMonthlySummaryDC dc = new DienstplanerMonthlySummaryDC
{
Employee = employee,
Soll = item.StundenSollOhneUrlaubKrankheit,
//Soll = item.StundenSollOhneUrlaubKrankheit,
Soll = item.StundenSollMax,
ZeitkontoLetzterMonat = item.UeberstundenVormonat,
ZeitkontoAktualisiert = item.Ueberstunden,
TageUrlaub = 0,
@@ -746,14 +747,17 @@ namespace BeWo.Service.Dienstplanung
decimal tageInEinerWoche = 0; // Tage für die Ist- und Sollstunden
int wochentageVergangen = 0; // Vergangene Wochentage
decimal abzuziehendeTage = 0m;
// Um Kalenderwoche zu bekommen
CultureInfo myCI = new CultureInfo("de-DE");
Calendar myCal = myCI.Calendar;
CalendarWeekRule myCWR = myCI.DateTimeFormat.CalendarWeekRule;
DayOfWeek myFirstDOW = myCI.DateTimeFormat.FirstDayOfWeek;
foreach (var abs in urlaubKrankheitMonat)
for (int i = 0; i < urlaubKrankheitMonat.Count; i++)
{
var abs = urlaubKrankheitMonat[i];
var contract = GetContract(employee.Contracts, abs.Start.Value);
////////////////////////////////////////////////////////////////////////////////////////////
var weeklyDays = contract.WeeklyDays;
@@ -768,18 +772,17 @@ namespace BeWo.Service.Dienstplanung
{
tageInEinerWoche = 0;
wochentageVergangen = 0;
abzuziehendeTage = 0;
}
if (wochentageVergangen >= weeklyDays || tageInEinerWoche >= weeklyDays)
{
// Hier ausprogrammieren, dass die absTime dann übersprungen wird
skipAbsenceTime = true;
}
else if (wochentageVergangen + (abs.End.Value - abs.Start.Value).TotalDays >= weeklyDays)
else if (wochentageVergangen + (abs.End.Value - abs.Start.Value).TotalDays + 1 >= weeklyDays)
{
// Hier das Ende der absTime dann so setzen, dass weeklyDays voll werden. HALBE TAGE NICHT VERGESSEN
var diff = weeklyDays - wochentageVergangen;
//abs.End = abs.Start.Value.AddDays(diff);
}
}
vorherigeWeeklyDays = weeklyDays;
@@ -807,7 +810,7 @@ namespace BeWo.Service.Dienstplanung
//dauer += dauerAbwesenheit;
dauer += dauerAbwesenheit;
tageInEinerWoche += dauerAbwesenheit;
wochentageVergangen += Convert.ToInt32(Math.Ceiling((abs.End.Value - abs.Start.Value).TotalDays));
wochentageVergangen += Convert.ToInt32(Math.Ceiling((abs.End.Value - abs.Start.Value).TotalDays) + 1);
//Dienste an einem ganzen Abwesenheitstag von den Stunden abziehen
foreach (var e in eintraegeFuerMitarbeiterMonat)
@@ -829,8 +832,10 @@ namespace BeWo.Service.Dienstplanung
}
vorherigeKW = myCal.GetWeekOfYear(abs.Start.Value.Date, myCWR, myFirstDOW);
if (tageInEinerWoche > weeklyDays && vorherigeKW == myCal.GetWeekOfYear(abs.End.Value.Date, myCWR, myFirstDOW))
abzuziehendeTage += tageInEinerWoche - weeklyDays;
}
stunden += dauer * item.SollProTag;
stunden += dauer * item.SollProTag - abzuziehendeTage * item.SollProTag;
}
dc.Ist = stunden;
dc.Saldo = dc.Ist - dc.Soll;