fromme and Claude Opus 5
c5685e6d7c
feat: add paginated travel export endpoint for the teamer app
...
GET /api/travels/export flattens the XML export into one row per travel
date x hotel with its pickups resolved, so the Teamer app can import the
disposition in one walk instead of fanning out over /api/travels.
Built from the XML file map, not travel_snapshot: the snapshot table sits
at this grain but refreshes on its own schedule, while the loaders share
the bpn.cache pool under the xml-sync tag. That is what makes /api/hotels,
/api/pickups and this export move together for free.
Each Ziel_*.xml is walked once and TravelParser::getPickups() does the
zeit parsing, which buys both zeit shapes and adjustOvernightTimes() --
a time-only 02:15 listed after a 23:59 rolls onto the next calendar day.
Pickups join against PickupLoader::loadAll() rather than
patchPickupsDetails(), which sorts: the contract is source order.
The whole assembled export is cached, not a page, so skipped, total and
pickupsWithoutMasterData are whole-export figures identical on every page
and a consumer can abort after the first one. Errors stay real status
codes; the builder is deliberately not wrapped in a catch that would
answer 200 with an error body the way hotelAvailability() does.
The route is declared before api_travel_single_code and that route grows
a requirement, or /api/travels/export resolves to byCode('export') and
404s as though the endpoint existed with no data.
Co-Authored-By: Claude Opus 5 <[email protected] >
2026-09-29 12:13:55 +02:00
fromme
d0e7ba017c
fix: resync room selections with travel data before step 2
2026-09-29 10:59:13 +02:00
fromme
0c6126010f
fix: always adopt outbound pickup price for inbound when set
2026-09-28 16:33:36 +02:00
fromme
29f295abf6
feat: duplicate an accommodation booking into a new draft
...
addresses #869f6z44f
2026-09-28 08:55:01 +02:00
fromme
56adf72d12
fix: refuse implausible accommodation booking prices
2026-09-26 15:39:04 +02:00
fromme
773cd4f847
fix: keep post-booking newsletter failures out of the booking flow
2026-09-26 14:00:26 +02:00
fromme
876e69e62c
feat: offer a newsletter opt-in for the other participants
...
addresses #869etn6c5
2026-09-26 13:53:10 +02:00
fromme
96b7b3f451
fix: anonymize user first and last names
2026-09-23 17:22:19 +02:00
fromme
160ebef39e
fix: stop offering unbookable services in the booking edit flow
2026-09-16 15:28:07 +02:00
fromme
12fe4d8e15
feat: offer contact validation flow
2026-09-16 10:40:01 +02:00
fromme
91522ab32d
fix: anonymize the person ids, not the participant slot ids
2026-09-14 15:37:38 +02:00
fromme
7aad54e6f2
fix: keep the booking room assignment when restoring an edit draft
2026-09-14 15:02:04 +02:00
fromme
5f8a586385
fix: derive contingent change signal from the sync diff
2026-09-11 19:34:29 +02:00
fromme
1d3263373e
feat: update filename formatting of booking confirmation pdf
2026-09-09 08:39:10 +02:00
fromme
f8ff4b82a3
feat: replace custom discount with absolute value in favor of percentage
2026-09-08 17:11:00 +02:00
fromme
cfe901b9c2
feat: include accommodation bookings in db anonymization
2026-09-08 15:41:28 +02:00
fromme
8443dae5ad
feat: additional custom discount applied to total price
2026-09-08 15:29:00 +02:00
Björn Fromme
e14d29f7d4
fix: restore room occupancy lost to case-sensitive xml attribute lookup
2026-08-31 14:15:21 +02:00
Björn Fromme
81b724c11a
fix: false draft-restored message
2026-08-31 09:31:00 +02:00
Björn Fromme
bfad61f1dd
feat: upgrade phpunit to 12.5
2026-08-31 09:31:00 +02:00
Björn Fromme
c9c28792e5
fix: resolve stale dependent selections after booking family insurance
2026-08-24 16:58:09 +02:00
Björn Fromme
48db290625
feat: manually create customer access link for offer and update status
...
addresses #869eea8d7
2026-08-24 09:19:16 +02:00
Björn Fromme
7c5f6dd5ef
feat: create ClickUp task after confirming accommodation booking
2026-08-20 17:56:29 +02:00
Björn Fromme
0a1683667f
feat: explicit icon map for hotel cms-data response
2026-08-20 14:45:05 +02:00
Björn Fromme
ef439f6faf
feat: re-generate access links for bookings when sent via email
2026-08-20 14:21:02 +02:00
Björn Fromme
3db1850e4f
feat: edit selected accommodation of bookings in draft
2026-08-20 12:34:44 +02:00
Björn Fromme
351fbab498
feat: improved contingents api performance with db backed snapshots
2026-08-20 11:46:03 +02:00
Björn Fromme
8617bf6c86
fix: prevent generating offer links while booking is in draft
2026-08-19 13:00:43 +02:00
Björn Fromme
5a3957e143
feat: refactored accommodation booking status model
2026-08-19 11:46:52 +02:00
Björn Fromme
2d7a02341d
feat: booking details pdf
2026-08-18 14:26:24 +02:00
Björn Fromme
d3666c4618
fix: skip discounts with value 0€
2026-08-18 13:07:31 +02:00
Björn Fromme
ef24c9a616
fix: streamlined discount display in all breakdowns
2026-08-18 13:04:33 +02:00
Björn Fromme
8dee65d0dc
feat: additional confirmation cycle and status for groups inquiries
2026-08-18 12:48:17 +02:00
Björn Fromme
a5d97f1206
feat: enable entering additional remarks in offer confirmation
2026-08-17 15:30:17 +02:00
Björn Fromme
af04ff690d
fix: enable bookings without ski passes
2026-08-11 11:16:11 +02:00
Björn Fromme
6ee00f2bee
feat: hide unavailable ski passes from selection in create flow
2026-08-06 13:08:46 +02:00
Björn Fromme
b82e017f73
fix: exclude past dates in price tables
2026-08-06 12:19:30 +02:00
Björn Fromme
577f7445ab
fix: correctly calculate undersubscription fees
2026-08-06 12:05:03 +02:00
Björn Fromme
aa8fa5c1b2
feat: accommodation booking type and status as dedicated properties
2026-08-06 08:52:09 +02:00
Björn Fromme
2cfa87f44b
feat: indicate family insurance eligibility
2026-08-05 15:11:58 +02:00
Björn Fromme
8a46908856
fix: incorrect rules around family insurances
...
addresses #869dr80qj
2026-08-05 15:11:37 +02:00
Björn Fromme
2c381ee741
feat: additional status
2026-08-04 18:09:40 +02:00
Björn Fromme
8ff13614d2
fix: treat dates without price as unavailable
2026-08-04 11:29:58 +02:00
Björn Fromme
331c88c38e
feat: exclusion groups for additional services
2026-08-04 10:24:29 +02:00
Björn Fromme
dde36ccba2
feat: use dedicated sender for accommodation related emails
2026-08-04 09:21:00 +02:00
Björn Fromme
9d2aa11fdb
feat: groups price calculator admin crud, booking/offer flow and api
2026-08-03 15:25:10 +02:00
Björn Fromme
b323c120f9
fix: consider parking space availability
2026-07-23 17:44:08 +02:00
Björn Fromme
fafc60eba9
fix: retain original date of birth when anonymizing xml dumps
2026-07-16 15:53:33 +02:00
Björn Fromme
6c4ea07e6e
fix: prevent race condition on newsletter consent confirmation
2026-07-14 09:47:22 +02:00
Björn Fromme
f47142c465
chore: add missing branch coverage for BookingEditPreFlightChecker
2026-07-10 14:33:09 +02:00