Skip to content

Commit 510f73b

Browse files
committed
Merge remote-tracking branch 'mage/fix/issue/38811' into AC-12119-v1
2 parents de4dfb8 + 1c931b9 commit 510f73b

File tree

2 files changed

+21
-6
lines changed

2 files changed

+21
-6
lines changed

app/code/Magento/InstantPurchase/Model/QuoteManagement/QuoteCreation.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,11 @@ public function createQuote(
5757
$quote->setCustomer($customer->getDataModel());
5858
$quote->setCustomerIsGuest(0);
5959
$quote->getShippingAddress()
60-
->importCustomerAddressData($shippingAddress->getDataModel());
60+
->importCustomerAddressData($shippingAddress->getDataModel())
61+
->setCollectShippingRates(true);
6162
$quote->getBillingAddress()
62-
->importCustomerAddressData($billingAddress->getDataModel());
63+
->importCustomerAddressData($billingAddress->getDataModel())
64+
->setCollectShippingRates(true);
6365
$quote->setInventoryProcessed(false);
6466
return $quote;
6567
}

app/code/Magento/InstantPurchase/Model/ShippingMethodChoose/CheapestMethodDeferredChooser.php

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,7 @@ class CheapestMethodDeferredChooser implements DeferredShippingMethodChooserInte
2020
*/
2121
public function choose(Address $address)
2222
{
23-
$address->setCollectShippingRates(true);
24-
$address->collectShippingRates();
25-
$shippingRates = $address->getAllShippingRates();
26-
23+
$shippingRates = $this->getShippingRates($address);
2724
if (empty($shippingRates)) {
2825
return null;
2926
}
@@ -32,6 +29,22 @@ public function choose(Address $address)
3229
return $cheapestRate->getCode();
3330
}
3431

32+
/**
33+
* Retrieves previously collected shipping rates or computes new ones.
34+
*
35+
* @param Address $address
36+
* @return Rate[]
37+
*/
38+
private function getShippingRates(Address $address) : array {
39+
if (!empty($shippingRates = $address->getAllShippingRates())) {
40+
// Favour previously collected rates over recomputing.
41+
return $shippingRates;
42+
}
43+
$address->setCollectShippingRates(true);
44+
$address->collectShippingRates();
45+
return $address->getAllShippingRates();
46+
}
47+
3548
/**
3649
* Selects shipping price with minimal price.
3750
*

0 commit comments

Comments
 (0)