MH: LWLDiggaBerechnung Bugfix bei mehreren Stundensätzen in der Zukunft

This commit is contained in:
2026-08-10 15:29:33 +02:00
parent 82995ae050
commit 681f2f15c4

View File

@@ -138,19 +138,12 @@ namespace BeWo.Service.Invoicing
this.RateFactor = rf.CostRateValue.Value;
}
foreach (var cr in crList)
{
if (!cr.EndDate.HasValue)
{
cr.EndDate = this.BewilligtEnde.AddDays(1).AddMilliseconds(-1);
if (cr.StartDate.HasValue && cr.StartDate.Value > cr.EndDate.Value) //manchmal werden schon aberwitzige Preise in der Zukunft hinterlegt
{
cr.EndDate = cr.StartDate.Value.AddMonths(1);
}
}
}
crList = crList.OrderBy(c => c.EndDate).ToList();
// Claude: Die zeitliche Reihenfolge der Kostensaetze ergibt sich allein aus dem EndDate, der Satz ohne
// EndDate ist immer der zeitlich letzte. Deshalb erst sortieren und verketten und den offenen
// Satz erst danach begrenzen: Wird er vorher auf das Ende des Abrechnungszeitraums gekuerzt,
// rutscht er in der Sortierung vor bereits erfasste zukuenftige Saetze und bekommt damit den
// Zeitraum, der eigentlich dem noch gueltigen alten Satz gehoert.
crList = crList.OrderByEndDateAscNullEndDatesLast();
DateTime start = DateTime.MinValue;
int idx = 1;
foreach (var cr in crList)
@@ -163,6 +156,17 @@ namespace BeWo.Service.Invoicing
{
cr.StartDate = cr.StartDate.Value.AddDays(1);
}
if (!cr.EndDate.HasValue)
{
if (cr.StartDate.Value > this.BewilligtEnde) //manchmal werden schon aberwitzige Preise in der Zukunft hinterlegt
{
cr.EndDate = cr.StartDate.Value.AddMonths(1);
}
else
{
cr.EndDate = this.BewilligtEnde.AddDays(1).AddMilliseconds(-1);
}
}
if (cr.EndDate >= this.BewilligtStart && cr.StartDate <= this.BewilligtEnde)
{
var ez = new EntgeltzeitraumDigga();