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

commentaires

Commentez cet article : Ajouter automatiquement un produit cadeau au panier