Split bill, Take Order and Pay by Seat, All in one ticket

I’ve been using this method for a while and I just redesign it to reduce button.


Release Notes:
Jan 6, 2017 - V0

  • Initial release
  • Need @emre help with TICKET ORDER EXACT TOTAL (version 5.1.61) to work with tax and calculation. I still can’t get tax to include in EXACT TOTAL.


##Printer Template & Print Job

:one: Customer Receipt By Seat Template Create your own template to fit your need

:two: Create Print Job


:one: Create PaidStatus: Paid state

:information_source: Optional: You may create Unpaid and Processing State the same way

:two: Create SeatNum State

Automation Command Button

:one: Seat at Ticket

:two: Seat at Order line

:three: Pay by Seat


:one: SEAT - Exec Automation Command

:two: SEAT - Select Orders

:three: SEAT - Clear NumberPad Value

:four: SEAT - Update PaidStatus State

:five: SEAT - Update SeatNum State

:six: SEAT - Update Seat-Paid State

:seven: SEAT - Tag Ticket Current Seat

:eight: PAY - Ask Question (Note: Description Input is V5.1.61+)

:nine: PAY - Exec Automation Command

:ten: PAY - Print Customer Receipt for Pay by Seat

:one::one: PAY - Pay Ticket

:one::two: PAY - Update Processing Item

:one::three: PAY - Update Local Program Setting



:one: SEAT - Set Current Seat Number

:two: SEAT - #1 Change Seat Number

:three: SEAT - #2 Change Seat Number

:four: SEAT - Set Seat Status When New Order Added

:five: SEAT - Auto Update Seat-Paid State

:six: PAY - By Seat / Ask Seat Number
For Button Value is very long, Copy and Paste this in the input box
:information_source: This code is for up to 20 Seat, add more if you need

[=TN('{TICKET ORDER TOTAL EXP:(ODI=True) and (OS.Seat-Paid=Seat 0 - Unpaid)}') > 0 ? 'Seat 0' : ''],[=TN('{TICKET ORDER TOTAL EXP:(ODI=True) and (OS.Seat-Paid=Seat 1 - Unpaid)}') > 0 ? 'Seat 1' : ''],[=TN('{TICKET ORDER TOTAL EXP:(ODI=True) and (OS.Seat-Paid=Seat 2 - Unpaid)}') > 0 ? 'Seat 2' : ''],[=TN('{TICKET ORDER TOTAL EXP:(ODI=True) and (OS.Seat-Paid=Seat 3 - Unpaid)}') > 0 ? 'Seat 3' : ''],[=TN('{TICKET ORDER TOTAL EXP:(ODI=True) and (OS.Seat-Paid=Seat 4 - Unpaid)}') > 0 ? 'Seat 4' : ''],[=TN('{TICKET ORDER TOTAL EXP:(ODI=True) and (OS.Seat-Paid=Seat 5 - Unpaid)}') > 0 ? 'Seat 5' : ''],[=TN('{TICKET ORDER TOTAL EXP:(ODI=True) and (OS.Seat-Paid=Seat 6 - Unpaid)}') > 0 ? 'Seat 6' : ''],[=TN('{TICKET ORDER TOTAL EXP:(ODI=True) and (OS.Seat-Paid=Seat 7 - Unpaid)}') > 0 ? 'Seat 7' : ''],[=TN('{TICKET ORDER TOTAL EXP:(ODI=True) and (OS.Seat-Paid=Seat 8 - Unpaid)}') > 0 ? 'Seat 8' : ''],[=TN('{TICKET ORDER TOTAL EXP:(ODI=True) and (OS.Seat-Paid=Seat 9 - Unpaid)}') > 0 ? 'Seat 9' : ''],[=TN('{TICKET ORDER TOTAL EXP:(ODI=True) and (OS.Seat-Paid=Seat 10 - Unpaid)}') > 0 ? 'Seat 10' : ''],[=TN('{TICKET ORDER TOTAL EXP:(ODI=True) and (OS.Seat-Paid=Seat 11 - Unpaid)}') > 0 ? 'Seat 11' : ''],[=TN('{TICKET ORDER TOTAL EXP:(ODI=True) and (OS.Seat-Paid=Seat 12 - Unpaid)}') > 0 ? 'Seat 12' : ''],[=TN('{TICKET ORDER TOTAL EXP:(ODI=True) and (OS.Seat-Paid=Seat 13 - Unpaid)}') > 0 ? 'Seat 13' : ''],[=TN('{TICKET ORDER TOTAL EXP:(ODI=True) and (OS.Seat-Paid=Seat 14 - Unpaid)}') > 0 ? 'Seat 14' : ''],[=TN('{TICKET ORDER TOTAL EXP:(ODI=True) and (OS.Seat-Paid=Seat 15 - Unpaid)}') > 0 ? 'Seat 15' : ''],[=TN('{TICKET ORDER TOTAL EXP:(ODI=True) and (OS.Seat-Paid=Seat 16 - Unpaid)}') > 0 ? 'Seat 16' : ''],[=TN('{TICKET ORDER TOTAL EXP:(ODI=True) and (OS.Seat-Paid=Seat 17 - Unpaid)}') > 0 ? 'Seat 17' : ''],[=TN('{TICKET ORDER TOTAL EXP:(ODI=True) and (OS.Seat-Paid=Seat 18 - Unpaid)}') > 0 ? 'Seat 18' : ''],[=TN('{TICKET ORDER TOTAL EXP:(ODI=True) and (OS.Seat-Paid=Seat 19 - Unpaid)}') > 0 ? 'Seat 19' : ''],[=TN('{TICKET ORDER TOTAL EXP:(ODI=True) and (OS.Seat-Paid=Seat 20 - Unpaid)}') > 0 ? 'Seat 20' : ''],Cancel

:seven: PAY - By Seat / Get Payment

:exclamation: Make sure Ask Question Buttons (Credit Card,Cash) match your payment type (Same as the one in Payment Screen)

:eight: PAY - By Seat / Update Payment

Action Below is Optional (Auto close ticket when ticket is all paid)

:nine: PAY- By Seat / Cancel Payment

:ten: PAY - By Seat / Update Processing State

:one::one: PAY - By Seat / Ask Print Customer Receipt

:one::two: GENERIC - Auto Close Ticket (OPTIONAL)


thats some cool stuff bro, can be very useful in many restaurants.

Very cool! Thanks for sharing - waitress has been requesting this feature as we are getting Samba setup and testing with them , they can make due for now since they can split the bill but this functionality would work great. Will wait to see if the Tax calculation issues are solved before I implement it.

So I am anxious to set this up in my system but I don’t see any action type Select Order. What am I missing?

It might be in the additional ticket actions module, install that on samba market (free).

@JTRTech is correct. Install this Module…

Restart SambaPOS and the Action will be there…



I found this feature very useful, many thanks. unfortunately I don’t know why the seat nr is not updated with action under orders:

[=’{TICKET TAG:Current Seat}’==" ? ‘Seat 0’ : ‘{TICKET TAG:Current Seat}’]

1 Like

The turnary expression you posted doesn’t help much without seeing where it is and what’s going on in your automation.

I uploaded the setup file for this tutorial.

SETUP.zip (3.3 KB)

What would be the easiest way to handle the tax(or tax exempt) in this method as the tax kind of hard coded into the process(#7).

Should I devise a constraint to “PAY - Update Local Program Setting”?

Hi all. So im a little bit lost here. I want mto get this up and running and am just about done. I am on rule number 7. It says to add the automation comman PAY- By Seat / Get Payment but this was never created. Only three automation commands were created in this tutorial. Should I add it and if so, where do I map it. Thanks.

Also in rule 7 it has PAY - Update Local Program Setting action twice. How can I add that action twice in the same rule? Thanks.

When you on the add action popup and select show all and it will show you ones already added to allow second time.

Pay by seat is at the top, automation command number 3…

NO you don’t need to create that “virtual” button manually, it is auto created by an action previously, which I think, in an ask question action.