Atch Posted January 15, 2013 Share Posted January 15, 2013 Bonjour, Un petit bug constaté sur une installation fraiche 1.5.3.1 : Je cite coeos.pro qui a posté cela ( étrangement je ne retrouve plus le message) ----------------------------------------------------------------------------- sur la 1.5.3 il y a un truc que je ne comprend pas, l'ipod nano ne peut pas être mis dans le panier sur la page catégorie "ipods" : http://i.imm.io/SR1s.jpeg mais sur d'autres page "product-list" comme les fournisseurs on peut l'acheter : http://i.imm.io/SR1E.jpeg Vous avez une explications sur ce phénomène ? ----------------------------------------------------------------------------- J'ai découvert le même bug sur une 1.5.3.1 L'ipod Nano renvoit une quantité zéro sur le produit par défaut alors qu'il y en a 10. Mais pas suniquement sur la page catégorie, mais aussi sur les produits phares : Visible ici : Home ---> ipod nano à zéro : http://demo.atchworks.com/retro/ page catégorie ---> ipod shuffle à zéro : http://demo.atchworks.com/retro/3-musique-ipods Alors que ces deux produits sont cleans sur la page produit : http://demo.atchworks.com/retro/musique-ipods/1-ipod-nano.html http://demo.atchworks.com/retro/musique-ipods/2-ipod-shuffle.html Même problème avec le thème par défaut... et visible depuis la 1.5.3.1 (nickel sur 1.5.2 avec le même thème) Étrangement, ça n'impacte pas tous les produits... Si un gars de la team passe par là V++ Atch Link to comment Share on other sites More sharing options...
olea Posted January 15, 2013 Share Posted January 15, 2013 En 1.5.2, dans la methode Product::getProductProperties, on trouve le code if ($row['id_product_attribute']) { $row['quantity_all_versions'] = $row['quantity']; $row['quantity'] = Product::getQuantity( (int)$row['id_product'], $row['id_product_attribute'], isset($row['cache_is_pack']) ? $row['cache_is_pack'] : null ); } else $row['quantity'] = Product::getQuantity((int)$row['id_product']); En 1.5.3, ce code est devenu : if ($row['id_product_attribute']) $row['quantity_all_versions'] = Product::getQuantity( (int)$row['id_product'], 0, isset($row['cache_is_pack']) ? $row['cache_is_pack'] : null ); else $row['quantity'] = Product::getQuantity((int)$row['id_product']); Je suis incapable de dire quelle valeur doit être mise dans le champ quantity Link to comment Share on other sites More sharing options...
Atch Posted January 15, 2013 Author Share Posted January 15, 2013 merci Olea de t’être penché dessus si t'as envie de le poster sur la Forge ne te gêne pas. V++ Atch Link to comment Share on other sites More sharing options...
olea Posted January 15, 2013 Share Posted January 15, 2013 Problème identifié : 1/ Dans le code 1.5.3 ci-dessous, dans le cas d'un produit à attribut, l'index 'quantity' de la variable $row n'est pas mis à jour alors qu'elle l'était en 1.5.2. 2/ Si la requête SQL qui a généré le tableau des row ne demande pas la quantity, celle-ci reste donc à 0. 3/ C'est par exemple le cas avec la methode Product::getRandomSpecial, dont la requête sql ne cherche pas la colonne quantity Derrière la requete, le getProductProperties() est appelé, est met en cache certaines infos sur le produit, dont la quantity 4/ Si d'autres requêtes SQL remontent la quantity et appelle le getProductProperties(), cette quantity n'est pas exploité, puisque le cache conteant la valeur 0 est utilisé. => 2 corrections possibles: a/ ne pas mettre la quantity dans le cache b/ recalculer la quantity comme le faisait la 1.5.2 Link to comment Share on other sites More sharing options...
olea Posted January 15, 2013 Share Posted January 15, 2013 Hop, dans la forge : http://forge.prestashop.com/browse/PSCFV-7322 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now