Commit Graph
100 Commits
Author SHA1 Message Date
Björn Fromme aa08307500 feat: error-codes in flash messages to reference log entries 2026-01-23 11:06:24 +01:00
Björn Fromme c41524c1fd feat: user-friendly error messages on login 2026-01-23 10:30:17 +01:00
Björn Fromme 8dec0be375 feat: streamlined flash messages 2026-01-23 10:15:44 +01:00
Björn Fromme 9471abce94 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-01-21 17:18:09 +01:00
Björn Fromme 2aeed762fd 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-01-21 10:16:57 +01:00
Björn Fromme 512b63b88b feat: infotext for insurance booking conditions
closes #869bvcu2p
2026-01-21 09:33:36 +01:00
Björn Fromme 92d7eac3a1 chore: update httpclient config to use random values for contactform 2026-01-21 09:02:47 +01:00
Björn Fromme 548b8a8ef0 feat: log contact form submissions 2026-01-21 08:43:28 +01:00
Björn Fromme fb8aabe34c chore: remove debug logging in toast controller 2026-01-21 08:11:36 +01:00
Björn Fromme 0c1f143b12 feat: info text and correct field type for service group 'VEG'
addresses #869bvch71
2026-01-20 18:36:33 +01:00
Björn Fromme 24ac2efc53 fix: don't hide voucher fields for booking status 'O'
closes #869bvbkrd
2026-01-20 16:06:17 +01:00
Björn Fromme e7a139b025 chore: update test to fix deprecation warning 2026-01-20 16:05:48 +01:00
Björn Fromme cfe19b7a74 chore: update project dependencies 2026-01-20 16:05:28 +01:00
Björn Fromme f725a6b72f feat: ignored room types
closes #869bvbmcw
2026-01-20 15:52:57 +01:00
Björn Fromme a097159897 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-01-19 18:55:55 +01:00
Björn Fromme da33620ea9 chore: update alert wording to be more descriptive 2026-01-19 18:06:29 +01:00
Björn Fromme 0b44394b11 feat: enforce profile data completeness before entering booking flow 2026-01-19 18:04:19 +01:00
Björn Fromme 2949870acc feat: allow editing of nationality in personal data 2026-01-19 17:12:26 +01:00
Björn Fromme 35c289240d fix: default participant's nationality to German to avoid missing data 2026-01-19 17:12:12 +01:00
Björn Fromme 3b165bf292 chore: update rsync excludes in deployer config 2026-01-19 16:17:35 +01:00
Björn Fromme f0c43a17d8 feat: body dimensions mandatory with selected rentals, updated help text
feat: body dimensions mandatory with selected rentals
2026-01-19 16:12:53 +01:00
Björn Fromme 2776429639 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-01-19 15:51:39 +01:00
Björn Fromme 5c9f8c2a2e doc: add technical documentation 2026-01-17 19:27:06 +01:00
Björn Fromme 3e6533829c fix: ensure unique services mapping when creating api payload 2026-01-16 14:22:17 +01:00
Björn Fromme 054505d853 feat: match modes for room selection condition to detect MBZ*
addresses #869btdcyh
2026-01-15 11:02:27 +01:00
Björn Fromme c793550af5 feat: improved logic to control field visibility
addresses #869btdphv
2026-01-15 10:28:26 +01:00
Björn Fromme b18fccff9d fix: correctly handle discounts applied by dpn api 2026-01-14 17:46:15 +01:00
Björn Fromme 398eb448cb feat: cli command to download travel xml data from buspro api 2026-01-14 16:57:17 +01:00
Björn Fromme 6cdede138e fix: correct body dimensions values 2026-01-14 16:07:30 +01:00
Björn Fromme 3046aad94d fix: account for discounts applied by bpn api in validation request 2026-01-14 12:47:25 +01:00
Björn Fromme ec2ce6ec62 feat: revert room price fetching for performance reasons 2026-01-13 15:54:54 +01:00
Björn Fromme 3c61e7eaf3 feat: trigger form refresh for dob when completely entered only 2026-01-13 15:37:05 +01:00
Björn Fromme f942600dd8 fix: fetch fresh room prices from api to avoid calculation mismatch 2026-01-13 15:14:27 +01:00
Björn Fromme efacbf64cb fix: consider booking status O correctly 2026-01-13 14:42:51 +01:00
Björn Fromme e38445f184 fix: correctly compare age range 2026-01-13 14:42:35 +01:00
Björn Fromme 00803b2e73 feat: always load fresh api data when starting to edit booking 2026-01-13 13:16:35 +01:00
Björn Fromme a52f65919f chore: update project dependencies 2026-01-13 10:22:25 +01:00
Björn Fromme 3d4d88e986 feat: xlsx export of booking edit draft data for admins 2026-01-13 10:22:03 +01:00
Björn Fromme 5221cea53b feat: merge draft data with api response for selected fields 2026-01-12 18:25:51 +01:00
Björn Fromme 7636ee41af fix: ensure nationality is assigned when editing booking data 2026-01-12 18:23:52 +01:00
Björn Fromme 830fd2464c fix: avoid reinstallation of claude code with each restart of ddev 2026-01-11 13:35:50 +01:00
Björn Fromme d922fd2b9c chore: update project dependencies 2026-01-11 13:26:02 +01:00
Björn Fromme d22078b26e fix: populate booking number with edit drafts 2026-01-11 13:25:13 +01:00
Björn Fromme 195af95995 feat: integrate with easy admin bundle 2026-01-11 13:24:07 +01:00
Björn Fromme d95d0a8930 feat: streamlined booking number property 2026-01-10 12:12:54 +01:00
Björn Fromme 6fca40963d wip: integrate with easy admin bundle 2026-01-10 11:35:16 +01:00
Björn Fromme ace251c1dd feat: cleanup favicons 2026-01-10 11:34:46 +01:00
Björn Fromme db2e92c058 feat: custom hx redirect class 2026-01-10 11:32:14 +01:00
Björn Fromme 28b62f5071 feat: adjust xml dump reader command to new filename format 2026-01-10 11:31:24 +01:00
Björn Fromme 168c128b1d chore: update claude code installation in ddev container 2026-01-09 18:07:45 +01:00
Björn Fromme 90af012e56 chore: update lts upgrade plan with current state of the project 2026-01-09 16:34:46 +01:00
Björn Fromme d6c36b4171 chore: simplify and update claude code installation in ddev container 2026-01-09 16:25:43 +01:00
Björn Fromme 9575aad10c 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-01-09 13:37:22 +01:00
Björn Fromme 7b98cccbe9 fix: add suffix to request id in xml-dump filenames to avoid overwrites 2026-01-09 13:28:04 +01:00
Björn Fromme fe2268c897 feat: cleanup, log successful bookings 2026-01-09 10:05:21 +01:00
Björn Fromme f2c1988d75 chore: add draft cleanup command to schedule 2026-01-09 09:49:35 +01:00
Björn Fromme 5b9f35eddc fix: use correct property path for travel date determination 2026-01-09 09:46:29 +01:00
Björn Fromme c8ed5b2cc7 feat: cli command to backfill travel dates on draft records, single use 2026-01-09 09:39:35 +01:00
Björn Fromme da517b37b6 feat: cli command to clean up outdated or stale booking draft records 2026-01-09 09:22:51 +01:00
Björn Fromme 0992c05539 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-01-09 09:22:18 +01:00
Björn Fromme ed8a8a2f8b feat: streamlined display of hotel image, name and address 2026-01-08 17:51:39 +01:00
Björn Fromme 5516ef45f6 chore: update project dependencies 2026-01-08 16:43:16 +01:00
Björn Fromme 6beb965c85 feat: new service category 'VEG' 2026-01-08 16:42:42 +01:00
Björn Fromme 479a88e131 chore: update httpclient config 2026-01-08 16:32:02 +01:00
Björn Fromme e4a1a992be feat: command to read xml-dumps from bpn api by provided request id 2026-01-08 14:23:22 +01:00
Björn Fromme 97a5d7f9f1 fix: include gender and nationality into group of mandatory fields 2026-01-08 14:18:37 +01:00
Björn Fromme 776b9d0912 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-01-08 12:54:59 +01:00
Björn Fromme df35ed3032 feat: log request ids to map xml dumps of bpn api communication 2026-01-08 10:17:00 +01:00
Björn Fromme 59b08ed098 fix: update draft together with session on refresh 2026-01-08 08:38:21 +01:00
Björn Fromme 936004bc2d fix: show actual error message 2026-01-07 20:30:58 +01:00
Björn Fromme 365658d727 fix: allow null argument for gender mapping 2026-01-07 20:00:51 +01:00
Björn Fromme d603e57c62 fix: insurance ids are strings 2026-01-07 19:50:41 +01:00
Björn Fromme 58ec94eaeb fix: exclude pickup surcharge when self-organized outbound 2026-01-07 19:45:12 +01:00
Björn Fromme 2f4184f60f fix: avoid float rounding errors when comparing 2026-01-07 18:46:28 +01:00
Björn Fromme b0b608f12e feat: load hotel data locally for sidebar 2026-01-07 18:35:09 +01:00
Björn Fromme 97be776b10 feat: default status of new bookings to option during beta phase
addresses #869bpb7fg
2026-01-07 17:55:38 +01:00
Björn Fromme ddb876bc1c fix: ensure rental insurance is selectable when insurance is available
addresses #869bp9ev5
2026-01-07 17:31:20 +01:00
Björn Fromme 6fee5c048a fix: correctly distinguish between first participant and applicant 2026-01-07 17:22:17 +01:00
Björn Fromme 80f22b7cd0 fix: don't include default date of birth in contact form submissions 2026-01-07 14:44:53 +01:00
Björn Fromme e1123577f4 feat: update field label 2026-01-07 11:36:08 +01:00
Björn Fromme 5f33f82b8b fix: redirect to dashboard as default when logged in 2026-01-07 10:15:27 +01:00
Björn Fromme 5285ded46f chore: revert claude code replacement with opencode 2026-01-07 09:27:59 +01:00
Björn Fromme 69df93b773 feat: load balancing of api requests, cleanup api client 2026-01-07 08:33:16 +01:00
Björn Fromme 1e3389e21a fix: properly handle parking service selection 2026-01-06 19:03:10 +01:00
Björn Fromme 192b1fdcf4 fix: add missing LoggerInterface dependency to BookingDataProcessorTest 2026-01-06 18:46:06 +01:00
Björn Fromme 6008a1b2d9 feat: retry api requests when closed immediately due to overload 2026-01-06 17:29:34 +01:00
Björn Fromme 62fc734f82 fix: avoid null pointer exceptions, log warning about removed services 2026-01-06 16:08:51 +01:00
Björn Fromme 7fb5466eb4 fix: avoid scrolling to the bottom when making a selection
closes #869bnn1bw
2026-01-06 15:34:25 +01:00
Björn Fromme aafac9d43b chore: update scheduler config 2026-01-06 15:01:08 +01:00
Björn Fromme 585f87e1f9 chore: reduce logger noise 2026-01-06 14:48:32 +01:00
Björn Fromme eb1d05aa10 fix: only assign dummy data to the applicant 2026-01-06 14:39:49 +01:00
Björn Fromme db1de2653c 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-01-06 14:29:41 +01:00
Björn Fromme 8bdc33b4f0 feat: draft inspection cli command 2026-01-06 14:06:04 +01:00
Björn Fromme 1c1766bbd4 fix: apply correct return type and response handling 2026-01-06 14:05:51 +01:00
Björn Fromme 96205c14db fix: only invalidate cache and remove draft on successful edit 2026-01-06 13:53:49 +01:00
Björn Fromme 7ec4562064 chore: code cleanup 2026-01-06 12:38:51 +01:00
Björn Fromme 1eb1e9f02f fix: invalidate booking data caches after updating personal data 2026-01-06 12:24:07 +01:00
Björn Fromme 0b35b3494b fix: streamline price label for transportation services 2026-01-06 12:08:13 +01:00
Björn Fromme e021fc7570 feat: link terms in confirmation checkbox label 2026-01-06 11:56:03 +01:00
Björn Fromme 2a13a62291 feat: remove cancel confirmation since obsolete because of drafts 2026-01-06 10:44:30 +01:00