MH: Dienstplanung
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user