cartRepository = $cartRepository; $this->checkoutSession = $checkoutSession; $this->addressRepository = $addressRepository; } /** * @param \Magento\Checkout\Controller\Cart $subject * @param \Magento\Framework\App\RequestInterface $request * @return void * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ public function beforeDispatch( \Magento\Checkout\Controller\Cart $subject, \Magento\Framework\App\RequestInterface $request ) { /** @var \Magento\Quote\Model\Quote $quote */ $quote = $this->checkoutSession->getQuote(); // Clear shipping addresses and item assignments after MultiShipping flow if ($quote->isMultipleShippingAddresses()) { foreach ($quote->getAllShippingAddresses() as $address) { $quote->removeAddress($address->getId()); } $shippingAddress = $quote->getShippingAddress(); $defaultShipping = $quote->getCustomer()->getDefaultShipping(); if ($defaultShipping) { $defaultCustomerAddress = $this->addressRepository->getById( $defaultShipping ); $shippingAddress->importCustomerAddressData($defaultCustomerAddress); } $this->cartRepository->save($quote); } } }