diff --git a/library/src/calculator_functions.cpp b/library/src/calculator_functions.cpp index d79efd1..65f44dd 100644 --- a/library/src/calculator_functions.cpp +++ b/library/src/calculator_functions.cpp @@ -862,12 +862,20 @@ Calculator::GetDailyTicketPrice(Configuration* cfg, for (QVector::size_type i=0; i> const &paymentRates = cfg->getPaymentRateForKey(priceId); - if (paymentRates) { - QVector const &pr = paymentRates.value(); - if (pr.size() > 0) { - price.netto = pr.at(0).pra_price; - value.value_or(price); + QVector const &paymentOptions = cfg->getAllPaymentOptions(); + for (QVector::size_type j=0; j < paymentOptions.size(); ++j) { + int const pop_id = paymentOptions.at(j).pop_id; + std::optional> const &paymentRates = cfg->getPaymentRateForKey(pop_id); + if (paymentRates) { + QVector const &pr = paymentRates.value(); + for (QVector::size_type k=0; k < pr.size(); ++k) { + if (pr.at(k).pra_payment_option_id == pop_id) { + if (priceId == pr.at(k).pra_payment_unit_id) { + price.netto = pr.at(k).pra_price; + value = value.value_or(price); + } + } + } } } } @@ -880,12 +888,20 @@ Calculator::GetDailyTicketPrice(Configuration* cfg, for (QVector::size_type i=0; i> const &paymentRates = cfg->getPaymentRateForKey(priceId); - if (paymentRates) { - QVector const &pr = paymentRates.value(); - if (pr.size() > 0) { - price.netto = pr.at(0).pra_price; - value.value_or(price); + QVector const &paymentOptions = cfg->getAllPaymentOptions(); + for (QVector::size_type j=0; j < paymentOptions.size(); ++j) { + int const pop_id = paymentOptions.at(j).pop_id; + std::optional> const &paymentRates = cfg->getPaymentRateForKey(pop_id); + if (paymentRates) { + QVector const &pr = paymentRates.value(); + for (QVector::size_type k=0; k < pr.size(); ++k) { + if (pr.at(k).pra_payment_option_id == pop_id) { + if (priceId == pr.at(k).pra_payment_unit_id) { + price.netto = pr.at(k).pra_price; + value = value.value_or(price); + } + } + } } } } @@ -893,6 +909,30 @@ Calculator::GetDailyTicketPrice(Configuration* cfg, } } break; case PERMIT_TYPE::DAY_TICKET_CHILD: { + std::optional c = cfg->getCustomerForType(ATBCustomer::CustomerType::CHILD); + if (c) { + for (QVector::size_type i=0; i const &paymentOptions = cfg->getAllPaymentOptions(); + for (QVector::size_type j=0; j < paymentOptions.size(); ++j) { + int const pop_id = paymentOptions.at(j).pop_id; + std::optional> const &paymentRates = cfg->getPaymentRateForKey(pop_id); + if (paymentRates) { + QVector const &pr = paymentRates.value(); + for (QVector::size_type k=0; k < pr.size(); ++k) { + if (pr.at(k).pra_payment_option_id == pop_id) { + if (priceId == pr.at(k).pra_payment_unit_id) { + price.netto = pr.at(k).pra_price; + value = value.value_or(price); + } + } + } + } + } + } + } + } } // [[fallthrough]]; case PERMIT_TYPE::SHORT_TERM_PARKING: {