diff --git a/Service/ServiceImplementations/EmployeeServiceImp.cs b/Service/ServiceImplementations/EmployeeServiceImp.cs index 279ad227e..4282083b4 100644 --- a/Service/ServiceImplementations/EmployeeServiceImp.cs +++ b/Service/ServiceImplementations/EmployeeServiceImp.cs @@ -2091,8 +2091,15 @@ namespace BeWo.Service.ServiceImplementations // Wenn eine Behinderung von mind. 50 vorliegt stehen standardmäßig 5 Sonderurlaubstage zu if (contract != null && (contract.EntryDate.HasValue && contract.ContractEndDate.HasValue || contract.EntryDate.HasValue && !contract.ContractEndDate.HasValue)) { - if (emp.AusweisGueltigVon.HasValue && emp.AusweisGueltigVon.Value.Year >= contract.EntryDate.Value.Year && emp.AusweisGueltigVon.Value.Year <= emp.AusweisGueltigVon.Value.Year || - emp.AusweisGueltigBis.HasValue && emp.AusweisGueltigBis.Value.Year >= contract.EntryDate.Value.Year && emp.AusweisGueltigBis.Value.Year <= emp.AusweisGueltigBis.Value.Year) + var yearStart = new DateTime(berechnungsjahr, 1, 1); + var yearEnd = new DateTime(berechnungsjahr, 12, 31); + + // Schnittmenge aus Vertrag + Ausweis + var overlapStart = contract.EntryDate > emp.AusweisGueltigVon ? contract.EntryDate : emp.AusweisGueltigVon; + var overlapEnd = (contract.ContractEndDate ?? DateTime.MaxValue) < emp.AusweisGueltigBis ? (contract.ContractEndDate ?? DateTime.MaxValue) : emp.AusweisGueltigBis; + + // Jetzt prüfen: gibt es davon etwas im Jahr? + if (overlapStart <= overlapEnd && overlapStart <= yearEnd && overlapEnd >= yearStart) { if (emp.GradDerBehinderung.IsNotNullOrEmpty()) {