Hace unos días descubrimos un pequeño bug en las últimas versiones de PrestaShop. El bug es que PrestaShop permite tener en la cesta de la compra vales de descuento ya caducados. El caso es el siguiente:
Un cliente añade hoy a su cesta de la compra un cupón de descuento que caduca mañana, sin embargo no realiza la compra hasta pasados dos días, por lo tanto, no podría disfrutar del vale descuento. Pero PrestaShop lo permite al tener el cupón añadido con anterioridad a la cesta de la compra. Es decir, no realiza una segunda verificación de los cupones descuentos añadidos a la cesta.
Para solucionar este problema hemos hecho un override sobre el controlador: Controllers/Front/OrderController.php concretamente en su función: initContent()
public function initContent()
{
$cupones = $this->context->cart->getCartRules();
foreach ($cupones as $key => $value) {
$cr = new CartRule($value['id_cart_rule']);
if (!$cr->checkValidity($this->context, true, false)) {
$this->context->cart->removeCartRule($value['id_cart_rule']);
}
}
return parent::initContent();
}
Lo que hace la función es simplemente recorrer los vales descuento o CartRule asociadas al carro de la compra o cart y quitar los que ya no son validos antes de continuar con la ejecución de la función en la clase padre.
Con esto y más ¡tu tienda online siempre preparada!