MH: LWLDiggaBerechnung Bugfix bei mehreren Stundensätzen in der Zukunft
This commit is contained in:
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user