diff --git a/ReportImp/AwoIntegrationsGGmbH/AwoIntegrationsGGmbH.csproj b/ReportImp/AwoIntegrationsGGmbH/AwoIntegrationsGGmbH.csproj index e2d735598..afc50abea 100644 --- a/ReportImp/AwoIntegrationsGGmbH/AwoIntegrationsGGmbH.csproj +++ b/ReportImp/AwoIntegrationsGGmbH/AwoIntegrationsGGmbH.csproj @@ -55,6 +55,7 @@ + True diff --git a/ReportImp/AwoIntegrationsGGmbH/Calculations/CustomServiceRecordStatisticFactory.cs b/ReportImp/AwoIntegrationsGGmbH/Calculations/CustomServiceRecordStatisticFactory.cs new file mode 100644 index 000000000..839fa9582 --- /dev/null +++ b/ReportImp/AwoIntegrationsGGmbH/Calculations/CustomServiceRecordStatisticFactory.cs @@ -0,0 +1,113 @@ +using System; +using System.Collections.Generic; +using BeWo.Service.Plugins; +using BS.Shared; +using BS.Shared.DataContracts; + + +namespace AwoIntegrationsGGmbH.Calculations +{ + public class CustomServiceRecordStatisticFactory : ServiceRecordStatisticFactory + { + + public override ServiceRecordStatisticsInfoDC GetServiceRecordStatisticInfo(long costBearer2SupportConceptOid, DateTime statisticsDate) + { + var stats = CreateSupportConceptStatisticsImpl(costBearer2SupportConceptOid, statisticsDate); + + var dc = new ServiceRecordStatisticsInfoDC(); + + + + dc.Header = new string[4]; + dc.Header[0] = "Bewilligungszeitraum:"; + dc.Header[1] = "Geleistet diesen Monat/Gesamt:"; + dc.Header[2] = "Bewilligt diesen Monat/Gesamt:"; + dc.Header[3] = "Frei diesen Monat/Gesamt:"; + + dc.ForegroundColor = new string[4]; + dc.ForegroundColor[0] = "#FF2B508B"; + dc.ForegroundColor[1] = "#FF2B508B"; + dc.ForegroundColor[2] = "#FF2B508B"; + dc.ForegroundColor[3] = "#FF2B508B"; + + dc.PeriodStatisticInfos = new List(); + + + if (stats != null) + { + if (stats.PeriodStatistics.Count > 1 && !TimeSpanIsEqual(stats)) + dc.PeriodStatisticInfos.Add(CreateTotalStatistics(stats, statisticsDate)); + + foreach (var pdc in stats.PeriodStatistics) + { + dc.PeriodStatisticInfos.Add(CreateServiceRecordPeriodStatisticsInfo(stats, pdc, statisticsDate)); + } + } + + return dc; + } + + + public ServiceRecordPeriodStatisticsInfoDC CreateTotalStatistics(SupportConceptStatisticsDC stats, DateTime statisticsDate) + { + var dc = CreateDefaultServiceRecordPeriodStatisticsInfo(4); + dc.LeftValues[0] = "Gesamt"; + + dc.LeftValues[1] = String.Format("{0:0.00}", stats.MinutesProvidedThisMonth / 60); + dc.RightValues[1] = String.Format("{0:0.00}", stats.MinutesProvidedTotalRounded / 60); + + dc.LeftValues[2] = String.Format("{0:0.00}", stats.MinutesApprovedPerMonth / 60); + dc.RightValues[2] = String.Format("{0:0.00}", stats.MinutesApprovedTotal / 60); + + dc.LeftValues[3] = String.Format("{0:0.00}", (stats.MinutesApprovedPerMonth - stats.MinutesProvidedThisMonth) / 60); + dc.RightValues[3] = String.Format("{0:0.00}", (stats.MinutesApprovedTotal - stats.MinutesProvidedTotalRounded) / 60); + + return dc; + } + + public ServiceRecordPeriodStatisticsInfoDC CreateServiceRecordPeriodStatisticsInfo(SupportConceptStatisticsDC stats, SupportConceptPeriodStatisticsDC periodStats, DateTime statisticsDate) + { + var dc = CreateDefaultServiceRecordPeriodStatisticsInfo(4); + + if (periodStats.SupportConceptApprovalPeriod != null) + { + if (periodStats.SupportConceptApprovalPeriod.ServiceCategory != null) + { + dc.LeftValues[0] = String.Format("{0}: {1:dd.MM.yy} - {2:dd.MM.yy}", + periodStats.SupportConceptApprovalPeriod.ServiceCategory.Name, + periodStats.SupportConceptApprovalPeriod.StartDate, + periodStats.SupportConceptApprovalPeriod.EndDate); + } + else + { + dc.LeftValues[0] = String.Format("{0:dd.MM.yy} - {1:dd.MM.yy}", + periodStats.SupportConceptApprovalPeriod.StartDate, + periodStats.SupportConceptApprovalPeriod.EndDate); + } + } + + dc.LeftValues[1] = String.Format("{0:0.00}", periodStats.MinutesProvidedThisMonth / 60); + dc.RightValues[1] = String.Format("{0:0.00}", periodStats.MinutesProvidedTotalRounded / 60); + + dc.LeftValues[2] = String.Format("{0:0.00}", periodStats.MinutesApprovedPerMonth / 60); + dc.RightValues[2] = String.Format("{0:0.00}", periodStats.MinutesApprovedTotal / 60); + + dc.LeftValues[3] = String.Format("{0:0.00}", (periodStats.MinutesApprovedPerMonth - periodStats.MinutesProvidedThisMonth) / 60); + dc.RightValues[3] = String.Format("{0:0.00}", (periodStats.MinutesApprovedTotal - periodStats.MinutesProvidedTotalRounded) / 60); + + return dc; + } + + public override decimal GetApprovedMinutesPerMonth(SupportConceptPeriodStatisticsDC periodStats) + { + if (periodStats.SupportConceptApprovalPeriod != null && periodStats.SupportConceptApprovalPeriod.StartDate.HasValue && periodStats.SupportConceptApprovalPeriod.EndDate.HasValue) + { + if (periodStats.SupportConceptApprovalPeriod.ApprovedBEPerInterval.HasValue && periodStats.SupportConceptApprovalPeriod.ApprovedBEInterval.HasValue && periodStats.SupportConceptApprovalPeriod.ApprovedBEInterval.Value == SupportConceptApprovalInterval.Monthly) + { + return periodStats.SupportConceptApprovalPeriod.ApprovedBEPerInterval.Value * 60; + } + } + return base.GetApprovedMinutesPerMonth(periodStats); + } + } +}