Keeping $0 tickets open with product timers

Normally if you add $0 items or gift/void all items on the ticket, SambaPOS will considered it as settled once you close it and the table entity will be cleared. However, if you have guests that only order free items at first, such as water, you will want to prevent this behavior.

Usually to workaround this, we use multiple states and automation. An alternative simple solution is to use product timers to keep $0 tickets open so you can continue to add more products to the ticket when your guests are ready to order.

1. Create product "Keep Ticket Open"
Products > Product List > Add Product

2. Add “Keep Ticket Open” product to your menu.
Products > Menu List > Menu > select Admin > Edit Category Products

3a. Create product timer "Keep Ticket Open Timer
Main Menu > Products > Product Timers > Add Product Timer

3b. Map this Product Timer to the product you created earlier

4. Allow zero priced orders for your ticket type.
Tickets > Ticket Types > select Ticket > check Allow Zero Priced Orders
Note: Your ticket type may be named differently.

5. Test it works
Note: You will need to tap Stop Timer then Close when you want to close out the ticket.
“Keep Ticket Open” product will also show up on printed tickets unfortunately.


interesting idea.
You surly can build a stop timers automation into final payment check rule?
You could also use order state formatting to make that product size 1 and transparent so it is virtually invisible

1 Like

Superb suggestions.

I also want to note that after a bit of testing, product timers seem to cause significant lag when used in conjunction with entity screens that have reporting tags. But adding rules to automatically stop product timers may mitigate this issue.

Add Action: Stop Product Timers

Add Rule: Stop Product Timers when Ticket Total Greater than 0

Add Rule: Stop Product Timers when Payment Processed

Not sure if that would be in conjunction or just report tags on entity screen which if not very basic can quickly slow down loading as has to run those reports for each entity on screen.

I did some testing and the lag completely disappeared when I unmapped the product timers.

My entity screen has report tags and 2 ticket listers.

Are yku using the timers in the display format?

Looks good!

What if disguised “Keep Ticket Open” with “Complimentary Water” or just “Water”. Just a thought.


This is what I’m using for the entity state display:

$1 | <size 50><bold>{REPORT TICKET DETAILS:TT.Waiter:(TEN.Table=$1) and 'RemainingAmount > 0':-}</bold></size><br/>⏱{ENTITY STATE MINUTES:Status}

Good suggestion @Bob_be

Something I’m trying to figure out is constraints for paid ticket rule to check if product timer is active or stopped. I found the following I can use in constraints but don’t think I can use these in this case. Any ideas?


That will be because they are all product specific ie would work on an order level rule event but ticket closing for example would know which product to look at.
You should add server side is closed to that ticket details expression to reduce query load.

if you only using timers for keep open I would just stop all timers on final payment.