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;