delighted Posted February 26, 2013 Share Posted February 26, 2013 (edited) Bonjour, Après avoir parcouru un nombre important de fil de discussion sur différent forum, je ne trouve pas solution à ma demande. D'avance, désolé si la discussion existe déjà... Prestashop 1.5.x Je mets en place un site de commande B2B pour lequel je souhaiterai pouvoir gérer les quantités de bases de commande pour chaque article. Si dans PS 1.5 on peut définir la quantité minimum, je souhaiterai surtout pouvoir ne proposer que la possibilité de commander par multiple de cette quantité minimum. Un exemple plus parlant : le produit "trucmuche" est vendu par 2,4,6,8..etc le produit "machinbidule" est vendu par 12,24,48...etc. L'idéal serait d'avoir un menu dropdown proposant les multiples et surtout qu'apparaisse le prix à l'unité (cette fonction de "drop" est possible sur d'autres logiciels comme virtuemart). La solution de création de déclinaisons (proposé par certains) est une solution que je ne souhaite pas étant donné qu'il faudrait les créer pour chaque produit (très fastidieux). Je suis peut être passé à côté du module qui permet cela, alors n'hésitez pas, et d'avance merci pour vos réponses... Fred Edited March 16, 2013 by delighted (see edit history) Link to comment Share on other sites More sharing options...
jeckyl Posted February 26, 2013 Share Posted February 26, 2013 Bonjour, peut être que ce module pourrait vous convenir : http://www.ilium.org/shop/product.php?id_product=15 Link to comment Share on other sites More sharing options...
delighted Posted March 7, 2013 Author Share Posted March 7, 2013 Bonjour, D'abord, je tenais à remercier jeckyl pour ces informations (et le reste !) mais malheureusement sa solution bien que très bien faite, ne réponds pas à ma demande particulière. A la lecture de nombreux sujet sur les forums, il apparaît qu'une des pistes se trouverai dans la définition de la variable "minimum_quantity" dans la fonction checkMinimalQuantity du product.js (thème actuel).... mais là j'avoue que mes connaissances en php et autre java sont beaucoup trop succinctes ! Si j'ai bien compris qu'il faut redéfinir cette fameuse variable avec la fonction php : reste d'une division (% minimal_quantity !=0)... un message en rouge peut donc prévenir que la quantité doit être un multiple, mais par contre rien n'empêche un client de mettre une valeur non divisible dans le champ "quantité" et de valider !! Il ne me manque pas grand-chose... pour le code dans product.js : if ($('#quantity_wanted').val() < minimal_quantity) devient if ($('#quantity_wanted').val() % minimal_quantity !=0) Link to comment Share on other sites More sharing options...
jeckyl Posted March 7, 2013 Share Posted March 7, 2013 Bonjour, Et pourquoi ne pas simplement dire que le produit est livré en x exemplaire comme un caisse de 6 bouteilles, ou un pack de 24 canettes ? Simple à faire, non ? Link to comment Share on other sites More sharing options...
delighted Posted March 7, 2013 Author Share Posted March 7, 2013 Re, Effectivement, il serait possible de vendre par lot mais voilà le prix affiché correspond au lot et non à l'unité (oui, le prix à l'unité est indiqué mais en petit !). c'est donc un souci de marketing ! Un exemple, j'ai des articles vendus par lot de 72, le prix à l'unité étant 1.50 or le prix afficher en gros et en rouge 108 € , mais il y a aussi des articles vendus simplement par 2 ... à 6.95 l'unité et donc affiché dans la page produit à 13.90 !! Voilà le pourquoi de ma demande... Link to comment Share on other sites More sharing options...
jeckyl Posted March 7, 2013 Share Posted March 7, 2013 Bonjour, cela n'est qu'un soucis de design et de css assez simple à corriger et moins contraignant que de mettre en place une modification de la gestion traditionnelle de Prestashop. 1 Link to comment Share on other sites More sharing options...
martinjean Posted March 15, 2013 Share Posted March 15, 2013 (edited) Bonjour, ci dessous une solution pour la version 1.4 Dans le product.js remplacer la line 624 (function checkMinimalQuantity) if ($('#quantity_wanted').val() < minimal_quantity) par if ($('#quantity_wanted').val() % minimal_quantity !=0) Ensuite il faut ajoutez le code qui suit dans la fonction preProcess() du CartController. if ((int)$idProductAttribute) $minimal_quantity = Attribute::getAttributeMinimalQty((int)$idProductAttribute); else $minimal_quantity = $producToAdd->minimal_quantity; if ($qty % $minimal_quantity != 0) { $this->errors[] = Tools::displayError('You can only only add this item to your cart with a quantity multiple of ').' '.$minimal_quantity; } cet ajout doit se faire après les lignes if (!sizeof($this->errors)) { if ($add AND $qty >= 0) { et avant les lignes /* Product addition to the cart */ if (!isset(self::$cart->id) OR !self::$cart->id) { Il faut adapter ce code pour la version 1.5 car le CartController a été ré-écrit depuis la 1.4. I'ajout sera dans la fonction processChangeProductInCart() du CartController, le mieux étant de faire un Override de la fonction. Edited March 15, 2013 by martinjean (see edit history) 2 Link to comment Share on other sites More sharing options...
martinjean Posted March 15, 2013 Share Posted March 15, 2013 (edited) Update, pour la version 1.5 Ajoutez le code qui suit dans la fonction processChangeProductInCart() du CartController // collisage par qte min if ((int)$this->id_product_attribute) $minimal_quantity = Attribute::getAttributeMinimalQty($this->id_product_attribute); else $minimal_quantity = $product->minimal_quantity; if ($this->qty % $minimal_quantity != 0) { $this->errors[] = Tools::displayError('You can only only add this item to your cart with a quantity multiple of ').' '.$minimal_quantity; } // fin col par qte min cet ajout doit se faire après les lignes // If no errors, process product addition if (!$this->errors && $mode == 'add') { et avant les lignes // Add cart if no cart found if (!$this->context->cart->id) { Edited March 15, 2013 by martinjean (see edit history) Link to comment Share on other sites More sharing options...
delighted Posted March 16, 2013 Author Share Posted March 16, 2013 Un grand merci à martinjean pour la modif du cartcontroller, cela fonctionne parfaitement (PS 1.5).... Le nec plus ultra sera de pouvoir mettre en place un menu type dropdown... Encore merci Link to comment Share on other sites More sharing options...
ander46 Posted June 15, 2013 Share Posted June 15, 2013 Por fin!! encontre la solución al problema que llevaba meses buscando.. una pena no saber francés, muchísimas gracias!! Finally! I found the solution to the problem that took months looking .. a shame not knowing French, thank you! Link to comment Share on other sites More sharing options...
Oron Posted June 15, 2013 Share Posted June 15, 2013 Por fin!! encontre la solución al problema que llevaba meses buscando.. una pena no saber francés, muchísimas gracias!! Finally! I found the solution to the problem that took months looking .. a shame not knowing French, thank you! Bonjour Traduction de notre ami Ander46 qui je suppose a poster dans ce forum pour nous remercier d'avoir trouver la solution sur le forum français. Enfin! J'ai trouvé la solution au problème qui a pris des mois à la recherche .. dommage de ne pas connaître le français, merci! 1 Link to comment Share on other sites More sharing options...
ander46 Posted June 15, 2013 Share Posted June 15, 2013 Bonjour Traduction de notre ami Ander46 qui je suppose a poster dans ce forum pour nous remercier d'avoir trouver la solution sur le forum français. Oui, c'est ça! Link to comment Share on other sites More sharing options...
calrou Posted October 7, 2013 Share Posted October 7, 2013 Bonjour,Je suis en version 1.5.5 et je suis intéressé par cette fonctionnalité.Que dois-je faire ?Faire la marche à suivre indiquée pour la 1.4 puis pour la 1.5 ?Ou j'ajoute seulement // collisage par qte min if ((int)$this->id_product_attribute) $minimal_quantity = Attribute::getAttributeMinimalQty($this->id_product_attribute); else $minimal_quantity = $product->minimal_quantity; if ($this->qty % $minimal_quantity != 0) { $this->errors[] = Tools::displayError('You can only only add this item to your cart with a quantity multiple of ').' '.$minimal_quantity; } // fin col par qte min Merci par avance, Link to comment Share on other sites More sharing options...
PierreLuc Posted November 12, 2013 Share Posted November 12, 2013 Merci beaucoup martinjean. Les articles ne peuvent effectivement n'être commandés que par multiples de conditionnement. Ce qui est très bien. Cela étant, sur la page "récapitulatif de la commande" un clic sur le "+" ou "-" n'agit plus et s'affiche le message 'You can only only add this item to your cart with a quantity multiple of '. Il est possible de modifier la quantité en pensant à cliquer dessus et la changeant, mais pas avec le "+" ou "-". Y a-t-il une solution à ce détail ? Avec celle-ci ce serait parfait ! Par ailleurs, j'ai un commentaire au sujet du panier : Celui-ci est inscrit avec le nombre d'articles unitaires de produits; Ne serait-il pas possible que le nombre inscrit dans le panier soit celui du nombre de références commandées ou en d'autres termes le nombre de lignes dans le panier ? C'est une approche plus réaliste en B2B. A vous lire si possible avec des solutions, merci bien. PierreLuc Link to comment Share on other sites More sharing options...
omhesgwsopmjg Posted January 31, 2014 Share Posted January 31, 2014 Bonjour, Merci pour cette solution mais j'aurais besoin de modifier le plus et moins comme PierreLuc. Est-ce que quelqu'un connaîtrait au moins le fichier où modifier ça ? Merci. Link to comment Share on other sites More sharing options...
deepxfan Posted October 8, 2014 Share Posted October 8, 2014 (edited) Bonjour, Merci pour cette solution qui fonctionne très bien! J'aurais cependant une question... Sur la page produit : - Comment modifier le code pour que lorsqu'on clique sur les boutons "+" et"-", la quantité minimale soit additionnée ou soustraite? Exemple : je vends par colis de 13 pièces. Lorsque je clique sur le bouton "+", j'ajoute 13. Soit 13+13 = 26. Si je clique encore sur le bouton "+", alors je sélectionne 26+13= 39 pièces... etc Idem pour la soustraction avec le bouton "-". Merci d'avance [Résolu] Je viens de trouver la solution. Dans le "product.js", il suffit de remplacer ces lignes : $('input[name=+fieldName+]').val(currentVal + 1).trigger('keyup'); $('input[name=+fieldName+]').val(currentVal - 1).trigger('keyup'); Par : $('input[name=+fieldName+]').val(currentVal + minimalQuantity).trigger('keyup'); $('input[name=+fieldName+]').val(currentVal - minimalQuantity).trigger('keyup'); Edited October 8, 2014 by deepxfan (see edit history) Link to comment Share on other sites More sharing options...
deepxfan Posted October 8, 2014 Share Posted October 8, 2014 Il ne me reste qu'une question : Lorsqu'on charge une page produit, celui-ci apparait par défaut avec la quantité minimum sélectionnée (dans mon cas "13"). Le message généré en js devrait alors être noir et le contour du champ bleu. Cependant le contour du champ de quantité est rouge et le texte aussi. Lorsque je retape manuellement 13 dans le champ, alors il s'affiche correctement : contour bleu, texte bleu. Idem lorsque j'ajoute un multiple de 13. Comment faire pour que par défaut le contour soit bleu ainsi que le texte? Merci Link to comment Share on other sites More sharing options...
jomcdonald Posted January 30, 2015 Share Posted January 30, 2015 $('input[name='+fieldName+']').val(currentVal + minimalQuantity).trigger('keyup'); $('input[name='+fieldName+']').val(currentVal - minimalQuantity).trigger('keyup'); Merci, fonctionne sous 1.6 par contre est'il possible de faire la même chose pour la page panier? Cordialement Link to comment Share on other sites More sharing options...
tougou93 Posted February 3, 2015 Share Posted February 3, 2015 $('input[name='+fieldName+']').val(currentVal + minimalQuantity).trigger('keyup'); $('input[name='+fieldName+']').val(currentVal - minimalQuantity).trigger('keyup'); Merci, fonctionne sous 1.6 par contre est'il possible de faire la même chose pour la page panier? Cordialement UP Ce code marche nickel! Par contre c'est vrai qu'une fois dans le panier, le client peut mettre la quantité qu'il veut... Des infos ? Link to comment Share on other sites More sharing options...
ander46 Posted February 4, 2015 Share Posted February 4, 2015 UP Ce code marche nickel! Par contre c'est vrai qu'une fois dans le panier, le client peut mettre la quantité qu'il veut... Des infos ? The solution to your problem is here: La solución a tu problema esta aquí: https://www.prestashop.com/forums/topic/228452-resolu-multiple-de-quantite-minimum/?p=1144311 Link to comment Share on other sites More sharing options...
jomcdonald Posted February 4, 2015 Share Posted February 4, 2015 The solution to your problem is here: La solución a tu problema esta aquí: https://www.prestashop.com/forums/topic/228452-resolu-multiple-de-quantite-minimum/?p=1144311 -> .js <- No.... Is not the solution Link to comment Share on other sites More sharing options...
natachaC Posted February 17, 2015 Share Posted February 17, 2015 Bonjour voici ce que j'ai fait pour que les boutons + - fonctionnent dans le panier en prenant en compte minimum.quantity (détourné de sa fontion première) dans shopping-cart-product-line.tpl ajout de {if $product.minimal_quantity > 0}<input type="hidden" value="{$product.minimal_quantity}" name="par_quantite_{$product.id_product}_{$product.id_product_attribute}{if isset($product.id_address_delivery)}_0_{$product.id_address_delivery|intval}{/if}" />{/if} environ ligne 60 juste avant <input type="hidden"... ensuite dans cart-summary.js fonction upQuantityajout de var qty upQuantity = function(id, qty) { var qty = $('input[name=par_quantite_'+id+']').val(); etc .. fonction downQuantityajout de var qty downQuantity = function(id, qty) { var val = $('input[name=quantity_'+id+']').val(); var newVal = val; var qty = $('input[name=par_quantite_'+id+']').val(); etc .. normalement ça fonctionne bon code Link to comment Share on other sites More sharing options...
deepxfan Posted February 17, 2015 Share Posted February 17, 2015 ça marche au poil! Merci beaucoup natachaC pour cette solution Peut être la solution à mon problème dans ce post Link to comment Share on other sites More sharing options...
jomcdonald Posted February 18, 2015 Share Posted February 18, 2015 Merci mais chez moi ça ne fonctionne pas j'ai toujours une erreur lorsque je clique sur le + du panier. Link to comment Share on other sites More sharing options...
natachaC Posted April 4, 2015 Share Posted April 4, 2015 (edited) Bonjour je rappelle que je travaille sur une 1.5.6 pour compéter le détournement de minimal_quantity en multiple de X modifiez le code qui suit dans la fonction processChangeProductInCart() du CartController // collisage par qte min if ((int)$this->id_product_attribute) $minimal_quantity = Attribute::getAttributeMinimalQty((int)$this->id_product_attribute); else $minimal_quantity = $product->minimal_quantity; if ($this->qty % $minimal_quantity != 0) { $this->errors[] = Tools::displayError('You can only add this quantity ('.$this->qty.') to your cart with a quantity multiple of '.$minimal_quantity); } // fin col par qte min et en prenant maintenant en compte les quantités mini par déclinaison il faut faire une petite modif dans la fonction getAttributeMinimalQty par défaut l'appel de Attribute::getAttributeMinimalQty retourne false -> if ($minimal_quantity > 1) return (int)$minimal_quantity; return false; donc dans le cas ou vous avez des attributs il faut overrider la fonction getAttributeMinimalQty de la classe Attributeet ajouter = car sinon on obtient une division par zéro if ($minimal_quantity >= 1) return (int)$minimal_quantity; return false; bon code Edited September 8, 2015 by natachaC (see edit history) Link to comment Share on other sites More sharing options...
Yannick MARET Posted April 13, 2015 Share Posted April 13, 2015 Bonjour natachaC, Je débute sur Prestashop 1.60.14 afin de créer ma boutique en ligne de vente de vins par carton de 6 bouteilles. J'ai pu lire ta solution mais je n'ai pas tout compris de part mon faible niveau en programmation. Ainsi serait il possible de me dire dans quel fichier, quelle ligne et quelles modifications faut il faire pour vendre par multiple de 6 tout en gardant le prix affiché de l'article à l'unité. Je pense que cela sera utile à beaucoup de personnes comme moi. Je te remercie d'avance. A bientôt! Link to comment Share on other sites More sharing options...
natachaC Posted April 13, 2015 Share Posted April 13, 2015 Bonjour Yannick ça va être difficile si vous ne savez pas coderje suis sur une 1.5 : pas dit que ça soit identique pour une 1.6 de plus je suis une agence Web et même si je post des solutions techniques je ne vais pas plus loin sinon je n'ai plus de travail bon code Link to comment Share on other sites More sharing options...
Dj esp@ce Posted May 2, 2015 Share Posted May 2, 2015 (edited) $('input[name='+fieldName+']').val(currentVal + minimalQuantity).trigger('keyup'); $('input[name='+fieldName+']').val(currentVal - minimalQuantity).trigger('keyup'); Merci, fonctionne sous 1.6 par contre est'il possible de faire la même chose pour la page panier? Cordialement Bonjour, je suis sur une 1.6 et cette modif ne fonctionne pas chez moi ! ça ajoute ou enlève toujours 1 unité alors que ma minimalQuantity est de 10 unités. (pas de message d'erreur pour autant) Tous mes produits ont des déclinaisons, peut-être en est-ce la cause ? Mais sinon tout le reste de la modification fonctionne bien... Si quelqu'un a une idée du problème..? merci par avance. EDIT : par contre votre modif pour le + et - dans le panier fonctionne bien natachaC J'ai donc simplement un problème sur le + et - dans la fiche article. Edited May 2, 2015 by Dj esp@ce (see edit history) Link to comment Share on other sites More sharing options...
natachaC Posted May 2, 2015 Share Posted May 2, 2015 Bonjour dans product le input de quantité doit ressembler à ça <input type="text" name="qty" id="quantity_wanted" class="text" value="{if isset($quantityBackup)}{$quantityBackup|intval}{else}{if $product->minimal_quantity > 1}{$product->minimal_quantity}{else}1{/if}{/if}" size="2" maxlength="3" {if $product->minimal_quantity > 1}onkeyup="checkMinimalQuantity({$product->minimal_quantity});"{/if} /> Link to comment Share on other sites More sharing options...
Dj esp@ce Posted May 3, 2015 Share Posted May 3, 2015 Bonjour et merci pour cette solution, cependant ça ne fonctionne pas.Je pense qu'on est tout proche... je comprend pas ou est l'erreur. Link to comment Share on other sites More sharing options...
bertiauxmarc Posted June 9, 2015 Share Posted June 9, 2015 bonjour j'ai suivi toute vos conversations très interressant si on veux vendre par multiple mais dans mon cas je pourrais vendre a la pièce également par exemple avec les bouteilles de vin par 6 j'aimerais que le 6 s'affiche dans la case produit par défaut et que j'ai la possibilité de réduire ou d'augmenté le nombre et pas forcement par multiple Link to comment Share on other sites More sharing options...
Eusebio100 Posted September 8, 2015 Share Posted September 8, 2015 Bonjour je rappelle que je travaille sur une 1.5.6 pour compéter le détournement de minimal_quantity en multiple de X // collisage par qte min if ((int)$this->id_product_attribute) $minimal_quantity = Attribute::getAttributeMinimalQty((int)$this->id_product_attribute); else $minimal_quantity = $product->minimal_quantity; if ($this->qty % $minimal_quantity != 0) { $this->errors[] = Tools::displayError('You can only add this quantity ('.$this->qty.') to your cart with a quantity multiple of '.$minimal_quantity); } // fin col par qte min et en prenant maintenant en compte les quantités mini par déclinaison il faut faire une petite modif dans la fonction getAttributeMinimalQty par défaut l'appel de Attribute::getAttributeMinimalQty retourne false -> if ($minimal_quantity > 1) return (int)$minimal_quantity; return false; donc dans le cas ou vous avez des attributs il faut overrider la fonction getAttributeMinimalQty de la classe Attribute et ajouter = car sinon on obtient une division par zéro if ($minimal_quantity >= 1) return (int)$minimal_quantity; return false; bon code Je ne sais pas où mettre ce code, vous nous expliquer s'il vous plaît. Link to comment Share on other sites More sharing options...
natachaC Posted September 8, 2015 Share Posted September 8, 2015 fonction processChangeProductInCart() du CartController fonction getAttributeMinimalQty de la classe Attribute Link to comment Share on other sites More sharing options...
Eusebio100 Posted September 8, 2015 Share Posted September 8, 2015 merci. Link to comment Share on other sites More sharing options...
Eusebio100 Posted September 8, 2015 Share Posted September 8, 2015 fonction processChangeProductInCart() du CartController fonction getAttributeMinimalQty de la classe Attribute Dans le résumé de panier je reçois une erreur lorsque je tente de mettre un certain nombre hors de portée, je voudrais traduire cette erreur pour le rendre plus facile à comprendre, mais ne peux pas trouver où traduire, des idées? Erreur de capture dans un produit qui est vendu en multiples de 100. Les captures mettent 90 et 110. Je ne comprends pas le français, cela est une traduction google, je présente mes excuses. Link to comment Share on other sites More sharing options...
natachaC Posted September 9, 2015 Share Posted September 9, 2015 ¡Holaque ha hecho de este cambio? https://www.prestashop.com/forums/topic/228452-resolu-multiple-de-quantite-minimum/page-2?do=findComment&comment=1969863 Link to comment Share on other sites More sharing options...
Eusebio100 Posted September 9, 2015 Share Posted September 9, 2015 (edited) ¡Hola que ha hecho de este cambio? https://www.prestashop.com/forums/topic/228452-resolu-multiple-de-quantite-minimum/page-2?do=findComment&comment=1969863 Ce que je l'ai fait: function upQuantity(id, qty) { var qty = $('input[name=par_quantite_' + id + ']').val(); if (typeof(qty) == 'undefined' || !qty) qty = 5; etc. function downQuantity(id, qty) { var val = $('input[name=quantity_' + id + ']').val(); var newVal = val; var qty = $('input[name=par_quantite_' + id + ']').val(); var newVal = val; if(typeof(qty) == 'undefined' || !qty) etc. {if !isset($customizedDatas.$productId.$productAttributeId) OR $quantityDisplayed > 0} {if $product.minimal_quantity > 0} <input type="hidden" value="{$product.minimal_quantity}" name="par_quantite_{$product.id_product}_{$product.id_product_attribute}{if isset($product.id_address_delivery)}_0_{$product.id_address_delivery|intval}{/if}" /> {/if} <input type="hidden" value="{if $quantityDisplayed == 0 AND isset($customizedDatas.$productId.$productAttributeId)}{$customizedDatas.$productId.$productAttributeId|@count}{else}{$product.cart_quantity-$quantityDisplayed}{/if}" name="quantity_{$product.id_product}_{$product.id_product_attribute}_{if $quantityDisplayed > 0}nocustom{else}0{/if}_{$product.id_address_delivery|intval}_hidden" /> <input size="2" type="text" autocomplete="off" class="cart_quantity_input form-control grey" value="{if $quantityDisplayed == 0 AND isset($customizedDatas.$productId.$productAttributeId)}{$customizedDatas.$productId.$productAttributeId|@count}{else}{$product.cart_quantity-$quantityDisplayed}{/if}" name="quantity_{$product.id_product}_{$product.id_product_attribute}_{if $quantityDisplayed > 0}nocustom{else}0{/if}_{$product.id_address_delivery|intval}" /> <div class="cart_quantity_button clearfix"> etc. Edited September 9, 2015 by Eusebio100 (see edit history) Link to comment Share on other sites More sharing options...
Turtle Wet Sports Posted September 24, 2015 Share Posted September 24, 2015 (edited) Un IMMENSE merci à Natacha C pour la simplicité et l'efficacité de ses solutions avec le code en cadeau (bon ok, il faut savoir ou le mettre ;-)) Ca fonctionne exactement comme je veux, version 1.6.1.1 ! EDIT : Le luxe absolu serait de le faire fonctionner AUSSI dans la page de création de commande (via le backoffice) J'ai trouvé que le fichier admin/theme/default/template/controllers/orders/form.tpl ouait un rôle, notemment dans les lignes qui concernent les boutons ajouter/supprimer un produit (lignes 179 à 186) : $('.increaseqty_product, .decreaseqty_product').live('click', function(e) { e.preventDefault(); var product = $(this).attr('rel').split('_'); var sign = ''; if ($(this).hasClass('decreaseqty_product')) sign = '-'; updateQty(product[0], product[1],product[2], sign+1); }); mais j'avoue que je ne sais pas trop quoi modifier pour que ça fonctionne..si quelqu'un peut m'éclairer.. Edited September 28, 2015 by Turtle Wet Sports (see edit history) Link to comment Share on other sites More sharing options...
François38 Posted August 24, 2016 Share Posted August 24, 2016 Bonjour, je suis sur une 1.6 et cette modif ne fonctionne pas chez moi ! ça ajoute ou enlève toujours 1 unité alors que ma minimalQuantity est de 10 unités. (pas de message d'erreur pour autant) Tous mes produits ont des déclinaisons, peut-être en est-ce la cause ? Mais sinon tout le reste de la modification fonctionne bien... Si quelqu'un a une idée du problème..? merci par avance. EDIT : par contre votre modif pour le + et - dans le panier fonctionne bien natachaC J'ai donc simplement un problème sur le + et - dans la fiche article. Bonjour, Un an après, j'en suis toujours au même point, je n'arrive pas à faire fonctionner les + et - de la fiche produit. Enfin si, ça fonctionne mais ça ajoute ou soustrait 1 unité comme par défaut. On dirait que la variable minimalQuantity est = 1 je ne comprends pas où elle est définie. En revanche dans le panier tout fonctionne bien les + et - ajoutent et soustraient bien 10 unités (dans mon cas ou ma quantité mini est de 10). Merci de votre aide. Link to comment Share on other sites More sharing options...
WillTaill Posted August 31, 2016 Share Posted August 31, 2016 Bonjour, Un an après, j'en suis toujours au même point, je n'arrive pas à faire fonctionner les + et - de la fiche produit. Enfin si, ça fonctionne mais ça ajoute ou soustrait 1 unité comme par défaut. On dirait que la variable minimalQuantity est = 1 je ne comprends pas où elle est définie. En revanche dans le panier tout fonctionne bien les + et - ajoutent et soustraient bien 10 unités (dans mon cas ou ma quantité mini est de 10). Merci de votre aide. Bonjour , je suis on ne peut plus dans la même situation que toi. tout va bien au niveau de la page panier mais dans la page produit impossible d'intégrer mon multiple d'article (designé dans le produit correspondant en back office). Une âme charitable pour nous aider svp? j'ai tout tenté à ma connaissance ( j'suis même allé explorer le code du productController, du product.tpl,..sans succès) la solution est forcément dans product.js dans cette maudite ligne : $('input[name=+fieldName+]').val(currentVal + minimalQuantity).trigger('keyup'); pour le moment l'attribut 'minimalQuantity' continue d'ajouter ou de soustraire "1" ... Link to comment Share on other sites More sharing options...
Coal_Sa Posted October 7, 2016 Share Posted October 7, 2016 Update, pour la version 1.5 Ajoutez le code qui suit dans la fonction processChangeProductInCart() du CartController // collisage par qte min if ((int)$this->id_product_attribute) $minimal_quantity = Attribute::getAttributeMinimalQty($this->id_product_attribute); else $minimal_quantity = $product->minimal_quantity; if ($this->qty % $minimal_quantity != 0) { $this->errors[] = Tools::displayError('You can only only add this item to your cart with a quantity multiple of ').' '.$minimal_quantity; } // fin col par qte min cet ajout doit se faire après les lignes // If no errors, process product addition if (!$this->errors && $mode == 'add') { et avant les lignes // Add cart if no cart found if (!$this->context->cart->id) { Bonjour, est ce que quelqu'un pourrais m'aider avec PS 1.6.1.5 ? J'essaye cette mod mais ca me fais une erreur avec les combinaisons. la mod marche bien, mais si j'essaye d'ajouter au panier un produit comportant une combinaison, j'ai cette erreur: Impossible to add the product to the cart. textStatus: 'parsererror' errorThrown: 'SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data' responseText: Fatal error: Uncaught DivisionByZeroError: Modulo by zero in /shop/controllers/front/CartController.php:279 Stack trace: #0 /shop/controllers/front/CartController.php(73): CartControllerCore->processChangeProductInCart() #1/shop/classes/controller/Controller.php(178): CartControllerCore->postProcess() #2 /shop/classes/Dispatcher.php(367): ControllerCore->run() #3 /shop/index.php(28): DispatcherCore->dispatch() #4 {main} thrown in /shop/controllers/front/CartController.php on line 279 Mon but est de forcer l'achat en multiples de la quantité minimale spécifiée dans la page quantité du produit. ca marche bien pour les produits sans combinaisons. Link to comment Share on other sites More sharing options...
Coal_Sa Posted October 7, 2016 Share Posted October 7, 2016 Bon je suis pas à l'aise avec php mais je pense que mon erreur venait de et en prenant maintenant en compte les quantités mini par déclinaison il faut faire une petite modif dans la fonction getAttributeMinimalQty par défaut l'appel de Attribute::getAttributeMinimalQty retourne false -> if ($minimal_quantity > 1) return (int)$minimal_quantity; return false; donc dans le cas ou vous avez des attributs il faut overrider la fonction getAttributeMinimalQty de la classe Attributeet ajouter = car sinon on obtient une division par zéro if ($minimal_quantity >= 1) return (int)$minimal_quantity; return false; bon code Link to comment Share on other sites More sharing options...
SNAInformatique Posted October 13, 2016 Share Posted October 13, 2016 Bonjour, Merci pour cette solution qui fonctionne très bien! J'aurais cependant une question... Sur la page produit : - Comment modifier le code pour que lorsqu'on clique sur les boutons "+" et"-", la quantité minimale soit additionnée ou soustraite? Exemple : je vends par colis de 13 pièces. Lorsque je clique sur le bouton "+", j'ajoute 13. Soit 13+13 = 26. Si je clique encore sur le bouton "+", alors je sélectionne 26+13= 39 pièces... etc Idem pour la soustraction avec le bouton "-". Merci d'avance [Résolu] Je viens de trouver la solution. Dans le "product.js", il suffit de remplacer ces lignes : $('input[name=+fieldName+]').val(currentVal + 1).trigger('keyup'); $('input[name=+fieldName+]').val(currentVal - 1).trigger('keyup'); Par : $('input[name=+fieldName+]').val(currentVal + minimalQuantity).trigger('keyup'); $('input[name=+fieldName+]').val(currentVal - minimalQuantity).trigger('keyup'); Bonjour, je travaille actuellement sur la boutique d'un client en version 1.6.0.9. Ce code ne fonctionne pas, je suis dans un contexte de déclinaisons et en multiboutique. Il semble en effet récupérer la quantité minimale du produit par défaut, mais pas celles définies dans les déclinaisons. Une idée? Link to comment Share on other sites More sharing options...
Coal_Sa Posted October 14, 2016 Share Posted October 14, 2016 La modification que j'utilise viens de ce thread: https://www.prestashop.com/forums/topic/228452-resolu-multiple-de-quantite-minimum/page-2 a voir dans mon cas je n'utilise pas les quantités minimum dans les déclinaisons car elles sont les mêmes que celles spécifiées dans mon produit. Si vous trouvez une solution je suis quand même intéressé Link to comment Share on other sites More sharing options...
DominiqueLeBrun Posted November 2, 2016 Share Posted November 2, 2016 Bonjour je suis aussi en 1.6.1.5 N'étant très doué en programmation je galère car je ne vois pas ou mettre les modifications conseillées plus haut Je n'ai pas de déclinaisons de produits je veux juste pouvoir avec les + et - incrémenter des multiples de la quantité minimale Merci d'avance Link to comment Share on other sites More sharing options...
DominiqueLeBrun Posted November 2, 2016 Share Posted November 2, 2016 Bonjour j'ai utilisé les conseils ci-dessus qui fonctionne sur la fiche produit mais pas dans le panier, pouvez vous m'aider? svp Merci Dans le "product.js", il suffit de remplacer ces lignes : $('input[name=+fieldName+]').val(currentVal + 1).trigger('keyup'); $('input[name=+fieldName+]').val(currentVal - 1).trigger('keyup'); Par : $('input[name=+fieldName+]').val(currentVal + minimalQuantity).trigger('keyup'); $('input[name=+fieldName+]').val(currentVal - minimalQuantity).trigger('keyup'); Link to comment Share on other sites More sharing options...
Coal_Sa Posted November 2, 2016 Share Posted November 2, 2016 est ce que vous avez essayé cette solution de natachaC ? : https://www.prestashop.com/forums/topic/228452-resolu-multiple-de-quantite-minimum/?p=1969863 Link to comment Share on other sites More sharing options...
DominiqueLeBrun Posted November 2, 2016 Share Posted November 2, 2016 Bonjour Coal_Sa, Merci pour votre réponse et votre aide Je vais regarder et tenter de comprendre le fonctionnement pour pouvoir l'appliquer Pas évident quand on n'est pas programmeur Je vous tiens au courant si vous le permettez Cdt Dominique Link to comment Share on other sites More sharing options...
Coal_Sa Posted November 2, 2016 Share Posted November 2, 2016 Très bien.. Je ne suis moi-même pas vraiment doué avec php Link to comment Share on other sites More sharing options...
DominiqueLeBrun Posted November 2, 2016 Share Posted November 2, 2016 merci effectivement on ne peut pas tout savoir Je viens de rajouter la ligne dans le fichier shopping-cart-product-line.tpl je regarde maintenant le cart-summary.js je marche sur des oeufs pas évident quand on ne maîtrise pas Link to comment Share on other sites More sharing options...
DominiqueLeBrun Posted November 2, 2016 Share Posted November 2, 2016 A la ligne 99 j'ai rajouté var qty var qty = $('input[name=quantity_'+ id +']').val($('input[name=quantity_'+ id +'_hidden]').val()); je ne trouve pas les autres lignes Link to comment Share on other sites More sharing options...
DominiqueLeBrun Posted November 2, 2016 Share Posted November 2, 2016 Re bonjour Quelqu'un pourrait il me dire s'il est possible dans les quantités minimales de mettre des chiffres non entiers, c'est à dire par exemple: 2,3 ou 8,8 , etc. Ceci est pour la vente de produits alimentaires ,viandes, charcuteries, etc. Merci pour votre aide Link to comment Share on other sites More sharing options...
pchan Posted February 13, 2017 Share Posted February 13, 2017 Bonjour, En appliquant tout cela sur un shop en développement, j'ai un petit soucis dans le récapitulatif du panier. Pour chaque article dans le panier, les boutons "+" et "-" augmente ou diminue la quantité affichée par le nombre "quantité minimale", sauf qu'il n'atteind plus zéro... Exemple, un article dont les quantités minimale est 2. Sur la page de l'article, j'en commande 4 (ok, puisque 4 est multiple de 2). Sur le details du panier, j'ai bien mon article avec 4 comme quantité affichée. En cliquant sur "-", il diminue la quantité affichée de 2 (= quantité minimale), il me reste donc 2 en quantité affichée. Si je clique a nouveau sur "-", il laisse 2 en quantité affichée (il devrait passer a zero), le total du panier passe à 0, mais comme la quantité affichée reste a 2, le produit n'est pas supprimé du panier.Est-ce que quelqu'un a une piste ? Link to comment Share on other sites More sharing options...
Zectania Posted June 21, 2017 Share Posted June 21, 2017 Bonjour à tous, Merci pour ce forum riche en informations. Je suis sur Prestashop 1.6.1.12 Voici ma problématique : Pour certaines catégories de produits disons par exemple "satiné" et "coton", je voudrais pouvoir préciser des minimum et des maximums pairs de nombre d'articles à commander comme : 4,6,8,10,12. mais ne rien modifier pour tous les autres catégories. Auriez-vous une idée? D'avance merci, Bonne journée à tous! Link to comment Share on other sites More sharing options...
Last-life Posted August 25, 2017 Share Posted August 25, 2017 Bonjour Je suis sur Prestashop 1.6.1.12 J'ai ajouté une case quantité sur chaque produit dans la liste de produits. Et je voudrais savoir si quelqu'un avais une solution pour faire la même chose dans product-list et ne pouvoir ajouter les produits uniquement que par multiple. Merci d'avance Link to comment Share on other sites More sharing options...
wom Posted May 18, 2018 Share Posted May 18, 2018 (edited) Bonjour, mai 2018, retour sur le multiple de quantité sur la version 1.7x, il y a t'il une chose dans le style ( photo joint ) j'aimerais éviter de ré ouvrir tout les produits et renseigner les valeurs lors du première import . un lien d'exemple de choses que vous avez réalisé ? Edited May 18, 2018 by wom ORTH (see edit history) Link to comment Share on other sites More sharing options...
Adrian Posted February 10, 2020 Share Posted February 10, 2020 Salut! Dans prestashop 1.7.4.3, cela ne fonctionne pas du tout. Lorsque vous mettez un montant minimum (par exemple) de 5, cela fonctionne correctement. Ignorer l'erreur "seulement des multiples de 5". Mais vendre des produits en vrac, dont je n'ai pas besoin de multiples, donne une erreur. Par exemple, en quantité minimale, j'indique 1 et lorsque j'ajoute 1 au panier, il est dit "Impossible d'ajouter au panier" Cela n'indique rien d'autre. J'ai également essayé de mettre 0 en quantité minimale mais cela suit la même erreur. Une idée? Désolé pour mon français, c'est de Google Translator. PD: Je ne sais pas si quelqu'un va répondre, ce message existe depuis longtemps. Link to comment Share on other sites More sharing options...
oncle Posted May 26, 2020 Share Posted May 26, 2020 Bonjour, ce code me donne une erreur lorsque l'article a des attributs et comme quantité minimum 1, quand il en a 2 ou plus il n'y a pas d'erreur. Parce que? (Google Traduction) // collisage par qte min if ((int)$this->id_product_attribute) $minimal_quantity = Attribute::getAttributeMinimalQty((int)$this->id_product_attribute); else $minimal_quantity = $product->minimal_quantity; if ($this->qty % $minimal_quantity != 0) { $this->errors[] = Tools::displayError('You can only add this quantity ('.$this->qty.') to your cart with a quantity multiple of '.$minimal_quantity); } // fin col par qte min Merci. Link to comment Share on other sites More sharing options...
Almost Fred Posted June 3, 2020 Share Posted June 3, 2020 On 5/26/2020 at 10:26 PM, oncle said: Bonjour, ce code me donne une erreur lorsque l'article a des attributs et comme quantité minimum 1, quand il en a 2 ou plus il n'y a pas d'erreur. Parce que? (Google Traduction) // collisage par qte min if ((int)$this->id_product_attribute) $minimal_quantity = Attribute::getAttributeMinimalQty((int)$this->id_product_attribute); else $minimal_quantity = $product->minimal_quantity; if ($this->qty % $minimal_quantity != 0) { $this->errors[] = Tools::displayError('You can only add this quantity ('.$this->qty.') to your cart with a quantity multiple of '.$minimal_quantity); } // fin col par qte min Merci. Bonjour, Dans quel fichier utilisez-vous ce code ? Link to comment Share on other sites More sharing options...
oncle Posted June 3, 2020 Share Posted June 3, 2020 Bonjour Almost Fred, je l'ai déjà résolu de cette façon. Merci de votre intérêt // Cantidad mínima por producto if ((int)$this->id_product_attribute) $minimal_quantity = Attribute::getAttributeMinimalQty($this->id_product_attribute); else $minimal_quantity = $product->minimal_quantity; if (($minimal_quantity>1) && ($this->qty % $minimal_quantity != 0)) { $this->errors[] = Tools::displayError('Solo puede agregar este artículo a su carrito con una cantidad múltiple de ').' '.$minimal_quantity; } // fin Cantidad mínima por producto 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