Jump to content
delighted

[Résolu] Multiple De Quantité Minimum

Recommended Posts

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 by delighted (see edit history)

Share this post


Link to post
Share on other sites

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)

Share this post


Link to post
Share on other sites

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 ?

Share this post


Link to post
Share on other sites

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...

Share this post


Link to post
Share on other sites

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.

  • Like 1

Share this post


Link to post
Share on other sites

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 by martinjean (see edit history)
  • Like 2

Share this post


Link to post
Share on other sites

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 by martinjean (see edit history)

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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!

Share this post


Link to post
Share on other sites

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!

  • Like 1

Share this post


Link to post
Share on other sites

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!

Share this post


Link to post
Share on other sites

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,

Share this post


Link to post
Share on other sites

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

 

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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 by deepxfan (see edit history)

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
$('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

Share this post


Link to post
Share on other sites
$('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 ?

Share this post


Link to post
Share on other sites

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 upQuantity
ajout de var qty

upQuantity = function(id, qty)
{
	var qty = $('input[name=par_quantite_'+id+']').val();
etc ..

fonction downQuantity
ajout 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

Share this post


Link to post
Share on other sites

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 Attribute
et ajouter = car sinon on obtient une division par zéro

if ($minimal_quantity >= 1)    return (int)$minimal_quantity; return false;

bon code

Edited by natachaC (see edit history)

Share this post


Link to post
Share on other sites

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!

 

Share this post


Link to post
Share on other sites

Bonjour Yannick

ça va être difficile si vous ne savez pas coder
je 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

Share this post


Link to post
Share on other sites
$('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 by Dj esp@ce (see edit history)

Share this post


Link to post
Share on other sites

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} />

Share this post


Link to post
Share on other sites

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.


 

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

fonction processChangeProductInCart() du CartController

fonction getAttributeMinimalQty de la classe Attribute

Share this post


Link to post
Share on other sites

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.

post-334519-0-48297900-1441729218_thumb.jpg

post-334519-0-81156100-1441729220_thumb.jpg

Share this post


Link to post
Share on other sites

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 by Eusebio100 (see edit history)

Share this post


Link to post
Share on other sites

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 by Turtle Wet Sports (see edit history)

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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" ...

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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 Attribute
et ajouter = car sinon on obtient une division par zéro

if ($minimal_quantity >= 1)    return (int)$minimal_quantity; return false;

bon code

Share this post


Link to post
Share on other sites

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?

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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');

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

 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 ?

Share this post


Link to post
Share on other sites

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!

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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é ?

panier1.JPG

Edited by wom
ORTH (see edit history)

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More