diff --git a/Report/ReportObjects/FinanceRO.cs b/Report/ReportObjects/FinanceRO.cs index 7fff4334d..6bfea18db 100644 --- a/Report/ReportObjects/FinanceRO.cs +++ b/Report/ReportObjects/FinanceRO.cs @@ -57,7 +57,9 @@ namespace BeWo.Report.ReportObjects public decimal ApprovedHoursInReportTimeSpan { get; set; } - public decimal BillableHoursInReportTimeSpan { get; set; } + public decimal ApprovedAmountInReportTimeSpan { get; set; } + + public decimal BillableHoursInReportTimeSpan { get; set; } public decimal BillableHoursInReportTimeSpanWithFactor { get; set; } @@ -315,7 +317,14 @@ namespace BeWo.Report.ReportObjects ro.ApprovedHoursInReportTimeSpan = calc.GetApprovedHoursForPeriod(ro.Costbearer2Supportconcept, start.Value, end.Value); } - + if (splitByServiceCategory && ro.SupportConceptApprovalPeriod != null) + { + ro.ApprovedAmountInReportTimeSpan = (decimal)calc.GetApprovedAmountForPeriod(ro.Costbearer2Supportconcept, start.Value, end.Value, ro.SupportConceptApprovalPeriod.ServiceCategory); + } + else + { + ro.ApprovedAmountInReportTimeSpan = (decimal)calc.GetApprovedAmountForPeriod(ro.Costbearer2Supportconcept, start.Value, end.Value, null); + } ro.AmountInReportTimeSpan = 0; ro.AmountNichtFehlkontakteInReportTimeSpan = 0; ro.AmountFehlkontakteInReportTimeSpan = 0; @@ -486,9 +495,12 @@ namespace BeWo.Report.ReportObjects ro = CreateSupportConceptFinanceRO(item, relDC, scapDC, true); // statt dem auskommentierten Bereich - var AmountTotal = calc.GetApprovedAmount(scapDC, relDC.CostBearer.CostRatePeriods) ?? 0; - ro.AmountTotal = AmountTotal; - ro.OpenAmount = AmountTotal; + var amountTotal = calc.GetApprovedAmount(scapDC, relDC.CostBearer.CostRatePeriods) ?? 0; + ro.AmountTotal = amountTotal; + ro.OpenAmount = amountTotal; + + //var approvedAmountInTimeSpan = calc.GetApprovedAmountInTimeSpan(relDC, result.ReportStartDate, result.ReportEndDate) ?? 0; + SmallList.Add(ro); diff --git a/Shared/Services/Calculations.cs b/Shared/Services/Calculations.cs index 90bd69e5f..0340845b9 100644 --- a/Shared/Services/Calculations.cs +++ b/Shared/Services/Calculations.cs @@ -43,6 +43,61 @@ namespace BS.Shared.Services } } + public virtual decimal? GetApprovedAmountForPeriod(SupportConceptCostBearerRelDC c2sDc, DateTime? start, DateTime? end, ServiceCategoryDC cat) + { + // Start- und Enddate sowie Leistungskategorie sind KannFelder + var dtStart = c2sDc.StartDate; + var dtEnd = c2sDc.EndDate; + + if (start.HasValue && start > dtStart) + { + dtStart = start; + } + if (end.HasValue && end < dtEnd) + { + dtEnd = end; + } + + decimal summe = 0; + var orgCrList = c2sDc.CostBearer.CostRatePeriods; + + if (cat != null) // Im Fall, dass nur eine bestimmte Leistungskategorie berücksichtigt werden soll + { + foreach (var scap in c2sDc.ApprovalPeriodList) + { + if (scap.StartDate <= dtEnd && scap.EndDate >= dtStart && scap.ServiceCategory != null && scap.ServiceCategory.ServiceCategoryOid == cat.ServiceCategoryOid) + { + if (scap.ServiceCategory.CostRatePeriods != null && scap.ServiceCategory.CostRatePeriods.Count > 0) + { + summe += GetApprovedAmountDefaultHourlyRateForPeriod(scap, scap.ServiceCategory.CostRatePeriods, dtStart, dtEnd) ?? 0; + } + else + { + summe += GetApprovedAmountDefaultHourlyRateForPeriod(scap, orgCrList, dtStart, dtEnd) ?? 0; + } + } + } + } + else + { + foreach (var scap in c2sDc.ApprovalPeriodList) + { + if (scap.StartDate <= dtEnd && scap.EndDate >= dtStart) + { + if (scap.ServiceCategory != null && scap.ServiceCategory.CostRatePeriods != null && scap.ServiceCategory.CostRatePeriods.Count > 0) + { + summe += GetApprovedAmountDefaultHourlyRateForPeriod(scap, scap.ServiceCategory.CostRatePeriods, dtStart, dtEnd) ?? 0; + } + else + { + summe += GetApprovedAmountDefaultHourlyRateForPeriod(scap, orgCrList, dtStart, dtEnd) ?? 0; + } + } + } + } + return summe; + } + public virtual decimal? GetApprovedAmount(SupportConceptApprovalPeriodDC scap, List costRatePeriods) { decimal t1;