Happy Hour, VIP Discounts with Portions and 7 Price Levels

Continuing the discussion from Happy Hour prices with portions:

So @QMcKay I thought I would save you some time since you are hard at work in your Inventory Import Module.

I have dropped a GIF below that shows the following:

1. Happy Hour Discounts per your Tutorial - Unchanged except I use % of {PRICE}
2. 3 VIP Discounts per your Tutorial - Unchanged except I use % of {PRICE}
3. 7 Price Definition [Including a $ Value for Portion Happy Hour]

The GIF demonstrates swapping in and out of VIP (Customer) to simple Happy Hour as per your tutorial BUT also maintains Portion Pricing. It further demonstrations all this happening with 7 Price Definitions which is crucial if you wish to maintain Portion Discounts.

Oh I should mention you can change Price Levels on the fly and still maintain Portion Discount Pricing as well as VIP and HH…

No SQL involved!

@emre kindly linked me this tutorial which I used to implement the 7 Price Levels Automation Command button shown in RED.

Once I implemented this Tutorial it was just a question of how to maintain VIP or HH with Portions and then throw Price Definitions at it! The process was just a little hard to think out but only required 1 key RULE using the following Key Action:


I probably will not use a Toggle for 7 Price Levels but actually assign 2-3 to Customers and use this Price Definition on Customer Selection. A Few others will be accessible from Automation Buttons in the Supervisor Menu.

@markjw you will need to use the PORDER PORTION CHANGED Event to manage your Discount Pricing on Portions. In simple terms it is really just calling the UPDATE ORDER PRICES Action.

So in summary I can have a $ based Discount on Portions BUT ALSO a % based discount on the Product Name that will cover all portions. Some Venues may just wish to save entering Portion Pricing Levels and Discount for every single Item Portion.

Emre, loving SambaPOS!

Sorry about the 3 posts but cannot include of relevant parties in 1 post…

PICS coming:
Ok these 2 Rules does all the work! No new States, just using a Order Tag as per Emre’s Tutorial.

Update Portion

Update Order Price
This is where the Intellect is - you will save hours trying to discover this Rule. Why share BECAUSE blokes like JTRTech
have saved me hours (Cash Back) :wink:

Enjoy Paul :grin:
JUST EDITED for Typos.


I think I’ve done something wrong…

I also think this needs to be added into a tutorial to make it simpler to get right (i don’t mind doing this once I have it all working flawlessly)

Im guessing i have written something incorrectly within the constraints. But I’m working from that pic and via remote PC to get the till to work.

Let me get this right…

Food: Child Portion, Adult Portion and different prices for VIP members

If i select the adult portion when a VIP has been selected, this should reduce the price? At present that isnt whats happening.

When I’m there in a couple of days i’ll detail what I have put as the constraints as a reply, as I’m sure thats where I’ve gone wrong.


Remember to check for case sensitive matching and spelling errors.


Ok so here goes on how I’m set up.

I don’t use HH, so these constraints haven’t been added

First off, I added Price Definitions:

Then I Changed 1 price (to test) on the price list editor:

Created actions:

Created an automation command:

Then Started with the Rules:


Name: Order Portion Changed

Event: Order Portion Changed

Custom Constraint:

Execute Rule if MATCHES





Name: Update Order Prices

Event Name: Automation Command Executed

Execute Rule if MATCHES

Automation Command Name EQUALS Update Prices


Update VIP Price:
Constraint: ‘{TICKET TAG:Price Level}’ == ‘’
Price Tag: Price

Update VIP Price:
Constraint: ‘{TICKET TAG:Price Level}’ != ‘’
Price Tag: {TICKET TAG:Price Level}

CD Update Order State DiscountType
Constraint: ‘{TICKET STATE:VIP}’ == ‘Active’ || [=TN(’{ORDER TAG TOTAL:HH DISCOUNT}’)] <0
DiscountType State: [:NextCommandValue]

CD Update Order State DiscountType
Constraint: ‘{TICKET STATE:VIP}’ == ‘Active’
DiscountType State: VIP

CD Update Order State DiscountType
Constraint: [=TN(’{ORDER TAG TOTAL:HH Discount}’)] <0
DiscountType State: HH

But still not working?

I’ve copied the above images, but with no actual text, I’m wondering if there is a space, comma, bracket or something wrong? as its hard to see with the image being relatively small…


If you never change the Portion, then nothing will happen. You might need to use a different Event like Order Added and/or Ticket State Updated to trigger your actions.

Not sure if its relevant but think it might be connected but if you are having issues with update order and portions do [:Portion] on the action and then {PORTION} in the rule along with the price tag/etc.
I have found sometimes updating order clears the portion back to normal hence the {PORTION} tag to keep the existing portion.

My entity based price list/tag is fairly simple…
Entity selected rule selects all orders and sets price tag to {ENTITY DATA:Price List}.
On order added I have another rule with does similar for new orders added.
Very basic but does the job.

If I log out then back in, that let the VIP work, but not the portion… so its triggering that… However, the discount for the price list editor isn’t working…

Cant help but think ive missed something completely here

So do you mean like… {PORTION:VIP1} ?

Thanks for your time though, I have plenty of time to fine tune things now :smiley:


No, update the orders with the price tag and found I needed to add {PORTION} so that it kept the existing portion rather than clearing as blank field here seemed to overwrite back to normal, sure it was discussed and not sure if fixed or not, that was in .60

Ok, did that and tested… fail.

When you have spare 5 mins, is there any chance you could double check my constraints? Like I said earlier, trying to copy from a small pic might mean I haven’t got it perfectly right?

Thanks a milli


I cant comment on the states stuff as dont have any of that on mine but using the portion tag solved the changing price tag on a very simple setup.
Might not be the issue, looking back at the system I dont have it on v5, may have already been sorted… probably erelivent…

Bit distracted as a client managed to get themselves a nasty virus which is causing havoc for them…

hmm, ok.

maybe @pauln will be able to help me accomplish the end result I need? :slight_smile:



Just claify what is the issue?

The prices are not being changed at all, it doesn’t seem to draw the price from the price definitions


Whats meant to trigger the update?

That’s what my brain was thinking, I’m not sure… As I’m still not apt with constraints, I just presumed they would work it? (the ones that in the OP above)


Your portion changed rule? But that starts automation command which contains setting the discount state which is a constraint on the portion changed rule?
The portion changed rule wont fire because its looking for a state which is set by a result of that action?

um… I always feel very stupid when I need to reply to questions like this :frowning: lol

Me personally, I cant see HOW me having VIP Level set as “1” is going to trigger the VIP1 price definitions, which basically… is all I want.