contacts_events-8.x-1.x-dev/src/EventSubscriber/TransactionSubscriber.php
src/EventSubscriber/TransactionSubscriber.php
<?php
namespace Drupal\contacts_events\EventSubscriber;
use Drupal\bookkeeping\Event\OrderTransactionEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
/**
* Subscriber for transaction posting events.
*/
class TransactionSubscriber implements EventSubscriberInterface {
/**
* {@inheritdoc}
*/
public static function getSubscribedEvents() {
$events[OrderTransactionEvent::EVENT] = ['excludeStatefulOrderItems'];
return $events;
}
/**
* Exclude stateful order items from the values for order transactions.
*
* Stateful order items are posted directly in response to their state
* being changed.
*
* @param \Drupal\bookkeeping\Event\OrderTransactionEvent $event
* The transaction event.
*/
public function excludeStatefulOrderItems(OrderTransactionEvent $event) {
$order = $event->getOrder();
if ($order->bundle() === 'contacts_booking') {
// @todo This will NOT work if we add non stateless order items to
// bookings. We don't currently have this scenario in place, so this is
// fine for now.
$event->prevent();
}
}
}
