Quantité maximale

Nous nous sommes intéressés à la structure du panier car nous ne souhaitions pas avoir le problème de duplication de produits à gérer.

En clair, le souci était que rien n’empêchait d’ajouter plusieurs fois le même produit dans le panier, ce qui est un peu inutile. En effet, si vous achetez « les recettes de mon grand-père » une fois, en théorie, vous n’avez pas besoin de l’acheter plusieurs fois.

Or, dans Prestashop natif, nous pouvons imposer un minimum de produits à acheter, mais pas un maximum. Du coup, le client pouvait se retrouver avec le même livre à télécharger plusieurs fois (et surtout à le régler plusieurs fois).

Et, même si nous n’avons pas « traversé des océans d’éternité » pour trouver la solution, des connaissances en anglais ont été nécessaires pour résoudre le problème.

Le lien vers le topic correspondant est là :  .

Au lieu d’acheter un énième module, quatre lignes de code ont réglé le problème.

Dans le fichier cart.php que vous trouverez dans prestashop/classes/Cart.php, nous avons modifié les lignes comme suit (ligne 975 chez nous):

if ((int)$quantity <= 0) {
return $this->deleteProduct($id_product, $id_product_attribute, (int)$id_customization);
} elseif (!$product->available_for_order || (Configuration::get(‘PS_CATALOG_MODE’) && !defined(‘_PS_ADMIN_DIR_’))) {
return false;
} elseif ($quantity >1) { //1 produit max par déclinaison autorisé
return false;
} else {

Ainsi que les lignes un peu plus bas contenues dans le paragraphe // Quantity for product pack
if (Pack::isPack($id_product)) {
$product_qty = Pack::getQuantity($id_product, $id_product_attribute);
}
$new_qty = (int)$result[‘quantity’] + (int)$quantity;
if ($new_qty >1) {//1 produit max par déclinaison autorisé
return false;}
$qty = ‘+ ‘.(int)$quantity;

Lorsque le client a déjà ajouté le produit dans son escarcelle, s’il essaie d’ajouter le même produit, un message d’erreur apparait. En revanche, s’il choisit un autre produit, il pourra l’ajouter car la limitation est imposée par produit et non par commande.

Attention, car si vous choisissez le livre avec différents formats, vous paierez pour chaque format :

par exemple :

« les recettes de mon grand-père » sont en epub, mobi, pdf

si vous ajoutez le livre en epub + le livre en mobi + le livre en pdf = 3 livres achetés.

On ne le dira jamais assez, regardez bien le récapitulatif pour vous assurer de ne régler que ce que vous souhaitez.

En cas de doute, n’hésitez pas à contacter votre libraire.