compute_price_for_parking_ticket():
Fetch prepaid-option-id (possibly recalculating it depending on year-period), and fetch associated prepaid-options.
This commit is contained in:
		| @@ -805,20 +805,22 @@ CalcState CALCULATE_LIBRARY_API compute_price_for_parking_ticket( | ||||
|  | ||||
|             int weekDay = start_parking_time.date().dayOfWeek(); | ||||
|             int pop_carry_over_option_id = tariff->getPaymentOptions(paymentOptionIndex).pop_carry_over_option_id; | ||||
|             qCritical() << __func__ << __LINE__ << "configured carry-over-id" << pop_carry_over_option_id; | ||||
|             int pop_prepaid_option_id = tariff->getPaymentOptions(paymentOptionIndex).pop_prepaid_option_id; | ||||
|  | ||||
|             std::optional<ATBPeriodYear> yperiod = Utilities::GetYearPeriodActive(tariff, start_parking_time); | ||||
|             if (yperiod.has_value()) { | ||||
|                 ATBPeriodYear const &period = yperiod.value(); | ||||
|                 pop_carry_over_option_id = period.pye_id; | ||||
|                 qCritical() << __func__ << __LINE__ << "re-computed carry-over-id" << pop_carry_over_option_id; | ||||
|                 pop_prepaid_option_id = period.pye_id; | ||||
|                 qCritical() << __func__ << ":" << __LINE__ << "re-computed carry-over-id" << pop_carry_over_option_id; | ||||
|                 qCritical() << __func__ << ":" << __LINE__ << "   re-computed prepaid-id" << pop_prepaid_option_id; | ||||
|             } | ||||
|  | ||||
|             QTime const carryOverStart = tariff->TariffCarryOverOptions.find(pop_carry_over_option_id)->second.carryover[weekDay].static_start; | ||||
|             int const carryOverDuration = tariff->TariffCarryOverOptions.find(pop_carry_over_option_id)->second.carryover[weekDay].duration; | ||||
|             QTime carryOverStart = tariff->TariffCarryOverOptions.find(pop_carry_over_option_id)->second.carryover[weekDay].static_start; | ||||
|             int carryOverDuration = tariff->TariffCarryOverOptions.find(pop_carry_over_option_id)->second.carryover[weekDay].duration; | ||||
|  | ||||
|             qCritical() << __func__ << __LINE__ << "carryOverStart" << carryOverStart.toString(Qt::ISODate); | ||||
|             qCritical() << __func__ << __LINE__ << "carryOverDuration" << carryOverDuration; | ||||
|             qCritical() << __func__ << ":" << __LINE__ << "   carryOverStart" << carryOverStart.toString(Qt::ISODate); | ||||
|             qCritical() << __func__ << ":" << __LINE__ << "carryOverDuration" << carryOverDuration; | ||||
|  | ||||
|             // handle prepaid option | ||||
|             QDateTime effectiveStartTime(start_parking_time); | ||||
| @@ -827,13 +829,17 @@ CalcState CALCULATE_LIBRARY_API compute_price_for_parking_ticket( | ||||
|             if (prepaidOption.has_value()) { | ||||
|                 ATBPrepaid const &p = prepaidOption.value(); | ||||
|                 if (p.never) { | ||||
|                     qCritical() << __func__ << __LINE__ << "prepaid: no"; | ||||
|                     qCritical() << __func__ << ":" << __LINE__ << "prepaid: no"; | ||||
|                 } else { | ||||
|                     if (start_parking_time.time() < p.static_end) {     // static_end: e.g. 08:00:00 | ||||
|                         effectiveStartTime.setTime(p.static_end); | ||||
|                     qCritical() << __func__ << ":" << __LINE__ << "    prepaidStart" << p.prepaid[weekDay].static_start.toString(Qt::ISODate); | ||||
|                     qCritical() << __func__ << ":" << __LINE__ << "      prepaidEnd" << p.prepaid[weekDay].static_end.toString(Qt::ISODate); | ||||
|                     qCritical() << __func__ << ":" << __LINE__ << "prepaid duration" << p.prepaid[weekDay].duration; | ||||
|  | ||||
|                     if (start_parking_time.time() < p.prepaid[weekDay].static_end) {     // static_end: e.g. 08:00:00 | ||||
|                         effectiveStartTime.setTime(p.prepaid[weekDay].static_end); | ||||
|                     } else | ||||
|                     if (start_parking_time.time() > p.static_start) {   // static_start: e.g. 22:00:00 | ||||
|                         effectiveStartTime.setTime(p.static_start); | ||||
|                     if (start_parking_time.time() > p.prepaid[weekDay].static_start) {   // static_start: e.g. 22:00:00 | ||||
|                         effectiveStartTime.setTime(p.prepaid[weekDay].static_start); | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user