vendor/cio-sw6/promotional-office-api/src/Subscriber/OrderSubscriber.php line 27

Open in your IDE?
  1. <?php
  2. namespace CioPromotionalOfficeApi\Subscriber;
  3. use CioPromotionalOfficeApi\CioPromotionalOfficeApi;
  4. use Shopware\Core\Checkout\Cart\Event\CheckoutOrderPlacedEvent;
  5. use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria;
  6. use Symfony\Component\DependencyInjection\ContainerInterface;
  7. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  8. class OrderSubscriber implements EventSubscriberInterface
  9. {
  10.     private ContainerInterface $container;
  11.     public function __construct(ContainerInterface $container)
  12.     {
  13.         $this->container $container;
  14.     }
  15.     public static function getSubscribedEvents(): array
  16.     {
  17.         return [
  18.             CheckoutOrderPlacedEvent::class => 'onCheckoutOrderPlaced'
  19.         ];
  20.     }
  21.     public function onCheckoutOrderPlaced(CheckoutOrderPlacedEvent $event)
  22.     {
  23.         $order $event->getOrder();
  24.         $customerCustomFields $order->getOrderCustomer()->getCustomer()->getCustomFields();
  25.         $customerGroupCustomFields $this->container->get('customer_group.repository')->search(new Criteria([$order->getOrderCustomer()->getCustomer()->getGroupId()]), $event->getContext())->first()->getCustomFields();
  26.         $orderCustomFields $order->getCustomFields();
  27.         if (isset($customerCustomFields[CioPromotionalOfficeApi::FIELDNAME_CUSTOMER_DEBITOR])) {
  28.             $orderCustomFields[CioPromotionalOfficeApi::FIELDNAME_ORDER_DEBITOR] = $customerCustomFields[CioPromotionalOfficeApi::FIELDNAME_CUSTOMER_DEBITOR];
  29.         } else if (isset($customerGroupCustomFields[CioPromotionalOfficeApi::FIELDNAME_CUSTOMER_GROUP_DEBITOR])) {
  30.             $orderCustomFields[CioPromotionalOfficeApi::FIELDNAME_ORDER_DEBITOR] = $customerGroupCustomFields[CioPromotionalOfficeApi::FIELDNAME_CUSTOMER_GROUP_DEBITOR];
  31.         } else {
  32.             $orderCustomFields[CioPromotionalOfficeApi::FIELDNAME_ORDER_DEBITOR] = $this->container->get('Shopware\Core\System\SystemConfig\SystemConfigService')->get('CioPromotionalOfficeApi.config.defaultDebitorNumber'$event->getSalesChannelId());;
  33.         }
  34.         $this->container->get('order.repository')->update([
  35.             [
  36.                 'id' => $order->getId(),
  37.                 'customFields' => $orderCustomFields
  38.             ]
  39.         ], $event->getContext());
  40.     }
  41. }