While applying this tutorial a simple mistake can easily break how tickets works. Don’t forget to create a backup in advance.
When you fully settle a ticket it automatically closes and related table color changes from orange to white. To be able to handle some cases you might need to change this behavior. There might be different reasons for it but most common reasons are…
- You want to track delivery status after ticket gets fully paid and want to close ticket after delivery status becomes
Delivered
. - You don’t want to change table color to white as soon as ticket gets fully paid. Customer may still sit on the table and you might want to keep ticket open until he leaves to permit adding more orders and keeping table color as orange.
###Implementation
The reason ticket automatically gets closed is Mark Ticket as Closed
action that works on Ticket Payment Check
rule.
Remove this action to see how SambaPOS behavior changes.
- Create a new ticket for a table.
- Close ticket without paying it.
- Reopen ticket and settle it.
As the result of this
- Table will appear still open.
- Ticket appears paid but you can still add orders or make changes on ticket.
- There is no way to close this ticket.
When ticket state becomes Paid
we assume ticket should be closed but as we don’t want to do it we’ll add a new state called Closed
and close ticket when ticket state becomes Closed
.
We’ll create a new Before Ticket Closing
rule for this.
If ticket status becomes Closed
we’ll mark ticket as closed. Please keep in mind Mark Ticket as Closed
action only works in Before Ticket Closing
or Ticket Closing
rules. Prefer Before Ticket Closing
.
Now we have a new ticket state called Closed
and we need to fine tune some current rules to work with this new state.
For Update New Order Entity Color
rule I’ll include Paid
state as I want to display Paid
tickets as orange color.
Ticket Payment Check
rule updates ticket state as Paid
when Remaining Amount becomes 0. Now it should do it if ticket is not Closed
. I’ve also added another constraint to ensure this ticket contains orders.
After this setup changing Ticket Status
to Closed will close ticket.
I’ll create an action for this.
I can use existing
Update Ticket Status
action. I’m creating a new action just to demonstrate better how it works. If you know how it works you can use it.
When I execute that action it will mark ticket’s status as closed and Ticket Closing Check
rule will mark ticket as closed.
I can execute that action according to my need. For example I can execute it when ticket’s delivery status becomes Delivered
or I can manually close it. I’ll show how to close it manually.
I’ll create a new Automation Command
called Close Paid Ticket
.
I want to see this button only if ticket’s status is Paid
. For other states I shouldn’t see this button.
and when this button clicked I’ll execute Close Paid Ticket
action. This action will update Ticket Status to Closed
. I’ll also execute Close Ticket
action to close ticket visually. I’ll create a rule for this.
Now when I open my ticket I should see Close Ticket
button.
Clicking this button should close ticket and your table color should appear as White.