Skip to content

Commit 162fe2d

Browse files
committed
Merge remote-tracking branch 'trigger/MAGETWO-95483' into BugFixPR
2 parents f61272c + 0e03dab commit 162fe2d

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

app/code/Magento/Checkout/Plugin/Model/Quote/ResetQuoteAddresses.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,11 @@
1515
class ResetQuoteAddresses
1616
{
1717
/**
18+
* Clears the quote addresses when all the items are removed from the cart
19+
*
1820
* @param Quote $quote
1921
* @param Quote $result
2022
* @param mixed $itemId
21-
*
2223
* @return Quote
2324
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
2425
*/
@@ -28,6 +29,10 @@ public function afterRemoveItem(Quote $quote, Quote $result, $itemId): Quote
2829
foreach ($result->getAllAddresses() as $address) {
2930
$result->removeAddress($address->getId());
3031
}
32+
$extensionAttributes = $result->getExtensionAttributes();
33+
if (!$result->isVirtual() && $extensionAttributes && $extensionAttributes->getShippingAssignments()) {
34+
$extensionAttributes->setShippingAssignments([]);
35+
}
3136
}
3237

3338
return $result;

dev/tests/integration/testsuite/Magento/Checkout/Plugin/Model/Quote/ResetQuoteAddressesTest.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,15 @@ public function testAfterRemoveItem(): void
5252
$cart = Bootstrap::getObjectManager()->create(Cart::class);
5353

5454
$activeQuote = $cart->getQuote();
55+
// Dummy data is still persisted here. This is sufficient to check that it is removed
56+
$activeQuote->getExtensionAttributes()->setShippingAssignments(['test']);
57+
5558
$cart->removeItem($activeQuote->getAllVisibleItems()[0]->getId());
5659
$cart->save();
5760

61+
// Check that the shipping assignments were also unset
62+
$this->assertEmpty($activeQuote->getExtensionAttributes()->getShippingAssignments());
63+
5864
/** @var Quote $quote */
5965
$quote = Bootstrap::getObjectManager()->create(Quote::class);
6066
$quote->load('test_order_with_virtual_product', 'reserved_order_id');

0 commit comments

Comments
 (0)