LebenshilfeBadKreuznach/Statistics/CustomServiceRecordStatisticFactory - Frei pro Woche auf Gesamt beziehen
SupportOID=167345
This commit is contained in:
@@ -24,10 +24,6 @@ namespace LebenshilfeBadKreuznach.Statistics
|
||||
dc.Header = new string[4];
|
||||
dc.Header[0] = "Bewilligungszeitraum:";
|
||||
|
||||
//dc.Header[1] = "Geleistet diese Woche/im Quartal:";
|
||||
//dc.Header[2] = "Bewilligt diese Woche/im Quartal:";
|
||||
//dc.Header[3] = "Frei pro Woche(Ø)/im Quartal:";
|
||||
// AB: Bitte oben löschen und das hier einkommentieren
|
||||
dc.Header[1] = "Geleistet diese Woche/im Monat:";
|
||||
dc.Header[2] = "Bewilligt diese Woche/im Monat:";
|
||||
dc.Header[3] = "Frei pro Woche(Ø)/im Bewilligungszeitraum:";
|
||||
@@ -80,15 +76,32 @@ namespace LebenshilfeBadKreuznach.Statistics
|
||||
dc.RightValues[2] = String.Format("{0:0.00}", periodStats.MinutesApprovedPerMonth / 60);
|
||||
|
||||
|
||||
//Berechne Resttage bis zum Ende des Quartals
|
||||
DateTime dt = statisticsDate.Date;
|
||||
var firstDayOfQuarter = GetFirstDateOfQuarter(dt);
|
||||
|
||||
TimeSpan ts = firstDayOfQuarter.AddMonths(3).Subtract(dt);
|
||||
var test = firstDayOfQuarter.AddMonths(3).Subtract(firstDayOfQuarter.AddMonths(3).AddDays(-1));
|
||||
if (ts.Days > 0)
|
||||
//Frei pro Woche wie im Standard: alle freien Stunden im Gesamtbewilligungszeitraum / Anzahl der verbleibenden Wochen
|
||||
if (periodStats.SupportConceptApprovalPeriod != null && periodStats.SupportConceptApprovalPeriod.EndDate.HasValue)
|
||||
{
|
||||
periodStats.MinutesFreePerWeek = (periodStats.MinutesApprovedPerMonth - periodStats.MinutesProvidedThisMonth) / (ts.Days / 7m);
|
||||
DateTime dtPeriod = statisticsDate.Date;
|
||||
if (periodStats.SupportConceptApprovalPeriod.StartDate.HasValue && periodStats.SupportConceptApprovalPeriod.StartDate > dtPeriod)
|
||||
{
|
||||
dtPeriod = periodStats.SupportConceptApprovalPeriod.StartDate.Value;
|
||||
}
|
||||
|
||||
TimeSpan tsPeriod = periodStats.SupportConceptApprovalPeriod.EndDate.Value.Subtract(dtPeriod);
|
||||
int daysPeriod = tsPeriod.Days + 1;
|
||||
|
||||
decimal freeTotalPeriod = periodStats.MinutesApprovedTotal - periodStats.MinutesProvidedTotalRounded;
|
||||
if (daysPeriod > 0)
|
||||
{
|
||||
periodStats.MinutesFreePerWeek = freeTotalPeriod / (daysPeriod / 7m);
|
||||
}
|
||||
else // Bewilligung ist abgelaufen
|
||||
{
|
||||
periodStats.MinutesFreePerWeek = freeTotalPeriod;
|
||||
}
|
||||
|
||||
if (periodStats.MinutesFreePerWeek > freeTotalPeriod)
|
||||
{
|
||||
periodStats.MinutesFreePerWeek = freeTotalPeriod;
|
||||
}
|
||||
if (periodStats.MinutesFreePerWeek < 0)
|
||||
{
|
||||
periodStats.MinutesFreePerWeek = 0;
|
||||
@@ -99,8 +112,6 @@ namespace LebenshilfeBadKreuznach.Statistics
|
||||
periodStats.MinutesFreePerWeek = 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
var available = periodStats.MinutesApprovedTotal - periodStats.MinutesProvidedTotal;
|
||||
dc.LeftValues[3] = String.Format("{0:0.00}", periodStats.MinutesFreePerWeek / 60);
|
||||
dc.RightValues[3] = String.Format("{0:0.00}", available / 60);
|
||||
@@ -118,110 +129,12 @@ namespace LebenshilfeBadKreuznach.Statistics
|
||||
}
|
||||
|
||||
|
||||
protected override void ProcessServiceRecord(ServiceRecord sr, CostBearer2SupportConcept cb2sc, SupportConceptStatisticsDC stats, DateTime statisticsDate, BS.Shared.Services.Calculations calc)
|
||||
{
|
||||
if (sr.Start >= new DateTime(2023, 9, 1))
|
||||
{
|
||||
int test = 0;
|
||||
}
|
||||
SupportConceptPeriodStatisticsDC periodStats = GetPeriodFromServiceRecord(cb2sc, stats.PeriodStatistics, sr);
|
||||
|
||||
decimal minutesProvidedWeekNew = 0;
|
||||
decimal minutesProvidedWeekOld = 0;
|
||||
decimal minutesProvidedQuartalNew = 0;
|
||||
decimal minutesProvidedQuartalOld = 0;
|
||||
if (periodStats != null)
|
||||
{
|
||||
//Verhindern dass das ServiceRecord durch den base Aufruf doppelt gezählt wird
|
||||
minutesProvidedQuartalOld = periodStats.MinutesProvidedThisMonth;
|
||||
minutesProvidedWeekOld = periodStats.MinutesProvidedThisWeek;
|
||||
}
|
||||
base.ProcessServiceRecord(sr, cb2sc, stats, statisticsDate, calc);
|
||||
|
||||
|
||||
// AB, die komplette if-Schleife kann weg. Die war fürs Quartal
|
||||
//if (periodStats != null)
|
||||
//{
|
||||
// var srDc = MapToServiceRecordDCForStatistic(sr);
|
||||
// var minutes = calc.GetBillableDurationInMinutes(srDc, false);
|
||||
// var firstOfQuarterDt = GetFirstDateOfQuarter(statisticsDate);
|
||||
|
||||
// if (sr.Start >= firstOfQuarterDt && sr.Start < firstOfQuarterDt.AddMonths(3))
|
||||
// {
|
||||
// minutesProvidedQuartalNew = minutes;
|
||||
// }
|
||||
// DateTime mondayDt = statisticsDate.GetLast(DayOfWeek.Monday).Date;
|
||||
|
||||
// if (sr.Start >= mondayDt && sr.Start < mondayDt.AddDays(7))
|
||||
// {
|
||||
// minutesProvidedWeekNew = minutes;
|
||||
// }
|
||||
// periodStats.MinutesProvidedThisMonth = minutesProvidedQuartalOld + minutesProvidedQuartalNew;
|
||||
// periodStats.MinutesProvidedThisWeek = minutesProvidedWeekOld + minutesProvidedWeekNew;
|
||||
|
||||
//}
|
||||
}
|
||||
|
||||
protected SupportConceptPeriodStatisticsDC GetPeriodFromServiceRecord(CostBearer2SupportConcept cb2sc, List<SupportConceptPeriodStatisticsDC> stats, ServiceRecord sr)
|
||||
{
|
||||
var ps = base.GetPeriodDCFromServiceRecord(stats, sr);
|
||||
|
||||
if (ps == null)
|
||||
{
|
||||
if (sr.Start > cb2sc.EndDate)
|
||||
{
|
||||
SupportConceptPeriodStatisticsDC letztePeriod = null;
|
||||
|
||||
foreach (var p in stats)
|
||||
{
|
||||
var scap = p.SupportConceptApprovalPeriod;
|
||||
|
||||
if (scap != null && scap.StartDate.HasValue && scap.EndDate.HasValue && scap.ServiceCategory != null && scap.ServiceCategory.ServiceCategoryOid == sr.ServiceDescription.ServiceCategory.Oid)
|
||||
{
|
||||
if (letztePeriod == null || scap.EndDate > letztePeriod.SupportConceptApprovalPeriod.EndDate)
|
||||
{
|
||||
letztePeriod = p;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return letztePeriod;
|
||||
}
|
||||
}
|
||||
return ps;
|
||||
}
|
||||
|
||||
// AB: Kann gelöscht werden:
|
||||
private DateTime GetFirstDateOfQuarter(DateTime dateTime)
|
||||
{
|
||||
var firstOfQuarterDt = new DateTime(dateTime.Year, 1, 1);
|
||||
|
||||
if (dateTime >= new DateTime(dateTime.Year, 4, 1))
|
||||
{
|
||||
firstOfQuarterDt = new DateTime(dateTime.Year, 4, 1);
|
||||
}
|
||||
if (dateTime >= new DateTime(dateTime.Year, 7, 1))
|
||||
{
|
||||
firstOfQuarterDt = new DateTime(dateTime.Year, 7, 1);
|
||||
}
|
||||
if (dateTime >= new DateTime(dateTime.Year, 10, 1))
|
||||
{
|
||||
firstOfQuarterDt = new DateTime(dateTime.Year, 10, 1);
|
||||
}
|
||||
|
||||
return firstOfQuarterDt;
|
||||
|
||||
|
||||
}
|
||||
|
||||
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.Weekly)
|
||||
{
|
||||
//return periodStats.SupportConceptApprovalPeriod.ApprovedBEPerInterval.Value * 4.33m * 3m * 60m; // Bewilligt pro Woche mal 4.33 (Anzahl Stunden pro Monat laut Frau Ruta) mal 3 Monate fürs Quartal * 60 Minuten
|
||||
// AB: Bitte oben löschen und das hier einkommentieren
|
||||
return periodStats.SupportConceptApprovalPeriod.ApprovedBEPerInterval.Value * 4.33m * 60m; // Bewilligt pro Woche mal 4.33 (Anzahl Stunden pro Monat laut Frau Ruta) * 60 Minuten
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user