THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

Rejoignez la communauté sur le Discord Thelia : https://discord.gg/YgwpYEE3y3

Offline


Bonjour,

Je voudrais pouvoir appliquer une remise dans ma table cart. Le problème c'est que je n'arrive pas à appliquer une remise avec ce code.

public function ApplyDiscount(CartEvent $event)
    {
        $cart= $event->getCart();
        $cart->setDiscount(100);
    }

Mon deuxième problème est que j'ai essayé d'appliquer directement depuis la table une remise. Sur le coup ça fonctionne mais dès que je change quelques chose dans mon panier (et que le prix change donc), le champs discount se remet à 0. Auriez-vous une solution pour ça ou devrais-je appliquer ma remise directement sur ma commande plutôt que sur mon panier ?

Last edited by ronanaupetit (07-01-2016 10:01:29)

Offline


J'apporte la solution que j'ai adopté :

         $this->request
                ->getSession()
                ->getSessionCart($event->getDispatcher())
                ->setDiscount($discount)
                ->save();

par contre j'ai du commenté trois lignes dans le core dans "Thelia/Action/Coupon.php"

          //  TheliaEvents::CART_ADDITEM => array("updateOrderDiscount", 10),
          //  TheliaEvents::CART_UPDATEITEM => array("updateOrderDiscount", 10),
          // TheliaEvents::CART_DELETEITEM => array("updateOrderDiscount", 10),

Sinon à l'interception de ces événements, le discount du panier était remis à 0.

Offline


Dans Thelia, le principe c'est de déclarer un listener, qui est invoqué lorsqu'un événement est propagé.

Au lieu de modifier le core, tu peux tout à fait intercepter l'événement en declarant un listener avec une priorité supérieure , mettre ta remise en place, et arreter la propagation de l'événement si nécessaire.


OpenStudio Toulouse

Offline


Oui mais je ne souhaite pas arrêter la propagation de ces events sachant qu'ils me sont utiles ailleurs. Je souhaite juste faire en sorte que la méthode "updateOrderDiscount" ne soit pas appelée.

Offline


Alors Il te suffit d'indiquer une priorité juste inférieure, genre 5, et de replacer le discount dans le cart.


OpenStudio Toulouse

Offline


Ah oui en effet c'est tout bête ! Pour le coup je savais pas à quoi correspondait le nombre après la méthode. Merci Roadster, je me coucherais moins bête ce soir grâce à toi encore !

Offline