Fix: if start-time is out-of-range (after valid time for sell), switch

to next valid time, taking into account if next valid time is on next day.
This commit is contained in:
Gerhard Hoffmann 2025-04-23 11:00:33 +02:00
parent de0be1d19b
commit 78cae24389

View File

@ -903,7 +903,20 @@ CalcState CALCULATE_LIBRARY_API compute_price_for_parking_ticket(
<< effectiveStartTime.toString(Qt::ISODate); << effectiveStartTime.toString(Qt::ISODate);
} else } else
if (start_parking_time.time() > p.prepaid[weekDay].static_start) { // static_start: e.g. 22:00:00 if (start_parking_time.time() > p.prepaid[weekDay].static_start) { // static_start: e.g. 22:00:00
effectiveStartTime.setTime(p.prepaid[weekDay].static_start); QTime const midnight(23, 59, 59);
QTime const midnight24(0, 0, 0);
if ((p.prepaid[weekDay].static_start <= midnight && midnight24 <= p.prepaid[weekDay].static_end)
|| (p.prepaid[weekDay].static_start == midnight && midnight == p.prepaid[weekDay].static_end)
|| (p.prepaid[weekDay].static_start == midnight24 && midnight24 == p.prepaid[weekDay].static_end)) {
effectiveStartTime = effectiveStartTime.addDays(1);
weekDay = effectiveStartTime.date().dayOfWeek();
qCritical() << __func__ << ":" << __LINE__
<< "effectiveStartTime: new week day [" << weekDay << "] (Mon=1, Tue=2, ..., Sun=7)";
}
effectiveStartTime.setTime(p.prepaid[weekDay].static_end);
qCritical() << __func__ << ":" << __LINE__ << "effectiveStartTime:"
<< effectiveStartTime.toString(Qt::ISODate);
} }
} }
} else { } else {