From 2360290f06d2ce860fa1b2516c9046bdb61752c8 Mon Sep 17 00:00:00 2001 From: adametz Date: Sat, 30 Jun 2018 12:44:31 +0000 Subject: [PATCH] EU Reiserecht - Booking git-svn-id: http://78.47.251.156/svn/dev/sterntours-3@3419 f459cee4-fb09-11de-96c3-f9c5f16c3c76 --- .../components/booking/summary.html.twig | 15 + .../email/components/bookingSummary.txt.twig | 16 +- .../views/default/pages/booking.html.twig | 562 +++++++++++++----- .../pages/bookingConfirmation.html.twig | 11 +- .../views/default/pages/contact.html.twig | 14 + .../views/default/pages/fewoBooking.html.twig | 30 +- .../Controller/BookingController.php | 46 +- trunk/src/AppBundle/Entity/BookingRequest.php | 54 +- trunk/src/AppBundle/Entity/ContactRequest.php | 18 + .../AppBundle/Entity/FewoBookingRequest.php | 18 + trunk/src/AppBundle/Entity/TravelBooking.php | 129 ++++ .../Entity/TravelBookingRepository.php | 6 + trunk/src/AppBundle/Entity/TravelDate.php | 35 ++ .../AppBundle/Entity/TravelDeparturePoint.php | 36 ++ .../src/AppBundle/Entity/TravelOrganizer.php | 73 +++ trunk/src/AppBundle/Entity/TravelProgram.php | 51 ++ trunk/src/AppBundle/Entity/Traveler.php | 61 ++ .../Export/BookingSternToursCrmExporter.php | 5 +- .../Export/SternToursCrmExporter.php | 3 +- .../src/AppBundle/Form/BookingRequestType.php | 4 +- .../src/AppBundle/Form/ContactRequestType.php | 1 + .../AppBundle/Form/FewoBookingRequestType.php | 1 + trunk/src/AppBundle/Form/TravelerType.php | 17 + .../AppBundle/Resources/public/js/booking.js | 71 ++- .../AppBundle/Resources/public/js/custom.js | 41 +- 25 files changed, 1089 insertions(+), 229 deletions(-) diff --git a/trunk/app/Resources/views/default/components/booking/summary.html.twig b/trunk/app/Resources/views/default/components/booking/summary.html.twig index d8af11be..a73e1d25 100644 --- a/trunk/app/Resources/views/default/components/booking/summary.html.twig +++ b/trunk/app/Resources/views/default/components/booking/summary.html.twig @@ -16,5 +16,20 @@ Gesamtpreis der Reise + + + + {{ booking_price_info.deposit_total|number_format(2) }} € + + Anzahlung (ist sofort fällig) + + + + {{ booking_price_info.final_payment|number_format(2) }} € + + Restzahlung (bis zum {{ booking_price_info.final_payment_date}}) + + + diff --git a/trunk/app/Resources/views/default/email/components/bookingSummary.txt.twig b/trunk/app/Resources/views/default/email/components/bookingSummary.txt.twig index 35c75b3b..9011b1f5 100644 --- a/trunk/app/Resources/views/default/email/components/bookingSummary.txt.twig +++ b/trunk/app/Resources/views/default/email/components/bookingSummary.txt.twig @@ -29,6 +29,10 @@ Abfahrts-/Abflugort: {{ booking_request.departure.name }} {{ booking_request. Gesamtpreis: {{ booking_price_info['total']|number_format(2) }} € +Anzahlung: {{ booking_price_info.deposit_total|number_format(2) }} € (ist sofort fällig) + +Restzahlung: {{ booking_price_info.final_payment|number_format(2) }} € (bis zum {{ booking_price_info.final_payment_date}}) + ===================================================================================== Reiseleistungen: ===================================================================================== @@ -64,16 +68,16 @@ Zimmernummer, Zimmertyp, Geschlecht, Vorname, Nachname, Geburtsdatum {% set travelerCollection = booking_request.travelers|slice(0, booking_request.travelerCount) %} {% for room in booking_request.occupiedRooms %} {% if(room.type == 1) %} -{{ loop.index }}. Einzelzimmer, {{ travelerCollection[travelerIndex].sex == 1 ? 'männlich' : 'weiblich' }}, {{ travelerCollection[travelerIndex].firstName }}, {{ travelerCollection[travelerIndex].lastName -}}, {{ travelerCollection[travelerIndex].birthDate }} +{{ loop.index }}. Einzelzimmer, {{ travelerCollection[travelerIndex].sex == 1 ? 'männlich' : 'weiblich' }}, {{ travelerCollection[travelerIndex].firstName }}, {{ travelerCollection[travelerIndex].lastName -}}, {{ travelerCollection[travelerIndex].birthDate }}, {{ travelerCollection[travelerIndex].nationalityName }} {% set travelerIndex = travelerIndex + 1 %} {% elseif (room.type == 2) %} -{{ loop.index }}. Doppelzimmer, {{ travelerCollection[travelerIndex].sex == 1 ? 'männlich' : 'weiblich' }}, {{ travelerCollection[travelerIndex].firstName }}, {{ travelerCollection[travelerIndex].lastName -}}, {{ travelerCollection[travelerIndex].birthDate }} -{{ loop.index }}. Doppelzimmer, {{ travelerCollection[travelerIndex+1].sex == 1 ? 'männlich' : 'weiblich' }}, {{ travelerCollection[travelerIndex+1].firstName }}, {{ travelerCollection[travelerIndex+1].lastName -}}, {{ travelerCollection[travelerIndex+1].birthDate }} +{{ loop.index }}. Doppelzimmer, {{ travelerCollection[travelerIndex].sex == 1 ? 'männlich' : 'weiblich' }}, {{ travelerCollection[travelerIndex].firstName }}, {{ travelerCollection[travelerIndex].lastName -}}, {{ travelerCollection[travelerIndex].birthDate }}, {{ travelerCollection[travelerIndex].nationalityName }} +{{ loop.index }}. Doppelzimmer, {{ travelerCollection[travelerIndex+1].sex == 1 ? 'männlich' : 'weiblich' }}, {{ travelerCollection[travelerIndex+1].firstName }}, {{ travelerCollection[travelerIndex+1].lastName -}}, {{ travelerCollection[travelerIndex+1].birthDate }}, {{ travelerCollection[travelerIndex].nationalityName }} {% set travelerIndex = travelerIndex + 2 %} {% elseif (room.type == 3) %} -{{ loop.index }}. Dreibettzimmer, {{ travelerCollection[travelerIndex].sex == 1 ? 'männlich' : 'weiblich' }}, {{ travelerCollection[travelerIndex].firstName }}, {{ travelerCollection[travelerIndex].lastName -}}, {{ travelerCollection[travelerIndex].birthDate }} -{{ loop.index }}. Dreibettzimmer, {{ travelerCollection[travelerIndex+1].sex == 1 ? 'männlich' : 'weiblich' }}, {{ travelerCollection[travelerIndex+1].firstName }}, {{ travelerCollection[travelerIndex+1].lastName -}}, {{ travelerCollection[travelerIndex+1].birthDate }} -{{ loop.index }}. Dreibettzimmer, {{ travelerCollection[travelerIndex+2].sex == 1 ? 'männlich' : 'weiblich' }}, {{ travelerCollection[travelerIndex+2].firstName }}, {{ travelerCollection[travelerIndex+2].lastName -}}, {{ travelerCollection[travelerIndex+2].birthDate }} +{{ loop.index }}. Dreibettzimmer, {{ travelerCollection[travelerIndex].sex == 1 ? 'männlich' : 'weiblich' }}, {{ travelerCollection[travelerIndex].firstName }}, {{ travelerCollection[travelerIndex].lastName -}}, {{ travelerCollection[travelerIndex].birthDate }}, {{ travelerCollection[travelerIndex].nationalityName }} +{{ loop.index }}. Dreibettzimmer, {{ travelerCollection[travelerIndex+1].sex == 1 ? 'männlich' : 'weiblich' }}, {{ travelerCollection[travelerIndex+1].firstName }}, {{ travelerCollection[travelerIndex+1].lastName -}}, {{ travelerCollection[travelerIndex+1].birthDate }}, {{ travelerCollection[travelerIndex].nationalityName }} +{{ loop.index }}. Dreibettzimmer, {{ travelerCollection[travelerIndex+2].sex == 1 ? 'männlich' : 'weiblich' }}, {{ travelerCollection[travelerIndex+2].firstName }}, {{ travelerCollection[travelerIndex+2].lastName -}}, {{ travelerCollection[travelerIndex+2].birthDate }}, {{ travelerCollection[travelerIndex].nationalityName }} {% set travelerIndex = travelerIndex + 3 %} {% endif %} {% endfor %} diff --git a/trunk/app/Resources/views/default/pages/booking.html.twig b/trunk/app/Resources/views/default/pages/booking.html.twig index efd13380..cc4724e2 100644 --- a/trunk/app/Resources/views/default/pages/booking.html.twig +++ b/trunk/app/Resources/views/default/pages/booking.html.twig @@ -183,7 +183,8 @@


- 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. + 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.

@@ -200,7 +201,9 @@
{% include 'default/components/booking/summary.html.twig' with { 'summary': summary, - 'total_price': total_price + 'total_price': total_price, + 'booking_price_info': booking_price_info, + 'show_detail' : true, } %}
@@ -209,6 +212,103 @@ + + +
+
+
+
Flugdaten
+
+ +
+
+
+ +

Flugdaten einblenden

+
+
+
+ + + {% for departure in travel_date.departures %} + {# @var departure \AppBundle\Entity\TravelDeparturePoint #} + + {% if departure.flightTime[travel_date.startWeekday] is defined %} + + {% endif %} + + {% endfor %} + + + +
+
+
+
+ + +
+
+
+ + +
+
+
+
Reiseprogramm mit Anzeige der Reisetage
+
+ +
+ {% set travel_program_dates = travel_program.getTravelProgramDates(travel_date.start) %} + +
    + {% for travel_program_date in travel_program_dates if travel_program_date.count < 1 %} +
  • + {{ travel_program_date.date }} : {{ travel_program_date.day|raw }} + {% if travel_program_date.night is defined %} +
    Übernachtung : {{ travel_program_date['night']|raw }} + {% endif %} +
  • + {% endfor %} + +
    +
    + +

    Reiseablauf mit Reisetagen einblenden

    +
    +
    +
    + + {% for travel_program_date in travel_program_dates if travel_program_date.count > 0 %} +
  • + {{ travel_program_date.date }} : {{ travel_program_date.day|raw }} + {% if travel_program_date.night is defined %} +
    Übernachtung : {{ travel_program_date['night']|raw }} + {% endif %} +
  • + {% endfor %} + +
    +
    +
    +
    +
+ +
+
+
+
@@ -259,6 +359,9 @@
+ + +
@@ -343,7 +446,28 @@
-
+ + +
Reiseteilnehmer
@@ -351,137 +475,165 @@
-
- - - - - - - - - - - - {% set currentIndex = 0 %} - {% for room in form.rooms %} - {% for traveler in room.travelers %} - {#{{ dump(room.vars.value.roomType) }}#} - {% set currentIndex = currentIndex + 1 %} - - - - - - - + }) }} + +
+ + - {% endfor %} - {% endfor %} - -
ZimmertypGeschlechtVornameNachnameGeburtsdatum
-
+
+
+
+ {{ form_field_pho(traveler.firstName, 'Vorname') }} +
+
+
+
-
+
+
+
+ {{ form_field_pho(traveler.lastName, 'Nachname') }} +
+
+
+
+ +
+
+
+ {{ form_field_pho(traveler.nationality, 'Nationalität') }} +
+
+
+
+ + +
+
+
+ {{ form_field_pho(traveler.birthDate, 'Geburtsdatum') }} +
+
+
+
+ + +
+ + + +
+
+ {{ form_widget(traveler.acceptEntryRequirements) }} + + {{ form_errors(traveler.acceptEntryRequirements) }} +
+
+
+
+ +
+ + {% endfor %} + {% endfor %} + +
+

Hinweis

+

Sofern Sie nicht oder nicht ausschließlich nur die deutsche Staatsbürgerschaft 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.

+
+
-
Mitteilungen / Sonstiges (optional)
+
Unverbindliche Anmerkungen
- {{ form_field(form.notes, 'Mitteilungen / Sonstiges (optional)', { + {{ form_field(form.notes, 'Unverbindliche Anmerkungen', { 'label_attr': {'class': 'sr-only'}, 'attr': {'rows': '6'} }) }}
+ - {# -
+ +
-
Einreisebestimmungen
- {% for country in travel_program.countries %} -

{{ country.name }}

- {{ country.entryRequirements|raw }} - {% endfor %} -
-
- {{ form_widget(form.acceptEntryRequirements) }} - - {{ form_errors(form.acceptEntryRequirements) }} -
-
+
Formblatt zur Unterrichtung des Reisenden bei einer Pauschalreise nach § 651a des Bürgerlichen Gesetzbuchs.
+ +
+

Bei der Ihnen angebotenen Kombination von Reiseleistungen handelt es sich um eine Pauschalreise im Sinne der Richtlinie (EU) 2015/2302.

+ +

Daher können Sie alle EU-Rechte in Anspruch nehmen, die für Pauschalreisen gelten. STERN TOURS GmbH, Emser Str. 3, 10719 Berlin trägt die volle Verantwortung für die ordnungsgemäße Durchführung der gesamten Pauschalreise. Zudem verfügt STERN TOURS GmbH über die gesetzlich vorgeschriebene Absicherung für die Rückzahlung Ihrer Zahlungen und, falls der Transport in der Pauschalreise inbegriffen ist, zur Sicherstellung Ihrer Rückbeförderung im Fall seiner Insolvenz.

+ + Weiterführende Informationen zu Ihren wichtigsten Rechten nach der Richtlinie (EU) 2015/2302 (Formblatt) +
-
-
-
- - -
-
-
-
Reiseveranstalter
-

{{ travel_program.organizer.name|raw }}

-
Insolvensversicherer
-

{{ travel_program.organizer.insolvency|raw }}

-
gesetzliche Rechte
-

{{ travel_program.organizer.legalRights|raw }}

-
{{ form_widget(form.acceptLegalRights) }} -
-
#} +
+ + + +
+
+
+
Reisebedingungen (ARB)
+
+
+ {{ form_widget(form.acceptTerms) }} + + {{ form_errors(form.acceptTerms) }} +
+
+
+ + +
+ +
+
+ + +
+
+
+
Bestätigung der persönlichen Daten und zahlungspflichtigen Buchung
+ + +
+
+ {{ form_widget(form.acceptPrivacy) }} + + {{ form_errors(form.acceptPrivacy) }} +
+
+
+ +
+
+ {{ form_widget(form.acceptProcessing) }} + + {{ form_errors(form.acceptProcessing) }} +
+
+
+ + + + +
+ +
+
+ +
+
+
+
Wichtiger Hinweis
+ 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. + +
+
+
Zahlung
-

Die gewünschte Zahlungsart (Rechnung, Überweisung, Sofortüberweisung, Kreditkarten, - Barzahlung) stimmen wir mit Ihnen im Anschluss an Ihre Buchung ab. -

+
+ Die gewünschte Zahlungsart (Rechnung, Überweisung, Sofortüberweisung, Kreditkarten, Barzahlung) stimmen wir mit Ihnen im Anschluss an Ihre Buchung ab. +
+ + + + + + + + + + + + + + + + + +
+ 0 € + Gesamtpreis der Reise
+ 0 € + Anzahlung (ist sofort fällig)
+ 0 € + Restzahlung (bis zum 01.07.2018)
+ +
+ + {% if(travel_program.category.id != 1) %} +
+
Hinweis
+

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.

+ {% endif %} + + +
- +
+ +
+ -
-
-
-
Allgemeine Geschäftsbedingungen und Datenschutzerlärung
-
-
- {{ form_widget(form.acceptTerms) }} - - {{ form_errors(form.acceptTerms) }} -
-
-
-
-
- {{ form_widget(form.acceptPrivacy) }} - - {{ form_errors(form.acceptPrivacy) }} -
-
-
-
-
- -
-
-
- {{ form_rest(form) }} diff --git a/trunk/app/Resources/views/default/pages/bookingConfirmation.html.twig b/trunk/app/Resources/views/default/pages/bookingConfirmation.html.twig index 441453ed..63b0b394 100644 --- a/trunk/app/Resources/views/default/pages/bookingConfirmation.html.twig +++ b/trunk/app/Resources/views/default/pages/bookingConfirmation.html.twig @@ -62,7 +62,9 @@
{% include 'default/components/booking/summary.html.twig' with { 'summary': summary, - 'total_price': total_price + 'total_price': total_price, + 'booking_price_info': booking_price_info, + 'show_detail' : false, } %}
@@ -190,7 +192,6 @@
Reiseteilnehmer
-

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.

@@ -202,7 +203,8 @@ Geschlecht Vorname Nachname - Geburtsdatum (TT.MM.JJJJ) + Geburtsdatum + Nationalität @@ -235,6 +237,9 @@ {{ participant.birthDate|date }} + + {{ participant.getNationalityName }} + {% endfor %} diff --git a/trunk/app/Resources/views/default/pages/contact.html.twig b/trunk/app/Resources/views/default/pages/contact.html.twig index 254ad039..b7de900a 100644 --- a/trunk/app/Resources/views/default/pages/contact.html.twig +++ b/trunk/app/Resources/views/default/pages/contact.html.twig @@ -91,6 +91,20 @@
+ +
+
+ {{ form_widget(contact_form.acceptProcessing) }} + + {{ form_errors(contact_form.acceptProcessing) }} +
+
+
diff --git a/trunk/app/Resources/views/default/pages/fewoBooking.html.twig b/trunk/app/Resources/views/default/pages/fewoBooking.html.twig index 324bfe43..ffc73ac7 100644 --- a/trunk/app/Resources/views/default/pages/fewoBooking.html.twig +++ b/trunk/app/Resources/views/default/pages/fewoBooking.html.twig @@ -224,17 +224,29 @@
{{ form_widget(form.acceptPrivacy) }} - - {{ form_errors(form.acceptPrivacy) }} -
-
+ + {{ form_errors(form.acceptPrivacy) }} +
+
+
+ {{ form_widget(form.acceptProcessing) }} + + {{ form_errors(form.acceptProcessing) }} +
+
+