diff --git a/ReportImp/MalteserJohanniterJohanneshaus/Reporting/BelegungsquotenRO.cs b/ReportImp/MalteserJohanniterJohanneshaus/Reporting/BelegungsquotenRO.cs index 6a92240eb..32188b20d 100644 --- a/ReportImp/MalteserJohanniterJohanneshaus/Reporting/BelegungsquotenRO.cs +++ b/ReportImp/MalteserJohanniterJohanneshaus/Reporting/BelegungsquotenRO.cs @@ -4,6 +4,7 @@ using BeWo.Service.DCEntityMapper; using BS.Shared.Core; using BS.Shared.DataContracts; using BS.Shared.Extensions; +using DevExpress.Utils; using System; using System.Collections.Generic; using System.Linq; @@ -63,7 +64,7 @@ namespace MalteserJohanniterJohanneshaus.Reporting } // für debug - if (wohnheim.WohnheimName.Contains("Folge")) + if (wohnheim.WohnheimName.Contains("Witterschlick")) { } @@ -198,6 +199,7 @@ namespace MalteserJohanniterJohanneshaus.Reporting } } + foreach (var sc in hilfeplaeneFuerWohnheim) { // Start und Ende der Zeit festlegen, die die Person ein Bett belegt. Geht der Hilfeplan über den Berichtszeitraum hinaus, @@ -221,13 +223,36 @@ namespace MalteserJohanniterJohanneshaus.Reporting continue; else if (cbrel.EndDate.Value < berichtEnde) { - // Der letzte Tag der Bewilligung zählt nicht mehr als belegt, also einen Tag abziehen - ende = cbrel.EndDate.Value.AddDays(-1); + // für debug + if (wb.Name == "Witterschlick") + { + } + bool hatFolgebewilligung = false; + + // Eine Folgebewilligung existiert, wenn es einen Hilfeplan gibt, der genau am Tag nach dem cbrel.EndDate beginnt + var weitereHPs = aktiveHilfeplaene.Where(h => h.Customer.Oid == sc.Customer.Oid && h.SupportConceptOid != sc.SupportConceptOid).ToList(); + if (weitereHPs != null && weitereHPs.Count > 0) + { + if (weitereHPs.Any(h => h.CostBearerRelations.Any(c => c.Notice.IsNotNullOrEmpty() && wb.Kostenstelle.IsNotNullOrEmpty() && wb.Kostenstelle.Trim().Contains(c.Notice.Trim()) && + (c.RequestedStartDate.HasValue && c.RequestedStartDate.Value.Date == cbrel.EndDate.Value.Date.AddDays(1) || + c.ApprovedStartDate.HasValue && c.ApprovedStartDate.Value.Date == cbrel.EndDate.Value.Date.AddDays(1))))) + hatFolgebewilligung = true; + } + + // Der letzte Tag der Bewilligung zählt ohne Folgebewilligung nicht mehr als belegt, also einen Tag abziehen + if (!hatFolgebewilligung) + ende = cbrel.EndDate.Value.AddDays(-1); + else + ende = cbrel.EndDate.Value; } } - + + if (wohnheim.WohnheimName.Contains("Witterschlick")) + { + + } wb.Belegung += (ende - start).Days + 1; }