orderFactory = $orderFactory; $this->objectCopyService = $objectCopyService; $this->eventManager = $eventManager; $this->dataObjectHelper = $dataObjectHelper; } /** * @param Address $object * @param array $data * @return OrderInterface */ public function convert(Address $object, $data = []) { $orderData = $this->objectCopyService->getDataFromFieldset( 'sales_convert_quote_address', 'to_order', $object ); /** * @var $order \Magento\Sales\Model\Order */ $order = $this->orderFactory->create(); $this->dataObjectHelper->populateWithArray( $order, array_merge($orderData, $data), \Magento\Sales\Api\Data\OrderInterface::class ); $order->setStoreId($object->getQuote()->getStoreId()) ->setQuoteId($object->getQuote()->getId()) ->setIncrementId($object->getQuote()->getReservedOrderId()); $this->objectCopyService->copyFieldsetToTarget( 'sales_convert_quote', 'to_order', $object->getQuote(), $order ); $this->eventManager->dispatch( 'sales_convert_quote_to_order', ['order' => $order, 'quote' => $object->getQuote()] ); return $order; } }