#ifndef TARIFF_BUSINESS_HOURS_H_INCLUDED #define TARIFF_BUSINESS_HOURS_H_INCLUDED /// /// Business hours (byte represents payment option id) /// /// #include #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 _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_, 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