THELIA Forum

Welcome to the THELIA support and discusssion forum

Offline


Bonjour,

Pour un type de client, je dois mettre la taxe à 0 au moment du paiement.

Voilà ce que j'ai fait pour voir si ma fonction qui modifie la taxe lors de l'événement ORDER_BEFORE_PAYMENT.

config:

    <services>
        <service id="tax.foreign.customer" class="MonModule\EventListeners\TaxForForeignCustomerListener" scope="request">
            <tag name="kernel.event_subscriber"/>
            <argument type="service" id="request" />
        </service>
    </services>

MonModule\EventListeners\TaxForForeignCustomerListener :

<?php
/*************************************************************************************/
/*      This file is part of the module MonModule for Thelia                      */
/*************************************************************************************/

namespace MonModule\EventListeners;

use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Thelia\Core\Event\Order\OrderEvent;
use Thelia\Core\Event\TheliaEvents;
use Thelia\Log\Tlog;

/**
 * Class TaxForForeignCustomerListener
 * @package MonModule
 * @author Gilles Lengy <gilles.lengy@artaban.fr>
 */
class TaxForForeignCustomerListener implements EventSubscriberInterface
{
    /**
     * @param OrderEvent $event
     */
    public function modifyTax( OrderEvent $event)
    {

        Tlog::debug('Event ORDER_BEFORE_PAYMENT : appel de la fonction modifyTax');


    }


    /**
     * @return array ( Note gl artaban 164 ???? )
     */
    public static function getSubscribedEvents()
    {
        return [
            TheliaEvents::ORDER_BEFORE_PAYMENT => [
                'modifyTax', 64
            ]
        ];
    }
}

Voilà.

Je ne vois pas mon log dans les logs ( réglage Niveau de logs : Débug )

Toute aide sera grandement appréciée.

Merci d'avance !

Offline


Tu travailles en mode dev ? Si non, tu as bien vidé les caches ?

Tu utilises un débugger ?

 <argument type="service" id="request" />

En fait non smile Il n'y a pas de constructeur ayant un argument dans ta classe. Mais ce n'est pas grave, ça marche quand même


OpenStudio Toulouse

Offline


Arf !!!! Je regarde ce soir pour le débugger.
Sinon, j'ai vidé les caches et je travallais en mode dev !
En gros, je reviens ici après avoir utilisé mon débugger ;-)

Offline


Bon, ben ça marche avec ce code :

....

use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Thelia\Core\Event\Order\OrderEvent;
use Thelia\Core\Event\TheliaEvents;
use Thelia\Core\HttpFoundation\Request;
use Thelia\Log\Tlog;

/**
 * Class TaxForForeignCustomerListener
 * @package MonModule
 * @author Gilles Lengy <gilles.lengy@artaban.fr>
 */
class TaxForForeignCustomerListener implements EventSubscriberInterface
{
    protected $request;

    public function __construct(Request $request)
    {
        $this->request = $request;
    }
    /**
     * @param OrderEvent $event
     */
    public function modifyTax( OrderEvent $event)
    {
        die('plop');

        Tlog::debug('Event ORDER_BEFORE_PAYMENT : appel de la fonction modifyTax');


    }
....

Un superbe "plop" s'affiche !