/**
  * Get gift message for order
  *
  * @param \Magento\Sales\Api\Data\OrderInterface $order
  * @return \Magento\Sales\Api\Data\OrderInterface
  */
 protected function getOrderGiftMessage(\Magento\Sales\Api\Data\OrderInterface $order)
 {
     if ($order->getExtensionAttributes() && $order->getExtensionAttributes()->getGiftMessage()) {
         return $order;
     }
     try {
         /** @var \Magento\GiftMessage\Api\Data\MessageInterface $giftMessage */
         $giftMessage = $this->giftMessageOrderRepository->get($order->getEntityId());
     } catch (NoSuchEntityException $e) {
         return $order;
     }
     /** @var \Magento\Sales\Api\Data\OrderExtension $orderExtension */
     $orderExtension = $this->orderExtensionFactory->create();
     $orderExtension->setGiftMessage($giftMessage);
     $order->setExtensionAttributes($orderExtension);
     return $order;
 }
 /**
  * @param QuoteAddressToOrder $subject
  * @param OrderInterface $order
  * @return OrderInterface
  * @SuppressWarnings(PHPMD.UnusedFormalParameter)
  */
 public function afterConvert(QuoteAddressToOrder $subject, OrderInterface $order)
 {
     /** @var \Magento\Sales\Model\Order $order */
     $taxes = $this->quoteAddress->getAppliedTaxes();
     $extensionAttributes = $order->getExtensionAttributes();
     if ($extensionAttributes == null) {
         $extensionAttributes = $this->orderExtensionFactory->create();
     }
     if (!empty($taxes)) {
         $extensionAttributes->setAppliedTaxes($taxes);
         $extensionAttributes->setConvertingFromQuote(true);
     }
     $itemAppliedTaxes = $this->quoteAddress->getItemsAppliedTaxes();
     if (!empty($itemAppliedTaxes)) {
         $extensionAttributes->setItemAppliedTaxes($itemAppliedTaxes);
     }
     $order->setExtensionAttributes($extensionAttributes);
     return $order;
 }
 /**
  * @param OrderInterface $order
  * @return void
  */
 private function setShippingAssignments(OrderInterface $order)
 {
     /** @var OrderExtensionInterface $extensionAttributes */
     $extensionAttributes = $order->getExtensionAttributes();
     if ($extensionAttributes === null) {
         $extensionAttributes = $this->getOrderExtensionDependency();
     } elseif ($extensionAttributes->getShippingAssignments() !== null) {
         return;
     }
     /** @var ShippingAssignmentInterface $shippingAssignment */
     $shippingAssignments = $this->getShippingAssignmentBuilderDependency();
     $shippingAssignments->setOrderId($order->getEntityId());
     $extensionAttributes->setShippingAssignments($shippingAssignments->create());
     $order->setExtensionAttributes($extensionAttributes);
 }
 /**
  * @param QuoteAddressToOrder $subject
  * @param OrderInterface $order
  * @return OrderInterface
  * @SuppressWarnings(PHPMD.UnusedFormalParameter)
  */
 public function afterConvert(QuoteAddressToOrder $subject, OrderInterface $order)
 {
     /** @var \Magento\Sales\Model\Order $order */
     $taxes = $this->quoteAddress->getAppliedTaxes();
     $extensionAttributes = $order->getExtensionAttributes();
     if ($extensionAttributes == null) {
         $extensionAttributes = $this->orderExtensionFactory->create();
     }
     if (!empty($taxes)) {
         foreach ($taxes as $key => $tax) {
             $tax['extension_attributes']['rates'] = $tax['rates'];
             unset($tax['rates']);
             $taxes[$key] = $tax;
         }
         $extensionAttributes->setAppliedTaxes($taxes);
         $extensionAttributes->setConvertingFromQuote(true);
     }
     $itemAppliedTaxes = $this->quoteAddress->getItemsAppliedTaxes();
     $itemAppliedTaxesModified = [];
     if (!empty($itemAppliedTaxes)) {
         foreach ($itemAppliedTaxes as $key => $itemAppliedTaxItem) {
             if (is_array($itemAppliedTaxItem) && !empty($itemAppliedTaxItem)) {
                 foreach ($itemAppliedTaxItem as $itemAppliedTax) {
                     $itemAppliedTaxesModified[$key]['type'] = $itemAppliedTax['item_type'];
                     $itemAppliedTaxesModified[$key]['item_id'] = $itemAppliedTax['item_id'];
                     $itemAppliedTaxesModified[$key]['associated_item_id'] = $itemAppliedTax['associated_item_id'];
                     $itemAppliedTax['extension_attributes']['rates'] = $itemAppliedTax['rates'];
                     unset($itemAppliedTax['rates']);
                     $itemAppliedTaxesModified[$key]['applied_taxes'][] = $itemAppliedTax;
                 }
             }
         }
         $extensionAttributes->setItemAppliedTaxes($itemAppliedTaxesModified);
     }
     $order->setExtensionAttributes($extensionAttributes);
     return $order;
 }