[Payment Screen] How to disable cash, credit card, and voucher payment when customer is selected?

Currently I’m setting up a loyalty card that customer able to top-up (act as debit card) and earn discount 10% on food and beverage, when using the loyalty card by customer account payment.

However, I’m having trouble on the payment screen; I’m afraid if the sales clerk will make a mistake when processing the payment by cash (because when customer is selected I still be able to process the payment by cash/credit card/voucher). What I would like to do to resolve the problem:

  1. How to disable cash, credit card, and voucher payment when customer is selected (this is to prevent mistake to other clerk, because registered customer must pay with their customer account in order to get 10% discount). I know that this configuration is possible, because when customer is not selected, customer account payment is disabled on the payment screen.
  1. How to setup automatically give 10% discount before tax when customer account payment is clicked (I tried using the payment processor, but it still gives me the discount after tax; not before tax).

Here is my illustration on the payment screen to ease the communication:

You cannot disable those Payment Types. The reason Customer Account Payment Type becomes disabled when there is no Customer selected is because the Customer Account Type is tied to the Customer Entity Type.

Using V5, you might be able to disable Payment Types via a Payment Processor that executes JScript to temporarily alter the PaymentTypes Rules via SambaPOS API functions.

For V4, you might try this:

  • create a new Ticket Type named Customer Ticket
  • map only the Customer Account Payment Type to the new Ticket Type
  • create an Action for Change Ticket Properties, and use a [:parameterVariable] for the Ticket Type field
  • create a Rule for Ticket Entity Changed
  • set Rule constraints to Entity Type Equals Customers
  • add the Action to the Rule, and for the parameter, set it to Customer Ticket

EDIT: Hmm… I tried the above, but it only works if you close the Ticket, then re-open it and then Settle it. It can be done without closing/reopening, but you need to use the Save Ticket Action, which I don’t think is available in V4.

So long story short, what you want to do cannot be done in V4.

Thanks for your effort to help me out on this situation. I think I should upgrade to v5 and work around to get this problem solved.

EDIT:

@QMcKay I already upgraded to V5, now how do I setup the PaymentTypes Rules via SambaPOS API functions? I’m not a programmer though :confused:

1 Like

After a quick look at the API functions, this is not an option. We cannot change the Rules for the Accounts via the API.

But this other method should work in your case:

Create a new Ticket Type, or Clone your existing “Ticket” Type, and name it something like “Customer Account Ticket” …

Map the Payment Types for Cash, Credit Card, and Voucher to the “Ticket” Ticket Type only, while leaving the Customer Account Payment Type mapped to “*” …

Create an Action for Change Ticket Properties

##PT Change Ticket Properties [Change Ticket Properties] (Action)##

Action Name: PT Change Ticket Properties
Action Type: Change Ticket Properties
###Parameters:###
Ticket Type Name: [:ticketType]
Is Pre Order:
Change Ticket Date:

Create an Action for Save Ticket

##Save Ticket [Save Ticket] (Action)##

Action Name: Save Ticket
Action Type: Save Ticket
###Parameters:###
Success Command:
Error Command:

Create a Rule for event Ticket Entity Changed

##PT Change Ticket Type [Ticket Entity Changed] (Rule)##

Rule Name: PT Change Ticket Type
Event Name: Ticket Entity Changed
Rule Tags:
Custom Constraint List (1):
Execute Rule if: Matches
Entity Type NameEqualsCustomers

##Actions (3):##

PT Change Ticket Properties

Constraint: ‘{ENTITY NAME}’ == ‘’ || ‘{ENTITY NAME}’ == ‘*’

ticketType: Ticket

PT Change Ticket Properties

Constraint: ‘{ENTITY NAME}’ != ‘’ && ‘{ENTITY NAME}’ != ‘*’

ticketType: Customer Account Ticket

Save Ticket

Constraint: (none)

##Mappings##

Mappings

Terminal User Role Department Ticket Type


HINT:

To add the same Action into a Rule more than once, Right-click on the LEFT side of the Action Chooser and select Display All Values


This is how it will look with no Customer selected (normal) …

… and like this when a Customer is selected …

Thank you @QMcKay for the complete instructions, I followed everything in order. Unfortunately I’m experiencing an error, which happen that when no customer is selected, the payment option still showing Customer Account only. Following is the screenshot of the situation: