THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

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

Offline


Hello!

Dans l'un de mes modules je permets la génération d'une référence commande selon une fonction choisie.

Le hic, c'est que ça ne marche pas (ou Thelia repasse derrière).

TheliaEvents::ORDER_BEFORE_PAYMENT  => ['generateRef', 128],
public function generateRef(OrderEvent $event)
{
	$order = $event->getOrder();
	if(null != $order){
		$ref = OrderProcess::generateRef($order);
		$order->setRef($ref)
			->save();
	}
}

Le code est OK (depuis l'admin du module, je peux forcer de renommer de toutes les références commandes en exécutant ce code).

Pourtant l'event est bien déclenché APRES la création de la commande... (mais peut être qu'il est déclenché AVANT le POST_INSERT de la commande - qui génère la ref) ?

$placedOrder = $this->createOrder(
            $dispatcher,
            $event->getOrder(),
            $session->getCurrency(),
            $session->getLang(),
            $session->getSessionCart($dispatcher),
            $this->securityContext->getCustomerUser()
        );

        $dispatcher->dispatch(new OrderEvent($placedOrder), TheliaEvents::ORDER_BEFORE_PAYMENT);

Last edited by Elyos (12-04-2024 12:49:53)


Aide les autres, ils t'aideront en retour.

Offline


J'ai tenté ça :

OrderEvent::POST_INSERT  => ['generateRef', 128],

Mais pas mieux ^^'


Aide les autres, ils t'aideront en retour.

Offline


Bon en fait je mettais deux fois le même event pour deux fonctions différents... donc le dernier écrasé celui de generateRef...

Maintenant que c'est corrigé, je dois trouver comment lancer mon POST_INSERT après celui de thelia

public function postInsert(ConnectionInterface $con = null): void
{
	parent::postInsert($con);

	$this->setRef($this->generateRef())
		->setDisableVersioning(true)
		->save($con);
}

Aide les autres, ils t'aideront en retour.

Offline


Bon bah il suffisait d'utiliser le bon event :

TheliaEvents::ORDER_BEFORE_PAYMENT  => ['beforePayment', 256],

Aide les autres, ils t'aideront en retour.