calculate_parking/calculate_parking_tickets/calculate_parking_tickets_tariff.h

137 lines
3.0 KiB
C

#ifndef CALCULATE_PARKING_TICKETS_TARIFF_H_INCLUDED
#define CALCULATE_PARKING_TICKETS_TARIFF_H_INCLUDED
#include "calculate_parking_tickets_global.h"
#include "calculate_parking_tickets_tariff_step.h"
#include <QDateTime>
#include <QVector>
#include <QSet>
#include <QPair>
#include <QList>
#define FAHRZEUG_AUSWAHL_PKW (uint64_t)(0x0000000000000001)
#define FAHRZEUG_AUSWAHL_BUS (uint64_t)(0x0000000000000002)
#define FAHRZEUG_AUSWAHL_LKW (uint64_t)(0x0000000000000004)
#define VERANSTALTUNG_AUSWAHL_SPORT (uint64_t)(0x0000000000000008)
#define VERANSTALTUNG_AUSWAHL_KULTUR (uint64_t)(0x0000000000000010)
struct parking_tariff_t {
explicit parking_tariff_t()
: day_tariff_start(0)
, day_tariff_end(0)
, night_tariff_start(0)
, night_tariff_end(0) {
}
static parking_tariff_t *parseTariff(const char *confFile);
/// \brief Express computational units in cent.
///
/// The internal computations do not use the unit "cent" \n
/// directly. Rather virtual integer value <b>unit_definition</b> is used, expressing \n
/// how many cents correspond to <b>unit_definition</b> units.
uint32_t unit_definition;
/// \brief Scale units to cent.
///
double unit_scale_factor;
/// \brief VAT (Mehrwertsteuer) in percent.
///
double vat;
QSet<QDate> holidays;
///
/// \brief m_tariffSteps
///
TariffStep m_tariffSteps[3][7][MIN_PER_DAY];
///
/// \brief day_tariff_start
///
minute_t day_tariff_start;
///
/// \brief day_tariff_end
///
minute_t day_tariff_end;
///
/// \brief night_tariff_start
///
minute_t night_tariff_start;
///
/// \brief night_tariff_end
///
minute_t night_tariff_end;
///
/// \brief waiting_period
/// @note Also called "Karenzzeit". Allowed values: [0, 3]
minute_t waiting_period;
///
/// \brief free_of_charge
///
minute_t free_of_charge_day_tariff;
///
/// \brief free_of_charge_night_tariff
///
minute_t free_of_charge_night_tariff;
///
/// \brief max_parking_price_units
///
uint32_t max_parking_price_units;
///
/// \brief max_price_for_24_hours
///
uint32_t max_price_for_24_hours; // 24h limit (default -1)
///
/// \brief tariff_version
///
char tariff_version[64];
///
/// \brief tariff_features
///
uint64_t tariff_features;
///
/// \brief _tariff_features
///
uint64_t _tariff_features[64];
///
/// \brief parking_time_min
///
minute_t parking_time_min;
///
/// \brief parking_time_max
///
minute_t parking_time_max;
///
/// \brief basic_tariff
///
bool basic_tariff;
///
/// \brief max_price_24h_after_arrival
///
uint32_t max_price_24h_after_arrival;
///
/// \brief max_price_at_midnight
///
uint32_t max_price_at_midnight;
};
#endif // CALCULATE_PARKING_TICKETS_TARIFF_H_INCLUDED