Compare commits

...

5 Commits

2 changed files with 36 additions and 18 deletions

View File

@@ -65,13 +65,22 @@ struct ATBTariffCarryOver {
int minutes = 0; int minutes = 0;
QString end = m_range.m_end.toString(Qt::ISODate); QString end = m_range.m_end.toString(Qt::ISODate);
if (end == "24:00:00") { if (end == "24:00:00") {
QDateTime t = dt.addDays(1); // note: this did not work
t.setTime(QTime(0,0,0)); // QDateTime t(dt.addDays(1));
minutes = dt.secsTo(t) / 60; // t.setTime(QTime(0,0,0));
// dt: 2024-10-27T00:00:00 EEST, but t: 2024-10-28T00:00:00 EET (!)
// so the difference is 1500 instead of 1440
// reason: change from summer to winter time
// compute minutes directly
if (dt.time().isValid()) {
minutes = 1440 - (dt.time().hour() * 60 + dt.time().minute());
}
} else { } else {
QDateTime t(dt); QTime t(QTime::fromString(end, Qt::ISODate));
t.setTime(QTime::fromString(end, Qt::ISODate)); if (t.isValid() && dt.time().isValid()) {
minutes = dt.secsTo(t) / 60; minutes = (t.hour() * 60 + t.minute()) - (dt.time().hour() * 60 + dt.time().minute());
}
} }
if (minutes < 0 || minutes > m_range.m_duration) { if (minutes < 0 || minutes > m_range.m_duration) {

View File

@@ -396,14 +396,12 @@ int CALCULATE_LIBRARY_API get_zone_nr(int zone)
if(zone > -1) return zone; if(zone > -1) return zone;
else else
{ {
QFile zone("/etc/zone_nr"); QFile zone("/mnt/system_data/zone_nr");
if (zone.exists()) { if (zone.exists()) {
QFileInfo finfo(zone); QFileInfo finfo(zone);
if (finfo.size() <= 4) { // decimal 000\n if (zone.open(QIODevice::ReadOnly | QIODevice::Text)) {
if (zone.open(QIODevice::ReadOnly | QIODevice::Text)) { QTextStream in(&zone);
QTextStream in(&zone); return in.readLine(100).toInt();
return in.readLine(100).toInt();
}
} }
} }
return -1; return -1;
@@ -782,7 +780,7 @@ CalcState CALCULATE_LIBRARY_API compute_price_for_parking_ticket(
double maxMin = tariff->getPaymentOptions(paymentOptionIndex).pop_max_time; double maxMin = tariff->getPaymentOptions(paymentOptionIndex).pop_max_time;
// DEBUG // DEBUG
qCritical() << "compute_price_for_parking_ticket() " << endl qCritical() << __func__ << ":" << __LINE__ << endl
<< " paymentOptionIndex: " << paymentOptionIndex << endl << " paymentOptionIndex: " << paymentOptionIndex << endl
<< " start_parking_time: " << start_parking_time << endl << " start_parking_time: " << start_parking_time << endl
<< " netto_parking_time: " << netto_parking_time << endl << " netto_parking_time: " << netto_parking_time << endl
@@ -914,10 +912,12 @@ CalcState CALCULATE_LIBRARY_API compute_price_for_parking_ticket(
if (carryOver == 1) { if (carryOver == 1) {
QTime carryOverStart = tariff->TariffCarryOverOptions.find(pop_carry_over_option_id)->second.carryover[weekDay].static_start; QTime carryOverStart = tariff->TariffCarryOverOptions.find(pop_carry_over_option_id)->second.carryover[weekDay].static_start;
QTime carryOverEnd = tariff->TariffCarryOverOptions.find(pop_carry_over_option_id)->second.carryover[weekDay].static_end;
int carryOverDuration = tariff->TariffCarryOverOptions.find(pop_carry_over_option_id)->second.carryover[weekDay].duration; int carryOverDuration = tariff->TariffCarryOverOptions.find(pop_carry_over_option_id)->second.carryover[weekDay].duration;
qCritical() << __func__ << ":" << __LINE__ << " carryOverStart" << carryOverStart.toString(Qt::ISODate); qCritical() << __func__ << ":" << __LINE__ << " carryOverStart:" << carryOverStart.toString(Qt::ISODate);
qCritical() << __func__ << ":" << __LINE__ << "carryOverDuration" << carryOverDuration; qCritical() << __func__ << ":" << __LINE__ << " carryOverEnd:" << carryOverEnd.toString(Qt::ISODate);
qCritical() << __func__ << ":" << __LINE__ << "carryOverDuration:" << carryOverDuration;
// handle carry over // handle carry over
int minutesUntilCarryOver = effectiveStartTime.time().secsTo(carryOverStart) / 60; int minutesUntilCarryOver = effectiveStartTime.time().secsTo(carryOverStart) / 60;
@@ -943,12 +943,21 @@ CalcState CALCULATE_LIBRARY_API compute_price_for_parking_ticket(
end_parking_time = end_parking_time.addSecs(carryOverDuration * 60); end_parking_time = end_parking_time.addSecs(carryOverDuration * 60);
} else } else
if (end_parking_time.time() == carryOverStart) { if (end_parking_time.time() == carryOverStart) {
qCritical() << __func__ << ":" << __LINE__ << "end-parking-time:" << end_parking_time.toString(Qt::ISODate); qCritical() << __func__ << ":" << __LINE__ << " end-parking-time:" << end_parking_time.toString(Qt::ISODate);
qCritical() << __func__ << ":" << __LINE__ << " carryOverStart" << carryOverStart.toString(Qt::ISODate); qCritical() << __func__ << ":" << __LINE__ << " carryOverStart:" << carryOverStart.toString(Qt::ISODate);
ATBPaymentOption const &po = tariff->getPaymentOptions(paymentOptionIndex); ATBPaymentOption const &po = tariff->getPaymentOptions(paymentOptionIndex);
if (po.pop_apply_carry_over_to_ticket_endtime) { if (po.pop_apply_carry_over_to_ticket_endtime) {
end_parking_time = end_parking_time.addSecs(carryOverDuration * 60); end_parking_time = end_parking_time.addSecs(carryOverDuration * 60);
qCritical() << __func__ << ":" << __LINE__ << "end-parking-time:" << end_parking_time.toString(Qt::ISODate); qCritical() << __func__ << ":" << __LINE__ << "adapted end-parking-time:" << end_parking_time.toString(Qt::ISODate);
}
} else
if (end_parking_time.time() == carryOverEnd) {
qCritical() << __func__ << ":" << __LINE__ << " end-parking-time:" << end_parking_time.toString(Qt::ISODate);
qCritical() << __func__ << ":" << __LINE__ << " carryOverEnd:" << carryOverEnd.toString(Qt::ISODate);
ATBPaymentOption const &po = tariff->getPaymentOptions(paymentOptionIndex);
if (po.pop_apply_carry_over_to_ticket_endtime == false) {
end_parking_time = end_parking_time.addSecs(-carryOverDuration * 60);
qCritical() << __func__ << ":" << __LINE__ << "adapted end-parking-time:" << end_parking_time.toString(Qt::ISODate);
} }
} }
} else { } else {