diff --git a/ReportImp/FreundeskreisSuchthilfe/CustomMitarbeiterstundenkontoBerechnung.cs b/ReportImp/FreundeskreisSuchthilfe/CustomMitarbeiterstundenkontoBerechnung.cs index 8841ed1eb..cfb398497 100644 --- a/ReportImp/FreundeskreisSuchthilfe/CustomMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/FreundeskreisSuchthilfe/CustomMitarbeiterstundenkontoBerechnung.cs @@ -52,7 +52,7 @@ namespace FreundeskreisSuchthilfe.Alt } return false; } - + protected override ServiceRecordSummary BerechneStunden(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, IList groupFilteredRecords, DateTime berichtsAnfang, DateTime berichtsEnde) { diff --git a/ReportImp/FreundeskreisSuchthilfe/Mitarbeiterstundenkonto.cs b/ReportImp/FreundeskreisSuchthilfe/Mitarbeiterstundenkonto.cs index a64acdfa9..244c875cf 100644 --- a/ReportImp/FreundeskreisSuchthilfe/Mitarbeiterstundenkonto.cs +++ b/ReportImp/FreundeskreisSuchthilfe/Mitarbeiterstundenkonto.cs @@ -21,6 +21,31 @@ namespace FreundeskreisSuchthilfe.Alt var msb = new CustomMitarbeiterstundenkontoBerechnung(); msb.CreateReport(pRO); + var reportMonth = pRO.ReportStartDate.Month; + + foreach (var empDetail in pRO.EmployeeDetailList) + { + foreach (var abs in empDetail.Employee.AbsenceTimes) + { + if (abs.AbsenceReason.Description.ToLower() == "mehrarbeitsausgleich") + { + // Wenn kein Startdate, dann ReportStartdate. Wenn Startdate VOR ReportEnddate, dann ReportStartdate. Wenn beides nicht einfach normales Absence-Startdate + var absStart = !abs.Start.HasValue ? pRO.ReportStartDate : abs.Start.Value < pRO.ReportStartDate ? pRO.ReportStartDate : abs.Start.Value; + // Wenn kein Enddate, dann ReportEnddate. Wenn Enddate NACH ReportEnddate, dann ReportEnddate. Wenn beides nicht einfach normales Absence-Enddate + var absEnd = !abs.End.HasValue ? pRO.ReportEndDate : abs.End.Value > pRO.ReportEndDate ? pRO.ReportEndDate : abs.End.Value; + + while (absStart <= absEnd && empDetail.WeeklyFLS.HasValue) + { + empDetail.FlsSoll -= empDetail.WeeklyFLS.Value / empDetail.ArbeitstageProWoche; + empDetail.FlsDiff += empDetail.WeeklyFLS.Value / empDetail.ArbeitstageProWoche; + pRO.FlsSollGesamt -= empDetail.WeeklyFLS.Value / empDetail.ArbeitstageProWoche; + pRO.FlsDiffGesamt += empDetail.WeeklyFLS.Value / empDetail.ArbeitstageProWoche; + absStart = absStart.AddDays(1); + } + } + } + } + this.bindingSource1.DataSource = pRO; }