ResetQuoteAddresses.php 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. declare(strict_types=1);
  7. namespace Magento\Checkout\Plugin\Model\Quote;
  8. use Magento\Quote\Model\Quote;
  9. /**
  10. * Clear quote addresses after all items were removed.
  11. */
  12. class ResetQuoteAddresses
  13. {
  14. /**
  15. * Clears the quote addresses when all the items are removed from the cart
  16. *
  17. * @param Quote $quote
  18. * @param Quote $result
  19. * @param mixed $itemId
  20. * @return Quote
  21. * @SuppressWarnings(PHPMD.UnusedFormalParameter)
  22. */
  23. public function afterRemoveItem(Quote $quote, Quote $result, $itemId): Quote
  24. {
  25. if (empty($result->getAllVisibleItems())) {
  26. foreach ($result->getAllAddresses() as $address) {
  27. $result->removeAddress($address->getId());
  28. }
  29. $extensionAttributes = $result->getExtensionAttributes();
  30. if (!$result->isVirtual() && $extensionAttributes && $extensionAttributes->getShippingAssignments()) {
  31. $extensionAttributes->setShippingAssignments([]);
  32. }
  33. }
  34. return $result;
  35. }
  36. }