Bonjour,
En effet, les réductions ne sont pas prises en compte.
Je n'ai malheureusement pas de solution.
Les réductions sont calculées dynamiquement en PHP une fois les prix chargés. Or, le filtrage se fait en MySQL durant le chargement des produits à afficher sur le listing, et donc avant le chargement des réductions, des prix et les calculs sur les prix.
Changer l'ordre n'est pas possible. Car il faudrait alors charger les prix et les réductions de tous les produits de toutes les pages du listing pour calculer le prix avec réduction de tous les produits pour pouvoir ensuite faire le filtrage. Or charger autant de données causerait des soucis de performance.
La solution, ça serait de faire une table de cache des prix finaux des produits. Le problème c'est que ce n'est pas simple, car les prix peuvent variés en fonction du groupe de l'utilisateur, de la date, etc. Il y a pleins de critères qui peuvent faire qu'un utilisateur verra un autre prix qu'un autre utilisateur, et donc il faudrait prendre en compte tout cela dans la table de cache des prix finaux, et il faudrait ensuite garder la synchronisation de cette table pour que les prix finaux soient recalculés à chaque fois qu'un prix change, un produit change, une catégorie change, une réduction change, etc. Bref, cela complique beaucoup les choses.
Ce serait un développement très important, avec des soucis sur la synchro et je ne vois pas de solution à vous fournir pour faire cela.