Coupon providers are classes, that modify the content of the basket after a valid coupon code was entered by the customer. Possible actions are granting rebates, adding special products or reducing the shipping costs, but in principle coupon providers are able to change the basket in every way that can be implemented.
The codes are associated to one configured coupon provider, so different codes can be used for differently configured providers. The same provider can be configured and used twice, e.g. the first includes a rebate of 5€, the second a rebate of 10€. Depending on the entered code, either the provider with 5€ or 10€ is used.
The configured providers are also notified if the basket content changes because the customer added or deleted a product, had chosen a payment or delivery method or when another coupon is entered. They can then adapt the result of their previously performed action. By default only one coupon code can be entered by the customer but this can be changed to any number by setting the number of allowed codes.
Coupon providers can be enhanced by decorators to add certain requirements for restricting coupons. If the requirements for the action aren't met, the coupon code is added to the basket nevertheless and also stays in the basket. As soon as the basket content changes, the conditions are re-evaluated by the provider and the configured decorators.
The "Coupon" list view provides a paged list of all configured coupons in the system, which can be filtered by various criteria. The most important columns are shown by default but the list of columns can be adapted via the list header. Coupons can be added, edited or deleted either by using the button in the menu or by using the context menu which is shown if you right-click into the list. A double click also opens the detail view for editing the coupons.
Adds a reduction product to the basket of the customer that includes the negative delivery costs. For example, if the delivery costs are 5€, the product reducing the delivery costs would have service costs of -5€.
Adds a reduction product to the basket of the customer with the configured rebate amount. For example, if the configured rebate is "5.00", a value of 5€ would be subtracted from the basket total regardless of the total value of the basket. Therefore, it's a good idea to configure a minimum order value as well in this case that is higher than the granted rebate.
Adds a reduction product to the basket of the customer with the calculated rebate amount. For example, if the configured percentage is "10.00", a value of 7.50€ would be subtracted from the basket total if the value of all products in the basket is 75.00€. Service costs for delivery and payment are not included in the calculation.
Adds a present product to the basket of the customer. This is very much like a normal product but isn't associated to a category like rebate products so it can't be added by customers directly. Of course, you can also use a product that's available for all customers but in this case it doesn't make sense to enter a coupon code for the customers.
Adds a reduction product to the basket of the customer with the remaining voucher amount. For example, if the remaining voucher amount is "25.00", a value of 25€ would be subtracted from the basket total. If the total basket value is only 20€, 5€ will remain as the voucher value after the order.