14 use Magento\Quote\Model\Quote\AddressFactory as QuoteAddressFactory;
57 private $quoteAddressFactory;
62 private $customerExtractor;
81 QuoteAddressFactory $quoteAddressFactory =
null,
90 $this->quoteAddressFactory = $quoteAddressFactory
92 $this->customerExtractor = $orderCustomerExtractor
99 public function create($orderId)
101 $order = $this->orderRepository->get($orderId);
102 if (
$order->getCustomerId()) {
104 __(
'This order already has associated customer account')
108 $customer = $this->customerExtractor->extract($orderId);
110 $filteredAddresses = [];
116 $customer->setAddresses($filteredAddresses);
118 $account = $this->accountManagement->createAccount(
$customer);
119 $order = $this->orderRepository->get($orderId);
120 $order->setCustomerId($account->getId());
121 $order->setCustomerIsGuest(0);
122 $this->orderRepository->save(
$order);
133 private function needToSaveAddress(
138 $orderAddress =
null;
140 $orderAddress =
$order->getBillingAddress();
142 $orderAddress =
$order->getShippingAddress();
145 $quoteAddressId = $orderAddress->getData(
'quote_address_id');
146 if ($quoteAddressId) {
148 $quote = $this->quoteAddressFactory->create()
149 ->load($quoteAddressId);
151 return (
bool)(int)
$quote->getData(
'save_in_address_book');
elseif(isset( $params[ 'redirect_parent']))
__construct(\Magento\Framework\DataObject\Copy $objectCopyService, \Magento\Customer\Api\AccountManagementInterface $accountManagement, \Magento\Customer\Api\Data\CustomerInterfaceFactory $customerFactory, \Magento\Customer\Api\Data\AddressInterfaceFactory $addressFactory, \Magento\Customer\Api\Data\RegionInterfaceFactory $regionFactory, \Magento\Sales\Api\OrderRepositoryInterface $orderRepository, QuoteAddressFactory $quoteAddressFactory=null, OrderCustomerExtractor $orderCustomerExtractor=null)