diff --git a/ReportImp/VkmHamm/CustomerMitarbeiterstundenkontoBerechnung.cs b/ReportImp/VkmHamm/CustomerMitarbeiterstundenkontoBerechnung.cs index c10bee080..e0ec74237 100644 --- a/ReportImp/VkmHamm/CustomerMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/VkmHamm/CustomerMitarbeiterstundenkontoBerechnung.cs @@ -304,20 +304,6 @@ namespace VkmHamm { foreach (var ed in ro.EmployeeDetailList) { - // Da deren Abwesenheiten ServiceRecords (Arbeitszeit) sind und die trotzdem vom Soll abgezogen werden, hat man die Stunden von der Abwesenheit doppelt. - // Daher muss nochmal die Anzahl Stunden von Abweseneheiten von den Überstunden abgezogen werden.. - // >>> Mittlerweile wird die Zeit nicht mehr addiert, daher muss der Abzug raus, weil er sonst doppelt ist. - //if (ed.TageKrankheit.HasValue) - //{ - // ed.Ueberstunden -= ed.TageKrankheit.Value * ed.SollProTag; - // ed.UeberstundenGesamt -= ed.TageKrankheit.Value * ed.SollProTag; - //} - //if (ed.TageUrlaub.HasValue) - //{ - // ed.Ueberstunden -= ed.TageUrlaub.Value * ed.SollProTag; - // ed.UeberstundenGesamt -= ed.TageUrlaub.Value * ed.SollProTag; - //} - var contract = GetContractForDate(ed.Employee, ro.ReportStartDate, ro.ReportEndDate); if (contract != null) { @@ -345,7 +331,7 @@ namespace VkmHamm if (start < new DateTime(2024, 02, 01)) return ueberstundenStd; - if (start >= new DateTime(2024, 04, 01)) + if (start.Month == 10 || start.Month == 11) { }; if (ed.UeberstundenVormonat == null) @@ -353,6 +339,13 @@ namespace VkmHamm if (ed.UeberstundenGesamt == null) ed.UeberstundenGesamt = 0; + // Überstundeneinträge mit einbeziehen + var overtimes = ed.Employee.Overtimes.Where(o => o.Date.HasValue && o.Date.Value.Month == start.Month && o.Date.Value.Year == start.Year).ToList(); + foreach (var item in overtimes) + { + ed.UeberstundenVormonat += item.Betrag; + } + var ueberstunden = ueberstundenStd - ed.UeberstundenVormonat; @@ -370,64 +363,6 @@ namespace VkmHamm return ueberstundenStd; } - // public override void CreateEmployeeDetails(MitarbeiterstundenkontoRO ro) - // { - // // Anpassung: a) Abwesenheiten durch Servicerecords - - // base.CreateEmployeeDetails(ro); - - // foreach (var ed in ro.EmployeeDetailList) - // { - // var c = GetContractForDate(ed.Employee, ro.ReportStartDate, ro.ReportEndDate); - // if (c != null) - // { - // AbsenceTimeHours athYear = GetAbwesenheitenDurchServiceRecords(ed, c, ed.AllServiceRecords, new DateTime(ro.ReportStartDate.Year, 1, 1), ro.ReportEndDate); - // ed.UrlaubGesamtImAktuellenJahr = athYear.StundenUrlaub; - // } - // } - // } - - // protected override AbsenceTimeHours GetAbwesenheitenDurchServiceRecords(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, Contract c, IList groupFilteredRecords, - //DateTime berichtsAnfang, DateTime berichtsEnde) - // { - // var test = empDetail.EmploymentType?.Name; - - // AbsenceTimeHours ath = new AbsenceTimeHours(); - // if (c != null) - // { - // foreach (var item in groupFilteredRecords) - // { - // if (item.Start.Value >= berichtsAnfang && item.Start.Value < berichtsEnde) - // { - // if (IsUrlaubAbsenceServiceRecord(item)) - // { - // if (item.RoundedDuration > 0) - // { - // ath.StundenUrlaub += Math.Round(item.RoundedDuration / 60, 2, MidpointRounding.AwayFromZero); - // } - // else - // { - // ath.StundenUrlaub += 1; - // } - // } - // else if (IsUrlaubAbsenceServiceRecord(item)) - // { - // if (item.RoundedDuration > 0) - // { - // ath.StundenKrankheit += Math.Round(item.RoundedDuration / 60 , 2, MidpointRounding.AwayFromZero); - // } - // else - // { - // ath.StundenKrankheit += 1; - // } - // } - // } - // } - // } - - // return ath; - // } - private bool IsUrlaubAbsenceServiceRecord(ServiceRecord item) { if (item.Start.HasValue && item.Start.Value >= new DateTime(2024, 04, 1) && item.Notice != null && item.Notice.Length > 0 && item.Notice.Trim().ToLower() == "urlaub")