diff --git a/Report/ReportObjects/MitarbeiterstundenkontoBerechnung.cs b/Report/ReportObjects/MitarbeiterstundenkontoBerechnung.cs index 2fb52f3d4..6b96a55f9 100644 --- a/Report/ReportObjects/MitarbeiterstundenkontoBerechnung.cs +++ b/Report/ReportObjects/MitarbeiterstundenkontoBerechnung.cs @@ -2419,15 +2419,19 @@ namespace BeWo.Report.ReportObjects foreach (var at in emp.AbsenceTimes) { - if ((!at.Start.HasValue || at.Start.Value <= arbeitstagEnde.Date) && - (!at.End.HasValue || at.End.Value >= arbeitstagStart.Date)) - { + if ((!at.Start.HasValue || at.Start.Value <= arbeitstagEnde) && (!at.End.HasValue || at.End.Value >= arbeitstagStart)) + { var faktor = GetFeiertagsFaktor(arbeitstagStart); if (faktor < 1) { var hours = (decimal)arbeitstagEnde.Subtract(arbeitstagStart).TotalHours; - if (faktor != 0) + + // Prüfen, ob halber Tag + if ((at.Start.HasValue && at.Start.Value.Date != at.Start.Value) || (at.End.HasValue && at.End.Value.Date != at.End.Value)) + hours /= 2; + + if (faktor != 0) { hours *= faktor; } @@ -2799,10 +2803,10 @@ namespace BeWo.Report.ReportObjects String dateStr1 = String.Format("{0:dd.MM.yyyy} {1}", tag, ae.UhrzeitVon); String dateStr2 = String.Format("{0:dd.MM.yyyy} {1}", tag, ae.UhrzeitBis); - DateTime date1; - DateTime date2; + DateTime date1; // Startzeit der AZ + DateTime date2; // Endzeit der AZ - if (DateTime.TryParse(dateStr1, out date1) && DateTime.TryParse(dateStr2, out date2)) + if (DateTime.TryParse(dateStr1, out date1) && DateTime.TryParse(dateStr2, out date2)) { String dayKey = String.Format("{0:dd.MM.yyyy}", date1); if (!daysDict.ContainsKey(dayKey)) @@ -2824,16 +2828,19 @@ namespace BeWo.Report.ReportObjects foreach (var at in emp.AbsenceTimes) { - - if ((!at.Start.HasValue || at.Start.Value <= arbeitstagEnde.Date) && - (!at.End.HasValue || at.End.Value >= arbeitstagStart.Date)) + if ((!at.Start.HasValue || at.Start.Value <= arbeitstagEnde) && (!at.End.HasValue || at.End.Value >= arbeitstagStart)) { var faktor = GetFeiertagsFaktor(arbeitstagStart); if (faktor < 1) { - var tag = 1m; + var tag = 1m; + + // Prüfen, ob halber Tag + if ((at.Start.HasValue && at.Start.Value.Date != at.Start.Value) || (at.End.HasValue && at.End.Value.Date != at.End.Value)) + tag = 0.5m; + if (faktor != 0) { tag *= faktor;