113 lines
5.4 KiB
Twig
113 lines
5.4 KiB
Twig
{#- Price breakdown for booking emails. Mirrors groups/booking/_offer_summary.html.twig, but
|
||
with inline styles: the email layout ships no table styling and no Tailwind.
|
||
Context: booking, priceBreakdown, currency (set in AccommodationBookingService). -#}
|
||
{% if priceBreakdown is not null and currency is not null %}
|
||
{% set cell = 'padding: 4px 0; text-align: left; vertical-align: top;' %}
|
||
{% set amount = 'padding: 4px 0; text-align: right; vertical-align: top; white-space: nowrap;' %}
|
||
{% set note = 'display: block; font-size: 12px; color: #6b7280; margin: 0;' %}
|
||
|
||
<h2>Preise</h2>
|
||
|
||
<table style="width: 100%; border-collapse: collapse; font-size: 14px;">
|
||
<tr>
|
||
<td style="{{ cell }}">Zeitraum</td>
|
||
<td style="{{ amount }}">
|
||
{{ booking.dateFrom|date('d.m.Y') }} – {{ booking.dateTo|date('d.m.Y') }},
|
||
{{ booking.nights }} {{ booking.nights != 1 ? 'Nächte' : 'Nacht' }}
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td style="{{ cell }}">Anzahl Personen</td>
|
||
<td style="{{ amount }}">{{ booking.paxCount }}</td>
|
||
</tr>
|
||
{% if booking.minorsCount > 0 %}
|
||
<tr>
|
||
<td style="{{ cell }}">davon Kinder (0–3 J.)</td>
|
||
<td style="{{ amount }}">{{ booking.minorsCount }}</td>
|
||
</tr>
|
||
{% endif %}
|
||
{% if booking.childrenCount > 0 %}
|
||
<tr>
|
||
<td style="{{ cell }}">davon Kinder (4–{{ booking.accommodation.maxAdolescentAge }} J.)</td>
|
||
<td style="{{ amount }}">{{ booking.childrenCount }}</td>
|
||
</tr>
|
||
{% endif %}
|
||
{% if priceBreakdown.basePrice > 0 %}
|
||
<tr>
|
||
<td style="{{ cell }}">
|
||
Basispreis
|
||
<span style="{{ note }}">für {{ priceBreakdown.includedPax }} Pers.</span>
|
||
</td>
|
||
<td style="{{ amount }}">{{ (priceBreakdown.basePrice / 100)|format_currency(currency) }}</td>
|
||
</tr>
|
||
{% endif %}
|
||
{% if priceBreakdown.additionalPersonsPrice > 0 %}
|
||
<tr>
|
||
<td style="{{ cell }}">
|
||
Aufpreis Personenzahl
|
||
<span style="{{ note }}">für {{ priceBreakdown.effectivePax - priceBreakdown.includedPax }} Pers.</span>
|
||
</td>
|
||
<td style="{{ amount }}">{{ (priceBreakdown.additionalPersonsPrice / 100)|format_currency(currency) }}</td>
|
||
</tr>
|
||
{% endif %}
|
||
{% if priceBreakdown.shortTermSurcharge > 0 %}
|
||
<tr>
|
||
<td style="{{ cell }}">Aufpreis Kurzzeit</td>
|
||
<td style="{{ amount }}">{{ (priceBreakdown.shortTermSurcharge / 100)|format_currency(currency) }}</td>
|
||
</tr>
|
||
{% endif %}
|
||
{% if priceBreakdown.boardPrice > 0 %}
|
||
<tr>
|
||
<td style="{{ cell }}">Verpflegung{% if booking.boardServiceLabel %} ({{ booking.boardServiceLabel }}){% endif %}</td>
|
||
<td style="{{ amount }}">{{ (priceBreakdown.boardPrice / 100)|format_currency(currency) }}</td>
|
||
</tr>
|
||
{% endif %}
|
||
{% if priceBreakdown.undersubscriptionSurcharge > 0 %}
|
||
<tr>
|
||
<td style="{{ cell }}">
|
||
Verpflegungs-Aufschlag
|
||
<span style="{{ note }}">für Gruppen unter {{ priceBreakdown.undersubscriptionThreshold }} Pers.</span>
|
||
</td>
|
||
<td style="{{ amount }}">{{ (priceBreakdown.undersubscriptionSurcharge / 100)|format_currency(currency) }}</td>
|
||
</tr>
|
||
{% endif %}
|
||
{% for service in priceBreakdown.serviceDetails %}
|
||
{% if service.price > 0 %}
|
||
<tr>
|
||
<td style="{{ cell }}">{{ service.label }}</td>
|
||
<td style="{{ amount }}">{{ (service.price / 100)|format_currency(currency) }}</td>
|
||
</tr>
|
||
{% endif %}
|
||
{% endfor %}
|
||
{% if priceBreakdown.runningCosts > 0 %}
|
||
<tr>
|
||
<td style="{{ cell }}">Strom- und Abfallgebühren</td>
|
||
<td style="{{ amount }}">{{ (priceBreakdown.runningCosts / 100)|format_currency(currency) }}</td>
|
||
</tr>
|
||
{% endif %}
|
||
<tr>
|
||
<td style="{{ cell }} border-top: 1px solid #d1d5db; font-weight: bold;">
|
||
Gesamtpreis
|
||
<span style="{{ note }} font-weight: normal;">zzgl. ortsabhängiger Gebühren</span>
|
||
</td>
|
||
<td style="{{ amount }} border-top: 1px solid #d1d5db; font-weight: bold;">
|
||
{{ (priceBreakdown.total / 100)|format_currency(currency) }}
|
||
</td>
|
||
</tr>
|
||
{% for discount in priceBreakdown.discounts %}
|
||
<tr>
|
||
<td style="{{ cell }}">Rabatt {{ discount.label }} {{ discount.percent }} %</td>
|
||
<td style="{{ amount }}">– {{ (discount.amount / 100)|format_currency(currency) }}</td>
|
||
</tr>
|
||
{% endfor %}
|
||
{% if priceBreakdown.discounts is not empty %}
|
||
<tr>
|
||
<td style="{{ cell }} border-top: 1px solid #d1d5db; font-weight: bold;">Gesamtpreis nach Rabatt</td>
|
||
<td style="{{ amount }} border-top: 1px solid #d1d5db; font-weight: bold;">
|
||
{{ (priceBreakdown.discountedTotal / 100)|format_currency(currency) }}
|
||
</td>
|
||
</tr>
|
||
{% endif %}
|
||
</table>
|
||
{% endif %}
|