{% extends 'layout_booking.html.twig' %} {% block title %}Bitte bestätige deine Buchung{% endblock %} {% block content %} {{ form_start(form, { 'attr': { 'class': 'flex-1 flex flex-col min-h-0', 'novalidate': 'novalidate' } }) }} {# Pagination - mobile only #}
{% include 'booking/_pagination.html.twig' with { 'current_step': 4 } %}
{# Sidebar with travel information #}
{# Flash messages - must be inside form-wrapper for HTMX swap to display them #} {% include '_partials/_flashes.html.twig' %} {# Pagination - desktop only #}

Bitte bestätige deine Buchung

{# Validation errors #} {% from '_partials/_validation_errors.html.twig' import validation_alert %} {{ validation_alert(form, 'Bitte bestätige deine Angaben und stimme den AGB zu', false) }} {# Travel Information - mobile only #}
{% include 'booking/_summary_travel_info.html.twig' with { 'bookingDto': bookingCreateContext.bookingDto, 'summaryData': bookingCreateContext.summaryData, 'tableClass': 'mb-4', 'showStatus': false } %}
{# Detailed Pricing Breakdown #}

Preisübersicht

{# Rooms Section #} {% if bookingCreateContext.summaryData.pricing.rooms is not empty %}
Unterkunft
{% for roomPricing in bookingCreateContext.summaryData.pricing.rooms %} {% endfor %}
{{ roomPricing.quantity }}x {{ roomPricing.label }}
{% if bookingCreateContext.summaryData.pricing.assignmentCounts[roomPricing.roomId] is defined %}
{{ bookingCreateContext.summaryData.pricing.assignmentCounts[roomPricing.roomId] }} Person(en) belegt
{% endif %}
{{ roomPricing.totalPrice|format_currency('EUR') }}
{% endif %} {# Services Section #} {% if bookingCreateContext.summaryData.pricing.services is not empty %}
Leistungen
{% for serviceGroup in bookingCreateContext.summaryData.pricing.services %}
{{ serviceGroup.groupName }}
{% for servicePricing in serviceGroup.services %} {% endfor %}
{{ servicePricing.participantCount }}x {{ servicePricing.label }} {{ servicePricing.totalPrice|format_currency('EUR') }}
{% endfor %}
{% endif %} {# Participants Summary #}

Teilnehmer

{% for participant in bookingCreateContext.bookingDto.participants %}
{{ participant.firstName }} {{ participant.lastName }} {% if loop.first and not bookingCreateContext.bookingDto.isInternalAgencyBooking() %}(Anmelder:in){% endif %} {% if bookingCreateContext.participantPrices is defined and bookingCreateContext.participantPrices[loop.index0] is defined %} {{ bookingCreateContext.participantPrices[loop.index0]|format_currency('EUR') }} {% endif %}
{# Personal Data - responsive grid #}
{% if participant.dateOfBirth %}
Geburtsdatum: {{ participant.dateOfBirth|date('d.m.Y') }}
{% endif %} {% if participant.gender %}
Geschlecht: {{ participant.gender == 'M' ? 'Männlich' : 'Weiblich' }}
{% endif %} {% if participant.email %}
E-Mail: {{ participant.email }}
{% endif %} {% if participant.mobile %}
Telefon: {{ participant.mobile }}
{% endif %} {% if participant.nationality %}
Nationalität: {{ participant.nationality }}
{% endif %} {% if participant.address and (participant.address.street or participant.address.city) %}
Adresse: {% if participant.address.street %}{{ participant.address.street }}, {% endif %} {% if participant.address.postCode or participant.address.city %} {{ participant.address.postCode }} {{ participant.address.city }} {% endif %} {% if participant.address.country %}, {{ participant.address.country }}{% endif %}
{% endif %}
{# Unterkunft Section #} {% set assignedRoom = bookingCreateContext.bookingDto.travel.getRoomById(participant.assignedRoomId) %} {% if assignedRoom or participant.remarksRoom %}
Unterkunft
{% if assignedRoom %} {% endif %} {% if participant.remarksRoom %} {% endif %}
{{ assignedRoom.label }} {% if assignedRoom.price is not null and assignedRoom.price != 0 %} {{ assignedRoom.price|format_currency('EUR') }} {% endif %}
Wunsch: {{ participant.remarksRoom }}
{% endif %} {# An-/Abreise Section #} {% if participant.hasTransportationData() %}
An-/Abreise
{% if participant.transportationOutbound %} {% endif %} {% if participant.transportationInbound %} {% endif %} {% if participant.pickup %} {% endif %} {% if participant.dropOff %} {% endif %} {% if participant.parking %} {% endif %} {% if participant.licensePlate %} {% endif %}
Hinfahrt: {{ participant.transportationOutbound.label }} {% if participant.transportationOutbound.price is not null and participant.transportationOutbound.price != 0 %} {{ participant.transportationOutbound.price|format_currency('EUR') }} {% endif %}
Rückfahrt: {{ participant.transportationInbound.label }} {% if participant.transportationInbound.price is not null and participant.transportationInbound.price != 0 %} {{ participant.transportationInbound.price|format_currency('EUR') }} {% endif %}
Zustieg: {{ participant.pickup.label }} {% if participant.pickup.price is not null and participant.pickup.price != 0 %} {{ participant.pickup.price|format_currency('EUR') }} {% endif %}
Ausstieg: {{ participant.dropOff.label }} {% if participant.dropOff.price is not null and participant.dropOff.price != 0 %} {{ participant.dropOff.price|format_currency('EUR') }} {% endif %}
Parkplatz {% if participant.parkingService is not null and participant.parkingService.price is not null and participant.parkingService.price != 0 %} {{ participant.parkingService.price|format_currency('EUR') }} {% endif %}
Kennzeichen: {{ participant.licensePlate }}
{% endif %} {# Verpflegung Section #} {% if participant.board is not empty %}
Verpflegung
{% for boardItem in participant.board %} {% endfor %}
{{ boardItem.label }} {% if boardItem.price is not null and boardItem.price != 0 %} {{ boardItem.price|format_currency('EUR') }} {% endif %}
{% endif %} {# Skipass Section #} {% if participant.skiPass %}
Skipass
{{ participant.skiPass.label }} {% if participant.skiPass.price is not null and participant.skiPass.price != 0 %} {{ participant.skiPass.price|format_currency('EUR') }} {% endif %}
{% endif %} {# Leihmaterial Section #} {% if participant.rentals is not empty or (participant.rentalInsuranceSelected and participant.rentalInsurance) %}
Leihmaterial
{% for rental in participant.rentals %} {% endfor %} {% if participant.rentalInsuranceSelected and participant.rentalInsurance %} {% endif %} {% if participant.rentals is not empty and (participant.height or participant.weight or participant.shoeSize) %} {% endif %}
{{ rental.label }} {% if rental.price is not null and rental.price != 0 %} {{ rental.price|format_currency('EUR') }} {% endif %}
{{ participant.rentalInsurance.label }} {% if participant.rentalInsurance.price is not null and participant.rentalInsurance.price != 0 %} {{ participant.rentalInsurance.price|format_currency('EUR') }} {% endif %}
{% if participant.height %}Größe: {{ participant.height }} cm{% endif %} {% if participant.weight %}{% if participant.height %}, {% endif %}Gewicht: {{ participant.weight }} kg{% endif %} {% if participant.shoeSize %}{% if participant.height or participant.weight %}, {% endif %}Schuhgröße: {{ participant.shoeSize }}{% endif %}
{% endif %} {# Kurse Section #} {% if participant.courses is not empty %}
Kurse
{% for course in participant.courses %} {% endfor %}
{{ course.label }} {% if course.price is not null and course.price != 0 %} {{ course.price|format_currency('EUR') }} {% endif %}
{% endif %} {# Zusatzleistungen Section #} {% if participant.additionalServices is not empty %}
Zusatzleistungen
{% for service in participant.additionalServices %} {% endfor %}
{{ service.label }} {% if service.price is not null and service.price != 0 %} {{ service.price|format_currency('EUR') }} {% endif %}
{% endif %} {# Reiseversicherung Section #} {% if participant.insurance %}
Reiseversicherung
{{ participant.insurance.label }} {% if participant.insurance.price is not null and participant.insurance.price != 0 %} {{ participant.insurance.price|format_currency('EUR') }} {% endif %}
{% endif %}
{% endfor %} {# Grand Total #} {% if bookingCreateContext.summaryData.pricing.grandTotal > 0 %} {% set acceptedVouchers = bookingCreateContext.summaryData.vouchers.acceptedVouchers %} {% if acceptedVouchers and acceptedVouchers.hasVouchers() %}
Kostenübersicht
{% for voucher in acceptedVouchers.vouchers %} {% endfor %}
Gesamtpreis {{ bookingCreateContext.summaryData.pricing.grandTotal|format_currency('EUR') }}
{% if voucher.promotional %} Aktionsgutschein ({{ voucher.code }}) {% elseif voucher.goodwill %} Kulanzgutschein ({{ voucher.code }}) {% elseif voucher.purchase %} Kaufgutschein ({{ voucher.code }}) {% endif %} - {{ voucher.amount|format_currency('EUR') }}
Zu zahlen {{ bookingCreateContext.summaryData.vouchers.payableAmount|format_currency('EUR') }}
{% else %}
Gesamtpreis {{ bookingCreateContext.summaryData.pricing.grandTotal|format_currency('EUR') }}
{% endif %} {% endif %} {# Payment Summary #}
Zahlungsart
{% if bookingCreateContext.bookingDto.paymentMethod == constant('App\\BusProNet\\Constants::PAYMENT_METHOD_DEBIT') and bookingCreateContext.bookingDto.bankAccount %} {% endif %}
{% if bookingCreateContext.bookingDto.paymentMethod == constant('App\\BusProNet\\Constants::PAYMENT_METHOD_DEBIT') %} Lastschrift (Einzugsermächtigungsverfahren) {% else %} Überweisung {% endif %}
IBAN: {{ bookingCreateContext.bookingDto.bankAccount.iban }}
Kontoinhaber: {{ bookingCreateContext.bookingDto.bankAccount.accountHolder }}
{# Confirmation Checkboxes #}
Bestätigung
{% if form.newsletterOptIn is defined and newsletterOptInVisible and newsletterTargetEmail %} {{ form_row(form.newsletterOptIn, { 'label_attr': {'class': 'text-base font-semibold'} }) }} {% endif %} {{ form_row(form.confirmationAccepted, { 'label_attr': {'class': 'text-base font-semibold'} }) }} {{ form_row(form.termsAccepted, { 'label_attr': {'class': 'text-base font-semibold'} }) }}
{% include '_partials/_cancel_button.html.twig' %}
Zurück
{{ form_rest(form) }} {{ form_end(form) }} {% endblock %} {% block data_layer %} {% include '_partials/_tracking.html.twig' with { 'url': '/trichter_Z1/schritt4_uerbersicht_bestaetigung', 'title': 'Übersicht und Bestätigung' } %} {% endblock %}