The first thought that pops into my head is to use Tasks. You might be able to use Entity Search or Entity Grid Widgets, or Ticket Listers to do what you want, but I think Tasks are going to give you much more flexibility in the long-run since a Task Type can be expanded to include any type of data you want, not just Entities or Tickets and Orders.
I have not seen a really good implementation of a Reservation system yet. Certainly someone must be running some type of setup that supports this. This Topic is the only one that I remember:
I know @JTRTech has also done a lot of work in this area as well for Hotel bookings, but it uses a 3rd party online PMS which SambaPOS communicates with …
SambaPOS API Integration with NewBook PMS/Booking System
The first thought that pops into my head is to use Tasks. They can be used for simple things like a To-do list, and I also created a Timeclock using Tasks rather than Entity State Logs which was the original way we developed the Timeclock. Although Entity State Logs could probably be used, Tasks will support a much more flexible and advanced method for such things. Kitchen Displays have also been created using Tasks, while the original method used Ticket Listers.
Tasks appear to be really simple at first, and TBT they are. Similar to an Entity State Log’s Custom Data field, Tasks have a main Content field where you can store extra information. But much more than that, Tasks have fields for Name, User, Start/End Date/Time, State Logging, and most of all: Custom Fields that you can pre-define as part of the Task Type, or even on-the-fly during Task creation.
Interacting with Tasks can be done in a couple ways which include the Task Editor Widget, and Report Tags, which can filter the Tasks and Task data that you see based on any part of the Task Type data.
You might be surprised to learn that a Report can do more than just show you rows of data… you can actually interact with a Report by switching on Table mode. This gives you access to row-by-row, and cell-by-cell values that you can use with Automation. The Timeclock Punch Editor is a good example of this, and in it’s implementation, we use the actual Row ID from the DB to access and modify data directly to edit Punch Data.
My Tutorial on Account Statements also uses a Report in Table mode to pull up associated Customer Tickets.
In addition, GraphQL has very good support for manipulation of Tasks as well so that we don’t need to mess with the DB directly like we do with the Punch Editor. GQL will allow you to Add Tasks, Toggle Completion status, change Custom Data field contents, and update Task States. Also, when you pull data from a Task Type using GQL, you can filter it on any part of the Task Type, in the same way you can do with Task Reports.