Fix: GetDurationForPrice return proper value not only '0'
This commit is contained in:
parent
8f2609c4ae
commit
7ee90a9e8a
@ -43,9 +43,6 @@ private:
|
|||||||
// For tariff of following structure: only steps, no special days, nonstop.
|
// For tariff of following structure: only steps, no special days, nonstop.
|
||||||
uint32_t GetCostFromDuration(Configuration *cfg, QDateTime const &start, quint64 durationMinutes) const;
|
uint32_t GetCostFromDuration(Configuration *cfg, QDateTime const &start, quint64 durationMinutes) const;
|
||||||
uint32_t GetCostFromDuration(Configuration *cfg, QDateTime const &start, QDateTime const &end) const;
|
uint32_t GetCostFromDuration(Configuration *cfg, QDateTime const &start, QDateTime const &end) const;
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
uint32_t GetPriceForTimeStep(Configuration *cfg, int timeStep) const;
|
uint32_t GetPriceForTimeStep(Configuration *cfg, int timeStep) const;
|
||||||
uint32_t GetDurationForPrice(Configuration *cfg, int price) const;
|
uint32_t GetDurationForPrice(Configuration *cfg, int price) const;
|
||||||
};
|
};
|
||||||
|
@ -634,22 +634,29 @@ uint32_t Calculator::GetPriceForTimeStep(Configuration *cfg, int timeStep) const
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t Calculator::GetDurationForPrice(Configuration *cfg, int price) const {
|
/**
|
||||||
int const pop_id = cfg->getPaymentOptions().pop_id;
|
* private: read price directly from config file (used with PaymentMethod::Steps)
|
||||||
|
*
|
||||||
|
* return duration in minutes for greatest pra_price < price
|
||||||
|
*/
|
||||||
|
|
||||||
|
uint32_t Calculator::GetDurationForPrice(Configuration *cfg, int price) const {
|
||||||
|
int const pop_id = cfg->getPaymentOptions().pop_id;
|
||||||
|
uint32_t duration = 0;
|
||||||
|
|
||||||
for (auto[itr, rangeEnd] = cfg->PaymentRate.equal_range(pop_id); itr != rangeEnd; ++itr)
|
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 durationId = itr->second.pra_payment_unit_id;
|
||||||
int const pra_price = itr->second.pra_price;
|
int const pra_price = itr->second.pra_price;
|
||||||
|
uint32_t const durationUnit = cfg->Duration.find(durationId)->second.pun_duration;
|
||||||
|
|
||||||
if (price == 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;
|
return durationUnit;
|
||||||
}
|
}
|
||||||
|
if (pra_price < price) {
|
||||||
|
duration = durationUnit;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return duration;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user