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


CQFDev | Sites, boutiques, modules, développement et intégration pour Thelia 1 et 2

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 !