Fewo Booking

Booking via API in CRM v3
This commit is contained in:
Kevin Adametz 2019-03-28 14:54:10 +01:00
parent 88360eabb7
commit 8c514bbd4d
38 changed files with 868 additions and 18044 deletions

View file

@ -260,6 +260,8 @@
{{ form_row(form.zipCode, {'label': 'PLZ'}) }}
{{ form_row(form.city, {'label': 'Ort'}) }}
{{ form_row(form.maximumPersons, {'label': 'Maximale Personenanzahl'}) }}
{{ form_row(form.maximumAdults, {'label': 'Maximale Erwachsene'}) }}
{{ form_row(form.maximumChilds, {'label': 'Maximale Kinder'}) }}
{{ form_row(form.deposit, {'label': 'Kaution'}) }}
{#

View file

@ -66,7 +66,7 @@
<td class="st-position-price-col">
<span class="st-total-price">= {{ priceResult.total_price|number_format(2) }} €</span>
</td>
<td class="st-position-name-col">Gesamtpreis der Reise</td>
<td class="st-position-name-col">Miete inkl. Kaution</td>
</tr>
</tbody>
</table>

View file

@ -11,7 +11,7 @@
<label for="{{ form.vars.id }}">
{{ insurance.name }}
(<a href="#" data-toggle="modal" data-target="#st-insurance-{{ insurance.id }}-modal">Details</a>)
(<a href="#" data-toggle="modal" data-target="#st-insurance-{{ insurance.id }}-modal">Preisdetails</a>)
</label>
@ -49,16 +49,19 @@
{% block body %}
<h3>Leistungen & Preisliste</h3>
<ul class="c1 c1b">
{#
<ul class="c1 c1b">
{% for item in insurance.included|split('\n') %}
<li>{{ item }}</li>
{% endfor %}
</ul>
#}
<table class="table">
<thead>
<tr>
<td>Reisepreis bis</td>
<td>je Person</td>
<td>je Person (bis 65 Jahren)</td>
<td>je Person (ab 66 Jahren)</td>
</tr>
</thead>
<tbody>
@ -68,10 +71,17 @@
<td>
{% if insurance_price.price > 0 %}
{{ insurance_price.price|number_format(2) }}
{% else %}
{% elseif insurance_price.percent > 0 %}
{{ insurance_price.percent|number_format }} % vom Reisepreis
{% endif %}
</td>
<td>
{% if insurance_price.priceOld > 0 %}
{{ insurance_price.priceOld|number_format(2) }}
{% elseif insurance_price.percentOld > 0 %}
{{ insurance_price.percentOld|number_format }} % vom Reisepreis
{% endif %}
</td>
</tr>
{% endfor %}
</tbody>

View file

@ -27,13 +27,19 @@
</td>
<td class="st-position-name-col">Anzahlung (ist sofort fällig)</td>
</tr>
{% if( booking_price_info.totalInsurance > 0) %}
<tr class="">
<td class="st-position-price-col" style="min-width: 120px;">
<span class="st-deposit-price">{{ booking_price_info.totalInsurance|number_format(2) }} €</span>
</td>
<td class="st-position-name-col">Versicherung (ist sofort fällig)</td>
</tr>
{% endif %}
<tr class="">
<td class="st-position-price-col" style="min-width: 120px;">
<span class="st-final-price">{{ booking_price_info.final_payment|number_format(2) }} €</span>
</td>
<td class="st-position-name-col">Restzahlung ({{ booking_price_info.final_payment_date_str}})</td>
</tr>
</tbody>
</table>

View file

@ -5,8 +5,8 @@
<div class="info-text">
<i class="fa fa-phone"></i>
<p class="text">
030 - 700 94 100
<span class="small">Mo-Fr 09:00 - 22:00 Uhr • Sa 10:00 - 22:00 Uhr • So 11:00 - 22:00 Uhr</span>
{{ getContextBySlug('telefon-header') }}
<span class="small"> {{ getContextBySlug('uhrzeit-header')|replace({'|': " • "})|raw }} Uhr</span>
</p>
</div>
</div>

View file

@ -3,8 +3,9 @@
<div class="container-fluid">
<div class="pull-right">
<ul class="topbar-drops list-inline">
<li class="nohover visible-xs visible-sm"> Mo-Fr: 09:00 - 22:00 | Sa: 10:00 - 22:00 | So: 11:00 - 22:00 Uhr</li>
<li class="nohover"><i class="fa fa-phone"></i> 030 - 700 94 100</li>
<li class="nohover visible-xs visible-sm"> {{ getContextBySlug('uhrzeit-header') }} Uhr
</li>
<li class="nohover"><i class="fa fa-phone"></i> {{ getContextBySlug('telefon-header') }}</li>
<li>
<a href="/kontakt" title="Kontakt"><i class="fa fa-envelope"></i> <span class="hidden-xs">Kontakt</span></a>
</li>
@ -83,7 +84,7 @@
<span style="float:left; margin-top: 30pt; margin-right: 5pt; color: #e5aa30; font-size: 18px">E-Mail: <a
href="mailto:stern@sterntours.de" style="font-size: 18px; color: #777777">stern@sterntours.de</a></span>
<i class="fa fa-phone "></i>
<span>Mo-Fr: 09:00 - 22:00 Uhr<br>Sa: 10:00 - 22:00 Uhr<br>So: 11:00 - 22:00 Uhr</span>
<span>{{ getContextBySlug('uhrzeit-header')|replace({'|': "Uhr<br>"})|raw }} Uhr</span>
</div>
</div><!-- end navbar-callopse -->

View file

@ -1,8 +1,8 @@
<div id="show_sterntours_video_sidebar" class="widget clearfix">
<div class="widget-title">
<a class="collapse-widget {{ app.request.get('_open_side_about') }} {% if(app.request.get('_open_side_about') == 'closed') %} collapsed {% endif %}" href="#about-widget" data-toggle="collapse" aria-expanded="true">{{ widget.name }}</a>
<a class="collapse-widget {{ app.request.get('_open_side_about') }}" href="#about-widget" data-toggle="collapse" aria-expanded="true">{{ widget.name }}</a>
</div><!-- end title -->
<div class="boxwidget collapse {{ app.request.get('_open_side_about') }} {% if(app.request.get('_open_side_about') == 'open') %} in open {% endif %}" id="about-widget" aria-expanded="true">
<div class="boxwidget collapse in {{ app.request.get('_open_side_about') }} " id="about-widget" aria-expanded="true">
{{ widget.html|raw }}
</div><!-- end boxwidget -->
</div><!-- end widget -->

View file

@ -21,6 +21,10 @@ Abfahrts-/Abflugort: {{ booking_request.departure.name }}
Gesamtpreis: {{ booking_price_info['total']|number_format(2) }}
Anzahlung: {{ booking_price_info.deposit_total|number_format(2) }} € (ist sofort fällig)
{% if( booking_price_info.totalInsurance > 0) %}
Versicherung: {{ booking_price_info.totalInsurance|number_format(2) }} € (ist sofort fällig)
{% endif %}
Restzahlung: {{ booking_price_info.final_payment|number_format(2) }} € (bis zum {{ booking_price_info.final_payment_date}})

View file

@ -32,7 +32,10 @@ Reiseanmelder: {% if fewo_booking_request.salutation == 2 %}in{% endif %}
* E-Mail: {{ fewo_booking_request.email ?? 'keine Angabe' }}
=======================================================
Reiseteilnehmer: {{ fewo_booking_request.travelerCount }}
Reiseteilnehmer
Erwachsene: {{ fewo_booking_request.travelerCountAdult }}
Kinder: {{ fewo_booking_request.travelerCountChild }}
Gesamt: {{ fewo_booking_request.travelerCount }}
=======================================================
Mitteilungen / Sonstiges:
{{ fewo_booking_request.notes ?? '-' }}

View file

@ -24,4 +24,4 @@ Anzahl d. Reisenden: {{ contact_request.travelerCount|default('-') }}
Kommentar:
{{ contact_request.notes }}
{{ contact_request.notes }}

View file

@ -223,12 +223,11 @@
{% endif %}
<td>Verlängerung buchen</td>
<td>
Vor der Reise im Rundreisehotel oder auf Wunsch in einem anderen Hotel der gebuchten Preiskategorie in Tel Aviv oder Jerusalem
<p>{{ getContextBySlug('verlaengerung-vor') }}</p>
{{ form_widget(form.extraBookingDaysBefore) }}
{{ form_errors(form.extraBookingDaysBefore) }}
<br>
Nach der Reise im Rundreisehotel oder auf Wunsch in einem anderen Hotel der gebuchten Preiskategorie in Tel Aviv oder Jerusalem
<p>{{ getContextBySlug('verlaengerung-nach') }}</p>
{{ form_widget(form.extraBookingDaysAfter) }}
{{ form_errors(form.extraBookingDaysAfter) }}
@ -252,7 +251,6 @@
'insurance': form.insurance.vars.choices[insuranceForm.vars.value].data
} %}
{% endfor %}
{{ form_errors(form.insurance) }}
</td>
</tr>
@ -261,8 +259,7 @@
<td>
<p style="white-space: normal;">
<br>
STERN TOURS GmbH empfiehlt generell den Abschluss einer Reise-Rücktrittskosten-Versicherung und einer Auslands-Reisekrankenversicherung mit Rücktransport.
Im Anschluss der Buchung senden wir Ihnen diesbezüglich Informationen zu.
{{ getContextBySlug('reise-ruecktrittskosten-empfehlung')|raw }}
</p>
</td>
</tr>
@ -285,9 +282,9 @@
</div>
</div>
<p>
Die gewünschte Zahlungsart (Überweisung, Kreditkarten) stimmen wir mit Ihnen im Anschluss an Ihre Buchung ab.
{{ getContextBySlug('gewuenschte-zahlungsart') }}
{% if(travel_program.category.id != 1) %}
Abweichend von den Anzahlungsbedingungen Ziffer 2.1 gelten hier besondere Anzahlungsbedingungen wie folgt: Fluganteil 100% und Landleistung 20%. Abweichend von den allgemeinen Stornobedingungen Ziffer 4.3a gelten hier besondere Stornobedingungen (Ziffer 4.3b) wie folgt: Fluganteil 100% und Landleistung gemäß Ziffer 4.3a allgemeine Stornobedingungen.
{{ getContextBySlug('abweichende-anzahlungsbedingungen') }}
{% endif %}
</p>
</div>
@ -309,22 +306,20 @@
{% for departure in travel_date.departures %}
{# @var departure \AppBundle\Entity\TravelDeparturePoint #}
{% if departure.flightTime[travel_date.startWeekday] is defined %}
<div class="flight_times_ele" id="flight_time_{{ departure.id }}" style="display: none;">
<h3>Von {{ departure.name }}</h3>
{% for flightTime in departure.flightTime[travel_date.startWeekday]|split('\n') %}
{% if flightTime != "" %}
{{ flightTime|raw }}<br>
{% endif %}
{% endfor %}
</div>
{% if departure.flightTime[travel_date.startWeekday] != "" %}
<div class="flight_times_ele" id="flight_time_{{ departure.id }}" style="display: none;">
<h3>Von {{ departure.name }}</h3>
{% for flightTime in departure.flightTime[travel_date.startWeekday]|split('\n') %}
{% if flightTime != "" %}
{{ flightTime|raw }}<br>
{% endif %}
{% endfor %}
</div>
{% endif %}
{% endif %}
{% endfor %}
<div class="" id="no_flight_time" style="display: none;">
<p>Die Flugdaten sind zum Zeitpunkt der Ausschreibung noch nicht bekannt und daher werden wir Ihnen diese mit der Annahme vom Buchungsauftrag mitteilen.</p>
</div>
<div class="" id="yes_flight_time" style="display: none;">
<h3>Hinweis</h3>
<p>Flugzeiten können um 1 Std. variieren durch Sommer-/Winterzeit.</p>
<p>{{ getContextBySlug('keine-flugdaten') }}</p>
</div>
</div>
</div>
@ -351,7 +346,7 @@
<li>
<span id="extraDaysProgramBefore_date" data-org-date="{{ travel_program_date.date }}">{{ travel_program_date.date }}</span> : Reiseverlängerung vor der Reise - {{ travel_program_date.day|raw }}
{% if travel_program_date.night is defined %}
<br>Übernachtung : Reiseverlängerung im Rundreisehotel oder auf Wunsch in einem anderen Hotel der gebuchten Preiskategorie in Tel Aviv oder Jerusalem
<br> {{ getContextBySlug('uebernachtung-reiseverlaengerung') }}
{% endif %}
</li>
<li>
@ -390,7 +385,7 @@
<div id="extraDaysProgramAfter_show" style="display: none;">
<li>
{{ travel_program_date.date }} : Ende {{ travel_program.title }}
<br>Übernachtung : Reiseverlängerung im Rundreisehotel oder auf Wunsch in einem anderen Hotel der gebuchten Preiskategorie in Tel Aviv oder Jerusalem
<br>{{ getContextBySlug('uebernachtung-reiseverlaengerung') }}
</li>
<li>
<span id="extraDaysProgramAfter_date" data-org-date="{{ travel_program_date.date }}">{{ travel_program_date.date }}</span> : Reiseverlängerung - {{ travel_program_date.day|raw }}
@ -574,7 +569,7 @@
<div class="">
<div class="col-md-12 col-sm-12 col-xs-12">
<h5>Reiseteilnehmer</h5>
<p>Bitte geben Sie Ihre Vornamen und Nachnamen in die beiden Felder "Vornamen" und "Nachnamen" ein, wie diese im maschinenlesbaren Teil in Ihrem Reisepass eingetragen sind.</p>
<p>{{ getContextBySlug('namen-reisepass') }}</p>
</div>
<div class="col-md-12 col-sm-12 col-xs-12">
<div class="hidden">
@ -684,7 +679,7 @@
<div class="checkbox">
{{ form_widget(traveler.acceptEntryRequirements) }}
<label for="{{ traveler.acceptEntryRequirements.vars.id }}" style="line-height: 1.2em;">
Ich habe die oben genannten Hinweise zu den "Einreisebestimmungen, Visabestimmungen und gesundheitspolizeilichen Vorschriften" für mich und alle Mitreisenden gelesen und zur Kenntnis genommen..
{{ getContextBySlug('hinweise-einreisebestimmungen')|raw }}
</label>
<span class="checkbox_marker"></span>
{{ form_errors(traveler.acceptEntryRequirements) }}
@ -700,12 +695,10 @@
</div> <!-- st trav -->
<h2>Hinweis</h2>
<p>Sofern Sie nicht oder nicht ausschließlich nur die Staatsbürgerschaft für
<p>{{ getContextBySlug('hinweis-staatsbuergerschaft-1')|raw }}
{% for nationalitie in nationalities %}
{{ nationalitie.name }}{% if not loop.last %},{% endif %}
{% endfor %} besitzen, können Sie die Reise nicht buchen,
da wir Sie vorher u.a. über die Einreisebestimmungen für Ihre individuelle Staatsbürgerschaft informieren müssen.
Bitte nehmen Sie vor einer Buchung Kontakt mit uns auf, damit Sie nach Erhalt der Informationen entscheiden können, ob Sie die Reise buchen möchten.</p>
{% endfor %} {{ getContextBySlug('hinweis-staatsbuergerschaft-2')|raw }} </p>
</div> <!-- col -->
@ -721,14 +714,15 @@
{{ travel_program.organizer.legalRights|raw }}
<a href="/uploads/{{ travel_program.organizer.fileFormPage }}" target="_blank">
Weiterführende Informationen zu Ihren wichtigsten Rechten nach der Richtlinie (EU) 2015/2302 (Formblatt)
{{ getContextBySlug('informationen-formblatt') }}
</a>
</div>
<div class="form-group">
<div class="checkbox">
{{ form_widget(form.acceptLegalRights) }}
<label for="{{ form.acceptLegalRights.vars.id }}" style="line-height: 1.2em;">
Hiermit bestätige ich, dass ich das Formblatt mit den Informationen zu meinen wichtigsten Rechten nach der Richtlinie (EU) 2015/2302 zur Kenntnis genommen habe.
{{ getContextBySlug('bestaetigung-formblatt') }}
</label>
<span class="checkbox_marker"></span>
{{ form_errors(form.acceptLegalRights) }}
@ -749,20 +743,18 @@
<div class="checkbox">
{{ form_widget(form.acceptTerms) }}
<label for="{{ form.acceptTerms.vars.id }}" style="line-height: 1.2em;">
Ich habe alle Daten und Angaben auf Richtigkeit überprüft. Ich habe die
{{ getContextBySlug('reisebedingungen-check-1') }}
{% if travel_program.isMediated %}
<a href="/uploads/{{ travel_program.organizer.fileName }}?t={{ travel_program.organizer.rulesUpdatedTime }}" target="_blank">
Allgemeinen Geschäftsbedingungen des Reiseveranstalters
{{ getContextBySlug('reisebedingungen-link-1') }}
</a> {{ travel_program.organizer.name }}
{% else %}
<a href="/uploads/{{ travel_program.organizer.formArb }}?t={{ travel_program.organizer.rulesUpdatedTime }}" target="_blank">
Allgemeinen Reisebedingungen des Reiseveranstalters
{{ getContextBySlug('reisebedingungen-link-2') }}
</a> {{ travel_program.organizer.name }}
{% endif %}
gelesen und akzeptiert. Zugleich erkenne ich diese für alle Reiseteilnehmer an.<br>
Es gelten die der Staatsbürgerschaft der einzelnen Reiseteilnehmer entsprechenden Einreise- und Impfbestimmungen für das Ziel- und Transitland.
Die für deutsche Staatsbürger geltenden Bestimmungen finden Sie auf den Seiten des <a href="https://www.auswaertiges-amt.de/de/ReiseUndSicherheit/reise-und-sicherheitshinweise" target="_blank">Auswärtigen Amts</a>
Ein Widerrufsrecht steht Ihnen gemäß § 312 g Abs. 2 Nr. 9 BGB (Bürgerliches Gesetzbuch) nicht zu.
{{ getContextBySlug('reisebedingungen-check-2')|raw }}
</label>
<span class="checkbox_marker"></span>
{{ form_errors(form.acceptTerms) }}
@ -800,10 +792,7 @@
<div class="">
<div class="col-md-12 col-sm-12 col-xs-12">
<h5>Wichtiger Hinweis</h5>
Nach Abschluss Ihrer Buchung erhalten Sie innerhalb von 15 Minuten eine Email zur Bestätigung Ihres verbindlichen Buchungsauftrages.
Sollten Sie diese Email nicht bekommen, kontaktieren Sie uns bitte per Email, oder per Telefon unter 030-70094100.
Wir sind Montag bis Freitag von 9 bis 22 Uhr, Samstag von 10 bis 22 Uhr und Sonn- und Feiertage von 11 bis 22:00 Uhr für Sie da.
{{ getContextBySlug('hinweis-bestellung')|raw }}
</div>
</div>
</div><!-- end form-box -->

View file

@ -28,18 +28,22 @@
<td class="{{ dayState.getCssClass }} {% if dayState.isBookable %}active{% endif %}">
{% if dayState.isBookable %}
{% if dayState.isPastDate %}
<div style="padding: 8px"><del style="color:#989898;">{{ dayState.day }}</del></div>
{% else %}
<a href="{{ page.urlPath }}/buchen?pnr={{ dayState.price.id }}&fd={{ dayState.day < 10 ? '0':'' }}{{dayState.day}}{{ calendar_month['monthNumber'] < 10 ? '0':'' }}{{calendar_month['monthNumber']}}{{calendar_month['year']}}"
rel="nofollow" class="table-link"
>
{{ dayState.day }}
</a>
{% endif %}
{% elseif dayState.day == 0 %}
&nbsp;
{% else %}
{% if dayState.isPastDate %}
<del style="color:#989898;">{{ dayState.day }}</del>
<div style="padding: 8px"><del style="color:#989898;">{{ dayState.day }}</del></div>
{% else %}
{{ dayState.day }}
<div style="padding: 8px">{{ dayState.day }}</div>
{% endif %}
{% endif %}
</td>

View file

@ -78,14 +78,32 @@
</td>
</tr> -->
<tr>
<td>{{ form_label(form.travelerCount, 'Reiseteilnehmer') }}</td>
<td>{{ form_label(form.travelerCountAdult, 'Reiseteilnehmer Erwachsene') }}</td>
<td>
<div style="max-width: 180px;">
{{ form_widget(form.travelerCount) }}
{{ form_errors(form.travelerCount) }}
{{ form_widget(form.travelerCountAdult) }}
{{ form_errors(form.travelerCountAdult) }}
</div>
</td>
</tr>
<tr>
<td>{{ form_label(form.travelerCountChild, 'Reiseteilnehmer Kinder') }}</td>
<td>
<div style="max-width: 180px;">
{{ form_widget(form.travelerCountChild) }}
{{ form_errors(form.travelerCountChild) }}
</div>
</td>
</tr>
<!-- <tr>
<td>{{ form_label(form.travelerCount, 'Reiseteilnehmer') }}</td>
<td>
<div style="max-width: 180px;">
{{ form_widget(form.travelerCount) }}
{{ form_errors(form.travelerCount) }}
</div>
</td>
</tr>-->
</tbody>
</table>
</div>

View file

@ -117,7 +117,11 @@
<td>
Anzahl Reiseteilnehmer
</td>
<td>{{ fewo_booking_request.travelerCount }}</td>
<td>
Erwachsene: {{ fewo_booking_request.travelerCountAdult }}<br>
Kinder: {{ fewo_booking_request.travelerCountChild }}<br>
Gesamt: {{ fewo_booking_request.travelerCount }}
</td>
</tr>
</tbody>
</table>

View file

@ -23,6 +23,7 @@ services:
- '@twig'
- '@app.keyword_service'
- '@request_stack'
- '@doctrine.orm.entity_manager'
tags:
- { name: twig.extension }