Booking List UI (PL-T192)
En resumen
A power-user DataTable for back-office booking review and reconciliation. Sticky resizable columns the operator can reorder, multi-criteria filter and free-text search serialized to URL, per-user saved-views for frequent queries, bulk-edit (confirm / cancel / notify) with per-row outcome reporting, CSV / Excel / PDF export, a mobile card variant, and live SSE updates.
Cómo funciona
The list page renders Bookings as a DataTable with sticky resizable columns the operator can reorder and persist between sessions. Sort, filter, and search compose into a query serialized into the URL so any view can be shared as a link or pinned to a browser tab. Filters cover date range, status, resource type, color type, customer, payment state, and free-text search across customer name and notes.
Per-user saved-views (PL-T172) let an operator pin frequent queries — "Today's check-ins", "This week's no-shows", "Outstanding deposits" — and switch between them in one tap from a sidebar. Bulk-edit selects multiple rows via shift-click and applies confirm, cancel, or notify in a single batched API call that returns a per-row outcome report so operators can see which rows succeeded and which failed. CSV / Excel / PDF export (currently PARTIAL for some formats) writes the current filtered view out for accounting or month-end review.
The mobile card variant (also PARTIAL) collapses each row into a stacked card optimized for thumb-scrolling on a phone, with the most action-relevant fields surfaced first and swipe-to-action gestures. Like the calendar, the list subscribes to chain.bookings.{tenant}.{location} SSE so newly written bookings appear at the top without refresh, and any in-flight bulk action shows live progress.
Capacidades clave
- DataTable with sticky resizable columns + reorder persistence
- Compound sort / filter / search serialized to URL
- Saved-views per user (PL-T172)
- Bulk-edit (confirm / cancel / notify) with per-row outcome
- CSV / Excel / PDF export (partial)
- Mobile card variant (partial)
- Live updates via SSE on chain.bookings
En la práctica
End of month the venue accountant needs to reconcile December. They open Bookings, set status = COMPLETED + payment_state = PAID + date range = December, save the view as "Completed Dec 2025", and export to Excel. The download includes booking_id, customer, lane, hours, food total, gift-card portion, Stripe portion, and net revenue — everything finance needs in one file.
Two days later the operations manager wants to chase no-shows: they switch to the saved "This week's no-shows" view, shift-click to select all 14 rows, and bulk-trigger a notify-with-feedback-survey action — the system fires per-row notifications, the progress bar streams live updates via SSE, and the result toast reports "14 sent, 0 failed". They pivot to the mobile card variant on the way home and approve a manual refund from the train.
Funcionalidades de este subsistema
6| ID | Status | Funcionalidades |
|---|---|---|
| F22.10.01 | Entregado | DataTable with sticky resizable columns ✅ |
| F22.10.02 | Entregado | Sort / filter / search ✅ |
| F22.10.03 | Entregado | Saved-views per user (PL-T172) ✅ |
| F22.10.04 | Entregado | Bulk-edit (confirm / cancel / notify) ✅ |
| F22.10.05 | Entregado | Export CSV / Excel / PDF ✅ — POST /chain/bookings/export with {format, filter, columns}, CSV/XLSX/PDF (PL-T211) |
| F22.10.06 | Entregado | Mobile card-variant ✅ — DataTable mobileCardRenderer prop + <MobileBookingCard> on phone widths (PL-T211) |