diff --git a/ReportImp/AufEigenenFuessenStehen/ServicesOverviewReport.cs b/ReportImp/AufEigenenFuessenStehen/ServicesOverviewReport.cs index e08628e3a..f4040bd0a 100644 --- a/ReportImp/AufEigenenFuessenStehen/ServicesOverviewReport.cs +++ b/ReportImp/AufEigenenFuessenStehen/ServicesOverviewReport.cs @@ -1,3 +1,5 @@ +using System; +using System.Collections.Generic; using BeWo.Report; using BeWo.Report.ReportObjects; @@ -13,7 +15,74 @@ namespace AufEigenenFuessenStehen public void SetReportDataSource(ServicesOverviewRO pRO) { + // Claude: Der CustomReportCreator baut das RO über CopyFromRO neu auf und verteilt dabei nur die Services + // auf die beiden Kopien (Soziotherapie / Rest). ServicesDouble wird nur in ServicesOverviewRO.Create() + // gefüllt und bleibt in den Kopien leer, wodurch der an ServicesDouble gebundene DetailReport nichts + // ausgibt. Deshalb hier aus den aktuellen Services neu aufbauen. + CreateServicesDouble(pRO); + bindingSource1.DataSource = pRO; } + + // Claude: Erzeugt die zweispaltige Darstellung (ServicesDouble) aus den Services des ROs. + // Logik entspricht dem Aufbau in ServicesOverviewRO.Create(). + private static void CreateServicesDouble(ServicesOverviewRO pRO) + { + var servicesDouble = new List(); + + if (pRO.Services != null) + { + int i = 0; + + foreach (ServicesOverviewRO.ServiceDetail s in pRO.Services) + { + var sdd = new ServicesOverviewRO.ServiceDoubleDetail(); + sdd.CostBearer = s.CostBearer; + sdd.EmployeeName = s.EmployeeAbbr; + sdd.Minutes = s.MinutesQualified + s.MinutesUnqualified; + sdd.CustomerCount = s.CustomerCount; + sdd.FLS = sdd.Minutes / 60; + + sdd.FLSString = String.Format("{0:0.##}", sdd.FLS); + sdd.FLSString = sdd.FLSString.Replace(".", ","); + + sdd.ServiceCategoryAbbr = s.ServiceCategoryAbbr; + sdd.ServiceCategory = s.ServiceCategory; + sdd.ServiceDescription = s.ServiceDescription; + + sdd.StartDate = s.StartDate; + + sdd.IsBillable = s.IsBillable; + + if (i < (pRO.Services.Count / (float)2)) + { + servicesDouble.Add(sdd); + } + else + { + sdd = servicesDouble[i - servicesDouble.Count]; + sdd.CostBearer2 = s.CostBearer; + sdd.EmployeeName2 = s.EmployeeAbbr; + sdd.Minutes2 = s.MinutesQualified + s.MinutesUnqualified; + sdd.CustomerCount2 = s.CustomerCount; + sdd.FLS2 = sdd.Minutes2 / 60; + sdd.FLSString2 = String.Format("{0:0.##}", sdd.FLS2); + sdd.FLSString2 = sdd.FLSString2.Replace(".", ","); + + sdd.ServiceCategoryAbbr2 = s.ServiceCategoryAbbr; + sdd.ServiceCategory2 = s.ServiceCategory; + sdd.ServiceDescription2 = s.ServiceDescription; + + sdd.StartDate2 = s.StartDate; + + sdd.IsBillable2 = s.IsBillable; + } + + i++; + } + } + + pRO.ServicesDouble = servicesDouble; + } } }