vendor/store.shopware.com/wexoshipping/src/Subscriber/OrderConverter.php line 40

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace Wexo\Shipping\Subscriber;
  3. use Shopware\Core\Checkout\Cart\Order\CartConvertedEvent;
  4. use Shopware\Core\Checkout\Cart\Order\Transformer\AddressTransformer;
  5. use Shopware\Core\System\SystemConfig\SystemConfigService;
  6. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  7. use Wexo\Shipping\Core\Checkout\Order\Exception\MissingShippingCommentException;
  8. use Wexo\Shipping\Core\Content\Cart\CartExtension;
  9. use Wexo\Shipping\Core\Content\Order\OrderExtension;
  10. /**
  11.  * Class OrderConverter
  12.  * @package Wexo\Shipping\Subscriber
  13.  */
  14. class OrderConverter implements EventSubscriberInterface
  15. {
  16.     private SystemConfigService $systemConfigService;
  17.     public function __construct(SystemConfigService $systemConfigService)
  18.     {
  19.         $this->systemConfigService $systemConfigService;
  20.     }
  21.     /**
  22.      * @return string[]
  23.      */
  24.     public static function getSubscribedEvents()
  25.     {
  26.         return [
  27.             CartConvertedEvent::class => 'addExtensionDataToOrder'
  28.         ];
  29.     }
  30.     /**
  31.      * @param CartConvertedEvent $event
  32.      * @throws \Exception
  33.      */
  34.     public function addExtensionDataToOrder(CartConvertedEvent $event): void
  35.     {
  36.         if (!$event->getCart()->hasExtension(CartExtension::KEY)) {
  37.             return;
  38.         }
  39.         $convertedCart $event->getConvertedCart();
  40.         /** @var CartExtension $cartExtension */
  41.         $cartExtension $event->getCart()->getExtension(CartExtension::KEY);
  42.         if ($cartExtension->parcelShop) {
  43.             if ($this->systemConfigService->getBool('WexoShipping.config.setParcelShopAsShippingAddress')) {
  44.                 foreach ($convertedCart['deliveries'] as $index => $delivery) {
  45.                     $delivery['shippingOrderAddress']['company'] = $cartExtension->parcelShop->getName();
  46.                     $delivery['shippingOrderAddress']['street'] = $cartExtension->parcelShop->getStreet();
  47.                     $delivery['shippingOrderAddress']['city'] = $cartExtension->parcelShop->getCity();
  48.                     $delivery['shippingOrderAddress']['zipcode'] = $cartExtension->parcelShop->getZipCode();
  49.                     $convertedCart['deliveries'][$index] = $delivery;
  50.                 }
  51.             }
  52.             if (!isset($convertedCart['addresses'])) {
  53.                 $activeBillingAddress $event->getSalesChannelContext()->getCustomer()->getActiveBillingAddress();
  54.                 $billingAddress AddressTransformer::transform($activeBillingAddress);
  55.                 $convertedCart['addresses'] = [$billingAddress];
  56.                 $convertedCart['billingAddressId'] = $billingAddress['id'];
  57.             }
  58.             $convertedCart[OrderExtension::PARCEL_SHOP_PROPERTY_NAME] = [
  59.                 'providerId' => $cartExtension->parcelShop->getProviderId(),
  60.                 'typeKey' => $cartExtension->parcelShop->getTypeKey(),
  61.                 'latitude' => $cartExtension->parcelShop->getLatitude(),
  62.                 'longitude' => $cartExtension->parcelShop->getLongitude(),
  63.                 'name' => $cartExtension->parcelShop->getName(),
  64.                 'street' => $cartExtension->parcelShop->getStreet(),
  65.                 'zipCode' => $cartExtension->parcelShop->getZipCode(),
  66.                 'countryCode' => $cartExtension->parcelShop->getCountryCode(),
  67.                 'city' => $cartExtension->parcelShop->getCity(),
  68.                 'note' => $cartExtension->parcelShop->getNote(),
  69.                 'telephone' => $cartExtension->parcelShop->getTelephone(),
  70.             ];
  71.         }
  72.         $shippingConfig $event->getSalesChannelContext()
  73.             ->getShippingMethod()
  74.             ->getExtension('shippingMethodConfig');
  75.         if ($cartExtension->shippingComment) {
  76.             $convertedCart[OrderExtension::SHIPPING_COMMENT_PROPERTY_NAME] = [
  77.                 'comment' => $cartExtension->shippingComment
  78.             ];
  79.         } elseif ($shippingConfig && $shippingConfig->getShippingCommentRequired()) {
  80.             throw new MissingShippingCommentException();
  81.         }
  82.         $event->setConvertedCart($convertedCart);
  83.     }
  84. }