fieldsetConfig = $config; } public function afterGetShippingAddress(Quote $quote, Quote\Address $result) { /* @var $logger LoggerInterface */ $logger = ObjectManager::getInstance()->get(LoggerInterface::class); $aspect = 'to_customer_address'; $fields = $this->fieldsetConfig->getFieldset('sales_convert_quote_address'); $extensionAttributes = $result->getExtensionAttributes(); foreach ($fields as $code => $node) { if (empty($node[$aspect])) { continue; } $method = 'set' . str_replace('_', '', ucwords($code, '_')); if (method_exists($extensionAttributes, $method) && $result->getData($code)) { $extensionAttributes->$method($result->getData($code)); $result->setCustomAttribute($code, $result->getData($code)); } } return $result; } public function beforeSetShippingAddress(Quote $quote, AddressInterface $address) { $aspect = 'to_customer_address'; $fields = $this->fieldsetConfig->getFieldset('sales_convert_quote_address'); $extensionAttributes = $address->getExtensionAttributes(); $shippingAddress = $quote->getAddressesCollection()->getItemById($address->getId()) ?? $quote->getShippingAddress(); foreach ($fields as $code => $node) { if (empty($node[$aspect])) { continue; } $method = 'get' . str_replace('_', '', ucwords($code, '_')); if (method_exists($extensionAttributes, $method) && $extensionAttributes->$method()) { $shippingAddress->addData([ $code => $extensionAttributes->$method()]); } } return [$address]; } }