Trying to get 2 meals for £11 promotion working

I have a 2 meals for £11 promotion, the guest can choose 2 items from a selection and get any 2 for £11.

I created a Product Tag “2for11 Deal” and those products that are part of the promotion contain 1 in that tag.

I am then checking Order Added to Ticket, updating order state and triggering an automation command to check for promotions on a ticket.

When the automation command is executed, I am checking {ORDER STATE QUANTITY TOTAL:Promo1} to see if a multiple of 2 of the promotional items are on the ticket, and if so, then use Add Order to add an order with the promotional discount.

Now, what I want to happen is whenever the automation command is executed, it also checks if any promotion is already added to the ticket, and if so, remove it, then recalculate the discount again based on the total promotion orders on the ticket.

For example, if 4 promotional items are added, the ticket now contains 2x 2 meals for £11 promotions (which will equal £22). I only want to maintain one order item “2 meals for £11” to show the total discount.

I am struggling to delete (cancel) the previous “2 meals for £11” order. I have tried using Cancel Order (I am not sure what to use for the Group Tag and have tried multiple things to no success) and also tried Select Order to select the existing “2 meals for £11” order then attempt to cancel it, but I can’t get that working.

If it’s easier I am also happy to have multiple “2 meals for £11” orders (one for each promotion of 2 items) but I felt that is going to be difficult to keep track of, and remove if one or more of the promotion items are cancelled or voided. That’s why I went with the approach to constantly recalculate the promotion and therefore I would be enforcing the rules on every ticket change.

Any suggestions on what I can do?

I think you might be better with a different approach.
Use a report expression to count orders with item tag for offer aplicable.
What we want if not posible already would be a way to report the total price of x number of orders given a constraint.
Given this recalculate on each ticket total changed.
And calculate a discount like this:
Report count of applicable orders
If larger than 2 execute command
Divide count by two and math.floor that then multiply by 2 to give the quantity of 2 for aplicable items
Use that value in above report expression, ie if 3 orders, half is 1.5, round down to 1 times 2 is 2, so 2 orders to be calculated on.
Report order exact total for lowest priced 2 orders given state or tag constraint.
Take that total and minus the calculated aplicable quantity X 4.5 (in example that becomes 2x4.5=11, total of lowest priced 2 items =two orders of 6.95 so 11-13.99=2.90 and use that value to change/update the discount to that amount.

This method if made posible would mean say if you had 2x6.95 orders giving the 2.90 discount you could add a 6.50 order as third aplicable order and discount would be readjusted to use one 6.95 and one 6.50 orders.

This same method could also be adjusted to take top xhoghest priced orders applicable to offer if you take that approach…

Hope this makes sence.

A versatile method like this would be valuable asset for special offers where doing a mix and match type 2 for £X amount.

Would also me rework able for 3,4,5 for etc etc

This would be much easier as discount over order/price updates.
When I look at thins like this I usually look at a Tesco receipt and try and see how they do it and it looks to me like they have a bottom line (‘discount’) type section showing specials and amounts saved.

If looking to do multiple mixed type offers with overlapping products would be updating orders with a used state value and adding that state to the constraint in the report expression to used and if cleared on update and reworked it could be made to use each order for only one offer but this would be adding allot of order added type constraints although the first count type expression could be made to simplify and only recalculate when an aplicable item is added rather than every time an order is added.

1 Like

I like your approach, it would be much more versatile especially how it would handle different priced items and automatically either give the offer on the 2 cheapest or modified to give the best offer, e.g. on the 2 most expensive thus giving the customer the best deal.

I also want to have a flexible approach like this that I can reuse, because I want to be able to setup multibuy type offers for other clients in the future, especially in retail.

There is another offer I need to implement on this setup that is alongside this one (it’s buy 2 items from steak menu and get a free bottle of wine) but that offer has no overlap with the 2 for £11, so can be implemented separately. Plus guest can also utilise both offers at the same time so no issue there.

I will try this out tomorrow and see how I get on. Reading your math right now makes me more tired so best deal with it when I am more awake! :stuck_out_tongue:

1 Like

The one I always wanted to recreate was the meal deal Tesco do.
I know they have been tinkering on combo setup but that’s restaurant but is handled very differently in retail.
I would imagine something similar as above but for the first count would need to be to count the lowest qty of applicable items out of the drinks,crisps and sandwiches. Probably with the applicable tag being say 1.2.3 for the offer part.
Then doing similar as above but taking that count adding up the total value of the cheapest 1,2 and 3 orders and then discounting the difference over that count X £3 (£3 meal deal)

It’s a good offer which I often take advantage of in my break at hotel LOL

But something like that would be how if approach yours, want for there to be a multiple of 2 steaks the count, half and round down, then count for bottles of wine in the offer and discount the value, very similar setup with tweek of looking for a different item when 2x rather than the same item selection.

1 Like

On a side note, some stores in the UK can do really complex deals. Have you ever noticed the meal deal setup in Boots? They appear to be one of the few retailers who will combine deals to give the customer the best deal. If you buy a £3.39 meal deal and you include a bottle of Coke, and the Coke is on 2 for £2 so you buy another bottle as well, you get both deals combined. But the way they do their receipt is really confusing, I got one the other day I’ll see if I can find it…

It’s a bit damaged but…

£3.39 meal deal, 2 for £2 bottles of Coke and o2 Priority £1 off meal deal, all in one…

Not seen the boots offer, nearest boots is mines away lol
I would typically reconmend people not to overlap offers as it does become crazy complex.

I would be intrigued to see if boots is complex or just blindly applying discounts based on items without accounting for deal crossover.

I know they are a big company and all that but they all make mistakes.
Have seen website devoted to listing the misspriced products at supermarkets so you can buy cheap mistakes.
Pretty sure I once has come drinks for 12. Simple pence because they updated price and missed places the decimal place lol.

From the receipt ^^^^ looks like the deals account for crossover.

I saw that in Tesco once. Was buying a webcam was £24.97, came off £2.49 at the till. Went back and bought 10 more… :smiley: Put them on ebay.


I think one of the biggest issues faced with SambaPOS when we are setting up for customers is creating deals that can then be easily updated by the client. I don’t have many people using in retail but I know if I start promoting to that sector, it’s going to be a pain with the amount of discounts and deals that will have to be handled.

1 Like

Non crossover wouldn’t be as bad.
You could have a offer custom tag where the offer name/code is put in and a seccond one for offer details.
It will still need either complex setup to handle just these or pre making the offers.
A third tag might be good so you could have;
Offer type
Offer number
Offer detail

Type would be say BOGCF (buy one get cheapest free), number would be the number/combination for the included mix and match ‘set’ and probably wouldn’t need detail on that one.

The meal deal might be £3MDO (£3 meal deal offer),
Number would probably all be 1 as Lilly to only have one product range/setup for that deal and detail would be say 1 for drinks, 2 for sandwich and 3 for crops and sweets.

If I’m not missing something using calculations will be easier to implement.

1 Like

Yeah I was just looking at it now and was thinking the same. I had a problem with Ticket Total Changed when testing yesterday because I was using a product for the promotion discount, and of course that product adding would trigger Ticket Total Changed again and thus make SambaPOS hang as it was just going into a loop.

@emre are you using Ticket Total Changed to update the calculation? When I am doing that, it isn’t calculating when I add the 2nd item, only when the next item is added

But surely the second time it tries after the discount is applied it doesnt change the total as the discount is already applied?

@emre would the addition o f plain total changed be a posabilitiy for deal setups like this, so it can be triggered on any order type change however the discount application doesnt trigger the recalculation?

I was meaning when using a product for discount. Using a Calculation Type and it doesn’t hang.

1 Like

@JTRTech if you add a product on ticket total changed event, either way it will hang.
@markjw better execute ticket total changed actions in background by using Execute Automation Command event. That guarantees actions will work after all ticket events completes. I did it so.


Is there a tutorial to implement this anywhere thanks.