diff --git a/library/src/calculate_price.cpp b/library/src/calculate_price.cpp index ca9fef3..874e975 100644 --- a/library/src/calculate_price.cpp +++ b/library/src/calculate_price.cpp @@ -903,7 +903,20 @@ CalcState CALCULATE_LIBRARY_API compute_price_for_parking_ticket( << effectiveStartTime.toString(Qt::ISODate); } else 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 {