Simple Reservation Example

Hello. As 4.1.9 release we can mark tickets as pre-order to create draft tickets. I’ve created a sample to demonstrate this feature for creating a reservation system. I kept this sample as simple as I can.

I’ll keep posting tutorials for usage and implementation.

Download Simple Reservation SQL CE database

Database Tools Import file

Reservations2.zip (2.3 KB)

Warning: Import this file on training mode to ensure it does not break your existing configuration. It replaces some default rules listed here

  • Ticket Closing Rule
  • Update Available Entity Color
  • Ticket Payment Check
  • Update Moved Entity Color
2 Likes

##How it works?

This video shows how sample database works. Don’t forget enabling subtitles.

##Implementation

###1. Actions

####1.1 Mark ticket as pre-order action

We’ll start by creating two actions to enable, disable pre-order setting of a ticket.

“Mark ticket as pre-order” action is useful to change ticket to a pre-order ticket. We’ll use Change Ticket Properties action. We’ll set pre-order to True.

####1.2 Mark ticket as Non-preOrder action

This action disables pre-order setting for ticket and also changes ticket date to current date. We’ll execute this action when we convert a reservation ticket to a regular ticket.

####1.3 Update Entity Reservation state action

We’ll need another action to update Entity’s (Customer in this case) reservation state. So we can list customers who have active reservations.

####1.4 Refresh ticket action

Finally we need a simple action to refresh ticket’s display. We can use this action to refresh ticket screen after we make changes on ticket states or tags.

###2. Automation Commands
We need two automation commands for “Reservation” and “Check-in” buttons.

####2.1 Reservation Command

I’ve enabled confirmation setting so it will ask a confirmation when we execute this action. We’ll map this action as follows.

We’ll see Reservation button when ticket state is “New” or “New Orders” but we can click this button only when we start receiving orders so the Enabled States is “New Orders”

####2.2 Check-in Command

We’ll create another command for “Check-in” operation.

I’ve also enabled confirmation setting for this command. Now let’s see how it mapped.

It works only when ticket status is “Reservation”.

###3. Rules
####3.1 Mark ticket as reservation rule

First of all we’ll tell SambaPOS how “Reservation” Button works.

We need to pass parameters to “Update Ticket Status” and “Update Entity Reservation State” actions. This screen shot shows these parameters.

So when we click on “Reservation” Button.

  1. It marks ticket as pre-order.
  2. Changes ticket status to “Reservation”
  3. Changes Entity’s Reservation state to “Has Reservation”. So we can create a new state record to display these entities in different colors.
  4. Closes Ticket. Instead of closing ticket you can use “Refresh Ticket” action to keep ticket open.

####3.2 Check-in reservation ticket rule

We need another rule to handle “Check-in” button. We’ll use this button to convert a reservation ticket to a regular ticket.

See next screenshot for action parameters.

When we click on “Check-in” button SambaPOS does:

  1. Disables pre-order setting of ticket so this ticket works like a regular ticket.
  2. It changes ticket’s status back to “New Orders”. Like we are creating a new ticket.
  3. Changes Entity’s Reservation state to “Closed”. As you can remember we updated it to “Has Reservation” to list entities that has reservations.
  4. In final step it refreshes ticket display. We’ll keep ticket open so we can assign ticket to a table or make other changes.

###4. Changes for existing rules
####4.1 Ticket Payment Check rule

As you know “Ticket payment check” is useful to closing paid tickets. We can receive advance payments for reservation tickets but we want to keep that ticket open. So we’ll add a constraint to keep reservation tickets open.

This rule will work if ticket’s status is not “Reservation”.

####4.2 Ticket Closing rule

This rule sends orders to kitchen, changes ticket status to “UnPaid” and changes order states to “Sumbitted” to indicate these orders printed to kitchen. We also need to disable this rule for “Reservation” tickets since we need to send orders to kitchen after “Check-in”

This rule won’t work for reservation tickets. When we click on “Check-in” button it will change ticket’s status from “Reservation” to “New Orders” so this rule will start working.

###5. Reservation Entity Screen

We’ll create a new entity screen to display customers that have reservation. As you can remember we update Customer’s reservation state to “Has Reservation” so we can create a new entity screen to list these customers.

On “Entity List” screen we’ll configure which entities it should display.

It should list “Customers” with “Has Reservation” state.

Finally we need to create a new state configuration to give a different color to “Has Reservation” state.

On “Reservations” screen buttons will have Blue color.

In sample database and video this screen is a custom screen and it displays a Ticket Lister next to Entity Grid. If you want to enable this feature you can change screen type to custom and add a “Entity Grid” widget and a “Ticket Lister” Widget.

This is how Ticket Lister widget configured.

It lists tickets that have Reservation state and it displays Customer Name and Phone number.

##What’s Next?

This tutorial aims to feature pre-order tickets. On next tutorial I’ll show you how to handle reservation dates and “No-Show” feature to disable reservation tickets.

Can you please upload an imported configuration of this setup. Thanks

Hello. I’ll prepare a more complete sample that also contains No show feature and prepare the export file after Monday. Thanks.

@compwize I’ve added export file on first post of this topic.

Is it possible to handle reservation dates yet ?

2 Likes

Hi @emre i followed all the steps from “implementation” above but when i select a customer— place an order and click on reservation it ask for confirmation also but when i click on reservation entity screen its empty but the customer who made reservation can be viewed in customer ticket.

where did i go wrong?

i just want to reserve table not place an order. for this i try to follow this from “Add button Reserved”

@QMcKay Modify the Mapping for the Reserved Automation Command (button) so that it’s Enabled States is New only (or change it to *), instead of New Orders as it is in the Tutorial, and you will be able to reserve the Table without placing an order.

this also not working?

@madiha this may help? I use this method to change the entity colour to show the table as ‘occupied/reserved’

this is just to tell if table occupied but i want more than that. i want to reserve a table with customer name. so when customer comes in i can verify for the reservation. Just reserve the table no orders !!!

How will this happen!!!

any suggestions???

So you will never receive orders or deposits for reservations? Does noting “x table reserved for y” enough?

@emre ya i want to work on both scenairo x table reserve for y only and x table reserved for y with order.

i am also working on the reservations steps defined bove…but no luck its not working reservations not going in reservation screen

Hello @emre,

Can the same tutorial applicable to V3 as well ?

Sorry. It probably won’t work for V3.

hi @emre, our restaurant has a website where we are able to take online reservations.

do you know if it is possible to integrate this online reservation into sambapos?

so every time a reservation is received online, it will be displayed on sambapos?

It depends. If @Jesse asked me if it is possible to integrate a payroll system to SambaPOS I’d say no. But he did it :slight_smile:

I mean we don’t offer a ready to use solution yet but SambaPOS is flexible enough to do anything you want. Especially if you have some coding skills like @RandyMagnum

is there a tutorial yet for no-show and date handling. I’m new to samba pos and looking for this features.

Thank you for your support.

But how to cancel reservation? There is a button?

Could you please advise what mappings should be used for ‘Mark Ticket is Reservation’ and ‘Check In Reservation Ticket’. These are greyed out in the Rules list. Also The Reservation button is inactive on the ticket, is this because there are no mappings associated?

Rules are inactive and do nothing when they don’t have a mapping, and so they appear grey. In 99.9% of cases you will use a Default Mapping (all *) which will suffice.

When talking about Rules, we often leave the mapping information out since it is assumed that a Rule needs a mapping to work.