{# Flash messages - must be inside form-wrapper for HTMX swap to display them #}
{% include '_partials/_flashes.html.twig' %}
{# Pagination - desktop only #}
{% include 'booking/_pagination.html.twig' with { 'current_step': 4 } %}
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 %}
|
{{ 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') }}
|
{% endfor %}
{% 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 %}
|
{{ servicePricing.participantCount }}x {{ servicePricing.label }}
|
{{ servicePricing.totalPrice|format_currency('EUR') }}
|
{% endfor %}
{% 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 %}
| {{ assignedRoom.label }} |
{% if assignedRoom.price is not null and assignedRoom.price != 0 %}
{{ assignedRoom.price|format_currency('EUR') }}
{% endif %}
|
{% endif %}
{% if participant.remarksRoom %}
| Wunsch: {{ participant.remarksRoom }} |
{% endif %}
{% endif %}
{# An-/Abreise Section #}
{% if participant.hasTransportationData() %}
An-/Abreise
{% if participant.transportationOutbound %}
| Hinfahrt: {{ participant.transportationOutbound.label }} |
{% if participant.transportationOutbound.price is not null and participant.transportationOutbound.price != 0 %}
{{ participant.transportationOutbound.price|format_currency('EUR') }}
{% endif %}
|
{% endif %}
{% if participant.transportationInbound %}
| Rückfahrt: {{ participant.transportationInbound.label }} |
{% if participant.transportationInbound.price is not null and participant.transportationInbound.price != 0 %}
{{ participant.transportationInbound.price|format_currency('EUR') }}
{% endif %}
|
{% endif %}
{% if participant.pickup %}
| Zustieg: {{ participant.pickup.label }} |
{% if participant.pickup.price is not null and participant.pickup.price != 0 %}
{{ participant.pickup.price|format_currency('EUR') }}
{% endif %}
|
{% endif %}
{% if participant.dropOff %}
| Ausstieg: {{ participant.dropOff.label }} |
{% if participant.dropOff.price is not null and participant.dropOff.price != 0 %}
{{ participant.dropOff.price|format_currency('EUR') }}
{% endif %}
|
{% endif %}
{% if participant.parking %}
| 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 %}
|
{% endif %}
{% if participant.licensePlate %}
| Kennzeichen: {{ participant.licensePlate }} |
{% endif %}
{% endif %}
{# Verpflegung Section #}
{% if participant.board is not empty %}
Verpflegung
{% for boardItem in participant.board %}
| {{ boardItem.label }} |
{% if boardItem.price is not null and boardItem.price != 0 %}
{{ boardItem.price|format_currency('EUR') }}
{% endif %}
|
{% endfor %}
{% 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 %}
| {{ rental.label }} |
{% if rental.price is not null and rental.price != 0 %}
{{ rental.price|format_currency('EUR') }}
{% endif %}
|
{% endfor %}
{% if participant.rentalInsuranceSelected and participant.rentalInsurance %}
| {{ participant.rentalInsurance.label }} |
{% if participant.rentalInsurance.price is not null and participant.rentalInsurance.price != 0 %}
{{ participant.rentalInsurance.price|format_currency('EUR') }}
{% endif %}
|
{% endif %}
{% if participant.rentals is not empty and (participant.height or participant.weight or participant.shoeSize) %}
|
{% 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 %}
{% endif %}
{# Kurse Section #}
{% if participant.courses is not empty %}
Kurse
{% for course in participant.courses %}
| {{ course.label }} |
{% if course.price is not null and course.price != 0 %}
{{ course.price|format_currency('EUR') }}
{% endif %}
|
{% endfor %}
{% endif %}
{# Zusatzleistungen Section #}
{% if participant.additionalServices is not empty %}
Zusatzleistungen
{% for service in participant.additionalServices %}
| {{ service.label }} |
{% if service.price is not null and service.price != 0 %}
{{ service.price|format_currency('EUR') }}
{% endif %}
|
{% endfor %}
{% 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
|
Gesamtpreis
|
{{ bookingCreateContext.summaryData.pricing.grandTotal|format_currency('EUR') }}
|
{% for voucher in acceptedVouchers.vouchers %}
|
{% if voucher.promotional %}
Aktionsgutschein ({{ voucher.code }})
{% elseif voucher.goodwill %}
Kulanzgutschein ({{ voucher.code }})
{% elseif voucher.purchase %}
Kaufgutschein ({{ voucher.code }})
{% endif %}
|
- {{ voucher.amount|format_currency('EUR') }}
|
{% endfor %}
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') %}
Lastschrift (Einzugsermächtigungsverfahren)
{% else %}
Überweisung
{% endif %}
|
{% if bookingCreateContext.bookingDto.paymentMethod == constant('App\\BusProNet\\Constants::PAYMENT_METHOD_DEBIT') and bookingCreateContext.bookingDto.bankAccount %}
|
IBAN:
{{ bookingCreateContext.bookingDto.bankAccount.iban }}
|
|
Kontoinhaber:
{{ bookingCreateContext.bookingDto.bankAccount.accountHolder }}
|
{% endif %}
{# 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'}
}) }}