Compare commits

..

No commits in common. "648799629a80346b9502d1031dd0542963a7c44f" and "d86a688836bfdec2e0c7eacc4129651802e12b1b" have entirely different histories.

3 changed files with 31 additions and 42 deletions

@ -923,15 +923,12 @@ CalcState CALCULATE_LIBRARY_API compute_duration_for_parking_ticket(
bool const nextDay = false;
// DEBUG
// if (DBG_LEVEL >= DBG_DEBUG) {
qCritical() << "\ncompute_duration_for_parking_ticket(2):";
qCritical() << " start time:" << start_parking_time.toString(Qt::ISODate);
qCritical() << " payment option index:" << paymentOptionIndex;
qCritical() << " prepaid:" << prepaid;
qCritical() << " price:" << price;
qCritical() << " permit type:" << permitType.toString() << endl;
// }
if (DBG_LEVEL >= DBG_DEBUG) {
qCritical() << "compute_duration_for_parking_ticket(2): ";
qCritical() << " payment option index: " << paymentOptionIndex;
qCritical() << " prepaid: " << prepaid;
qCritical() << " price: " << price;
}
if (start_parking_time.isValid()) {
QString cs = start_parking_time.toString(Qt::ISODate);
@ -1012,10 +1009,9 @@ CalcState CALCULATE_LIBRARY_API compute_duration_for_parking_ticket(
}
// DEBUG
qCritical() << "\ncompute_duration_for_parking_ticket():";
qCritical() << " start time:" << start_parking_time.toString(Qt::ISODate);
qCritical() << " endTime:" << endTime;
qCritical() << " ticketEndTime:" << ticketEndTime.toString(Qt::ISODate) << endl;
qCritical() << "compute_duration_for_parking_ticket(): ";
qCritical() << " endTime: " << endTime;
qCritical() << " ticketEndTime: " << ticketEndTime;
}
} else {
return calcState.set(CalcState::State::INVALID_START_DATE);

@ -178,9 +178,6 @@ std::string Calculator::GetDurationFromCost(Configuration* cfg,
for (auto[itr, rangeEnd] = cfg->PaymentRate.equal_range(pop_id); itr != rangeEnd; ++itr) {
int const pra_price = itr->second.pra_price;
// qCritical() << DBG_HEADER << "pra_price" << pra_price;
int const durationId = itr->second.pra_payment_unit_id;
if (pop_accumulate_prices) {
price += pra_price;
@ -188,8 +185,8 @@ std::string Calculator::GetDurationFromCost(Configuration* cfg,
price = pra_price;
}
// qCritical() << DBG_HEADER << " PRICE" << price << "COST" << cost;
// qCritical() << DBG_HEADER << " duration id" << durationId;
//qCritical() << DBG_HEADER << " PRICE" << price << "COST" << cost;
//qCritical() << DBG_HEADER << " duration id" << durationId;
auto search = cfg->Duration.find(durationId);
if (search != cfg->Duration.end()) {
@ -2857,7 +2854,7 @@ QList<int> &Calculator::GetTimeSteps(Configuration *cfg, int paymentOptionIndex,
++it) {
it->second.pun_duration = it->second.pun_duration_saved;
// if (++cnt > 2) continue;
// if (++cnt > 4) continue;
if (DBG_LEVEL >= DBG_DEBUG) {
qCritical() << "(" << __func__ << ":" << __LINE__ << ") pun_id" << it->second.pun_id;
@ -2867,15 +2864,11 @@ QList<int> &Calculator::GetTimeSteps(Configuration *cfg, int paymentOptionIndex,
if (it->second.pun_netto) {
if (it->second.pun_round_to_next_24h_boundary == false) {
//int weekDay = start.date().dayOfWeek();
casePrepay = false;
if (m_timeSteps[paymentOptionIndex].isEmpty()) {
// handle possible prepay-condition, which applies only
// for the very first step
if (DBG_LEVEL >= DBG_DEBUG) {
qCritical() << "(" << __func__ << ":" << __LINE__ << ") prepay start" << prepayStart.toString(Qt::ISODate);
qCritical() << "(" << __func__ << ":" << __LINE__ << ") prepay end" << prepayEnd.toString(Qt::ISODate);
}
if (prepayStart <= start && start <= prepayEnd) {
it->second.pun_duration = prepayDurationInMinutes;
it->second.pun_duration += it->second.pun_duration_saved ;
@ -2891,15 +2884,22 @@ QList<int> &Calculator::GetTimeSteps(Configuration *cfg, int paymentOptionIndex,
if (!casePrepay) {
// handle possible carryover-condition
int const durationInSecs = it->second.pun_duration_saved * 60;
it->second.pun_duration = it->second.pun_duration_saved;
int durationInSecs = it->second.pun_duration_saved * 60;
if (current >= carryOverStart && current < carryOverEnd) {
if (DBG_LEVEL >= DBG_DEBUG) {
qCritical() << "(" << __func__ << ":" << __LINE__ << ")" << durationInSecs;
qCritical() << "(" << __func__ << ":" << __LINE__ << ") start" << start.toString(Qt::ISODate);
qCritical() << "(" << __func__ << ":" << __LINE__ << ") current" << current.toString(Qt::ISODate);
qCritical() << "(" << __func__ << ":" << __LINE__ << ") current next" << current.addSecs(durationInSecs).toString(Qt::ISODate);
}
it->second.pun_duration = it->second.pun_duration_saved;
if (current >= carryOverStart) {
it->second.pun_duration += current.secsTo(carryOverEnd) / 60;
} else {
// start < carryOverStart
QDateTime const &newCurrent = current.addSecs(durationInSecs);
if (newCurrent > carryOverStart && newCurrent <= carryOverEnd) {
if (newCurrent > carryOverStart) {
// cross carry over section
it->second.pun_next_step_correction = carryOverStart.secsTo(carryOverEnd) / 60;
it->second.pun_duration += it->second.pun_next_step_correction;
@ -2994,7 +2994,6 @@ QList<int> &Calculator::GetTimeSteps(Configuration *cfg, int paymentOptionIndex,
} else { // if (it->second.pun_netto) {
qCritical() << "(" << __func__ << ":" << __LINE__ << ") TODO";
qCritical() << "(" << __func__ << ":" << __LINE__ << ")\n" << it->second;
}
} else { // mutable == false
if (it->second.pun_brutto) { // no handling for prepay and carry-over
@ -3011,7 +3010,6 @@ QList<int> &Calculator::GetTimeSteps(Configuration *cfg, int paymentOptionIndex,
} else {
qCritical() << "(" << __func__ << ":" << __LINE__ << ") TODO";
qCritical() << "(" << __func__ << ":" << __LINE__ << ")\n" << it->second;
}
}
}
@ -3066,7 +3064,7 @@ uint32_t Calculator::GetPriceForTimeStep(Configuration *cfg, int timeStep, int p
uint32_t price = 0;
int pun_duration = 0;
//qCritical() << "(" << __func__ << ":" << __LINE__ << ") paymentOptionIndex" << paymentOptionIndex;
qCritical() << "(" << __func__ << ":" << __LINE__ << ") paymentOptionIndex" << paymentOptionIndex;
//qCritical() << "(" << __func__ << ":" << __LINE__ << ") timeStep" << timeStep;
//qCritical() << "(" << __func__ << ":" << __LINE__ << ") pop_id" << pop_id;

@ -741,14 +741,9 @@ int main() {
input.open("/opt/ptu5/opt/customer_502/etc/psa_tariff/tariff02.json");
}
if (zone == 3) {
//input.open("/opt/ptu5/opt/customer_502/etc/psa_tariff/tariff03.json");
input.open("/opt/ptu5/opt/customer_502/etc/psa_tariff/tariff03.json");
//input.open("/home/linux/customer_502/etc/psa_tariff/tariff01.json");
// schnals
// input.open("/opt/ptu5/opt/customer_505/etc/psa_tariff/tariff01.json");
// muehlbach
input.open("/opt/ptu5/opt/customer_504/etc/psa_tariff/tariff01.json");
input.open("/home/linux/customer_502/etc/psa_tariff/tariff03.json");
}
std::stringstream sstr;
@ -922,7 +917,7 @@ int main() {
QDateTime end;
QDateTime s(QDateTime::currentDateTime());
s.setTime(QTime(10, 0, 0));
s.setTime(QTime(13, 30, 0));
#if 0
@ -952,12 +947,12 @@ int main() {
#if 1
qCritical() << "start" << s.toString(Qt::ISODate);
//for (int i = 1; i < 11; ++i) {
for (int i = 0; i < 21; ++i) {
for (int i = 1; i < 8; ++i) {
calcState = compute_duration_for_parking_ticket(&cfg, s,
(double)i*10,
(double)i*200,
end, PermitType(PERMIT_TYPE::SHORT_TERM_PARKING_PKW));
qCritical() << "RUN" << i << ": start" << s.toString(Qt::ISODate)
<< ": price" << i*10 << "->" << end.toString(Qt::ISODate) << calcState.toString();
<< ": price" << i*200 << "->" << end.toString(Qt::ISODate) << calcState.toString();
}
#else
struct price_t price;