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; + } + } +}