FeidPartnerReports - Finish Umstellung auf Min - insbesondere Hilfeplanübersicht

This commit is contained in:
2025-09-12 13:07:58 +02:00
parent b8a5f93b48
commit 97e54d5580
3 changed files with 75 additions and 13 deletions

View File

@@ -30,7 +30,7 @@ namespace FeidPartnerReports.Calculation
{
return 0;
}
return GetApprovedHoursForPeriod(pStart.Value, pEnd.Value, GetApprovedHoursPerMonth(scap));
return GetApprovedHoursForPeriod(pStart.Value, pEnd.Value, GetApprovedHoursPerMonth(scap, costRatePeriods));
}
@@ -59,7 +59,7 @@ namespace FeidPartnerReports.Calculation
if (scap.StartDate.HasValue)
{
return GetApprovedHoursForPeriod(scap.StartDate.Value, end, GetApprovedHoursPerMonth(scap));
return GetApprovedHoursForPeriod(scap.StartDate.Value, end, GetApprovedHoursPerMonth(scap, costRates));
}
return 0;
@@ -76,7 +76,7 @@ namespace FeidPartnerReports.Calculation
{
foreach (var scap in relDC.ApprovalPeriodList)
{
totalApproved += GetApprovedHoursTillNow(scap, null, appointedDate, false) ?? 0;
totalApproved += GetApprovedHoursTillNow(scap, relDC.CostBearer.CostRatePeriods, appointedDate, false) ?? 0;
}
}
@@ -90,7 +90,7 @@ namespace FeidPartnerReports.Calculation
decimal total = 0;
foreach (var scap in relDC.ApprovalPeriodList)
{
var approvedPerMonth = GetApprovedHoursPerMonth(scap);
var approvedPerMonth = GetApprovedHoursPerMonth(scap, relDC.CostBearer.CostRatePeriods);
// Anpassung auf Minuten noch nötig!!!
// var approvedPerMonth = GetApprovedHoursPerMonth(scap, relDC);
var approved = GetApprovedHoursForPeriod(scap.StartDate.Value, scap.EndDate.Value, approvedPerMonth);
@@ -126,12 +126,12 @@ namespace FeidPartnerReports.Calculation
decimal total = 0;
foreach (var scap in c2s.ApprovalPeriodList)
{
total += GetApprovedHoursPerMonth(scap);
total += GetApprovedHoursPerMonth(scap, c2s.CostBearer.CostRatePeriods);
}
return total;
}
private decimal GetApprovedHoursPerMonth(SupportConceptApprovalPeriodDC scap)
private decimal GetApprovedHoursPerMonth(SupportConceptApprovalPeriodDC scap, List<CostRatePeriodDC> costRatePeriods)
{
if (scap.ApprovedBEInterval.HasValue && scap.ApprovedBEPerInterval.HasValue)
{
@@ -153,9 +153,37 @@ namespace FeidPartnerReports.Calculation
}
}
var flsProWoche = GetApprovedHoursPerWeek(scap, new List<CostRatePeriodDC>()) ?? 0;
var flsProWoche = GetApprovedHoursPerWeek(scap, costRatePeriods) ?? 0;
return flsProWoche * 4.34m;
}
public override decimal? GetApprovedHoursPerWeekAverage(SupportConceptCostBearerRelDC relDC, bool useIsCalculationWithFactor)
{
// Fahrtzeiten nicht in Ministatistik nur für Abrechnung
relDC.ApprovalPeriodList = relDC.ApprovalPeriodList.Where(p => p.ServiceCategory == null || String.IsNullOrEmpty(p.ServiceCategory.Abbreviation) ||
!p.ServiceCategory.Abbreviation.Contains("FZQA")).ToList();
var duration = relDC.GetApprovedDuration();
if (!duration.HasValue)
{
return null;
}
if (relDC.ApprovalPeriodList != null && relDC.ApprovalPeriodList.Count == 1)
{
decimal? hoursPerWeek = GetApprovedHoursPerWeek(relDC.ApprovalPeriodList[0], relDC.CostBearer.CostRatePeriods);
if (useIsCalculationWithFactor)
hoursPerWeek = ApplyIsCalculationWithFactor(relDC, hoursPerWeek);
return hoursPerWeek;
}
if (duration.Value.Days != 0)
{
var averagePerDay = this.GetApprovedHoursTotal(relDC, useIsCalculationWithFactor) / duration.Value.Days;
return averagePerDay * 7;
}
return null;
}
}
}

View File

@@ -19,7 +19,36 @@ using BeWo.Service.ServiceImplementations;
namespace FeidPartnerReports
{
public class CustomSupportConceptAnalysisCreator : SupportConceptAnalysisCreator
{
{
public override List<SupportConceptOverviewDC> GetSupportConceptAnalysis2(IList<long> 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);
// Die Berechnungen sind jetzt soweit in Ordnung, werden nur im letzen Schritt, dass was hier auch ist, wieder verfälscht,
// da der Kostenträger auf Min und nicht wie von denen gewünscht Std ist - das drehe ich hier inkl. Beschriftung in Stunden zurück
foreach (var iDC in result)
{
if (iDC.ServiceUnit.CostRateValue == 1)
{
iDC.ServiceUnit.UnitName = "Stunden";
iDC.HeaderString.Replace("Minuten/Woche", "Stunden/Woche");
iDC.BEApprovedPerWeek = iDC.BEApprovedPerWeek / 60m;
iDC.BEApprovedSum = iDC.FLSApprovedSum;
iDC.BEApprovedTillNow = iDC.FLSApprovedTillNow;
iDC.BEBilledTillNow = iDC.FLSBilledTillNow;
iDC.BEDifferenceApprovedRecordedTillNow = iDC.FLSDifferenceApprovedRecordedTillNow;
iDC.BEDifferenceApprovedRecordedTillNowInPercent = iDC.FLSDifferenceApprovedRecordedTillNowInPercent;
iDC.BEOpen = iDC.FLSOpen;
iDC.BEOpenPerWeek = iDC.FLSOpenPerWeek;
if (iDC.BEOpenPerWeek > iDC.BEOpen)
iDC.BEOpenPerWeek = iDC.BEOpen;
iDC.BERecordedTillNow = iDC.FLSRecordedTillNow;
iDC.BERecordedTillNowInPercent = iDC.FLSRecordedTillNowInPercent;
}
}
return result;
}
public override List<ServiceRecordDC> GetServiceRecordDCs(CostBearer2SupportConcept c2s, DateTime minDate, DateTime maxDate)
{
var dcList = new List<ServiceRecordDC>();
@@ -28,7 +57,11 @@ namespace FeidPartnerReports
if (_cs2ServiceRecords.ContainsKey(c2s.Oid.Value))
{
dcList = _cs2ServiceRecords[c2s.Oid.Value];
dcList.Where(s => s.Start >= minDate && s.Start < maxDate).ToList();
dcList = dcList.Where(s => s.Start >= minDate && s.Start < maxDate).ToList();
if (dcList != null && dcList.Count() > 0)
{
dcList = dcList.Where(s => !s.GroupOid.HasValue).ToList();
}
}
}

View File

@@ -79,10 +79,11 @@ namespace FeidPartnerReports.Statistics
}
start = start.AddDays(7);
}
if (!cb2sc.CostBearer.Organisation.Name.ToLower().Contains("alt"))
{
item.MinutesApprovedTotal /= 60;
}
// AB, 12.09.2025: wird jetzt in Calculations schon richtig gemacht
//if (!cb2sc.CostBearer.Organisation.Name.ToLower().Contains("alt"))
//{
// item.MinutesApprovedTotal /= 60;
//}
SetMinutesFreePerWeek(stat, item);
}