Jump to content

N'autoriser les commandes que par quantités de multiples de 6


Recommended Posts

Bonjour,

 

J'ai déjà trouvé plusieurs topics à ce sujet, mais toujours pour les anciennes versions de Prestashop.

Je suis sur PS 1.6.08, et j'aimerai réaliser l'adaptation suivante :
 

Comment faire pour n'autoriser que les commandes dont la quantité du panier est un multiple de 6 ? Je gère une boutique de vins, et nous voulons ne faire que des conditionnements de colis par 6 bouteilles.
 

Par contre chaque colis peut contenir des bouteilles différentes. C-a-d que l'utilisateur peut faire une commande telle que :
 

3x bouteille A
2x bouteille B
1x bouteille C
 

...par exemple. Tant que le total de son panier soit un multiple de 6.
 

Quelqu'un pourrait m'aider avec ceci ?
 

Merci

Edited by neoweiter (see edit history)
Link to comment
Share on other sites

Bonjour,

 

J'ai déjà trouvé plusieurs topics à ce sujet, mais toujours pour les anciennes versions de Prestashop.

Je suis sur PS 1.6.08, et j'aimerai réaliser l'adaptation suivante :

 

Comment faire pour n'autoriser que les commandes dont la quantité du panier est un multiple de 6 ? Je gère une boutique de vins, et nous voulons ne faire que des conditionnements de colis par 6 bouteilles.

 

Par contre chaque colis peut contenir des bouteilles différentes. C-a-d que l'utilisateur peut faire une commande telle que :

 

3x bouteille A

2x bouteille B

1x bouteille C

 

...par exemple. Tant que le total de son panier soit un multiple de 6.

 

Quelqu'un pourrait m'aider avec ceci ?

 

Merci

En restant uniquement au niveau de l'affichage (fichier shopping-cart.tpl de votre thème) remplacer en fin de fichier le bloc concernant l'affichage du bouton "commander" par ceci:

	<div id="HOOK_SHOPPING_CART">{$HOOK_SHOPPING_CART}</div>
	<p class="cart_navigation clearfix">
		{if !$opc}
			{if !is_int($productNumber / 6)}
					<p class="alert alert-warning">{l s='Your shopping cart must contains a multiple of 6 products'}</p>
				{else}
				<a
					href="{if $back}{$link->getPageLink('order', true, NULL, 'step=1&back={$back}')|escape:'html':'UTF-8'}{else}{$link->getPageLink('order', true, NULL, 'step=1')|escape:'html':'UTF-8'}{/if}"
					class="button btn btn-default standard-checkout button-medium"
					title="{l s='Proceed to checkout'}">
					<span>{l s='Proceed to checkout'}<i class="icon-chevron-right right"></i></span>
				</a>
			{/if}
		{/if}
		<a
			href="{if (isset($smarty.server.HTTP_REFERER) && strstr($smarty.server.HTTP_REFERER, 'order.php')) || isset($smarty.server.HTTP_REFERER) && strstr($smarty.server.HTTP_REFERER, 'order-opc') || !isset($smarty.server.HTTP_REFERER)}{$link->getPageLink('index')}{else}{$smarty.server.HTTP_REFERER|escape:'html':'UTF-8'|secureReferrer}{/if}"
			class="button-exclusive btn btn-default"
			title="{l s='Continue shopping'}">
			<i class="icon-chevron-left"></i>{l s='Continue shopping'}
		</a>
	</p>

Tant que la quantité ne sera pas un multiple de 6 le bouton de commande n’apparaîtra pas (et donc le processus de commande sera impossible)

Une vérification en php serait nécessaire ainsi qu'une modif ajax si le client se contente d'augmenter la quantité dans le panier sans rafraichir la page, mais c'est déjà fonctionnel comme cela avec une modif de code minimum et non intrusive.

Si vous voulez rafraichir la page automatiquement lors du changement de quantités ouvrez le fichier cart-summary.js et remplacez les 3 

if (jsonData.refresh)
						location.reload();

par juste:

location.reload();

dans les fonctions upQuantity(), downQuantity() et deleteProductFromSummary()

Edited by Eolia (see edit history)
  • Like 1
Link to comment
Share on other sites

  • 5 months later...

Je relance un de mes ancien topic, car j'ai remarqué un petit bug dans le script proposé ci-dessus.

 

J'aimerai que le panier n'accepte que des commandes par 6 bouteilles. Le script fonctionne bien, mais autorise également si le total de tous les produits dans le panier = 6, ce que n'est pas bon.

 

 Il faut que chaque produit soit un multiple de 6

 

Quelqu'un pourrait m'aider pour optimiser ce script ?

		{if !is_int($productNumber / 6)}
		<p class="alert alert-warning">{l s='Le nombre de produits commandés doit être un multiple de 6'}</p>
		{/if}

vn.jpg

Link to comment
Share on other sites

Alors il faut faire différemment avec une boucle foreach sur chaque produit

 

La modif est un peu plus complexe.

 

Il y aurait peut être aussi moyen de forcer l'incrémentation du bouton Quantité de 6 en 6 en remplacant les valeurs de qty par 6 dans les fonctions upQuantity et downQuantity de cart-summary.js et en imposant une quantité minimum de 6 dans les pages produits

Link to comment
Share on other sites

Pourquoi ne pas tout simplement bloquer la quantité à 6 sur la page du produit et enlever la possibilité de modifier la quantité depuis le panier? Ou faire en sorte que le "+" rajoute 6 et le "-" enlève 6.Pour aider, voici un tuto que j'ai réalisé il y a quelques jours : https://www.prestashop.com/forums/topic/400543-tuto-remplacer-quantit%C3%A9-par-une-dur%C3%A9e/

Link to comment
Share on other sites

  • 2 weeks later...

C'est encore moi, pour une dernière petite question  :P

 

Comment faire pour n'appliquer le multiple de 6 qu'aux produits simples, sans prendre en compte les Packs  ?

{if !is_int($productNumber / 6)}
	<p class="alert alert-warning">{l s='Le nombre de produits commandés doit être un multiple de 6'}</p>
{/if}

Merci  à tous pour votre aide précieuse

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