Commit Graph
100 Commits
Author SHA1 Message Date
Björn Fromme e24403949c chore: update database and php versions to match prod environment 2026-03-16 12:02:59 +01:00
Björn Fromme 288f6b91d0 chore: update deployer config for new hosting environment 2026-03-16 12:02:59 +01:00
Björn Fromme 8ca105966d fix: don't normalize hotel and product codes when fetching cms data 2026-03-16 12:02:59 +01:00
Björn Fromme 592cd517ff chore: update project url in ddev 2026-03-16 12:02:59 +01:00
Björn Fromme 586b410a66 chore: update project dependencies 2026-03-16 12:02:59 +01:00
Björn Fromme a444940db2 feat: display error codes in admin overview 2026-03-16 12:02:59 +01:00
Björn Fromme afe5aef9f7 feat: error-codes in flash messages to reference log entries 2026-03-16 12:02:59 +01:00
Björn Fromme 21a3e8fafc feat: user-friendly error messages on login 2026-03-16 12:02:59 +01:00
Björn Fromme 26bbba5a2e feat: streamlined flash messages 2026-03-16 12:02:59 +01:00
Björn Fromme b68d5c9398 fix: revert pickup pricing to match current BusPro behavior
Reverts split pricing calculation to use outbound-only pricing,
matching BusPro's current behavior where pickup is only charged when
outbound transportation is BUS.

- Use pickup->price directly instead of calculateEffectivePrice()
- PKW+BUS scenario now correctly charges €0 (matches BusPro loophole)
- priceOutbound/priceInbound remain populated for future activation
- Updated documentation with current behavior and future plan
2026-03-16 12:02:59 +01:00
Björn Fromme c1425f0562 feat: extensible participant status determination for booking creation
Adds a rule-based system to determine participant status in CREATE
payloads. Participants selecting a 'Begleitperson' service now receive
status 'O' (Option), all others default to 'F' (Final).

- Add ParticipantStatusRuleInterface for defining status rules
- Add ParticipantStatusRuleRegistry for priority-based rule evaluation
- Add ChaperonServiceStatusRule for Begleitperson detection
- Integrate status evaluation into BookingPayloadBuilder
2026-03-16 12:02:59 +01:00
Björn Fromme e1f1b60608 feat: infotext for insurance booking conditions
closes #869bvcu2p
2026-03-16 12:02:59 +01:00
Björn Fromme ea1c95528c chore: update httpclient config to use random values for contactform 2026-03-16 12:02:59 +01:00
Björn Fromme 0cac2969ae feat: log contact form submissions 2026-03-16 12:02:59 +01:00
Björn Fromme b856c51389 chore: remove debug logging in toast controller 2026-03-16 12:02:59 +01:00
Björn Fromme aa3b23ecb8 feat: info text and correct field type for service group 'VEG'
addresses #869bvch71
2026-03-16 12:02:59 +01:00
Björn Fromme 1e653e213a fix: don't hide voucher fields for booking status 'O'
closes #869bvbkrd
2026-03-16 12:02:59 +01:00
Björn Fromme 7d91dcfb70 chore: update test to fix deprecation warning 2026-03-16 12:02:59 +01:00
Björn Fromme 8e7e6266f0 chore: update project dependencies 2026-03-16 12:02:59 +01:00
Björn Fromme 167ccf5151 feat: ignored room types
closes #869bvbmcw
2026-03-16 12:02:59 +01:00
Björn Fromme c582e0820a feat: move profile completeness check from login to booking flow entry
- Add profileComplete flag to User entity to avoid API calls
- Set flag during login (BpnAuthenticator) and profile save
- Check flag in IndexController when entering booking flow
- Remove ProfileCompletionSubscriber (no longer needed)

Users with incomplete profiles are only redirected when starting
a new booking, not on every login. Eliminates extra API call by
caching completeness status on the user entity.
2026-03-16 12:02:59 +01:00
Björn Fromme 7d3a63d744 chore: update alert wording to be more descriptive 2026-03-16 12:02:59 +01:00
Björn Fromme 0a0987873f feat: enforce profile data completeness before entering booking flow 2026-03-16 12:02:59 +01:00
Björn Fromme 18d60c8781 feat: allow editing of nationality in personal data 2026-03-16 12:02:59 +01:00
Björn Fromme 7708ea6a0f fix: default participant's nationality to German to avoid missing data 2026-03-16 12:02:59 +01:00
Björn Fromme 71a46c6b63 chore: update rsync excludes in deployer config 2026-03-16 12:02:55 +01:00
Björn Fromme 667324df69 feat: body dimensions mandatory with selected rentals, updated help text
feat: body dimensions mandatory with selected rentals
2026-03-16 12:02:28 +01:00
Björn Fromme 957e20d763 fix: preserve selected services from booking even when unavailable
When editing a booking, services that were previously booked but are no
longer available in the travel catalog were being dropped. This caused
API error 650 ("Anzahl Leistung stimmt nicht mit Teilnehmerzuordnung
überein") because the service participant counts no longer matched.

The fix ensures that in edit mode, booked services are merged with
travel data services in both:
- Form rendering (ParticipantFieldOptionsProvider): so checkboxes appear
- Handler validation (AbstractParticipantFieldHandler): so selections
  are accepted

This allows users to keep their existing service selections or
deliberately replace them with other available options. Create mode
remains unchanged.
2026-03-16 12:02:28 +01:00
Björn Fromme 029a87c6ca doc: add technical documentation 2026-03-16 12:02:28 +01:00
Björn Fromme baa4609102 fix: ensure unique services mapping when creating api payload 2026-03-16 12:02:28 +01:00
Björn Fromme 875943e4da feat: match modes for room selection condition to detect MBZ*
addresses #869btdcyh
2026-03-16 12:02:28 +01:00
Björn Fromme 10e674cdd0 feat: improved logic to control field visibility
addresses #869btdphv
2026-03-16 12:02:28 +01:00
Björn Fromme 0bf78b0b81 fix: correctly handle discounts applied by dpn api 2026-03-16 12:02:28 +01:00
Björn Fromme c90b93556a feat: cli command to download travel xml data from buspro api 2026-03-16 12:02:28 +01:00
Björn Fromme f45718ea06 fix: correct body dimensions values 2026-03-16 12:02:28 +01:00
Björn Fromme 6d418ee8cc fix: account for discounts applied by bpn api in validation request 2026-03-16 12:02:28 +01:00
Björn Fromme 4851b1b72d feat: revert room price fetching for performance reasons 2026-03-16 12:02:28 +01:00
Björn Fromme dfb6f88be9 feat: trigger form refresh for dob when completely entered only 2026-03-16 12:02:28 +01:00
Björn Fromme f28227384d fix: fetch fresh room prices from api to avoid calculation mismatch 2026-03-16 12:02:28 +01:00
Björn Fromme cef9be92f3 fix: consider booking status O correctly 2026-03-16 12:02:28 +01:00
Björn Fromme f849d67a79 fix: correctly compare age range 2026-03-16 12:02:28 +01:00
Björn Fromme fba3becb06 feat: always load fresh api data when starting to edit booking 2026-03-16 12:02:28 +01:00
Björn Fromme a23ff6d119 chore: update project dependencies 2026-03-16 12:02:28 +01:00
Björn Fromme 384744c958 feat: xlsx export of booking edit draft data for admins 2026-03-16 12:02:28 +01:00
Björn Fromme 70c6617e88 feat: merge draft data with api response for selected fields 2026-03-16 12:02:28 +01:00
Björn Fromme 9afe3b334e fix: ensure nationality is assigned when editing booking data 2026-03-16 12:02:28 +01:00
Björn Fromme ad67d4c7ae chore: update project dependencies 2026-03-16 12:02:28 +01:00
Björn Fromme b7eaed3ac3 fix: populate booking number with edit drafts 2026-03-16 12:02:28 +01:00
Björn Fromme 136e2d68a2 feat: integrate with easy admin bundle 2026-03-16 12:02:27 +01:00
Björn Fromme bdcd54687d feat: streamlined booking number property 2026-03-16 12:02:27 +01:00
Björn Fromme 99190b0ef1 wip: integrate with easy admin bundle 2026-03-16 12:02:27 +01:00
Björn Fromme c7702b0c37 feat: cleanup favicons 2026-03-16 12:02:27 +01:00
Björn Fromme 9b88a2c14d feat: custom hx redirect class 2026-03-16 12:02:27 +01:00
Björn Fromme 6a945e6a08 feat: adjust xml dump reader command to new filename format 2026-03-16 12:02:27 +01:00
Björn Fromme 9c7cf0778f chore: update lts upgrade plan with current state of the project 2026-03-16 12:02:27 +01:00
Björn Fromme dd0f1a25d0 feat: always allow editing of participants for internal bookings
Prior to this commit the mutability flag from BusProNet was evaluated
and would potentially conflict with this rule. This flag is now
completely ignored for internal bookings.
2026-03-16 12:02:27 +01:00
Björn Fromme 7f4cf3060e fix: add suffix to request id in xml-dump filenames to avoid overwrites 2026-03-16 12:02:27 +01:00
Björn Fromme 30496a4875 feat: cleanup, log successful bookings 2026-03-16 12:02:27 +01:00
Björn Fromme 027508f495 chore: add draft cleanup command to schedule 2026-03-16 12:02:27 +01:00
Björn Fromme b5e2b2a2ad fix: use correct property path for travel date determination 2026-03-16 12:02:27 +01:00
Björn Fromme 9c9db05b86 feat: cli command to backfill travel dates on draft records, single use 2026-03-16 12:02:27 +01:00
Björn Fromme 1fa17a7df7 feat: cli command to clean up outdated or stale booking draft records 2026-03-16 12:02:27 +01:00
Björn Fromme e09e5858d8 fix: don't update booking session and draft on form refresh
Each form refresh would create a draft even for users that just explore
booking options causing stale draft records in the database.
2026-03-16 12:02:27 +01:00
Björn Fromme 6ede062a66 feat: streamlined display of hotel image, name and address 2026-03-16 12:02:27 +01:00
Björn Fromme b351b4042f chore: update project dependencies 2026-03-16 12:02:27 +01:00
Björn Fromme 95d0ce33d4 feat: new service category 'VEG' 2026-03-16 12:02:27 +01:00
Björn Fromme 75366167e8 chore: update httpclient config 2026-03-16 12:02:27 +01:00
Björn Fromme 7fa7e4be45 feat: command to read xml-dumps from bpn api by provided request id 2026-03-16 12:02:27 +01:00
Björn Fromme d14dafbade fix: include gender and nationality into group of mandatory fields 2026-03-16 12:02:27 +01:00
Björn Fromme e222f448bb feat: proper determination of agency initiated bookings
For booking that are agency initiated (groups) different rules apply
concerning mutability and requirement of personal data and whether the
first participant is the applicant or not. This commit adds logic to
evaluate the agency id assigned to the booking data to decide.
2026-03-16 12:02:27 +01:00
Björn Fromme f55ed3dc4c feat: log request ids to map xml dumps of bpn api communication 2026-03-16 12:02:27 +01:00
Björn Fromme fedfcc247e fix: update draft together with session on refresh 2026-03-16 12:02:27 +01:00
Björn Fromme 8186adfaeb fix: show actual error message 2026-03-16 12:02:27 +01:00
Björn Fromme 00304facba fix: allow null argument for gender mapping 2026-03-16 12:02:27 +01:00
Björn Fromme ff241f437f fix: insurance ids are strings 2026-03-16 12:02:27 +01:00
Björn Fromme 4a6b9cd64d fix: exclude pickup surcharge when self-organized outbound 2026-03-16 12:02:27 +01:00
Björn Fromme 8646dfbf02 fix: avoid float rounding errors when comparing 2026-03-16 12:02:27 +01:00
Björn Fromme d6f2681c61 feat: load hotel data locally for sidebar 2026-03-16 12:02:27 +01:00
Björn Fromme 5a47ca6053 feat: default status of new bookings to option during beta phase
addresses #869bpb7fg
2026-03-16 12:02:22 +01:00
Björn Fromme d7fd273475 fix: ensure rental insurance is selectable when insurance is available
addresses #869bp9ev5
2026-03-16 12:01:09 +01:00
Björn Fromme ce828a6ef5 fix: correctly distinguish between first participant and applicant 2026-03-16 12:01:09 +01:00
Björn Fromme 15dbd72f93 fix: don't include default date of birth in contact form submissions 2026-03-16 12:01:09 +01:00
Björn Fromme e3bdd8737f feat: update field label 2026-03-16 12:01:09 +01:00
Björn Fromme 7942656026 fix: redirect to dashboard as default when logged in 2026-03-16 12:01:09 +01:00
Björn Fromme 1fe8a2cb17 feat: load balancing of api requests, cleanup api client 2026-03-16 12:01:09 +01:00
Björn Fromme ab48b1f867 fix: properly handle parking service selection 2026-03-16 12:01:09 +01:00
Björn Fromme 3043842254 fix: add missing LoggerInterface dependency to BookingDataProcessorTest 2026-03-16 12:01:09 +01:00
Björn Fromme 249e326de4 feat: retry api requests when closed immediately due to overload 2026-03-16 12:01:09 +01:00
Björn Fromme b3cace3b43 fix: avoid null pointer exceptions, log warning about removed services 2026-03-16 12:01:09 +01:00
Björn Fromme ad578179d8 fix: avoid scrolling to the bottom when making a selection
closes #869bnn1bw
2026-03-16 12:01:09 +01:00
Björn Fromme c57351f8b5 chore: update scheduler config 2026-03-16 12:01:09 +01:00
Björn Fromme c5934e4c5b chore: reduce logger noise 2026-03-16 12:01:09 +01:00
Björn Fromme 06e64bd3b8 fix: only assign dummy data to the applicant 2026-03-16 12:01:09 +01:00
Björn Fromme 48572812a9 fix: assign dummy values to missing applicant data fields
This fix avoids rejection of API requests due to missing data of the
applicant. The current user most probably is not aware about this so
they get confused about the error messages otherwise.
2026-03-16 12:01:09 +01:00
Björn Fromme 46b610370a feat: draft inspection cli command 2026-03-16 12:01:09 +01:00
Björn Fromme 96d4b8ed45 fix: apply correct return type and response handling 2026-03-16 12:01:09 +01:00
Björn Fromme c18ba3d815 fix: only invalidate cache and remove draft on successful edit 2026-03-16 12:01:09 +01:00
Björn Fromme fd81079247 chore: code cleanup 2026-03-16 12:01:09 +01:00
Björn Fromme e5781fbabc fix: invalidate booking data caches after updating personal data 2026-03-16 12:01:09 +01:00
Björn Fromme 8887b06583 fix: streamline price label for transportation services 2026-03-16 12:01:09 +01:00