91 lines
3.5 KiB
C++
91 lines
3.5 KiB
C++
#ifndef TARIFF_BUSINESS_HOURS_H_INCLUDED
|
|
#define TARIFF_BUSINESS_HOURS_H_INCLUDED
|
|
|
|
/// <summary>
|
|
/// Business hours (byte represents payment option id)
|
|
/// </summary>
|
|
///
|
|
|
|
#include <Qt>
|
|
|
|
#define _NO_RESTRICTION_24_7_ (uint64_t)(0ULL)
|
|
#define _MON_ (uint64_t)(1ULL << 8)
|
|
#define _TUE_ (uint64_t)(1ULL << 9)
|
|
#define _WED_ (uint64_t)(1ULL << 10)
|
|
#define _THU_ (uint64_t)(1ULL << 11)
|
|
#define _FRI_ (uint64_t)(1ULL << 12)
|
|
#define _SAT_ (uint64_t)(1ULL << 13)
|
|
#define _SUN_ (uint64_t)(1ULL << 14)
|
|
#define _WEEK_DAYS_ ((_MON_|_TUE_|_WED_|_THU_|_FRI_))
|
|
#define _WORKING_DAYS_ ((_MON_|_TUE_|_WED_|_THU_|_FRI_|_SAT_))
|
|
#define _ALL_DAYS_ ((_MON_|_TUE_|_WED_|_THU_|_FRI_|_SAT_|_SUN_))
|
|
#define _OFFICIAL_HOLIDAY_ (uint64_t)(1ULL << 15)
|
|
#define _ONLY_WEEKEND_ ((_SAT_|_SUN_))
|
|
#define _ONLY_OPEN_FOR_BUSINESS_DAYS_ (uint64_t)(1ULL << 16) /* verkaufsoffen */
|
|
#define _WITH_RESTRICTED_HOURS_ (uint64_t)(1ULL << 17)
|
|
#define _ALL_DAYS_WITH_RESTRICTED_HOURS_ ((_WITH_RESTRICTED_HOURS_|_ALL_DAYS_))
|
|
#define _WEEKEND_WITH_RESTRICTED_HOURS_ ((_WITH_RESTRICTED_HOURS_|_FRI_|_SAT_|_SUN_))
|
|
#define _FRI_WITH_RESTRICTED_HOURS_ ((_WITH_RESTRICTED_HOURS_|_FRI_))
|
|
#define _SAT_WITH_RESTRICTED_HOURS_ ((_WITH_RESTRICTED_HOURS_|_SAT_))
|
|
#define _SUN_WITH_RESTRICTED_HOURS_ ((_WITH_RESTRICTED_HOURS_|_SUN_))
|
|
#define _NOT_DEFINED_ (uint64_t)(~0ULL)
|
|
|
|
enum BusinessHours : std::uint64_t
|
|
{
|
|
NoRestriction_24_7 = 0,
|
|
OnlyWorkingDays = 1, // [Monday-Friday]
|
|
OnlyWeekDays = 2, // [Monday-Saturday]
|
|
OnlyWeekEnd = 4, // [Saturday+Sunday]
|
|
OnlyOfficialHolidays = 8,
|
|
OnlySundaysAndHolidays = 12, // [Sun+Holiday]
|
|
OnlySpecialDays = 16,
|
|
OnlySchoolHolidays = 32,
|
|
SpecialAndSchoolHolidays = 48,
|
|
OnlyOpenForBusinessDays = 64, // verkaufsoffen
|
|
AllDaysWithRestrictedHours = 128, // every day, restricted to some time range
|
|
NoBusinessHoursDefined = 255,
|
|
|
|
// new 12.04.2024
|
|
NO_RESTRICTION_24_7 = _NO_RESTRICTION_24_7_,
|
|
MON = _MON_,
|
|
TUE = _TUE_,
|
|
WED = _WED_,
|
|
THU = _THU_,
|
|
FRI = _FRI_,
|
|
SAT = _SAT_,
|
|
SUN = _SUN_,
|
|
WEEK_DAYS = _WEEK_DAYS_,
|
|
WORKING_DAYS = _WORKING_DAYS_,
|
|
ALL_DAYS = _ALL_DAYS_,
|
|
OFFICIAL_HOLIDAY = _OFFICIAL_HOLIDAY_,
|
|
ONLY_WEEKEND = _ONLY_WEEKEND_,
|
|
ONLY_OPEN_FOR_BUSINESS_DAYS = _ONLY_OPEN_FOR_BUSINESS_DAYS_,
|
|
ALL_DAYS_WITH_RESTRICTED_HOURS = _ALL_DAYS_WITH_RESTRICTED_HOURS_,
|
|
WEEKEND_WITH_RESTRICTED_HOURS = _WEEKEND_WITH_RESTRICTED_HOURS_,
|
|
FRI_WITH_RESTRICTED_HOURS = _FRI_WITH_RESTRICTED_HOURS_,
|
|
SAT_WITH_RESTRICTED_HOURS = _SAT_WITH_RESTRICTED_HOURS_,
|
|
SUN_WITH_RESTRICTED_HOURS = _SUN_WITH_RESTRICTED_HOURS_,
|
|
NOT_DEFINED = _NOT_DEFINED_
|
|
};
|
|
|
|
#if 0
|
|
static bool business(uint64_t businessHours, QDateTime &const dt) {
|
|
switch (dayOfWeek) {
|
|
case Qt::Monday:
|
|
(businessHours & _MON_) == _MON_;
|
|
case Qt::Tuesday:
|
|
case Qt::Wednesday:
|
|
case Qt::Thursday:
|
|
case Qt::Saturday:
|
|
case Qt::Sunday:
|
|
}
|
|
|
|
}
|
|
#endif
|
|
|
|
struct BusinessHours_struct {
|
|
BusinessHours bh;
|
|
};
|
|
|
|
#endif // TARIFF_BUSINESS_HOURS_H_INCLUDED
|