Jump to content

Bug Qté sur 1.5.3.1


Recommended Posts

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

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

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...