diff --git a/ReportImp/VkmHamm/CustomerMitarbeiterstundenkontoBerechnung.cs b/ReportImp/VkmHamm/CustomerMitarbeiterstundenkontoBerechnung.cs index e4c978b62..5248f6cb3 100644 --- a/ReportImp/VkmHamm/CustomerMitarbeiterstundenkontoBerechnung.cs +++ b/ReportImp/VkmHamm/CustomerMitarbeiterstundenkontoBerechnung.cs @@ -238,7 +238,7 @@ namespace VkmHamm if (item.ServiceDescription != null && item.ServiceDescription.ServiceCategory != null) { - if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit") + if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit" && !IsUrlaubAbsenceServiceRecord(item) && !IsKrankAbsenceServiceRecord(item)) { arbeitszeit += duration; } @@ -281,20 +281,21 @@ 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.. - 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; - } + // 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); + var contract = GetContractForDate(ed.Employee, ro.ReportStartDate, ro.ReportEndDate); if (contract != null) { var toleranzstundenVorFaktor = contract.ProbationPeriod2; @@ -307,7 +308,7 @@ namespace VkmHamm ed.Custom15 = ueberstundenFuerFaktor * 1.25m; // Auf Stunden, die den Korridor überschritten haben, kommt der Faktor 1,25 drauf ed.Ueberstunden = toleranzstundenVorFaktor; // Überstunden werden dann auf die Korridorstunden gesetzt, da die Stunden mit Faktor extra dargestellt werden - ed.UeberstundenGesamt += (ed.Ueberstunden + ed.Custom15) - (ed.Ueberstunden + ueberstundenFuerFaktor); + ed.UeberstundenGesamt += ed.Custom15 - ueberstundenFuerFaktor; // Auf ÜberstundenGesamt die Extrastunden durch den Faktor draufrechnen } } } @@ -321,12 +322,15 @@ namespace VkmHamm if (start < new DateTime(2024, 02, 01)) return ueberstundenStd; + if (start >= new DateTime(2024, 04, 01)) + { }; + if (ed.UeberstundenVormonat == null) ed.UeberstundenVormonat = 0; if (ed.UeberstundenGesamt == null) ed.UeberstundenGesamt = 0; - var ueberstunden = ueberstundenStd - ed.UeberstundenVormonat - (ed.StundenSollMax - ed.StundenSollOhneUrlaubKrankheit); + var ueberstunden = ueberstundenStd - ed.UeberstundenVormonat; if (contract.ProbationPeriod2.HasValue && contract.ProbationPeriod2.Value > 0 && ueberstunden > contract.ProbationPeriod2.Value) {