Ajouter automatiquement un produit cadeau au panier

  • De le 29 septembre 2009
  • Difficulté : 3/4

Ajouter automatiquement un produit cadeau au panier Cette extension permet d'ajouter automatiquement au panier un produit cadeau (gratuit) si le montant de la commande dépasse un certain seuil. L'ajout du cadeau peut être associé à un code promo.

L'extension (FreeGift) repose exclusivement sur l'utilisation des observers. Le produit cadeau est susceptible d'être ajouté ou supprimé lorsqu'une action engendre la modification du montant total de la commande :

  • Ajout d'un produit au panier
  • Suppression d'un produit
  • Mise à jour des quantités

Certains événements ne sont pas implémentés par défaut dans Magento. Une surcharge du contrôleur est indispensable pour ajouter ces événements.

Le cadeau est un produit "classique" associé à aucune catégorie et dont le prix est nul. Il dispose d'une fiche visible sur le frontend mais ne peut être ajouté directement au panier. Le bouton "ajouter au panier" ne figure pas sur la fiche. La quantité du produit sur la page panier ne peut être modifiée.

Le client peut bénéficier du cadeau uniquement s'il saisit un coupon de réduction (optionnel). Le coupon doit exister dans les règles de prix panier.

Produit offert

Afin d'éviter tout problème, le produit est systématiquement supprimé lorsqu'une action se produit. Si le panier remplit toutes les conditions le cadeau est alors ajouté :

app/code/local/Magentix/FreeGift/Model/Observer.php

<?php

class Magentix_FreeGift_Model_Observer {

        /* ... */

        public function add_gift() {
                if($this->_gift) {

                        /* Calcul du montant total du panier */
                        $this->getQuote()->collectTotals();

                        /* Suppression du cadeau s'il existe dans le panier */
                        $this->remove_item();

                        /* Ajout du cadeau si les conditions sont remplies */
                        if($this->getCartTotal() > $this->_amount && $this->getCoupon()) {
                                $this->_getCart()->addProductsByIds(array($this->_gift))->save();
                        }
                }
        }

        public function remove_item() {
                foreach ($this->getQuote()->getAllItems() as $item) {
                        if($item->getProductId() == $this->_gift) { $this->_getCart()->removeItem($item->getId())->save(); }
                }
        }

        /* ... */
}

3 paramètres sont à renseigner depuis le menu configuration de l'administration (Système > Configuration > Ventes > Cadeau offert) :

  • Le montant minimum de la commande pour bénéficier de l'offre
  • L'ID du produit à ajouter
  • Un coupon de réduction associé (optionnel)
Paramètres

Le module peut être modifié et amélioré ;)

21 commentaires

Commentez cet article : Ajouter automatiquement un produit cadeau au panier

Ternisien Le 30/06/2010 à 12:34
Je le test de suite.
En te remerciant!
Axel
Commentaire #1
Guillaume Escande Le 02/07/2010 à 14:23
Ce module est excellent, la seule chose que je regrette c'est que la remise n'est pas bien mise en valeur dans le total du panier comme une remise classique.

SI tu connais une méthode pour rajouter ?
Commentaire #2
Thomas Le 20/08/2010 à 15:57
Ça serait au poil, si le client pouvait choisir son cadeau dans une liste.

Mais bon boulot, quand même.
Commentaire #3
Ludo Le 26/08/2010 à 15:33
Bonjour,

Bravo pour ce module, j'aimerais savoir si c'est possible d'ajouter plusieurs offres? Car je ne vois qu'un encart.

Merci d'avance.
Commentaire #4
Alexis Le 24/02/2011 à 10:47
Bonjour,

Très beau module, j'aurai voulu savoir ce qu'il faut rentrer dans le champ "coupon", l'ID du coupon, le nom de la règle?
Je n'arrive pas à faire marcher cette partie pour le moment.
Commentaire #5
elodie Le 08/03/2011 à 15:35
Bonjour,

J'ai transféré les fichiers sur mon ftp, le menu cadeau offert apparait bien, mais lorqueje clique dessus, la page devient blanche. Cela peut venir d'ou? Est ce que ce module est compatible avec la version 1.3 de Magento?

Merci
Commentaire #6
Magentix Le 08/03/2011 à 15:39
Bonjour,

Il faudrait visualiser dans les reports de Magento l'erreur générée (/var/report/)
Commentaire #7
elodie Le 08/03/2011 à 15:57
Merci pour la réponse.
Il n'y a pas d'erreur générée apparemment (rien dans le report).

Mais seul le bloc permettant de choisir le magasin d'application (en haut à gauche) apparait ainsi que le menu du haut.
le menu "configuration" disparait et la page de contenu est toute blanche...
Commentaire #8
elodie Le 08/03/2011 à 22:18
Problème réglé.
Par contre, depuis que j'ai uploader les fichiers, ma page panier saute (page blanche) hormis le menu de droite qui me permet tout de même de voir le contenu de mon panier. L'article ajouté est bien ajouté mais pas l'article cadeau. Cela peut venir de quoi?
Commentaire #9
Alex Le 21/03/2011 à 21:04
Bonjour,

J'aime bien l'idée puisque je songais à ajouter un module semblable a mon site. Toutefois il manque me manquerais quelques fonctionalités tel ques:

- Possibilité d'ajoutés plusieur règles de cadeaux. (Par example, 5$, 10$, 20$, chacun avec leur cadeau respectif, avec choix à plus d'un cadeau au total)

- Possibilité d'ajoutés plus d'un produit si une règles est atteint qui serait selectionable par le client au frontend.

Si l'auteur ou un codeur php/magento est disponible, je serait prêt à faire une donation de quelques dollars pour obtenir ces fonctionalités.

Bon travail et merci de me contactez à l'addresse suivante si quelqu'un serait volontaire: ewinz87 (at) gmail (dot) com

Bonne journée à tous!
Commentaire #10
Arnaud Le 30/03/2011 à 14:20
Bonjour,

J'ai quasiment le même problème qu'elodie, quand je clique sur Système > Configuration > Ventes > Cadeau offert, je n'ai plus le menu de gauche (sauf le choix de ma vue Magasin) et j'a une page quasi blanche puisque j'ai "Accès refusé".

Pas d'erreur générée :/

elodie, comment as-tu corrigé ton soucis ?

Merci d'avance pour votre aide !
Commentaire #11
Arnaud Le 30/03/2011 à 14:23
Et au passage, j'ai aussi le soucis de la page panier qui ne s'affiche pas :/

Je suis sur une version 1.3.
Commentaire #12
Antoine Le 26/04/2011 à 01:06
Excellent module tout simple qui répond parfaitement à ma problématique. Dommage que magento ne gère pas par défaut ce type de règle qui me semble assez basique...
Pour répondre à Arnaud concernant le problème de Elodie, il suffit juste de se déconnecter et se reconnecter à l'admin pour que la page s'affiche.
Commentaire #13
Amina Le 29/04/2011 à 11:42
Bonjour,
Pourriez-vous m'expliquer comment faire pour installer ce module?
Merci
Commentaire #14
jeremie dejonghe Le 10/05/2011 à 10:00
Bonjour, comment peut on simplement ajouter un message (success) lors de l'ajout du cadeau offert. exemple :
votre cadeau a été ajouté au panier.
Merci encore pour ce petit module.
Commentaire #15
Pepper Le 28/07/2011 à 15:19
Superbe extension signée Magentix ! Merci !
Evidemment, il y a un petit mais... (désolé)
Le module fonctionnait nickel sur une 1.3.3, et puis j'ai upgradé sur une 1.4.1 et là, ô surprise, le cadeau n'apparaît qu'une fois sur deux lors de l'ajout de produits au panier !
En clair, premier ajout au panier de x exemplaires de l'article P, il apparaît...
Ajout de y exemplaires de l'article Q, il n'apparaît plus ! Mais il réapparaît alors si on force la mise à jour du panier.
Ajout de z exemplaires de l'article R, il apparaît...
Et ainsi de suite...
Je vais essayer de trouver là où ça coince, mais ça risque d'être coton si c'est une question d'événement système !
Encore merci en tout cas pour ce module indispensable !
Commentaire #16
DArwin59 Le 15/09/2011 à 14:53
Merci pour ce très bon module.
Juste un bug sous Magento 1.5.0.1 lorsque q'un code promo est ajouté le cadeau disparaît du panier automatiquement !!! :-(
Commentaire #17
Aurélien Le 09/12/2011 à 17:16
Pour ma part, j'ai eu un bug quand on clique deux fois d'affilé sur mise à jour dans le panier. Le cadeau était une fois sur 2 dans le panier. Voici ma solution

public function add_gift() {

if($this->_gift) {
$this->getQuote()->collectTotals();

$this->remove_item();

if($this->getCartTotal() > $this->_amount ) {
$this->_getCart()->addProductsByIds(array($this->_gift))->save();
}
$this->getQuote()->collectTotals();
}
}
Commentaire #18
tarek Le 02/04/2012 à 14:50
Bonjour,
une petite question a vous posé s'il vous plais.
pour le panier de Magento si par exemple:
pour l'achat d'un téléphone j'offre un kit gratuit ou a 1 € (un prix que j'ai forcé dans l'Observer).
par la suite le client veut remettre un autre kit (sans le téléphone) dans le panier, donc avec son vrai prix.
au final je trouve les deux kit au même prix (original/forcé) tout dépend du quel j'ai mis en dernier.
y a t il un moyen de mettre deux fois un produit dans le panier mais en donnant a chacun un prix différent .
Merci
Commentaire #19
Fabrice Le 18/08/2012 à 23:17
Une extension bien sympathique. Je suis du meme avis qu'Alex, pouvoir faire un cadeau different en fonction du montant du panier serait plus que chouette.
Merci
Commentaire #20
Joe Le 09/02/2013 à 17:33
Bonjour,

Est-ce que ce module est compatible avec la version 1.7 ?
Commentaire #21
Rédiger un commentaire

Code de sécurité

* champs obligatoires