diff --git a/ReportImp/SHKService/SHKService.csproj b/ReportImp/SHKService/SHKService.csproj
index c6dc53ebb..4493034dc 100644
--- a/ReportImp/SHKService/SHKService.csproj
+++ b/ReportImp/SHKService/SHKService.csproj
@@ -119,6 +119,7 @@
Quittierungsbeleg.cs
+
Component
@@ -131,6 +132,10 @@
{B0D73E3D-4AE7-4024-93A6-DB1F46D7CCEE}
Data
+
+ {663efcb5-9e3e-4c76-97ee-3188e072634c}
+ ReportingService
+
{40d8b312-ea64-49e3-a31a-5e57ed4d5654}
Report
diff --git a/ReportImp/SHKService/Service/CustomSupportConceptAnalysisCreator.cs b/ReportImp/SHKService/Service/CustomSupportConceptAnalysisCreator.cs
new file mode 100644
index 000000000..174fa4b9b
--- /dev/null
+++ b/ReportImp/SHKService/Service/CustomSupportConceptAnalysisCreator.cs
@@ -0,0 +1,102 @@
+using BeWo.Data.Access;
+using BeWo.Data.Entities;
+using BeWo.Service.DCEntityMapper;
+using BeWo.Service.Plugins;
+using BS.Shared;
+using BS.Shared.Services;
+using BS.Shared.DataContracts;
+using BS.Shared.Extensions;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace SHKService.Service
+{
+ public class CustomSupportConceptAnalysisCreator : SupportConceptAnalysisCreator
+ {
+ public override List GetSupportConceptAnalysis2(IList c2sOids, long? employeeOid, long? teamOid, long? catOid, DateTime? startDate, DateTime? endDate, int? expiredMonths, bool showArchivedScs)
+ {
+ var result = base.GetSupportConceptAnalysis2(c2sOids, employeeOid, teamOid, catOid, startDate, endDate, expiredMonths, showArchivedScs);
+
+ foreach (var iDC in result)
+ {
+ if (iDC.ServiceUnit.CostRateValue == 1)
+ {
+ if (iDC.FLSApprovedSum <= 0)
+ {
+ iDC.FLSRecordedTillNowInPercent = 0;
+ }
+ else
+ {
+ iDC.FLSRecordedTillNowInPercent = iDC.FLSRecordedTillNow / iDC.FLSApprovedSum * 100; // Leistungen %
+ }
+
+
+ iDC.FLSDifferenceApprovedRecordedTillNow = iDC.FLSRecordedTillNow - iDC.FLSApprovedTillNow; // Über-/Unterbrinung [Stunden]
+ if (iDC.FLSApprovedTillNow <= 0)
+ {
+ iDC.FLSDifferenceApprovedRecordedTillNowInPercent = 0;
+ }
+ else
+ {
+ iDC.FLSDifferenceApprovedRecordedTillNowInPercent = // Soll/Ist % UND Über-Unterbringung [%]
+ iDC.FLSRecordedTillNow / iDC.FLSApprovedTillNow *
+ 100;
+ }
+
+
+ if (iDC.OpenWeeks <= 0)
+ {
+ iDC.FLSOpenPerWeek = 0;
+ }
+ else
+ {
+ iDC.FLSOpenPerWeek = iDC.FLSOpen / iDC.OpenWeeks; // Restliche Stunden/Woche
+ }
+
+ iDC.ServiceUnit.CostRateValue = 60;
+ iDC.ServiceUnit.UnitName = "Stunden";
+
+ iDC.BEApprovedPerWeek = iDC.ServiceUnit.GetHoursInBE(iDC.FLSApprovedPerWeek);
+ iDC.BEApprovedSum = iDC.ServiceUnit.GetHoursInBE(iDC.FLSApprovedSum);
+ iDC.BEApprovedTillNow = iDC.ServiceUnit.GetHoursInBE(iDC.FLSApprovedTillNow);
+ iDC.BEBilledTillNow = iDC.ServiceUnit.GetHoursInBE(iDC.FLSBilledTillNow);
+ iDC.BEDifferenceApprovedRecordedTillNow =
+ iDC.ServiceUnit.GetHoursInBE(iDC.FLSDifferenceApprovedRecordedTillNow);
+ iDC.BEDifferenceApprovedRecordedTillNowInPercent =
+ iDC.ServiceUnit.GetHoursInBE(iDC.FLSDifferenceApprovedRecordedTillNowInPercent);
+ iDC.BEOpen = iDC.ServiceUnit.GetHoursInBE(iDC.FLSOpen);
+ iDC.BEOpenPerWeek = iDC.ServiceUnit.GetHoursInBE(iDC.FLSOpenPerWeek);
+ if (iDC.BEOpenPerWeek > iDC.BEOpen)
+ iDC.BEOpenPerWeek = iDC.BEOpen;
+ iDC.BERecordedTillNow = iDC.ServiceUnit.GetHoursInBE(iDC.FLSRecordedTillNow);
+ iDC.BERecordedTillNowInPercent = iDC.ServiceUnit.GetHoursInBE(iDC.FLSRecordedTillNowInPercent);
+ }
+ }
+ return result;
+
+ }
+
+ public override void BerechneBewilligteStunden(BS.Shared.Services.Calculations calc, SupportConceptOverviewDC iDc, SupportConceptCostBearerRelDC relDc, DateTime? appointedDate)
+ {
+ if (relDc.CostBearer.CostRatePeriods != null)
+ {
+ foreach(var crp in relDc.CostBearer.CostRatePeriods)
+ {
+ if (crp.CostRateType == CostRatePeriodType.MinutesPerServiceUnit && crp.CostRateValue == 1)
+ crp.CostRateValue = 60;
+ }
+ }
+
+ iDc.FLSApprovedPerWeek = calc.GetApprovedHoursPerWeekAverage(relDc, true) ?? 0m;
+
+ decimal? flsTotal = calc.GetApprovedHoursTotal(relDc, true);
+
+ iDc.FLSApprovedSum = flsTotal ?? 0m;
+ var approvedTillNow = calc.GetApprovedHoursTillNow(relDc, appointedDate);
+ iDc.FLSApprovedTillNow = approvedTillNow ?? 0;
+ }
+ }
+}