Commit Graph
171 Commits
Author SHA1 Message Date
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 f725a6b72f feat: ignored room types
closes #869bvbmcw
2026-01-20 15:52:57 +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 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 3e6533829c fix: ensure unique services mapping when creating api payload 2026-01-16 14:22:17 +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 3046aad94d fix: account for discounts applied by bpn api in validation request 2026-01-14 12:47:25 +01:00
Björn Fromme efacbf64cb fix: consider booking status O correctly 2026-01-13 14:42:51 +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 7636ee41af fix: ensure nationality is assigned when editing booking data 2026-01-12 18:23:52 +01:00
Björn Fromme d95d0a8930 feat: streamlined booking number property 2026-01-10 12:12:54 +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 6beb965c85 feat: new service category 'VEG' 2026-01-08 16:42:42 +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 b0b608f12e feat: load hotel data locally for sidebar 2026-01-07 18:35:09 +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 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 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 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 1c1766bbd4 fix: apply correct return type and response handling 2026-01-06 14:05:51 +01:00
Björn Fromme bccd8c6fc3 chore: merge master into feature branch 2026-01-05 18:25:14 +01:00
Björn Fromme 1f1ac1a0cc docs: add inline documentation where missing 2025-12-19 17:26:59 +01:00
Björn Fromme 62ac8038dc feat: cron controlled cli command to sync xml data with remote 2025-12-19 17:06:27 +01:00
Björn Fromme 1dc8489239 fix: avoid duplicated pickup planning entries 2025-12-17 17:05:38 +01:00
Björn Fromme bfb25a4051 feat: accept multiple travel codes per pickup planning 2025-12-17 14:23:05 +01:00
Björn Fromme 42f17db542 feat: extended oauth2 user info and refactored authenticator 2025-12-12 19:57:34 +01:00
Björn Fromme 79e5a3c12d feat: adjust oauth2 implementation for TYPO3 backend login 2025-12-12 16:31:32 +01:00
Björn Fromme b1ff6989ec feat: api endpoints for pickups planning 2025-12-12 09:44:38 +01:00
Björn Fromme c1539a47f9 fix: properly assign readonly state to form fields for unavailable services 2025-12-11 12:07:19 +01:00
Björn Fromme c8a33cdf43 fix: assign correct return types 2025-12-11 11:26:46 +01:00
Björn Fromme b4c03160ca feat: consistent display of included services and prices 2025-12-11 11:17:03 +01:00
Björn Fromme b9dfeb2d3e feat: backport contact form api endpoint 2025-12-10 18:00:51 +01:00
Björn Fromme 2b8046b416 feat: re-implement contact form submissions api endpoint for website 2025-12-10 09:29:19 +01:00
Björn Fromme 31f414b4d8 feat: show room prices in room assignment form field 2025-12-09 12:55:00 +01:00
Björn Fromme bfb1a04ea0 feat: implement screendesign 2025-12-06 15:02:33 +01:00
Björn Fromme 2b3a8f1c69 feat: request replay command for bpn api 2025-12-06 15:02:13 +01:00
Björn Fromme 696800aafd feat: refactoring and cleanup 2025-12-06 15:02:13 +01:00
Björn Fromme 1f3e79d57c fix: prevent null reference errors 2025-12-01 10:37:39 +01:00
Björn Fromme f4691ec67e feat: finalize voucher handling and discount display in summary and overview 2025-11-26 17:29:15 +01:00
Björn Fromme 32bef9a4e9 feat: special treatment of participants with age 0-2 (babies) 2025-11-26 15:38:49 +01:00
Björn Fromme ecc4741f56 feat: correct determination of inquiry status and conditional voucher field display 2025-11-25 16:41:25 +01:00
Björn Fromme f33e55f201 feat: correct handling of vouchers 2025-11-24 10:20:21 +01:00
Björn Fromme 9d28d2f102 feat: improved promotional and purchase vouchers 2025-11-21 12:43:51 +01:00
Björn Fromme aaa7e9f4c3 feat: promotional and purchase vouchers 2025-11-20 18:41:46 +01:00