Major Posted March 22, 2009 Share Posted March 22, 2009 Bonjour à tous,Il y a 10 jours j'ai ouvert dans le bug tracker un rapport de bug lié aux produits personnalisés :Quand on supprime du panier un produit personnalisé, la quantité de tous les produits non personnalisables présents dans le panier est décrémentée de 1.(entrée n°1549 du bug tracker)Ce qui m'étonne c'est que je suis le seul a avoir signalé ce bug.S'il est bien réel, tous ceux qui utilisent la fonctionnalité de personnalisation des produits ont forcément le même problème.Je remercie d'avance les âmes de bonne volonté de la communauté de me dire ce qu'il en est :* si vous ne reproduisez pas le bug.* si vous constatez un comportement analogue (et dans ce cas, éventuellement, enrichir le rapport de bug déjà ouvert avec votre scénario pour faire avancer le schmilblick ...) Link to comment Share on other sites More sharing options...
Patric Posted March 22, 2009 Share Posted March 22, 2009 Bug toujours présent sur la dernière SVN (608). Link to comment Share on other sites More sharing options...
Major Posted March 26, 2009 Author Share Posted March 26, 2009 Pour information destinée notamment aux utilisateurs de la fonctionnalité de personnalisation des produits (par image ou texte), voici un scenario qui illustre les problèmes liés aux produits personnalisés (SVN 632) :1. Ajouter au panier :* 1 exemplaire d'un produit personnalisé C1* 2 exemplaires d'un autre produit personnalisé C2* 1 exemplaire d'un produit non personnalisable N1* 2 exemplaires d'un autre produit non personnalisable N2(voir capture d'écran “bug_custom_001.png”)2. Supprimer C1 du panier :* C1 disparaît du panier : OK* Les 2 exemplaires de C2 sont toujours présents : OK* La quantité de N1 est décrémentée de 1 (quantité de N1 = 0) : KO* La quantité de N2 est décrémentée de 1 (quantité de N2 = 1) : KO(voir capture d'écran “bug_custom_002.png”)3. Supprimer un des deux exemplaires de C2 du panier (bouton ”-”) :* C2 disparaît complètement du panier (alors qu'il devrait en rester 1 exemplaire) : KO* La quantité de N1 est maintenant de 2147483647 : KO* La quantité de N2 est maintenant de 2147483647 : KO(voir capture d'écran “bug_custom_003.png”)Ce scenario a été ajouté au rapport de bug n°1549. Link to comment Share on other sites More sharing options...
StoreCommander Posted April 2, 2009 Share Posted April 2, 2009 Bonjourj'avais envoyé ceci à la PS team, je ne sais pas si c'est modifié dans le svn :pour supprimer un produit si on vient de supprimer customisation et qté=0 (comportement normal il me semble, de plus si on laisse le produit avec qté=0, le shipping cost n'est pas recalculé, le panier devient faux)/classes/Cart.phpCHERCHER public function deleteProduct($id_product, $id_product_attribute = NULL, $id_customization = NULL) REMPLACER return $this->_deleteCustomization(intval($id_customization)); PAR $this->_deleteCustomization(intval($id_customization)); Pour supprimer une personnalisation, le champ est mal nommé, ça ne supprime pas :/modules/blockcart/ajax-cart.jsDANS remove : function(idProduct, idCombination, customizationId){ CHERCHER data: 'ajax=true' + ((customizationId && customizationId != null) ? '&deleteCustomizableProduct;=' + customizationId + '&add&op;=down' : '&delete;')..... REMPLACER PAR data: 'ajax=true' + ((customizationId && customizationId != null) ? '&id;_customization=' + customizationId + '&add&op;=down' : '&delete;') Link to comment Share on other sites More sharing options...
StoreCommander Posted April 2, 2009 Share Posted April 2, 2009 Et aussi :La suppression d'un produit personnalisé réduit la quantité de tous les produits pour tous les clients !CHERCHER /classes/Cart.php private function _deleteCustomization($id_customization) { if (!$result = Db::getInstance()->getRow('SELECT `quantity` FROM `'._DB_PREFIX_.'customization` WHERE `id_customization` = '.intval($id_customization)) OR !Db::getInstance()->Execute('UPDATE `'._DB_PREFIX_.'cart_product` SET `quantity` = `quantity` - '.intval($result['quantity']))) return false; return Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'customization` WHERE `id_customization` = '.intval($id_customization)); } REMPLACER PAR private function _deleteCustomization($id_product, $id_customization, $id_product_attribute=NULL) { if (!$result = Db::getInstance()->getRow('SELECT `quantity` FROM `'._DB_PREFIX_.'customization` WHERE `id_customization` = '.intval($id_customization)) OR !Db::getInstance()->Execute('UPDATE `'._DB_PREFIX_.'cart_product` SET `quantity` = `quantity` - '.intval($result['quantity']).' WHERE `id_product`='.intval($id_product).' AND `id_cart` = '.intval($this->id).' AND `id_product_attribute` = '.($id_product_attribute != NULL ? intval($id_product_attribute) : '\'\''))) return false; return Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'customization` WHERE `id_customization` = '.intval($id_customization)); } CHERCHER if (intval($id_customization) AND intval($quantity) < 1) return $this->_deleteCustomization(intval($id_customization)); REMPLACER PAR if (intval($id_customization) AND intval($quantity) < 1) return $this->_deleteCustomization($id_product,intval($id_customization),$id_product_attribute); CHERCHER public function deleteProduct($id_product, $id_product_attribute = NULL, $id_customization = NULL) { if (intval($id_customization)) return $this->_deleteCustomization(intval($id_customization)); REMPLACER PAR public function deleteProduct($id_product, $id_product_attribute = NULL, $id_customization = NULL) { if (intval($id_customization)){ $this->_deleteCustomization($id_product,intval($id_customization),$id_product_attribute); } Link to comment Share on other sites More sharing options...
Major Posted April 2, 2009 Author Share Posted April 2, 2009 Merci beaucoup, Vincent, d'avoir partagé ces infos.Je vais tout de suite essayer d'appliquer ces modifs.Et en espérant également que cela aide la team à tordre de cou à ce bug une fois pour toute Link to comment Share on other sites More sharing options...
Major Posted April 2, 2009 Author Share Posted April 2, 2009 C'est du tout bon !En adaptant légèrement les modifications proposées par Vincent au code de ma SVN (632), j'ai pu constater que le bug est bien corrigé.Merci Vincent Link to comment Share on other sites More sharing options...
Major Posted April 5, 2009 Author Share Posted April 5, 2009 Voici les modifications apportées au fichier cart.php sur ma version de Prestashop (SVN 687) :NOTE : Sur cette version de Prestashop, cart.php est LE SEUL fichier que j'ai eu à modifier.1/ Rechercher : private function _updateCustomizationQuantity($quantity, $id_customization, $id_product, $id_product_attribute, $operator = 'up') Ligne 416, remplacer : return $this->_deleteCustomization(intval($id_customization)); par : return $this->_deleteCustomization($id_product,intval($id_customization),$id_product_attribute); 2/ Rechercher : public function deleteProduct($id_product, $id_product_attribute = NULL, $id_customization = NULL) Ligne 495, remplacer : return $this->_deleteCustomization(intval($id_customization)) AND $this->deleteProduct(intval($id_product), $id_product_attribute, NULL); par : $this->_deleteCustomization($id_product,intval($id_customization),$id_product_attribute) AND $this->deleteProduct(intval($id_product), NULL, $id_product_attribute); 3/ Rechercher : private function _deleteCustomization($id_customization) Lignes 515 à 519, remplacer : private function _deleteCustomization($id_customization) { if (!$result = Db::getInstance()->getRow('SELECT `quantity` FROM `'._DB_PREFIX_.'customization` WHERE `id_customization` = '.intval($id_customization)) OR !Db::getInstance()->Execute('UPDATE `'._DB_PREFIX_.'cart_product` SET `quantity` = `quantity` - '.intval($result['quantity']))) return false; par : private function _deleteCustomization($id_product, $id_customization, $id_product_attribute=NULL) { if (!$result = Db::getInstance()->getRow('SELECT `quantity` FROM `'._DB_PREFIX_.'customization` WHERE `id_customization` = '.intval($id_customization)) OR !Db::getInstance()->Execute('UPDATE `'._DB_PREFIX_.'cart_product` SET `quantity` = `quantity` - '.intval($result['quantity']).' WHERE `id_product`='.intval($id_product).' AND `id_cart` = '.intval($this->id).' AND `id_product_attribute` = '.($id_product_attribute != NULL ? intval($id_product_attribute) : '\'\''))) return false; Link to comment Share on other sites More sharing options...
Camille Frisch Posted July 9, 2010 Share Posted July 9, 2010 Ce bug a t il été corrigé depuis ? Dans la 1.3.1 ?Dans la 1.2.5 ?C'est tres important de savoir quelles versions sont impactées, merci.mika Link to comment Share on other sites More sharing options...
Yoya Posted July 9, 2010 Share Posted July 9, 2010 Hello,sur un post de "Publié : 05 Avril 2009 07:35 PM", plus d'un an après, faut espérer hésites pas à tester et à répondre par toi meme.A bientot,Pierre. Link to comment Share on other sites More sharing options...
Camille Frisch Posted July 9, 2010 Share Posted July 9, 2010 Je ne suis pas familier avec le bugtracker, mais pour moi l'issue est toujours ouvertehttp://www.prestashop.com/bug_tracker/view/1549/Je pose la question pour savoir dans quelle version de presta cela à été corrigée, si cela à été corrigé.Je bosse sur un module de personnalisation, c'est vital de savoir a partir de quand le bug a été (si) corrigé.et je me vois mal testé sur toutes les versions de presta ... Link to comment Share on other sites More sharing options...
Camille Frisch Posted July 9, 2010 Share Posted July 9, 2010 Bonsoirj'avais lu les commentaires du bug un peu en travers : Hi Major!Thank you that some much detailed bug report.That was a huge issue. (I’m still asking myself how I missed it before)I just fixed it winkBest regards,PS: and thanks to PShopExpert for finding the source and even suggesting a fix.By Matthieu Biart on 06 Avr 2009 at 09:50 (UTC+1) Sur la 1.2.5, cela semble en effet corrigé (pas testé pour le pb a partir du blockcart)J'avais eu un probleme avec l'affichage de quantité 2147483647, mais ca doit etre autre chose.Merci pour ta réponsemika 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