diff --git a/ReportImp/Mittelpunkt/Mitarbeiterarbeitszeitkonto.cs b/ReportImp/Mittelpunkt/Mitarbeiterarbeitszeitkonto.cs index 080fd8e86..172e20b18 100644 --- a/ReportImp/Mittelpunkt/Mitarbeiterarbeitszeitkonto.cs +++ b/ReportImp/Mittelpunkt/Mitarbeiterarbeitszeitkonto.cs @@ -6,6 +6,7 @@ using BeWo.Report; using BeWo.Report.ReportObjects; using BS.Shared.Core; +using BS.Shared.Extensions; using DevExpress.XtraReports.UI; namespace Mittelpunkt @@ -50,17 +51,14 @@ namespace Mittelpunkt { foreach (var sr in day.ServiceRecords) { - if (sr.Start.HasValue && sr.End.HasValue && (sr.Start.Value.Date.DayOfWeek == DayOfWeek.Saturday || sr.End.Value.Date.DayOfWeek == DayOfWeek.Saturday)) - { - var start = sr.Start.Value.TimeOfDay; - var ende = sr.End.Value.TimeOfDay; - if (start > ende || ende.Hours > endeDerSamstagszeit) // Wenn Ende erst am nächsten Tag ist ODER nach 21 Uhr auf Ende der Samstagszeit setzen - ende = new TimeSpan(0, endeDerSamstagszeit, 0, 0, 0); - if (start.Hours < startDerSamstagszeit) - start = new TimeSpan(0, startDerSamstagszeit, 0, 0, 0); + var d1 = sr.Start.Value; - ed.Custom1 += (ende - start).Hours; - } + var saturday = d1.GetNextDayOfWeek(DayOfWeek.Saturday); + var unroundedEnd = d1.AddMinutes(sr.DurationMinutes); + var saturdayStart = new DateTime(saturday.Year, saturday.Month, saturday.Day, 13, 0, 0); + var saturdayEnd = new DateTime(saturday.Year, saturday.Month, saturday.Day, 21, 0, 0); + + ed.Custom1 += Math.Round((decimal)d1.GetIntersectingMinutes(unroundedEnd, saturdayStart, saturdayEnd) / 60, 2, MidpointRounding.AwayFromZero); } } diff --git a/ReportImp/Mittelpunkt/Mitarbeiterstundenkonto.cs b/ReportImp/Mittelpunkt/Mitarbeiterstundenkonto.cs index 7b5e00d58..f31d61444 100644 --- a/ReportImp/Mittelpunkt/Mitarbeiterstundenkonto.cs +++ b/ReportImp/Mittelpunkt/Mitarbeiterstundenkonto.cs @@ -2,7 +2,7 @@ using System; using BeWo.Report; using BeWo.Report.ReportObjects; using BS.Shared.Core; - +using BS.Shared.Extensions; namespace Mittelpunkt { @@ -33,18 +33,15 @@ namespace Mittelpunkt { foreach (var sr in day.ServiceRecords) { - if (sr.Start.HasValue && sr.End.HasValue && (sr.Start.Value.Date.DayOfWeek == DayOfWeek.Saturday || sr.End.Value.Date.DayOfWeek == DayOfWeek.Saturday)) - { - var start = sr.Start.Value.TimeOfDay; - var ende = sr.End.Value.TimeOfDay; - if (start > ende || ende.Hours > endeDerSamstagszeit) // Wenn Ende erst am nächsten Tag ist ODER nach 21 Uhr auf Ende der Samstagszeit setzen - ende = new TimeSpan(0, endeDerSamstagszeit, 0, 0, 0); - if (start.Hours < startDerSamstagszeit) - start = new TimeSpan(0, startDerSamstagszeit, 0, 0, 0); + var d1 = sr.Start.Value; - emp.Custom1 += (ende - start).Hours; - } - } + var saturday = d1.GetNextDayOfWeek(DayOfWeek.Saturday); + var unroundedEnd = d1.AddMinutes(sr.DurationMinutes); + var saturdayStart = new DateTime(saturday.Year, saturday.Month, saturday.Day, 13, 0, 0); + var saturdayEnd = new DateTime(saturday.Year, saturday.Month, saturday.Day, 21, 0, 0); + + emp.Custom1 += Math.Round((decimal)d1.GetIntersectingMinutes(unroundedEnd, saturdayStart, saturdayEnd) / 60, 2, MidpointRounding.AwayFromZero); + } } // Custom2 Sonntagsarbeit diff --git a/ReportImp/Mittelpunkt/MitarbeiterstundenkontoJahr.cs b/ReportImp/Mittelpunkt/MitarbeiterstundenkontoJahr.cs index 707e8c497..30d7b615a 100644 --- a/ReportImp/Mittelpunkt/MitarbeiterstundenkontoJahr.cs +++ b/ReportImp/Mittelpunkt/MitarbeiterstundenkontoJahr.cs @@ -2,7 +2,7 @@ using System; using BeWo.Report; using BeWo.Report.ReportObjects; using BS.Shared.Core; - +using BS.Shared.Extensions; namespace Mittelpunkt { @@ -35,17 +35,14 @@ namespace Mittelpunkt { foreach (var sr in day.ServiceRecords) { - if (sr.Start.HasValue && sr.End.HasValue && (sr.Start.Value.Date.DayOfWeek == DayOfWeek.Saturday || sr.End.Value.Date.DayOfWeek == DayOfWeek.Saturday)) - { - var start = sr.Start.Value.TimeOfDay; - var ende = sr.End.Value.TimeOfDay; - if (start > ende || ende.Hours > endeDerSamstagszeit) // Wenn Ende erst am nächsten Tag ist ODER nach 21 Uhr auf Ende der Samstagszeit setzen - ende = new TimeSpan(0, endeDerSamstagszeit, 0, 0, 0); - if (start.Hours < startDerSamstagszeit) - start = new TimeSpan(0, startDerSamstagszeit, 0, 0, 0); + var d1 = sr.Start.Value; - detail.EmployeeDetail.Custom1 += (ende - start).Hours; - } + var saturday = d1.GetNextDayOfWeek(DayOfWeek.Saturday); + var unroundedEnd = d1.AddMinutes(sr.DurationMinutes); + var saturdayStart = new DateTime(saturday.Year, saturday.Month, saturday.Day, 13, 0, 0); + var saturdayEnd = new DateTime(saturday.Year, saturday.Month, saturday.Day, 21, 0, 0); + + detail.EmployeeDetail.Custom1 += Math.Round((decimal)d1.GetIntersectingMinutes(unroundedEnd, saturdayStart, saturdayEnd) / 60, 2, MidpointRounding.AwayFromZero); } }