From e6a06ced420f0207745353735944c1d0ac8481df Mon Sep 17 00:00:00 2001 From: Alexandra Date: Wed, 22 Apr 2026 14:21:45 +0200 Subject: [PATCH] =?UTF-8?q?FinanceRO=20-=20Bugfix=20wenn=20Betreuung=20bee?= =?UTF-8?q?ndet=20und=20ein=20Zeitraum=20=C3=BCber=20Ende=20hinweg=20gew?= =?UTF-8?q?=C3=A4hlt=20wird=20SupportOID=3D160609?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Report/ReportObjects/FinanceRO.cs | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/Report/ReportObjects/FinanceRO.cs b/Report/ReportObjects/FinanceRO.cs index 13e1d5e7d..7fe00c880 100644 --- a/Report/ReportObjects/FinanceRO.cs +++ b/Report/ReportObjects/FinanceRO.cs @@ -223,15 +223,20 @@ namespace BeWo.Report.ReportObjects { records = new List(); } - + + // AB, 22.04.2026: Bugfix wenn Betreuung beendet und ein Zeitraum über Ende hinweg gewählt wird + var terminationDate = ro.Costbearer2Supportconcept.SupportConcept.Customer.TerminationDate; + DateTime? effectiveEnd = end; + if (terminationDate.HasValue && (!effectiveEnd.HasValue || terminationDate.Value < effectiveEnd.Value)) + { + effectiveEnd = terminationDate.Value; + } //1. if (ro.SupportConceptApprovalPeriod != null && ro.SupportConceptApprovalPeriod.ServiceCategory != null) { ro.Leistungskategorie = ro.SupportConceptApprovalPeriod.ServiceCategory.Name; - ro.ServiceRecords = records.Where(sr => - sr.ServiceDescription.Category.ServiceCategoryOid == ro.SupportConceptApprovalPeriod.ServiceCategory.ServiceCategoryOid) - .ToList(); + ro.ServiceRecords = records.Where(sr => sr.ServiceDescription.Category.ServiceCategoryOid == ro.SupportConceptApprovalPeriod.ServiceCategory.ServiceCategoryOid).ToList(); } else { @@ -272,7 +277,7 @@ namespace BeWo.Report.ReportObjects } else { - ro.ApprovedHours = calc.GetApprovedHoursTillNow(ro.Costbearer2Supportconcept, end.Value) ?? 0; + ro.ApprovedHours = calc.GetApprovedHoursTillNow(ro.Costbearer2Supportconcept, effectiveEnd.Value) ?? 0; } ro.StundenNichtFehlkontakte = calc.GetBillableDurationInMinutes(flsRecords.Where(sr => sr.Start.Value.Date < end.Value.AddDays(1)).ToList()) / 60; ro.StundenFehlkontakte = calc.GetBillableDurationInMinutes(fkRecords.Where(sr => sr.Start.Value.Date < end.Value.AddDays(1)).ToList()) / 60; @@ -317,20 +322,20 @@ namespace BeWo.Report.ReportObjects } if (ro.SupportConceptApprovalPeriod != null) { - ro.ApprovedHoursInReportTimeSpan = calc.GetApprovedHoursForPeriod(ro.SupportConceptApprovalPeriod, costRateDcs, start, end) ?? 0; + ro.ApprovedHoursInReportTimeSpan = calc.GetApprovedHoursForPeriod(ro.SupportConceptApprovalPeriod, costRateDcs, start, effectiveEnd) ?? 0; } else { - ro.ApprovedHoursInReportTimeSpan = calc.GetApprovedHoursForPeriod(ro.Costbearer2Supportconcept, start.Value, end.Value); + ro.ApprovedHoursInReportTimeSpan = calc.GetApprovedHoursForPeriod(ro.Costbearer2Supportconcept, start.Value, effectiveEnd.Value); } if (splitByServiceCategory && ro.SupportConceptApprovalPeriod != null) { - ro.ApprovedAmountInReportTimeSpan = (decimal)calc.GetApprovedAmountForPeriod(ro.Costbearer2Supportconcept, start.Value, end.Value, ro.SupportConceptApprovalPeriod.ServiceCategory); + ro.ApprovedAmountInReportTimeSpan = (decimal)calc.GetApprovedAmountForPeriod(ro.Costbearer2Supportconcept, start.Value, effectiveEnd.Value, ro.SupportConceptApprovalPeriod.ServiceCategory); } else { - ro.ApprovedAmountInReportTimeSpan = (decimal)calc.GetApprovedAmountForPeriod(ro.Costbearer2Supportconcept, start.Value, end.Value, null); + ro.ApprovedAmountInReportTimeSpan = (decimal)calc.GetApprovedAmountForPeriod(ro.Costbearer2Supportconcept, start.Value, effectiveEnd.Value, null); } ro.AmountInReportTimeSpan = 0; ro.AmountNichtFehlkontakteInReportTimeSpan = 0;