Compare commits
	
		
			9 Commits
		
	
	
		
			2.3.99-24
			...
			kleipeda-e
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 9b137c2873 | |||
| dd249a87d5 | |||
| 575885c19e | |||
| d82a732a8d | |||
| 99dbd7c194 | |||
| 
						
						
							
						
						ae985d25ce
	
				 | 
					
					
						|||
| 
						
						
							
						
						6a215d4cf9
	
				 | 
					
					
						|||
| 
						
						
							
						
						a3f4a742ce
	
				 | 
					
					
						|||
| e6d8c04076 | 
@@ -65,13 +65,22 @@ struct ATBTariffCarryOver {
 | 
			
		||||
        int minutes = 0;
 | 
			
		||||
        QString end = m_range.m_end.toString(Qt::ISODate);
 | 
			
		||||
        if (end == "24:00:00") {
 | 
			
		||||
            QDateTime t = dt.addDays(1);
 | 
			
		||||
            t.setTime(QTime(0,0,0));
 | 
			
		||||
            minutes = dt.secsTo(t) / 60;
 | 
			
		||||
            // note: this did not work
 | 
			
		||||
            // QDateTime t(dt.addDays(1));
 | 
			
		||||
            // 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 {
 | 
			
		||||
            QDateTime t(dt);
 | 
			
		||||
            t.setTime(QTime::fromString(end, Qt::ISODate));
 | 
			
		||||
            minutes = dt.secsTo(t) / 60;
 | 
			
		||||
            QTime t(QTime::fromString(end, Qt::ISODate));
 | 
			
		||||
            if (t.isValid() && dt.time().isValid()) {
 | 
			
		||||
                minutes = (t.hour() * 60 + t.minute()) - (dt.time().hour() * 60 + dt.time().minute());
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (minutes < 0 || minutes > m_range.m_duration) {
 | 
			
		||||
 
 | 
			
		||||
@@ -396,16 +396,14 @@ int CALCULATE_LIBRARY_API get_zone_nr(int zone)
 | 
			
		||||
    if(zone > -1) return zone;
 | 
			
		||||
    else
 | 
			
		||||
    {
 | 
			
		||||
        QFile zone("/etc/zone_nr");
 | 
			
		||||
        QFile zone("/mnt/system_data/zone_nr");
 | 
			
		||||
        if (zone.exists()) {
 | 
			
		||||
            QFileInfo finfo(zone);
 | 
			
		||||
            if (finfo.size() <= 4) { // decimal 000\n
 | 
			
		||||
            if (zone.open(QIODevice::ReadOnly | QIODevice::Text)) {
 | 
			
		||||
                QTextStream in(&zone);
 | 
			
		||||
                return in.readLine(100).toInt();
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        }
 | 
			
		||||
        return -1;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -782,7 +780,7 @@ CalcState CALCULATE_LIBRARY_API compute_price_for_parking_ticket(
 | 
			
		||||
    double maxMin = tariff->getPaymentOptions(paymentOptionIndex).pop_max_time;
 | 
			
		||||
 | 
			
		||||
    // DEBUG
 | 
			
		||||
    qCritical() << "compute_price_for_parking_ticket() " << endl
 | 
			
		||||
    qCritical() << __func__ << ":" << __LINE__ << endl
 | 
			
		||||
                << "          paymentOptionIndex: " << paymentOptionIndex << endl
 | 
			
		||||
                << "          start_parking_time: " << start_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) {
 | 
			
		||||
                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;
 | 
			
		||||
 | 
			
		||||
                qCritical() << __func__ << ":" << __LINE__ << "   carryOverStart" << carryOverStart.toString(Qt::ISODate);
 | 
			
		||||
                qCritical() << __func__ << ":" << __LINE__ << "carryOverDuration" << carryOverDuration;
 | 
			
		||||
                qCritical() << __func__ << ":" << __LINE__ << "   carryOverStart:" << carryOverStart.toString(Qt::ISODate);
 | 
			
		||||
                qCritical() << __func__ << ":" << __LINE__ << "     carryOverEnd:" << carryOverEnd.toString(Qt::ISODate);
 | 
			
		||||
                qCritical() << __func__ << ":" << __LINE__ << "carryOverDuration:" << carryOverDuration;
 | 
			
		||||
 | 
			
		||||
                // handle carry over
 | 
			
		||||
                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);
 | 
			
		||||
                } else
 | 
			
		||||
                if (end_parking_time.time() == carryOverStart) {
 | 
			
		||||
                    qCritical() << __func__ << ":" << __LINE__ << "end-parking-time:" << end_parking_time.toString(Qt::ISODate);
 | 
			
		||||
                    qCritical() << __func__ << ":" << __LINE__ << "   carryOverStart" << carryOverStart.toString(Qt::ISODate);
 | 
			
		||||
                    qCritical() << __func__ << ":" << __LINE__ << "        end-parking-time:" << end_parking_time.toString(Qt::ISODate);
 | 
			
		||||
                    qCritical() << __func__ << ":" << __LINE__ << "          carryOverStart:" << carryOverStart.toString(Qt::ISODate);
 | 
			
		||||
                    ATBPaymentOption const &po = tariff->getPaymentOptions(paymentOptionIndex);
 | 
			
		||||
                    if (po.pop_apply_carry_over_to_ticket_endtime) {
 | 
			
		||||
                        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 {
 | 
			
		||||
 
 | 
			
		||||
@@ -458,7 +458,7 @@ Calculator::ComputeDurationFromCost(Configuration *cfg,
 | 
			
		||||
                                                        arg(cost).arg(nettoParktimeForCost);
 | 
			
		||||
 | 
			
		||||
    int cnt = 0;
 | 
			
		||||
    while (++cnt < 10 && netto_parking_time_in_minutes < nettoParktimeForCost) {
 | 
			
		||||
    while (++cnt < 20 && netto_parking_time_in_minutes < nettoParktimeForCost) {
 | 
			
		||||
        // qCritical() << __func__ << ":" << __LINE__ << "cnt [" << cnt;
 | 
			
		||||
 | 
			
		||||
        brutto_parking_time_in_minutes = free_parking_time_in_minutes + netto_parking_time_in_minutes;
 | 
			
		||||
@@ -3584,7 +3584,9 @@ uint32_t Calculator::GetPriceForTimeStep(Configuration *cfg, int timeStep, int p
 | 
			
		||||
            qCritical() << "(" << __func__ << ":" << __LINE__ << ") timeStep" << timeStep;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (timeStep == pun_duration) {
 | 
			
		||||
        // allow some tolerance when searching for [timeStep == pun_duration]:
 | 
			
		||||
        // this might happen when crossing minute boundaries
 | 
			
		||||
        if (std::abs(timeStep - pun_duration) < 4) {
 | 
			
		||||
            qCritical() << "(" << __func__ << ":" << __LINE__ << ") return price" << price;
 | 
			
		||||
            return price;
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user