local/modules/TracabilitePP/EventListeners/OrderEventListener.php line 34
<?php
namespace TracabilitePP\EventListeners;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Thelia\Core\Event\Order\GetStockUpdateOperationOnOrderStatusChangeEvent;
use Thelia\Core\Event\TheliaEvents;
use Thelia\Log\Tlog;
use TracabilitePP\Services\ProductLotService;
/**
* Class OrderEventListener
* @package TracabilitePP
* @author FrançoisCarfantan <f.carfantan@orange.fr>
*/
class OrderEventListener implements EventSubscriberInterface
{
protected ProductLotService $plService;
public function __construct(ProductLotService $plService)
{
$this->plService = $plService;
}
/**
* @inheritdoc
*/
public static function getSubscribedEvents()
{
return array(TheliaEvents::ORDER_GET_STOCK_UPDATE_OPERATION_ON_ORDER_STATUS_CHANGE => array('processOrderGetStockUpdateOperationOnOrderStatusChange',110));
}
public function processOrderGetStockUpdateOperationOnOrderStatusChange(GetStockUpdateOperationOnOrderStatusChangeEvent $event)
{
$status_before = $event->getOrder()->getStatusId();
$status_after = $event->getNewOrderStatus()->getId();
$order = $event->getOrder();
// Status 1 : non payé et 2: payé
if($status_before == 1 && $status_after == 2){
$this->plService->updateOnlineStock($order,1);
}
elseif($status_before == 2 && $status_after == 1){
$this->plService->updateOnlineStock($order,-1);
}
Tlog::getInstance()->addInfo("order status avant : ".$event->getOrder()->getStatusId());
Tlog::getInstance()->addInfo("order status apres : ".$event->getNewOrderStatus());
}
}