Commit Graph
183 Commits
Author SHA1 Message Date
Björn Fromme bc7fb794bf feat: persist travel snapshots and refresh extended availability 2026-03-23 17:29:10 +01:00
Björn Fromme ccfafc5da4 fix: allow hotel-less travel data
addresses #869ckkwh7
2026-03-23 16:59:49 +01:00
Björn Fromme 3234c78f0d feat: harden xml parsing to avoid uncaught errors 2026-03-20 12:14:02 +01:00
Björn Fromme df8566e1b5 feat: move scope of enforced 'option' status to full booking
addresses #869chtfeq
2026-03-19 16:15:07 +01:00
Björn Fromme 00df76269a chore: cleanup after master flatten rewrite 2026-03-17 09:44:50 +01:00
Björn Fromme 5619a6f22f fix: XML scope for services too broad 2026-03-16 20:25:56 +01:00
Björn Fromme c510cbf590 feat: auto-booking services
addresses #869cfcptv
2026-03-16 20:24:58 +01:00
Björn Fromme 6d9265de0f fix: restore unintended file changes after master flatten rewrite 2026-03-16 14:15:51 +01:00
Björn Fromme 33609ab534 feat: shortened and filename-safe request ids 2026-03-16 12:03:00 +01:00
Björn Fromme 1cc7a025a1 fix: ensure pickups node exists in api payload 2026-03-16 12:03:00 +01:00
Björn Fromme a7c3064df6 feat: adopt new pickups planning payload JSON structure 2026-03-16 12:03:00 +01:00
Björn Fromme 3644b935fd fix: always fill-in empty participants names when submitting to api 2026-03-16 12:03:00 +01:00
Björn Fromme 44a9de7db7 fix: correct sort order of pickups and drop-offs 2026-03-16 12:03:00 +01:00
Björn Fromme f795a3ea21 feat: selectable drop-offs for inbound bus travel 2026-03-16 12:03:00 +01:00
Björn Fromme 6ddd0b00bd fix: handle empty api responses more gracefully 2026-03-16 12:03:00 +01:00
Björn Fromme ded904fac8 fix: correct room assignment and count
closes #869c2jnzr
2026-03-16 12:03:00 +01:00
Björn Fromme 06f53ba6eb feat: fill default names for canceled participants in agency bookings 2026-03-16 12:03:00 +01:00
Björn Fromme 1f27c744d2 chore: code cleanup 2026-03-16 12:02:59 +01:00
Björn Fromme bbc011ddb9 feat: update personal data of canceled participants as well
addresses #869bze0kq
2026-03-16 12:02:59 +01:00
Björn Fromme f46cc59041 fix: allow updating room assignments in edit mode 2026-03-16 12:02:59 +01:00
Björn Fromme 380b1ed329 chore: streamline namespacing 2026-03-16 12:02:59 +01:00
Björn Fromme 028db7a7ee fix: ensure complete participant data even when canceled 2026-03-16 12:02:59 +01:00
Björn Fromme 02ebddc34a feat: require all personal data fields for registration 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 167ccf5151 feat: ignored room types
closes #869bvbmcw
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 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 baa4609102 fix: ensure unique services mapping when creating api payload 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 6d418ee8cc fix: account for discounts applied by bpn api in validation request 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 fba3becb06 feat: always load fresh api data when starting to edit booking 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 bdcd54687d feat: streamlined booking number property 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 95d0ce33d4 feat: new service category 'VEG' 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 d6f2681c61 feat: load hotel data locally for sidebar 2026-03-16 12:02:27 +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 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 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 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 96d4b8ed45 fix: apply correct return type and response handling 2026-03-16 12:01:09 +01:00
Björn Fromme ea1ce4a029 docs: add inline documentation where missing 2026-03-16 12:01:09 +01:00