Author Topic: SambaPOS 2.70 Promotional Features  (Read 27313 times)

JohnS

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 677
SambaPOS 2.70 Promotional Features
« on: January 01, 2012, 10:18:36 pm »
Emre, you must have known this topic would come up  ;)

After watching the video you posted a few days ago, I am interested is knowing more about the promotional features within SambaPOS.
SambaPOS - POS'n the World, one Terminal at a time.

emre

  • SambaPOS Developer
  • Samba Team
  • Hero Member
  • *****
  • Posts: 1564
Re: SambaPOS 2.70 Promotional Features
« Reply #1 on: January 02, 2012, 07:24:45 am »
We are using rule - event mechanism for configuring promotions. Let me know what kind of a promotion you need and I'll try to find a solution :)

JohnS

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 677
Re: SambaPOS 2.70 Promotional Features
« Reply #2 on: January 02, 2012, 11:58:51 pm »
I can think of three promotions we would look at - at this stage.

1. Once every year, ie Christmas time, we would gift 2 free drinks (of any type - beer, wine, spirit) to every club member
2. For a new member we would gift (one time only) 5 free drinks (of any type - beer, wine, spirit) or
3. For a new member we would credit them an amount (say $20) towards purchases - this comes more under loyalty than promotions.

To me its more about understanding the concept within SambaPOS and how to create promotions. Every venue has a different idea when it comes to promotions.
SambaPOS - POS'n the World, one Terminal at a time.

emre

  • SambaPOS Developer
  • Samba Team
  • Hero Member
  • *****
  • Posts: 1564
Re: SambaPOS 2.70 Promotional Features
« Reply #3 on: January 03, 2012, 04:25:09 am »
Hello John. That would be a great exercise.

As you know with SambaPOS we can select customer before or after creating a ticket. I think we should select the customer before executing any promotion rule. Altering old lines after selecting the customer is a little hard (and unsafe). What do you think about that? Can I assume it should work by selecting customer at first?

JohnS

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 677
Re: SambaPOS 2.70 Promotional Features
« Reply #4 on: January 03, 2012, 05:15:04 am »
Emre,

Yes, selecting the customer first will be fine - we will use Delivery mode for the department, and use the membership card number as the phone number in the customer database.

May I suggest that the Phone number field be configurable to show Phone or Membership and remove the brackets () from the field (in Australia we only have 2 digit area codes), and if a matching number is scanned then it goes straight to the ticket screen.
SambaPOS - POS'n the World, one Terminal at a time.

emre

  • SambaPOS Developer
  • Samba Team
  • Hero Member
  • *****
  • Posts: 1564
Re: SambaPOS 2.70 Promotional Features
« Reply #5 on: January 03, 2012, 03:41:33 pm »
I implemented few features for 2.77 and tried implementing your promotion cases. I added "Gift Last Ticket Item" action, customer group code field to customer cards and improved setting handling.

Basically we configure Gift Promotion rules by "Add Ticket Line" action with gift option or "Gift Last Ticket Item" action.  You can constraint rules by Customer Group so you can use it for club members. Generally we use "Line Added to Ticket" event for executing these actions.

Ticket tagging is a nice feature that can be used to tag tickets with additional information. For example we use it for storing waiter name or the source of the order (phone, internet, etc) or store person count with numerical tags or anything else. During Christmas we can tag automatically tag tickets with Promotion=Christmas value and query it on "Ticket Line Added" event. We'll talk about it more later. We'll create an "Update Ticket Tag" action on "Ticket Created" event for tagging tickets automatically.

Trigger feature generates "Trigger Executed" event. We can setup a trigger that triggers on 15th December every year and another trigger that triggers on 5th January. First trigger will execute a "Update Program Setting" action that enables the ChristmasPromotion setting and the second trigger will disable it. When we constraint ChristmasPromotion setting before executing "Update Ticket Tag" action that will mean all tickets created between 15th December and 5th Januray will tagged as Promotion=Christmas automatically.

Lastly we should count how many promotions we made to a customer. We'll need Program Settings for each customer that increases as we create promotions. We'll use Update Program Setting for storing that setting but configure it differently for increasing it. We'll set Update Type to "Increase" and the [SettingName] will increase as we call that. We'll execute it after "Gift Last Ticket Item" action and when we gift an item that setting will increase. But how can we name it? First of all we'll keep Setting Name on "Update Program Setting" action as variable because we'll name it on "Ticket Line Added" event. To do this we'll set it's value as [Setting Name]. On "Line Added to Ticket" event we'll include "Update Setting Value" action and that from that action's parameter box we'll use CHRISTMASPRM-[CustomerId] value. Before reading that setting SambaPOS will replace [CustomerId] part with actual customer-id so we have CHRISTMASPRM-1 setting name for first customer and CHRISTMASPRM-2 as second customer. As we add promotions these values will increase...

To be continued....

emre

  • SambaPOS Developer
  • Samba Team
  • Hero Member
  • *****
  • Posts: 1564
Re: SambaPOS 2.70 Promotional Features
« Reply #6 on: January 03, 2012, 05:17:13 pm »
This is the Basic configuration for setting up gift promotions with number constraint.

Action for Gifting Items
  • Create a new action and Name it as "Gift Ticket Item"
  • Select action type as "Gift Last Ticket Item"
  • This step is optional. If you configure Gift reasons before you can select a Gift reason from drop down list. For example if you add a Gift reason named "Promotion" you'll be able to differ promotional gifts on screen and reports. You can only select pre-configured gift reasons.
Action for Storing Promotion Count
  • Create an another action and name it as "Increase Customer Promotion Count".
  • Choose "Update Program Setting" as action type.
  • We need a setting name unique to each customer. We'll configure a variable Setting name so we can pass setting name from another event. Entering the setting name with square brackets will do the job. Something like [Customer ID] .
  • Setting Value will be 1.
  • Update Type will be "Increase". That means when this action executes setting value will increase.
Rule for Gifting Items
  • Create a new rule named as "Gift Beverages to VIP Customers"
  • Event name will be "Line Added to Ticket"
  • MenuItemGroupCode will be "Beverages" so we'll only gift beverages.
  • CustomerGroupCode will be "VIP".
  • Click Select Actions and add both actions. "Gift Ticket Item" should be on the first place. "Increase Customer Promotion Count" will be the second.
  • Expand "Update Customer Promotion Count" setting. You'll see the Customer ID variable value. We'll enter PRM-[CustomerId] here. SambaPOS will replace [CustomerId] part with actual customer id so the setting name will be PRM-5 for 5th customer. This action will increase promotion count for each customer.
  • Scroll back to the Top of "Constraints" list. There is Setting Check line. Enter PRM-[CustomerId] to the first edit box. Choose < from operator combobox and enter 5 to the last box. Now we said PRM-[CustomerId] value should be less than 5.
With that setup we'll gift 5 beverages to each VIP customer. After 5th gift this action will not execute anymore.

-------------

Let's say we want to activate this promotion only on Christmas Period...

First we'll see the manual way.
  • Navigate to Settings > Ticket Tags.
  • Ticket Tag name will be Promo
  • Add some ticket tags and name them as "Christmas", "SambaPOS Day", "Valentines Day", etc.
  • Navigate to Departments, open "Restaurant" department and add that newly created Ticket Tag Group in Ticket Tags list.
  • Go back to " Gift Beverages to VIP Customers" rule. Enter "Christmas" to Ticket Tag constraint.
Now our rule will only execute if we tag a ticket as "Promo = Christmas". Switch to a Fast-Food or Delivery department, create a new ticket with selecting a customer. You'll see the "Promo" button on left column. When you click that you'll see the promotion options. Click Christmas and start adding lines. Tagging tickets with "Christmas" tag will add additional reports to "End of day" report. You'll see ticket totals grouped by tag names.

Action for tagging tickets automatically:
  • Create a new action and name it as "Tag Ticket as Christmas Promotion"
  • Action type will be "Update Ticket Tag"
  • TagName will be "Promo"
  • TagValue will be "Christmas"
Rule for tagging tickets:
  • Create a new rule with "Tag Tickets with Christmas Promotion" name.
  • Event name is "Ticket Created"
  • Click Select Actions and Choose "Tag Ticket as Christmas Promotion"
  • On this step all new tickets will have "Promo = Christmas" tag so all promotion rules will execute.
  • For toggling ticket tagging we'll check "Is Christmas Promotion Enabled" setting. Enter Is Christmas Promotion Enabled into "Setting Check" text box. Choose = as operator on second box and enter 1 to third box. That means "Is Christmas Promotion Enabled" setting should be equal to 1 for tagging new tickets with Christmas Promotion.
Action for Enabling Christmas Promotion
  • Create a new action and name it as "Enable Christmas Promotion"
  • Action Type will be "Update Program Setting"
  • Setting Name will be Is Christmas Promotion Enabled and Setting Value will be 1.
Action for Disabling Christmas Promotion
  • Create a new action and name it as "Disable Christmas Promotion"
  • Action Type will be "Update Program Setting"
  • Setting Name will be Is Christmas Promotion Enabled and Setting Value will be 0.
Now we'll create two triggers for executing these actions

Trigger for Enabling Christmas Promotion
  • Create a new Trigger and name it as "Start Christmas Promotion"
  • Choose "Once a year" from "Common Settings"
  • Select 15 for "Day"
  • Select December for "Month"
Rule for Enabling Christmas Promotion
  • Create a new rule and name it as "Activate Christmas Promotion"
  • Event Name will be "Trigger Executed"
  • Select "Start Christmas Promotion" from "Trigger Name" drop down
  • Click "Select Actions" and choose "Enable Christmas Promotion" action.
Now on every 15th December trigger will execute and christmas promotion activates...

Trigger for Disabling Christmas Promotion
  • Create a new Trigger and name it as "Stop Christmas Promotion"
  • Choose "Once a year" from "Common Settings"
  • Select 5 for "Day"
  • Select January for "Month"
Rule for Disabling Christmas Promotion
  • Create a new rule and name it as "Deactivate Christmas Promotion"
  • Event Name will be "Trigger Executed"
  • Select "Stop Christmas Promotion" from "Trigger Name" drop down
  • Click "Select Actions" and choose "Disable Christmas Promotion" action.
Now on every 5th January Christmas promotion ends.


Phew...
« Last Edit: January 04, 2012, 06:32:03 am by emre »

JohnS

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 677
Re: SambaPOS 2.70 Promotional Features
« Reply #7 on: January 05, 2012, 06:21:38 am »
Phew...

That says it all - thank you for the post. As you have said previously, it can be a little involved to setup the rules and actions.

But after reading your post, I am understanding more of the built-in capabilities of SambaPOS. I will be setting up the promo over the weekend and experimenting on a few different scenarios.

SambaPOS - POS'n the World, one Terminal at a time.

JohnS

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 677
Re: SambaPOS 2.70 Promotional Features
« Reply #8 on: January 07, 2012, 02:30:04 am »
Well, what a successful afternoon playing with Actions & Rules.

I have setup free entry form into a promotion (printed from receipt printer) for purchases over $5 and/or $10 (or whatever you want).

Requirements for a customer to receive this
1. Spend money  :)
2. Be an actual customer with a membership card - no freebies here :)
3. Be an Active customer (set by Customer Group in my case) - Renew that membership!
4. And of course have the promo enabled on the system - One setting to turn on or off, then just log off and back on to enable/disable promo.

Sounds simple, and now its setup and working - it kinda was. But a simple promo like this is a powerful selling tool, and a very easy way to automate handing out promo tickets.

Update - Now added $20 promo and tagging tickets with the promo so we can track how many entry forms have been issued - useful when you need to make sure you are getting enough sales to cover the promotion.

Update#2 - Now added product promotions, where a customer selects a product, and at payment received, a promo ticket is printed. This is running with the dollar value promo and this promo runs second to the dollar value promo.
« Last Edit: January 08, 2012, 02:00:57 am by JohnSCS »
SambaPOS - POS'n the World, one Terminal at a time.

JohnS

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 677
Re: SambaPOS 2.70 Promotional Features
« Reply #9 on: January 07, 2012, 06:31:28 am »
Emre,

Well I think I just got too smart and backed myself into a corner.

I need your help. I am having issues with variables in some rules. I decided to remove rules for each value promo ($5, $10 & $20) and just have two varibales. One sets the value, the other sets the promo name. A value other than 0 enables the promo.

First issue - For a payment received rule, can you use Amount > {SETTING:PROMOVALUE}
Second issue - Using an update program settings action to update Ticket Tags using Setting Value = {SETTING:PROMONAME}

First issue keeps parsing as true, when its not.
Second issue produces {SETTING on the saved tickets and reports, but prints fine on the receipts.

Am I expecting too much? or should it work the way I am thinking?
« Last Edit: January 07, 2012, 07:22:07 am by JohnSCS »
SambaPOS - POS'n the World, one Terminal at a time.

emre

  • SambaPOS Developer
  • Samba Team
  • Hero Member
  • *****
  • Posts: 1564
Re: SambaPOS 2.70 Promotional Features
« Reply #10 on: January 07, 2012, 01:54:11 pm »
Hello John. I've implemented {setting:xxx} tag for printing settings but I think using them with constraints or parameters is a brilliant idea. I think I can do it.
« Last Edit: January 07, 2012, 02:12:17 pm by emre »

JohnS

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 677
Re: SambaPOS 2.70 Promotional Features
« Reply #11 on: January 07, 2012, 06:31:05 pm »
So it was me being too smart  8)

So I have simplified the rules and actions to just 3 Rules & 3 Actions (Plus a global Update Program Settings Action)

Action 1. Print Promo Ticket
Action 2. Update Ticket Tag
- Promo = [Setting Value]
Action 3. Reset Promo Ticket
- Set PromoTicket=0

Rule 1. User Login
- Action 1. Reset Promo Ticket
Rule 2. Enable Customer Promo Ticket using Customer Selected for Ticket trigger
- If the customer is Active (via Customer Group Code) then it sets PromoTicket=1
Rule 3. Print Promo Ticket for ticket total above an amount, ie $5, $10, etc using Payment Received trigger
- Setting Check - PromoTicket = 1
- Amount > 9.99
- Action 1. Ticket Tag Promo - Setting Value = Tooheys Esky
- Action 2. Print Promo Ticket
- Action 3. Reset Promo Ticket - PromoTicket=0


This is neat and tidy. What would be cool is if the Payment Received Rule also included the following conditions
- Ticket Tag (which can be set by purchase of a product if it is product driven Promo)
- Tag Name (as above)
- Customer Group Code
- Customer Note

These would allow removal of the Enable Promo Ticket rule and Promo Reset actions. So we would have only 2 Actions and 1 Rule.

Rule 1. Print Promo Ticket for ticket total above an amount, ie $5, $10, etc, for an Active Customer with Full Membership using Payment Received trigger
- Amount > 9.99
- Customer Group Code = Active
- Customer Note ? Full Member
- Action 1. Ticket Tag Promo - Setting Value = Tooheys Esky
- Action 2. Print Promo Ticket

All up, Promo tickets need to be printed only once payment received (never before), so the trick is getting the info needed to the payment process.

Being able to use {SETTING:xx} variables would allow nicer formatting for printed tickets and better Rule & Action handling for more complicated setups, but at the end of the day if the printed ticket has Promo: XXXX via Ticket Tag then so be it.

Like I said, its about working with what we have, not reinventing the wheel.
SambaPOS - POS'n the World, one Terminal at a time.

emre

  • SambaPOS Developer
  • Samba Team
  • Hero Member
  • *****
  • Posts: 1564
Re: SambaPOS 2.70 Promotional Features
« Reply #12 on: January 08, 2012, 10:30:32 am »
With 2.79 you should be able to use setting values with actions and rules.. Required syntax is {:SETTINGNAME}. When you use curly brackets and start setting name with semicolon it will read that setting an replace the value. Unlike printer syntax we won't use SETTING part. I preferred curly brackets instead of square brackets since square brackets means variable

With 2.79 there are some important features.

Update Program Setting action has a new parameter named IsLocal. That setting defines if the setting is used locally or for the entire network. We should use Global Settings (IsLocal = False) for counting promotions because all terminals should be aware of the latest promotion count of the customer. But for storing "Tendered Amount" or similar temporary values we should use local settings because we should store it for the active terminal. You can try the effect by starting two SambaPOS applications. If you limited gift count with 5 you should not be able to gift more that 5 on two terminals.

Gift Last Ticket Line action has a new parameter named quantity. It will work if it is bigger than 0 and with that setting you can limit gift quantity for a single line. For example if that setting is 1 and the operator sells 5 beers at a time (by using the numerator) it will split the line and gift only one of them.

Update Last Ticket Line Price Tag is a new action and with that action you can create price promotions instead of gifts. Price Tags is an another unique feature of SambaPOS. For example create a new Price Definition named %50 Off and enter the same value (or a shorter tag instead) to Price Tag text box. After saving it open Price List Editor and you'll see a new column added to price list. Enter "%50 Off" promotional prices for desired products. If you leave it empty (0) for some products SambaPOS will use base price instead. Normally you can activate a price list manually from "Department" settings page and can have different prices for different departments. Or you can activate it with "Change Price List" action and maybe you can create date triggers for "happy hour" implementation. With the new Update Last Ticket Line Price Tag action you'll be able to change price with a price tag for individual lines... SambaPOS will display applied price tag on each line and you can print price tags for each line on ticket.
« Last Edit: January 08, 2012, 10:43:04 am by emre »

JohnS

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 677
Re: SambaPOS 2.70 Promotional Features
« Reply #13 on: January 08, 2012, 06:02:36 pm »
I really like the way you think - some features and changes you make are just so Cool.

I'm going to have fun testing this lot :)
SambaPOS - POS'n the World, one Terminal at a time.

JohnS

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 677
Re: SambaPOS 2.70 Promotional Features
« Reply #14 on: January 09, 2012, 03:49:25 am »
The changes you made to Payment Received Rule has reduced a dollar value promo to 1 Rule & 2 Actions. Much easier to setup.

One Rule that may be useful is when an item is cancelled. You could use this to remove ticket tags. This would stop operators selecting qualifying promo products to enable promo features, then cancel the item and select something else.
« Last Edit: January 09, 2012, 03:54:03 am by JohnSCS »
SambaPOS - POS'n the World, one Terminal at a time.