18
18
use Magento \Quote \Api \Data \EstimateAddressInterface ;
19
19
use Magento \Quote \Api \ShipmentEstimationInterface ;
20
20
use Magento \Quote \Model \ResourceModel \Quote \Address as QuoteAddressResource ;
21
+ use Magento \Quote \Api \Data \AddressExtensionInterfaceFactory ;
21
22
22
23
/**
23
24
* Shipping method read service
@@ -56,6 +57,11 @@ class ShippingMethodManagement implements
56
57
*/
57
58
protected $ totalsCollector ;
58
59
60
+ /**
61
+ * @var AddressExtensionInterfaceFactory
62
+ */
63
+ protected $ addressExtensionFactory ;
64
+
59
65
/**
60
66
* @var \Magento\Framework\Reflection\DataObjectProcessor $dataProcessor
61
67
*/
@@ -83,6 +89,7 @@ class ShippingMethodManagement implements
83
89
* @param Cart\ShippingMethodConverter $converter
84
90
* @param \Magento\Customer\Api\AddressRepositoryInterface $addressRepository
85
91
* @param Quote\TotalsCollector $totalsCollector
92
+ * @param AddressExtensionInterfaceFactory $addressExtensionFactory
86
93
* @param AddressInterfaceFactory|null $addressFactory
87
94
* @param QuoteAddressResource|null $quoteAddressResource
88
95
* @param CustomerSession|null $customerSession
@@ -92,6 +99,7 @@ public function __construct(
92
99
Cart \ShippingMethodConverter $ converter ,
93
100
\Magento \Customer \Api \AddressRepositoryInterface $ addressRepository ,
94
101
\Magento \Quote \Model \Quote \TotalsCollector $ totalsCollector ,
102
+ AddressExtensionInterfaceFactory $ addressExtensionFactory ,
95
103
AddressInterfaceFactory $ addressFactory = null ,
96
104
QuoteAddressResource $ quoteAddressResource = null ,
97
105
CustomerSession $ customerSession = null
@@ -100,6 +108,7 @@ public function __construct(
100
108
$ this ->converter = $ converter ;
101
109
$ this ->addressRepository = $ addressRepository ;
102
110
$ this ->totalsCollector = $ totalsCollector ;
111
+ $ this ->addressExtensionFactory = $ addressExtensionFactory ;
103
112
$ this ->addressFactory = $ addressFactory ?: ObjectManager::getInstance ()
104
113
->get (AddressInterfaceFactory::class);
105
114
$ this ->quoteAddressResource = $ quoteAddressResource ?: ObjectManager::getInstance ()
@@ -312,6 +321,14 @@ private function getShippingMethods(Quote $quote, $address)
312
321
$ shippingAddress ->addData ($ this ->extractAddressData ($ address ));
313
322
$ shippingAddress ->setCollectShippingRates (true );
314
323
324
+ $ addressExtensionAttributes = $ address ->getExtensionAttributes ();
325
+
326
+ if ($ addressExtensionAttributes === null ) {
327
+ $ addressExtensionAttributes = $ this ->addressExtensionFactory ->create ();
328
+ }
329
+
330
+ $ shippingAddress ->setExtensionAttributes ($ addressExtensionAttributes );
331
+
315
332
$ this ->totalsCollector ->collectAddressTotals ($ quote , $ shippingAddress );
316
333
$ quoteCustomerGroupId = $ quote ->getCustomerGroupId ();
317
334
$ customerGroupId = $ this ->customerSession ->getCustomerGroupId ();
0 commit comments