La mise en place d’une règle de promotion Magento de type « x achetés y gratuits » est plutôt fastidieuse et pas forcément claire.
( Note : Sur la version 1.4.1.1 de Magento, il y a un problème lorsqu’on souhaite créer une règle de type 1 acheté 1 offert , nous verrons plus loin comment corriger ce comportement. )
Voici un exemple sur comment configurer une règle de ce type sur l’exemple suivant :
Pour l’achat de 2 téléphone Nokia 2610 , un 3ème téléphone Nokia 2610 sera offert 🙂 ( Pour 4 => 2 , ect… )
Pour commencer il faut se rendre dans « Promotions / Règles de prix Panier » puis cliquer sur « Ajouter une nouvelle règle »
Voici ensuite ce que nous allons saisir dans l’onglet « Informations règle »
- La règle s’applique à l’ensemble des sites web
- La règle s’applique à l’ensemble des groupes clients
- Le code pour utiliser le coupon est « TEL »
- Pas de limites d’utilisation du coupon
- Pas de limites d’utilisation par client
Dans l’onglet « Conditions » nous ne mettons rien car il n’y a pas de restrictions.
L’essentiel de la configuration va se réaliser dans l’onglet « Actions »
- Dans le type de promotion Choisir » X achetés, Y gratuits »
- Le champ « Remise » correspond au Y de la promotion, il faut donc saisir le nombre de produit que l’on souhaite offrir. ( Dans notre cas 1 )
- Le nombre de fois que cette promotion doit s’appliquer, laisser 0 pour que la règle s’applique indéfiniment. ( Dans notre cas » 2 achetés, 1 gratuit » : les règles suivantes s’appliquent 2 => 1 , 4 => 2 , 6 => 3 … )
- Quantité qu’il faut acheter pour obtenir la remise ( Dans notre cas 2 )
- Sélection du produit pour lequel la règle doit s’appliquer, on se base sur son code produit (SKU). ( Dans notre cas la référence du produit est n2610 )
Sauvegardez votre règle et testez sur votre front office.
- Ajouter 3 téléphone 2610 à votre panier
- Saisissez le code « TEL »
- Pour 2 téléphones achetés, 1 téléphone est bien offert 🙂
Correction pour la création d’un règle de type 1 acheté / 1 offert sous Magento 1.4.1.1
En tentant d’appliquer une règle de type 1 acheté / 1 offert sous la version 1.4.1.1 j’ai constaté que cela ne fonctionnait pas.
Après analyse du code, il s’avère que cette fonctionnalité n’est pas disponible de base.
Voici comment le corriger.
Pour commencer enregistrez une copie du fichier app/code/core/Mage/SalesRule/Model/Validator.php dans le pool local ( » app/code/local/Mage/SalesRule/Model/Validator.php »);
Le traitement de la règle est géré dans la fonction « Process » dans le case « buy_x_get_y » (lignes 319 à 338 )
Voici le code de base
case 'buy_x_get_y': $x = $rule->getDiscountStep(); $y = $rule->getDiscountAmount(); if (!$x || $y>=$x) { break; } $buy = 0; $free = 0; while ($buy+$free<$qty) { $buy += $x; if ($buy+$free>=$qty) { break; } $free += min($y, $qty-$buy-$free); if ($buy+$free>=$qty) { break; } } $discountAmount = $free*$itemPrice; $baseDiscountAmount= $free*$baseItemPrice; break; |
Comme vous pouvez le constater, la validation vérifie que la quantité y est supérieure ou égale à x
La règle 1 acheté => 1 offert ne fonctionne donc pas.
Pour corriger le comportement on va donc modifier la condition pour que la validation vérifie que la quantité y est strictement supérieure à x
Voici donc le code corrigé.
case 'buy_x_get_y': $x = $rule->getDiscountStep(); $y = $rule->getDiscountAmount(); if (!$x || $y>$x) { // Ligne modifiée break; } $buy = 0; $free = 0; while ($buy+$free<$qty) { $buy += $x; if ($buy+$free>$qty) { //Ligne modifiée break; } $free += min($y, $qty-$buy-$free); if ($buy+$free>$qty) { //Ligne modifiée break; } } $discountAmount = $free*$itemPrice; $baseDiscountAmount= $free*$baseItemPrice; break; |
Une fois ces changement effectués, la règle 1 acheté => 1 offert est bien fonctionnelle
mai 20th, 2014
Bonjour,
Et si je souhaite faire l’offre 2 achetés (sur n’importe quel produit) = 1 offert (le produit le moins cher sera offert), comment procéder ?
Merci
mai 21st, 2014
Bonjour Mous,
A ma connaissance ce type de promotion n’est pas possible nativement dans Magento.
Il vous sera certainement nécessaire de passer par un module spécifique.
mai 21st, 2014
Bonjour,
Merci Mous pour cette question !
En effet comment peut on appliquer la règle sur des produits différents
ex: 1 Produit A + 1 Produit B = 1 produit C offert
Merci
mai 21st, 2014
Bonjour Armelle,
Concernant votre demande la réponse est assez simple.
Ce n’est pas possible via une règle de ce type car elle est disponible uniquement pour 2 produits différents ( X et Y ) et vous souhaitez utiliser 3 produits.
Cependant dans le cadre d’une offre promotionnelle spécifique ( et avec des quantités fixes ) il est possible de configurer une offre de la manière suivante :


Conditions :
Actions :
Dans les conditions vous saissez les quantités de produits A et B nécessaire pour bénéficier de l’offre
Et dans les actions vous appliquer uniquement au produit souhaité.
De manière générale dès qu’on souhaite faire des promotions un peu spécifique avec Magento il est nécessaire d’acheter ou de développer des modules complémentaires.
juin 3rd, 2014
Bonjour,
Quel module permettrait cela ?
Merci
juin 3rd, 2014
Bonjour,
J’ai déjà repéré celui-ci qui à l’air assez complet : http://amasty.com/special-promotions-pro.html
Cependant je ne l’ai pas testé.
octobre 9th, 2014
Bonjour Hervé,
Est-t’il possible avec Magento de programmer un code réduction avec un plafond maximum en € ?
Sans limite de nombre de commandes passées, de quantités produits…
Merci
octobre 9th, 2014
Bonjour Sandy,
C’est en effet possible, pour cela il vous faut ajouter la condition suivante ( Onglet conditions )
Sous-total inférieur ou égal à xx ( xx étant votre montant en € )
Votre promotion ne s’appliquera dans qu’aux paniers qui on un montant inférieur au plafond souhaité.
octobre 9th, 2014
Merci Hervé,
Après test, je me suis aperçu que pour l’utilisation du même code, le plafond (€) s’applique sur 1 commande et non sur plusieurs commandes. Est-il possible d’y lier encore une nouvelle condition ?
Et autre petite question, dans l’onglet « générer les codes… » est t-il possible d’importer un fichier CSV pour uploader les codes et donc non les générer… ?
Merci!
octobre 10th, 2014
Quelle est votre version de Magento ?
A priori je ne vois pas pourquoi le plafond s’appliquerait uniquement à la première commande.
Concernant l’import de codes Csv, cela dépends de votre version mais j’aurais tendance à penser que non de base.
( Ce genre de modifications est en général réalisable via des développements spécifiques )
octobre 10th, 2014
Magento ver. 1.9.0.1 !
Le plafond s’applique sur un paiement/commande et non sur un ensemble de paiements/commandes. Le but de l’opération étant de faire bénéficier d’une remise sur le long terme sans deadline.
Je pense aussi que l’import de code promo n’est pas prévu sur le Magento.
octobre 10th, 2014
Votre cas n’est pas possible dans les règles de promotions basiques.
Il serait donc nécessaire d’acheter des modules complémentaires qui permettent plus de conditions.
Comme évoqué plus haut dans les commentaires, celui-ci me semble pas mal : http://amasty.com/special-promotions-pro.html
octobre 10th, 2014
Merci pour votre aide !
novembre 21st, 2014
bonjour
sur megento, est il possible de crée un code de réduction pour avoir un produits gratuit a partir d’un montant d’achat défini?