diff --git a/ReportImp/MalteserJohanniterJohanneshaus/Reporting/BelegungsquotenRO.cs b/ReportImp/MalteserJohanniterJohanneshaus/Reporting/BelegungsquotenRO.cs index fd02a0e22..401e911bd 100644 --- a/ReportImp/MalteserJohanniterJohanneshaus/Reporting/BelegungsquotenRO.cs +++ b/ReportImp/MalteserJohanniterJohanneshaus/Reporting/BelegungsquotenRO.cs @@ -65,24 +65,33 @@ namespace MalteserJohanniterJohanneshaus.Reporting // Start und Ende der Zeit festlegen, die die Person ein Bett belegt. Geht der Hilfeplan über den Berichtszeitraum hinaus, // wird Start und/oder Ende auf den Berichtszeitraum gesetzt var cbrel = sc.CostBearerRelations.FirstOrDefault(c => c.Notice != null && c.Notice.Trim().Contains(wb.Name.Trim())); - var start = cbrel.StartDate.HasValue && cbrel.StartDate.Value > berichtStart ? cbrel.StartDate.Value : berichtStart; - var ende = cbrel.EndDate.HasValue && cbrel.EndDate.Value < berichtEnde? cbrel.EndDate.Value : berichtEnde; - - // Geht der Hilfeplan bzw die Bewilligung über die gesamte Zeit des Berichts, muss gar nicht jeder Tag geprüft werden, sondern - // die Belegung kann einfach für die gesamte Zeit berechnet werden und es kann zum nächsten Hilfeplan gesprungen werden - if (start == berichtStart && ende == berichtEnde) + DateTime start = berichtStart; + if (cbrel.StartDate.HasValue) { - wb.Belegung += (ende - start).Days; - continue; + // Wenn der Hilfeplan erst nach Berichtsende beginnt, überspringen + if (cbrel.StartDate.Value > berichtEnde) + continue; + else if (cbrel.StartDate.Value > berichtStart) + start = cbrel.StartDate.Value; + } + DateTime ende = berichtEnde; + if (cbrel.EndDate.HasValue) + { + // Wenn der Hilfeplan endet, bevor der Bericht überhaupt anfängt, überspringen + if (cbrel.EndDate.Value < berichtStart) + continue; + else if (cbrel.EndDate.Value < berichtEnde) + ende = cbrel.EndDate.Value; + + } + + wb.Belegung += (ende - start).Days + 1; } - - wb.Quote = wb.Belegung / wb.MaximaleKapazitaet * 100; + wb.Quote = Convert.ToDecimal(wb.Belegung) / Convert.ToDecimal(wb.MaximaleKapazitaet); ro.Wohnheimbelegungen.Add(wb); - - } return ro;