Compare commits
5 Commits
690267c388
...
102607b71f
Author | SHA1 | Date | |
---|---|---|---|
102607b71f | |||
81d515eb7f | |||
ce61e5d3b2 | |||
b6a0f5e8af | |||
e0223b50f9 |
@ -90,6 +90,7 @@ namespace Utilities {
|
||||
uint32_t getMinimalParkingPrice(Configuration const *cfg, PaymentMethod methodId);
|
||||
uint32_t getMaximalParkingPrice(Configuration const *cfg, PaymentMethod methodId);
|
||||
uint32_t getFirstDurationStep(Configuration const *cfg, PaymentMethod methodId);
|
||||
uint32_t getTimeRangeStep(Configuration const *cfg, int step, PaymentMethod methodId);
|
||||
BusinessHours getBusinessHours(Configuration const *cfg, PaymentMethod methodId);
|
||||
uint32_t computeWeekDaysPrice(Configuration const *cfg, PaymentMethod id);
|
||||
double computeWeekDaysDurationUnit(Configuration const *cfg, PaymentMethod id);
|
||||
|
@ -222,7 +222,9 @@ int CALCULATE_LIBRARY_API compute_next_timestep(parking_tariff_t *tariff, int cu
|
||||
|
||||
// use tariff with structure as for instance Schnau, Koenigsee:
|
||||
// without given YearPeriod, SpecialDays and SpecialDaysWorktime
|
||||
if (paymentMethodId == PaymentMethod::Steps)
|
||||
if ((paymentMethodId == PaymentMethod::Steps) ||
|
||||
// progressive tariff: e.g. Neuhauser, Kirchdorf (743)
|
||||
(paymentMethodId == PaymentMethod::Progressive))
|
||||
{
|
||||
const QList<int> stepList = Calculator::GetInstance().GetTimeSteps(tariff);
|
||||
qCritical() << " compute_next_timestep() timeSteps:" << stepList;
|
||||
|
@ -548,6 +548,7 @@ double Calculator::GetCostFromDuration(Configuration* cfg,
|
||||
|
||||
if (current.time() >= to) {
|
||||
if (carryOverNotSet) {
|
||||
end_datetime = start;
|
||||
return 0;
|
||||
} else {
|
||||
QDateTime const dt = start;
|
||||
@ -583,7 +584,6 @@ double Calculator::GetCostFromDuration(Configuration* cfg,
|
||||
|
||||
Q_ASSERT_X(from < to, __func__, "MISCONFIGURED WORK-TIMES");
|
||||
|
||||
|
||||
if (current.time() >= to) {
|
||||
continue; // try to use next available work-time
|
||||
} else
|
||||
@ -1166,6 +1166,8 @@ QList<int> Calculator::GetTimeSteps(Configuration *cfg) const {
|
||||
int const pop_carry_over = cfg->getPaymentOptions().pop_carry_over;
|
||||
int const pop_time_step_config = cfg->getPaymentOptions().pop_time_step_config;
|
||||
|
||||
static PaymentMethod const paymentMethodId = Utilities::getPaymentMethodId(cfg);
|
||||
|
||||
qCritical() << __func__ << ":" << __LINE__ << " start parking time:" << start.toString(Qt::ISODate);
|
||||
qCritical() << __func__ << ":" << __LINE__ << " payment option id:" << pop_id;
|
||||
qCritical() << __func__ << ":" << __LINE__ << "payment option carry over:" << pop_carry_over;
|
||||
@ -1173,6 +1175,13 @@ QList<int> Calculator::GetTimeSteps(Configuration *cfg) const {
|
||||
if (pop_time_step_config == (int)ATBTimeStepConfig::TimeStepConfig::DYNAMIC) {
|
||||
//qCritical() << __PRETTY_FUNCTION__ << "payment option time step config:" << "TimeStepConfig::DYNAMIC";
|
||||
|
||||
if (paymentMethodId == PaymentMethod::Progressive) { // e.g. neuhauser kirchdorf (743)
|
||||
std::size_t const s = cfg->TimeRange.size();
|
||||
for (std::size_t id = 1; id <= s; ++id) {
|
||||
int const step = Utilities::getTimeRangeStep(cfg, id, paymentMethodId);
|
||||
m_timeSteps.append(step);
|
||||
}
|
||||
} else {
|
||||
uint16_t timeStepCompensation = 0;
|
||||
|
||||
if (pop_carry_over) {
|
||||
@ -1231,6 +1240,7 @@ QList<int> Calculator::GetTimeSteps(Configuration *cfg) const {
|
||||
} else { // if (pop_carry_over) {
|
||||
// TODO
|
||||
}
|
||||
}
|
||||
} else {
|
||||
qCritical() << __PRETTY_FUNCTION__ << "payment option time step config:" << "TimeStepConfig::STATIC";
|
||||
|
||||
|
@ -397,6 +397,14 @@ uint32_t Utilities::getMaximalParkingPrice(Configuration const *cfg, PaymentMeth
|
||||
return std::max((int)cfg->PaymentOption.find(methodId)->second.pop_max_price, 0);
|
||||
}
|
||||
|
||||
uint32_t Utilities::getTimeRangeStep(Configuration const *cfg, int step, PaymentMethod methodId) {
|
||||
if (methodId == PaymentMethod::Progressive) {
|
||||
return std::max((int)cfg->TimeRange.find(step)->second.time_range_to_in_minutes_from_start, 0);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint32_t Utilities::getFirstDurationStep(Configuration const *cfg, PaymentMethod methodId) {
|
||||
|
||||
int const popId = cfg->PaymentOption.find(methodId)->second.pop_id;
|
||||
|
@ -115,12 +115,12 @@ int main() {
|
||||
bool prePaid = true;
|
||||
// bool carryOver = false;
|
||||
|
||||
QDateTime s(QDate(2023, 11, 30), QTime());
|
||||
// QDateTime s(QDate(2023, 11, 26), QTime());
|
||||
QDateTime s(QDate(2024, 2, 21), QTime());
|
||||
QDateTime end;
|
||||
for (int duration = 30; duration <= 90; duration += 5) {
|
||||
// for (int duration = 30; duration <= maxParkingTime; duration += 5) {
|
||||
qCritical() << "";
|
||||
//for (int offset = 420; offset <= 1080; ++offset) {
|
||||
for (int offset = 420; offset <= 1080; ++offset) {
|
||||
//for (int offset = 420; offset <= 1080; ++offset) {
|
||||
//if (offset > 720 && offset < 840) {
|
||||
@ -140,7 +140,6 @@ int main() {
|
||||
duration_ist = duration_ist - 120;
|
||||
}
|
||||
|
||||
|
||||
qCritical() << "****" << offset << duration << "****";
|
||||
qCritical() << " firstStart :" << firstStart.toString(Qt::ISODate);
|
||||
qCritical() << " start :" << start.toString(Qt::ISODate);
|
||||
@ -150,16 +149,16 @@ int main() {
|
||||
qCritical() << " cost (soll):" << cost_soll;
|
||||
qCritical() << " cost (ist) :" << cost;
|
||||
|
||||
if (cost_soll != cost) {
|
||||
// if (cost_soll != cost) {
|
||||
//qCritical() << "ERROR" << __func__ << ":" << __LINE__
|
||||
// << "cost_soll" << cost_soll << "cost_ist" << cost;
|
||||
//break;
|
||||
}
|
||||
if (duration != duration_ist) {
|
||||
// }
|
||||
// if (duration != duration_ist) {
|
||||
//qCritical() << "ERROR" << __func__ << ":" << __LINE__
|
||||
// << "duration_soll" << duration << "duration_ist" << duration_ist;
|
||||
//break;
|
||||
}
|
||||
// }
|
||||
|
||||
//#else
|
||||
start = s.addSecs(offset * 60);
|
||||
|
Loading…
x
Reference in New Issue
Block a user