From 8f2609c4aee7990979148a2515f0fb373ed49c3c Mon Sep 17 00:00:00 2001 From: Siegfried Siegert Date: Thu, 23 Nov 2023 11:14:21 +0100 Subject: [PATCH] Fix: GetDurationFromCost for PaymentMethod::Steps --- library/src/calculator_functions.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/library/src/calculator_functions.cpp b/library/src/calculator_functions.cpp index 9442587..65b7a9c 100644 --- a/library/src/calculator_functions.cpp +++ b/library/src/calculator_functions.cpp @@ -118,17 +118,21 @@ std::string Calculator::GetDurationFromCost(Configuration* cfg, bool nextDay, bool prepaid) { + + // Get input date + QDateTime inputDate = QDateTime::fromString(start_datetime,Qt::ISODate); + // use tariff with structure as for instance Schnau, Koenigsee: // without given YearPeriod, SpecialDays and SpecialDaysWorktime if (cfg->YearPeriod.size() == 0 && cfg->SpecialDays.size() == 0 && cfg->SpecialDaysWorktime.size() == 0) { - return QString().setNum(GetDurationForPrice(cfg, price)).toStdString(); + inputDate = inputDate.addSecs(GetDurationForPrice(cfg, price) * 60); + + return inputDate.toString(Qt::ISODate).toStdString(); } - // Get input date - QDateTime inputDate = QDateTime::fromString(start_datetime,Qt::ISODate); // Get day of week int weekdayId = 0; @@ -633,14 +637,16 @@ uint32_t Calculator::GetPriceForTimeStep(Configuration *cfg, int timeStep) const uint32_t Calculator::GetDurationForPrice(Configuration *cfg, int price) const { int const pop_id = cfg->getPaymentOptions().pop_id; + for (auto[itr, rangeEnd] = cfg->PaymentRate.equal_range(pop_id); itr != rangeEnd; ++itr) { int const payment_unit_id = itr->second.pra_payment_unit_id; - int const pra_price = cfg->PaymentRate.find(payment_unit_id)->second.pra_price; + int const pra_price = itr->second.pra_price; if (price == pra_price) { int const durationId = itr->second.pra_payment_unit_id; int const durationUnit = cfg->Duration.find(durationId)->second.pun_duration; + return durationUnit; } }