Bonjour,
Désolé, mais... Il y a un bug de "logique" dans les calculs de quantité par groupe car le passage d'un produit en quantité "0" n'est pas pris en compte...
De ce fait lorsqu'un produit "passe" en rupture de stock, il reste comptabilisé à la fois pour la catégorie et pour le fabricant. Il en est de même pour les sous-catégories et sous-fabricants.
En dehors d'une incohérence de quantités, il subsiste aussi le problème de l'affichage (selon le paramétrage choisi) de la catégorie ou du fabricant concerné si tous les produits d'une même catégorie ou d'un même fabricant sont en rupture de stock : dans ce cas la catégorie et/ou le fabricant concerné restera affiché même si l'on ne le désire pas !
Tout me porte à croire qu'il manque une condition dans les 2 requêtes de calcul de quantité/catégories et quantité/fabricant dans le fichier components/com_hikashop/views/category/view.html.php :
$database->setQuery('SELECT count(a.product_id) AS number_of_products,a.product_manufacturer_id as category_id FROM '.hikashop_table('product').' AS a WHERE a.product_published>0 AND a.product_parent_id=0 AND a.product_manufacturer_id IN ('.implode(',',$ids).') GROUP BY a.product_manufacturer_id');
et
$database->setQuery('SELECT count(a.product_id) AS number_of_products,a.category_id FROM '.hikashop_table('product_category').' AS a INNER JOIN '.hikashop_table('product').' AS b ON a.product_id=b.product_id AND b.product_published>0 AND b.product_parent_id=0 WHERE a.category_id IN ('.implode(',',$ids).') GROUP BY a.category_id');
Si on les remplace par les 2 nouvelles requêtes suivantes (avec la condition "AND product_quantity <>0" d'ajoutée), les quantité/catégories et quantité/fabricant deviennent cohérentes !
$database->setQuery('SELECT count(a.product_id) AS number_of_products,a.product_manufacturer_id as category_id FROM '.hikashop_table('product').' AS a WHERE a.product_published>0 AND a.product_quantity <>0 AND a.product_parent_id=0 AND a.product_manufacturer_id IN ('.implode(',',$ids).') GROUP BY a.product_manufacturer_id');
et
$database->setQuery('SELECT count(a.product_id) AS number_of_products,a.category_id FROM '.hikashop_table('product_category').' AS a INNER JOIN '.hikashop_table('product').' AS b ON a.product_id=b.product_id AND b.product_published>0 AND b.product_quantity <>0 AND b.product_parent_id=0 WHERE a.category_id IN ('.implode(',',$ids).') GROUP BY a.category_id');
J'ai testé et ça marche nickel !
Donc à vous de voir si vous souhaitez ajouter cette correction ou non à HikaShop, car comme vous le constatez, cette modification est vraiment mineure face à un problème non solutionnable via une gestion de filtre...