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