From 965352beaac95f43d95336407e9b2c404da71a87 Mon Sep 17 00:00:00 2001 From: HirschleM Date: Wed, 23 Apr 2025 15:46:02 +0200 Subject: [PATCH] =?UTF-8?q?MH:=20M=C3=BCnchner=20Aidshilfe=20Bericht=20ang?= =?UTF-8?q?epasst?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UeberUnterbelegungReport.cs | 99 ++++++++++++++----- 1 file changed, 76 insertions(+), 23 deletions(-) diff --git a/ReportImp/MuenchenerAidsHilfeEV/UeberUnterbelegungReport.cs b/ReportImp/MuenchenerAidsHilfeEV/UeberUnterbelegungReport.cs index 600681087..49bf95aeb 100644 --- a/ReportImp/MuenchenerAidsHilfeEV/UeberUnterbelegungReport.cs +++ b/ReportImp/MuenchenerAidsHilfeEV/UeberUnterbelegungReport.cs @@ -39,35 +39,88 @@ namespace MuenchenerAidsHilfeEV summeMitarbeitende += Convert.ToDecimal(contract.EmploymentType.Name.Split('%')[0]); } - // Gesamtsumme der einzelnen Klientenbetreuungsumfänge zusammenzählen - // Die einzelnen Umfänge stehen in der Betreuungsart im Klienten (CustomerCareTypes) - decimal betreuungsumfangInProzentGesamt = 0; - foreach (var e2c in empDetail.Employee.Employee2CustomerList) + // Gesamtsumme der einzelnen Klientenbetreuungsumfänge zusammenzählen + // Die einzelnen Umfänge stehen in der Leistungskategorie in den Bewilligungen + decimal betreuungsumfangInProzentGesamt = 0; + foreach (var scDetail in empDetail.SupportConceptDetailList) { - var customerDC = MapperFactory.CustomerDC_Customer.MapToNewDC(e2c.Customer); - var schluessel = customerDC.CustomerCareTypes; - // Benötigten Umfang pro Klient berechnen, also 100 / Nenner im Schlüssel (also bei 1:6 Schlüssel 100 / 6 = 16,67%) - foreach (var s in schluessel) + foreach (var ap in scDetail.CostBearer2SupportConcept.ApprovalPeriodList) { - // Wenn es einen korrekt angelegten Betreuungsschlüssel gibt, gibt es einen :, welcher nicht das letzte Zeichen ist - if (s.DisplayName.Contains(":") && s.DisplayName[s.DisplayName.Length - 1] != ':') + if (ap.StartDate.HasValue && ap.EndDate.HasValue) { - var nenner = Convert.ToDecimal(s.DisplayName.Split(':')[1]); - betreuungsumfangInProzentGesamt += 100m / nenner; - summeKlientInnen += 100m / nenner; + if (pRO.ReportEndDate >= ap.StartDate && pRO.ReportStartDate <= ap.EndDate) + { + // Benötigten Umfang pro Klient berechnen, also 100 / Nenner im Schlüssel (also bei 1:6 Schlüssel 100 / 6 = 16,67%) + // Wenn es einen korrekt angelegten Betreuungsschlüssel gibt, gibt es einen :, welcher nicht das letzte Zeichen ist + if (ap.ServiceCategory != null && ap.ServiceCategory.Name.Contains(":") && ap.ServiceCategory.Name[ap.ServiceCategory.Name.Length - 1] != ':') + { + var schluessel = ap.ServiceCategory.Name; + // Nenner des Schlüssels raussuchen, da der mit 100/Nenner den Betreuungsumfang ergibt + var nenner = Convert.ToDecimal(ap.ServiceCategory.Name.Split(':')[1]); - // für zweite Tabelle, die zeigt, welche Schlüssel es gibt und wie viele Klient*innen die jeweils haben, in Dict speichern - if (!betreuungsschluesselZuAnzahl.ContainsKey(nenner)) - betreuungsschluesselZuAnzahl.Add(nenner, 0); - betreuungsschluesselZuAnzahl[nenner]++; - } - } + // Wenn es eine anteilige Betreuung in der Bewilligung gibt muss sich diese auch auf den Betreuungsumfang auswirken + decimal betreuungsanteil = 1.0m; + if (ap.SupportConceptApprovalPeriod2Employee != null && ap.SupportConceptApprovalPeriod2Employee.Count > 0) + { + foreach (var item in ap.SupportConceptApprovalPeriod2Employee) + { + if (item.Employee.Oid == empDetail.Employee.Oid) + { + // Betreuungsanteil setzen, wenn er nicht absolut, also in Minuten, ist + if (item.IsAbsolut == false && item.Betreuungsschluessel != 0) + betreuungsanteil = item.Betreuungsschluessel / 100; + nenner /= betreuungsanteil; + } + + } + } + + // Letztendlichen Umfang mit dem Nenner und dem eventuellen Anteil an der Betreuung + betreuungsumfangInProzentGesamt += 100m / nenner; + summeKlientInnen += 100m / nenner; + + // für zweite Tabelle, die zeigt, welche Schlüssel es gibt und wie viele Klient*innen die jeweils haben, in Dict speichern + if (!betreuungsschluesselZuAnzahl.ContainsKey(nenner)) + betreuungsschluesselZuAnzahl.Add(nenner, 0); + betreuungsschluesselZuAnzahl[nenner]++; + } + } + } + + } } - // Gesamtbetreuungsumfang in % setzen, um ihn in der Tabelle neben dem Mitarbeitendenbudget anzuzeigen - empDetail.Employee.Text2 = string.Format("{0:0.00}", betreuungsumfangInProzentGesamt); - } + empDetail.Employee.Text2 = string.Format("{0:0.00}", betreuungsumfangInProzentGesamt); - tcSummeMitarbeitende.Text = string.Format("{0:0.00}", summeMitarbeitende / 100); + + + // ALT Die einzelnen Umfänge stehen in der Betreuungsart im Klienten (CustomerCareTypes) + //foreach (var e2c in empDetail.Employee.Employee2CustomerList) + //{ + // var customerDC = MapperFactory.CustomerDC_Customer.MapToNewDC(e2c.Customer); + // var schluessel = customerDC.CustomerCareTypes; + // // Benötigten Umfang pro Klient berechnen, also 100 / Nenner im Schlüssel (also bei 1:6 Schlüssel 100 / 6 = 16,67%) + // foreach (var s in schluessel) + // { + // // Wenn es einen korrekt angelegten Betreuungsschlüssel gibt, gibt es einen :, welcher nicht das letzte Zeichen ist + // if (s.DisplayName.Contains(":") && s.DisplayName[s.DisplayName.Length - 1] != ':') + // { + // var nenner = Convert.ToDecimal(s.DisplayName.Split(':')[1]); + // betreuungsumfangInProzentGesamt += 100m / nenner; + // summeKlientInnen += 100m / nenner; + + // // für zweite Tabelle, die zeigt, welche Schlüssel es gibt und wie viele Klient*innen die jeweils haben, in Dict speichern + // if (!betreuungsschluesselZuAnzahl.ContainsKey(nenner)) + // betreuungsschluesselZuAnzahl.Add(nenner, 0); + // betreuungsschluesselZuAnzahl[nenner]++; + // } + // } + //} + //// Gesamtbetreuungsumfang in % setzen, um ihn in der Tabelle neben dem Mitarbeitendenbudget anzuzeigen + //empDetail.Employee.Text2 = string.Format("{0:0.00}", betreuungsumfangInProzentGesamt); + + } + + tcSummeMitarbeitende.Text = string.Format("{0:0.00}", summeMitarbeitende / 100); tcSummeKlientInnen.Text = string.Format("{0:0.00}", summeKlientInnen / 100); // Tabelle 2