Symptoms: Customer enters a voucher code that requires PayPal. Instead of the yellow "pending" hint, they immediately see a red error and the voucher is not stored.
Check:
VoucherRulePendingException is actually being thrown by the payment validation. Check your shop's exception log.VoucherRuleViolationException during the same validation pass, the pending logic is bypassed.Solution: Fix the additional violation first (e.g. the time window is currently inactive, or the customer has previous orders). The pending mechanism only applies when the only failing rules are context-dependent ones (payment, delivery, MOVs).
Symptoms: Customer selects the correct payment method but the pending voucher is not activated. The hint message remains.
Check:
Basket::reAddPendingVouchers() is being called. Add a temporary log line if needed.Solution: The most common cause is a custom checkout module that overrides Basket::calculateBasket() without calling the parent. Ensure that the module call chain includes the Basket extension from mmd_voucherrules. Check the module chain order in Admin > Extensions > Modules.
Symptoms: A time window voucher shows "not valid during current time" even though the current time appears to be inside the configured window.
Check:
date on the command line or <?php echo date_default_timezone_get(); ?>.Solution: Align the server timezone with your shop's operational timezone, or adjust the time window boundaries to compensate for the offset. OXID does not automatically apply timezone conversion — times are stored and compared in server local time.
Symptoms: The four extended rule tabs are missing from the voucher series detail view.
Check:
vendor/bin/oe-console oe:module:list | grep voucherrulesoevomigrations log table for the module's migration entries.Solution: Re-run activation and migration:
vendor/bin/oe-console oe:module:deactivate mmd_voucherrules
vendor/bin/oe-console oe:module:activate mmd_voucherrules
vendor/bin/oe-console oe:migrations:apply-module --module-id=mmd_voucherrules
vendor/bin/oe-console oe:cache:clear
Q: Does the module work with multi-shop (EE) setups?
Yes. All module tables carry an OXSHOPID column. Rules are always scoped to the shop they were configured in. A voucher series shared across shops will have its rules evaluated independently per shop.
Q: What happens to pending vouchers if the customer logs out or their session expires?
Pending vouchers are stored in the PHP session. If the session expires or the customer logs out, the pending voucher list is lost. The customer will need to re-enter the voucher code. This is intentional — retaining voucher codes across sessions would create security concerns.
Q: Can I configure multiple time windows for the same voucher?
Yes. The Time Windows tab supports an unlimited number of time window entries per voucher series. The voucher is valid if the current time falls within any active window (OR semantics). This allows you to configure, for example, a lunch promotion (12:00–14:00) and an evening promotion (19:00–21:00) on the same voucher.
Q: The combination blacklist only supports pairs. What if I want to block a voucher from combining with any other voucher?
Use the Max Combined Vouchers field on the Extended Rules tab instead. Setting it to 1 means only a single voucher can be active in the basket at any time, regardless of which specific vouchers they are.
Q: Does the First Order Only check work for guest checkouts?
A guest customer by definition has no registered purchase history. The FirstOrderCheckService checks the order history for the current customer account. Since a guest has no account, the check passes (the guest is treated as a first-time customer). If you want to prevent abuse by guests who have previously ordered, this cannot be enforced at the voucher level without a custom account-linking strategy.
Q: Are the admin tabs visible in all OXID editions (CE/PE/EE)?
Yes. The module targets OXID 7.x across all three editions. The admin controller integration uses standard OXID metadata tab extension, which is available in CE, PE, and EE.
Q: Can I combine payment restrictions with time window restrictions on the same voucher?
Yes. All rule types are independent and additive. A voucher can simultaneously require PayPal, be valid only on Fridays between 17:00 and 20:00, and require a minimum order value of €50 when using DHL Express. All configured rules must pass for the voucher to be accepted.