diff --git a/ReportImp/PerspektivenEV/Service/CustomVacationService.cs b/ReportImp/PerspektivenEV/Service/CustomVacationService.cs index 41d4758a5..09c39fc5a 100644 --- a/ReportImp/PerspektivenEV/Service/CustomVacationService.cs +++ b/ReportImp/PerspektivenEV/Service/CustomVacationService.cs @@ -246,10 +246,7 @@ namespace PerspektivenEV.Service // 5. Alle Urlaube, die Anfang oder Ende im gewählten Jahr haben - var absReason = GetVacationReasonIDs(); - var absences = emp.AbsenceTimes.Where(x => absReason.Contains(x.Reason.AbsenceReasonOid.Value) && (x.Start.HasValue && x.Start.Value.Year == year) - || absReason.Contains(x.Reason.AbsenceReasonOid.Value) && (x.End.HasValue && x.End.Value.Year == year)) - .OrderBy(x => x.Start).ToList(); + var absences = GetAllVacationAbsences(emp.AbsenceTimes, year, true); if (absences.Count > 0) // Wenn es Urlaube in dem Jahr gibt { @@ -268,27 +265,7 @@ namespace PerspektivenEV.Service decimal summeTage = 0; #region Urlaubstage zählen - if (emp.Arbeitszeiten != null && emp.Arbeitszeiten.Count > 0) - { - foreach (var az in emp.Arbeitszeiten) - { - if (az.GueltigVon.HasValue) - { - var azEnde = !az.GueltigBis.HasValue ? new DateTime(year, 12, 31) : az.GueltigBis.Value; - if (new DateTimeSpan(az.GueltigVon.Value, azEnde).ContainsDate(spanne.AbsenceSpan.StartDate) && az.Eintraege != null && az.Eintraege.Count > 0) - { - summeTage = CountUrlaubstageArbeitszeiten(spanne, year, az); - break; - } - else - summeTage = CountUrlaubstageStandard(spanne, year, contractsAndWeeklyDays); - } - else - summeTage = CountUrlaubstageStandard(spanne, year, contractsAndWeeklyDays); - } - } - else - summeTage = CountUrlaubstageStandard(spanne, year, contractsAndWeeklyDays); + summeTage = CountAbwesenheitstage(emp, spanne, year, contractsAndWeeklyDays); #endregion @@ -348,11 +325,7 @@ namespace PerspektivenEV.Service var feiertage = GetFeiertage(year); // Alle Abwesenheiten bis zu dem Jahr raussuchen, für das man das Urlaubskonto berechnen will - var absReason = GetVacationReasonIDs(); - var absences = emp.AbsenceTimes.Where(x => absReason.Contains(x.AbsenceReason.Oid.Value) && - (x.Start.HasValue && x.Start.Value.Year <= year)) - //(!x.End.HasValue || x.End.Value.Year >= year) - .OrderBy(x => x.Start); + var absences = GetAllVacationAbsences(MapperFactory.AbsenceTimeDC_AbsenceTime.MapToNewDCs(emp.AbsenceTimes), year, false); var empService = PluginLoader.FindClass(); @@ -448,13 +421,13 @@ namespace PerspektivenEV.Service } // Abwesenheiten in Jahr x zu einem Dictionary hinzufügen, noch kein Abzug vom Konto - var absencesYear = new List>(); + var absencesYear = new List>(); foreach (var abs in absences) { var till = Math.Min(abs.End?.Year ?? year, year); for (int i = abs.Start.Value.Year; i <= till; i++) { - absencesYear.Add(new Tuple(i, abs)); + absencesYear.Add(new Tuple(i, abs)); } } @@ -510,33 +483,12 @@ namespace PerspektivenEV.Service // Berücksichtigung von Arbeitszeiten decimal dauer = 0; - var spanne = MapperFactory.AbsenceTimeDC_AbsenceTime.MapToNewDC(absence); - if (spanne.End.HasValue && spanne.End.Value.Year > absYear) - spanne.End = new DateTime(absYear, 12, 31); - if (spanne.Start.HasValue && spanne.Start.Value.Year < absYear) - spanne.Start = new DateTime(absYear, 01, 01); + if (absence.End.HasValue && absence.End.Value.Year > absYear) + absence.End = new DateTime(absYear, 12, 31); + if (absence.Start.HasValue && absence.Start.Value.Year < absYear) + absence.Start = new DateTime(absYear, 01, 01); - if (arbeitszeiten.Count > 0) - { - foreach (var az in arbeitszeiten) - { - if (az.Eintraege.Count > 0 && az.GueltigVon.HasValue) - { - var azEnde = !az.GueltigBis.HasValue ? new DateTime(year, 12, 31) : az.GueltigBis.Value; - if (new DateTimeSpan(az.GueltigVon.Value, azEnde).ContainsDate(spanne.AbsenceSpan.StartDate) && az.Eintraege != null && az.Eintraege.Count > 0) - { - dauer = CountUrlaubstageArbeitszeiten(spanne, absYear, az); - break; - } - else - dauer = CountUrlaubstageStandard(spanne, absYear, contractsAndWeeklyDays); - } - else - dauer = CountUrlaubstageStandard(spanne, absYear, contractsAndWeeklyDays); - } - } - else - dauer = CountUrlaubstageStandard(spanne, absYear, contractsAndWeeklyDays); + dauer = CountAbwesenheitstage(MapperFactory.EmployeeDC_Employee.MapToNewDC(emp), absence, year, contractsAndWeeklyDays); //dauer = BerechneAnzahlUrlaubstage(absence, null, absYear, workdays); // HIER MÜSSEN PARAMETER FÜR ISTWOCHENENDE() MITGEGEBEN WERDEN // Verfallsdatum des Urlaubs festlegen @@ -644,6 +596,7 @@ namespace PerspektivenEV.Service throw e; } } + public override List GetVacationReasonIDs() { var res = new List();