N'hésitez pas à me le signaler si nécessaire via le formulaire de contact.
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
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
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.
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
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.
Bonjour,
Quel module permettrait cela ?
Merci
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é.
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
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é.
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!
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 )
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.
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
Merci pour votre aide !
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?