Advanced booking reporting


Assignment overview
- Backend only (using Ruby with Hanami), following TDD
- Generate reports with historical booking data
- Fine-tune bookings are included in the report by allowing them to apply multiple types of filters and joining them in complex logical expressions (e.g. bookings that check-in in the next 7 days that are either fully paid or the guest verified their identity)
- Select which booking fields are included for each reservation
- Sort the bookings by one or multiple fields
- Export the reports as CSV files
Progress
- Defined the structure of a report (configuration)
- Created an endpoint for serving the report configurations for an account
- Familiarised myself with and extended an endpoint that filters bookings based on passed filter parameters to support AND/OR logical operations and nested expressions (e.g. COND1 AND (COND2 OR COND3))
- Implemented a new type of filter - NOT IN (e.g. booking status NOT IN "checked_in", "confirmed")
- Added support for relative date filters (e.g. in the next/past N days) which will also play a key role in a future report scheduling functionality
- Added support for a few calendar date ranges (e.g. this year, next month, past week)
- Implemented a few new filters (e.g. booking channel, booking property)
What's left?
- Add support for numerical type of filters (e.g. less than/greater than/equals)
- Report configuration CRUD endpoints
- Add CSV export functionality
- Implement pagination on the report results endpoint
- Finalise the report
Report structure

deck
By Martin Markov
deck
- 14