From 68f40bccb7d102eaaa013fdfeacba74d39864c54 Mon Sep 17 00:00:00 2001 From: HirschleM Date: Mon, 11 Aug 2025 14:29:31 +0200 Subject: [PATCH] MH: Suchtkrankenhilfe Ostfriesland Calculations --- .../Calculation/CustomCalculations.cs | 25 ++++++++++++------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/ReportImp/SuchtkrankenhilfeOstfriesland/Calculation/CustomCalculations.cs b/ReportImp/SuchtkrankenhilfeOstfriesland/Calculation/CustomCalculations.cs index 0d85497e0..3160478b0 100644 --- a/ReportImp/SuchtkrankenhilfeOstfriesland/Calculation/CustomCalculations.cs +++ b/ReportImp/SuchtkrankenhilfeOstfriesland/Calculation/CustomCalculations.cs @@ -26,18 +26,25 @@ namespace SuchtkrankenhilfeOstfriesland.Calculation // Jetzt müssen die Zeiterfassungseinträge für den abgerechneten Zeitraum geholt werden. Die dienen denen als Anwesenheitsliste. // Ist die Person weniger als die Hälfte der abgerechneten Tage anwesend gewesen, wird der Betrag halbiert. var serviceRecords = DAOFactory.SearchDAO.FindServiceRecordsDetailsForLastDaysWithStartEndDate(CustomTagesstrukturInvoiceCreation.CostBearer2SupportConcept.Oid.Value, start.Value, end.Value); - List anwesenheitstage = new List(); - foreach (var sr in serviceRecords) + if (serviceRecords != null && serviceRecords.Count > 0) { - if (!anwesenheitstage.Contains(sr.Start.Value.Date)) - anwesenheitstage.Add(sr.Start.Value.Date); - } + var anwesenheiten = serviceRecords.Where(s => s.ServiceDescription.Name.Trim().ToLower().Contains("anwesend ts")).OrderBy(s => s.Start).ToList(); - if ((end.Value - start.Value).TotalDays / 2 > anwesenheitstage.Count) - { - data.AmountTotal /= 2; - data.GrossAmountTotal /= 2; + List anwesenheitstage = new List(); + foreach (var sr in anwesenheiten) + { + if (!anwesenheitstage.Contains(sr.Start.Value.Date)) + anwesenheitstage.Add(sr.Start.Value.Date); + } + + // Wenn die erste Anwesenheit erst ab dem 15. ist, wird die Pauschale für den Monat halbiert + if (anwesenheitstage[0].Day <= 15) + { + data.AmountTotal /= 2; + data.GrossAmountTotal /= 2; + } } + } return billingData;