/**
  * @param \Magento\Sales\Api\Data\OrderInterface $order
  */
 public function splitQty(\Magento\Sales\Api\Data\OrderInterface $order)
 {
     $storeId = $order->getStoreId();
     /* get stock ID for the store view */
     $stockId = $this->_manStock->getStockIdByStoreId($storeId);
     /** @var \Magento\Sales\Api\Data\OrderItemInterface[] $items */
     $items = $order->getItems();
     $itemsData = [];
     /** @var \Magento\Sales\Api\Data\OrderItemInterface $item */
     foreach ($items as $item) {
         $prodId = $item->getProductId();
         $itemId = $item->getItemId();
         /* qty of the product can be changed in invoice, but we use ordered only  */
         $qty = $item->getQtyOrdered();
         /* register sale item (fragment total qty by lots) */
         $itemData = $this->_manObj->create(\Praxigento\Warehouse\Service\QtyDistributor\Data\Item::class);
         $itemData->setItemId($itemId);
         $itemData->setProductId($prodId);
         $itemData->setQuantity($qty);
         $itemData->setStockId($stockId);
         $itemsData[] = $itemData;
     }
     $reqSale = $this->_manObj->create(\Praxigento\Warehouse\Service\QtyDistributor\Request\RegisterSale::class);
     $reqSale->setSaleItems($itemsData);
     $this->_callQtyDistributor->registerSale($reqSale);
 }
 /**
  * Save gift message for items of order
  *
  * @param \Magento\Sales\Api\Data\OrderInterface $order
  * @return \Magento\Sales\Api\Data\OrderInterface
  */
 protected function saveOrderItemGiftMessage(\Magento\Sales\Api\Data\OrderInterface $order)
 {
     if (null !== $order->getItems()) {
         /** @var \Magento\Sales\Api\Data\OrderItemInterface $orderItem */
         foreach ($order->getItems() as $orderItem) {
             if (null !== $orderItem->getExtensionAttributes() && null !== $orderItem->getExtensionAttributes()->getGiftMessage()) {
                 /* @var \Magento\GiftMessage\Api\Data\MessageInterface $giftMessage */
                 $giftMessage = $orderItem->getExtensionAttributes()->getGiftMessage();
                 try {
                     $this->giftMessageOrderItemRepository->save($order->getEntityId(), $orderItem->getItemId(), $giftMessage);
                 } catch (\Exception $e) {
                     throw new CouldNotSaveException(__('Could not add gift message to order\'s item: "%1"', $e->getMessage()), $e);
                 }
             }
         }
     }
     return $order;
 }
 /**
  * Get gift message for items of order
  *
  * @param \Magento\Sales\Api\Data\OrderInterface $order
  * @return \Magento\Sales\Api\Data\OrderInterface
  */
 protected function getOrderItemGiftMessage(\Magento\Sales\Api\Data\OrderInterface $order)
 {
     if (null !== $order->getItems()) {
         /** @var \Magento\Sales\Api\Data\OrderItemInterface $orderItem */
         foreach ($order->getItems() as $orderItem) {
             if ($orderItem->getExtensionAttributes() && $orderItem->getExtensionAttributes()->getGiftMessage()) {
                 continue;
             }
             try {
                 /* @var \Magento\GiftMessage\Api\Data\MessageInterface $giftMessage */
                 $giftMessage = $this->giftMessageOrderItemRepository->get($order->getEntityId(), $orderItem->getItemId());
             } catch (NoSuchEntityException $e) {
                 continue;
             }
             /** @var \Magento\Sales\Api\Data\OrderItemExtension $orderItemExtension */
             $orderItemExtension = $this->orderItemExtensionFactory->create();
             $orderItemExtension->setGiftMessage($giftMessage);
             $orderItem->setExtensionAttributes($orderItemExtension);
         }
     }
     return $order;
 }
 /**
  * @param \Magento\Sales\Api\Data\OrderInterface $order
  * @return \Praxigento\Pv\Service\Sale\Data\Item[]
  */
 public function getServiceItemsForMageSaleOrder(\Magento\Sales\Api\Data\OrderInterface $order)
 {
     $result = [];
     $storeId = $order->getStoreId();
     /* get stock ID for the store view */
     $stockId = $this->_manStock->getStockIdByStoreId($storeId);
     /** @var \Magento\Sales\Api\Data\OrderItemInterface[] $items */
     $items = $order->getItems();
     /** @var \Magento\Sales\Api\Data\OrderItemInterface $item */
     foreach ($items as $item) {
         $itemData = $this->getServiceItemForMageItem($item, $stockId);
         $result[] = $itemData;
     }
     return $result;
 }
 /**
  * Returns list of line items in the cart
  *
  * @return \Magento\Sales\Api\Data\OrderItemInterface[]
  */
 public function getItems()
 {
     return $this->order->getItems();
 }