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
29f295abf6
feat: duplicate an accommodation booking into a new draft
...
addresses #869f6z44f
2026-09-28 08:55:01 +02:00
fromme
2aa98b81fe
feat: dedicated login page for oauth2 logins
2026-09-27 13:43:17 +02:00
fromme
56adf72d12
fix: refuse implausible accommodation booking prices
2026-09-26 15:39:04 +02:00
fromme
bad916cfb7
feat: identify accounts by a uuid in the oauth2 sub claim
2026-09-23 15:17:09 +02:00
fromme
ab7d00b35d
feat: emit team admin role in userinfo claims when applicable
2026-09-21 11:43:36 +02:00
fromme
00637042e2
chore: adjust tests to changed role labels
2026-09-21 10:02:29 +02:00
fromme
ec83ad598f
feat: identify the authenticated account in the userinfo claims
2026-09-19 10:54:06 +02:00
fromme
540cd8eeb7
feat: reserve administrative roles for staff email addresses
2026-09-17 18:13:52 +02:00
fromme
12fe4d8e15
feat: offer contact validation flow
2026-09-16 10:40:01 +02:00
fromme
f8ff4b82a3
feat: replace custom discount with absolute value in favor of percentage
2026-09-08 17:11:00 +02:00
fromme
8443dae5ad
feat: additional custom discount applied to total price
2026-09-08 15:29:00 +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
010cfe56b2
feat: upgrade project to symfony 7.4
2026-08-31 09:03:44 +02:00
Björn Fromme
80d734e7d6
feat: derive calendar date range from price configurations
2026-08-26 13:32:25 +02:00
Björn Fromme
578a21d327
fix: stop mutating booking state on edit-mode page views
2026-08-24 17:13:19 +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
ef439f6faf
feat: re-generate access links for bookings when sent via email
2026-08-20 14:21:02 +02:00
Björn Fromme
98a303e941
feat: delete accommodation bookings in draft
2026-08-20 12:39:45 +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
d5f9f4ef10
chore: adopt namespace pattern for accommodation booking controllers
2026-08-19 17:07:57 +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
0c667d6b69
feat: align role assignment logic with myep-team
2026-08-19 12:14:09 +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
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
70a10c4dba
fix: make email readonly in personal data form to prevent user lockout
2026-08-11 18:08:48 +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
736128476b
feat: assignable managers for accommodation bookings
2026-08-05 13:45:33 +02:00
Björn Fromme
8e4afc0813
feat: dedicated terms urls per country for accommodation bookings
2026-08-05 12:38:34 +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
9d2aa11fdb
feat: groups price calculator admin crud, booking/offer flow and api
2026-08-03 15:25:10 +02:00
Björn Fromme
0ea43d0c6b
fix: correct edit reload dirty-state
2026-07-10 14:33:09 +02:00
Björn Fromme
99b6876ce2
fix: ensure mandatory services are preselected in edit mode
2026-07-10 14:33:09 +02:00
Björn Fromme
b41b19d4c6
feat: pre-flight check of agency bookings
...
addresses #869bqxr4q
2026-07-10 14:33:09 +02:00
Björn Fromme
b2fccae431
chore: remote obsolete contingents-related plumbing
2026-06-11 16:19:14 +02:00
Björn Fromme
7dfbc06bd1
feat: only handle unsubscribe events for configured list ids
2026-05-13 08:30:22 +02:00
Björn Fromme
1fa8f88a6d
chore: code cleanup with rector and php-cs-fixer
2026-05-04 17:20:01 +02:00
Björn Fromme
68900dd4ea
fix: use plain password in configuration for MailJet webhook url
2026-04-30 11:44:17 +02:00
Björn Fromme
e4ef2f7adc
feat: MailJet list handling with DOI, webhook receiver and API endpoint
...
addresses #869cut134
2026-04-29 09:51:57 +02:00
Björn Fromme
9b84893d88
feat: api endpoints and xml sync for contingents data
2026-04-22 11:23:52 +02:00
Björn Fromme
a1f68ec11d
chore: adopt changed behavior from 02a1640b in test
2026-04-22 11:23:14 +02:00