General

RetailVista has the possibility to support discount cards. These are cards which gives the possibility of discount on transactions. Usually discount cards are generated from the earned loyalty points on loyaltycards. These points can be converted to a discountcard, after which customers can be informed to use these cards for discounts on their next buyings. It's possible to set expiry days on discount cards, as well as a maximum number of allowed transactions. When for example setting the max number of transactions to 1, it's only possible to use a discount card one time only.

Discountcard functionality like withdrawal, information etcetera of RetailVista discountcards can be executed by using the Retail3000 API. Simulate (check) methods are available to test if a certain withdrawal would be succesfull once executed. It's advised to use the 'check' methods to test if an operation can be executed. For example, in a payment process the method 'DiscountCardWithdrawCheck' can be called to verify if a certain withdrawal would be succesfull. If not, the payment can be aborted and customer should choose an alternate payment method.

All giftcard methods can be found in the webservice PosComponents.asmx. This webservice hosts the next important methods:

DiscountCardWithdrawalCheck Check if withdrawal of a discount card with a given amount would be succesfull. When for example a discount card is blocked, the withdrawal cannot happen and in the response object, error information will be included.
DiscountCardWithdrawal Execute a discount withdrawal for a discount card with a given amount.
DiscountCardInformation Get information about a certain discountcard like expiry date, remaining balance etc.

It important to take care for the transactional character of discount card transactions. For example if a discount card is withdrawn, the belonging transaction should be finalized. Cancellation of certain transactions is not available at this moment. By using 'check' methods at first, withdrawal can be checked before closing/finalizing a transaction. So for example in a webshop order payment process where a RetailVista discount card is used as a payment voucher to get discount on a transaction, use the check method so see if the discount can be given. Then it's advised to let a customer pay for the remainig amount by bank (for example IDeal) and then just before finalising the transaction, execute the actual discount card withdrawal value. It's off course still possible that while the check method allowed the discount, the final method will decline. This can happen if for example a customer is trying to use the discount card at two sessions at once. If the discount finally fails, the remainder should still be paid in a different way. Be aware not to execute the final discount too early, because if a customer decides to abort the whole sale, the discount card should already been withdrawn, and that's irrreversible.

Every method mentioned above uses a request/response model. In the request object, all necessary parameters can be submitted, while in the response object all required information is returned.