MH: MalteserJohanniterJohanneshaus Belegungsquoten

This commit is contained in:
2025-11-07 12:51:55 +01:00
parent 1f94609b30
commit 02e486be8a

View File

@@ -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;