'Reiserücktrittsversicherung', 'PAK' => 'Reiseschutz', 'OHN' => 'Selbstbehalt', ]; // Normalized service group keys for pricing display public const GROUP_TRANSPORTATION = 'transportation'; public const GROUP_RENTALS = 'rentals'; public const GROUP_INSURANCE = 'insurance'; // Service type display labels (German) - used in pricing calculator public const SERVICE_LABELS = [ self::TOKEN_COURSES => 'Kurse', self::TOKEN_SKI_PASS => 'Skipässe', self::TOKEN_ADDITIONAL => 'Zusatzleistungen', self::TOKEN_BOARD => 'Verpflegung', self::TOKEN_VEG => 'Verpflegungswunsch', self::TOKEN_RENTAL_INSURANCE => 'Leihmaterial-Versicherung', self::TOKEN_PARKING => 'Parkplatz', self::GROUP_TRANSPORTATION => 'Beförderung', self::GROUP_RENTALS => 'Leihmaterial', self::GROUP_INSURANCE => 'Reiseversicherungen', ]; public const STATUS_AVAILABLE = 'Frei'; public const STATUS_BLOCKED = 'Buchungsstop'; public const STATUS_ON_REQUEST = 'Anfrage'; // Booking types for API requests public const BOOKING_TYPE_INQUIRY = 'Anfrage'; public const BOOKING_TYPE_BOOKING = 'Buchung'; // Booking status codes from buchungstatusmoeglich attribute public const BOOKING_STATUS_FREE = 'F'; public const BOOKING_STATUS_INQUIRY = 'A'; public const BOOKING_STATUS_OPEN = 'O'; // Optionsbuchung - not relevant for current implementation // Payment methods public const PAYMENT_METHOD_TRANSFER = 'transfer'; public const PAYMENT_METHOD_DEBIT = 'debit'; // Payment type IDs for API public const PAYMENT_TYPE_ID_TRANSFER = 2; public const PAYMENT_TYPE_ID_DEBIT = 5; // Baby room constraints public const BABY_MAX_AGE = 2; public const BABY_ROOM_CODE = 'Baby'; }