/** * Get postcode * * @return string */ public function getPostcode() { return $this->address->getPostcode(); }
/** * Copies a quote address to a customer address * * Ths function serves to create a customer address from a quote address because when a user is logged in and they * go to checkout, if they select an existing customer address the checkout module will retrieve that customer * address to set as the quote address. Rather that update the quote address every time at checkout, this module * will update the customer address (if the user selects the valid address) so that customer address only needs * to be validated once. To do this, the quote address must be converted to a customer address so the validated * address can be saved to the quote address. * * @param QuoteAddressInterface $quoteAddress * @param CustomerAddressInterface $customerAddress * @return null|CustomerAddressInterface */ public function copyQuoteAddressToCustomerAddress(QuoteAddressInterface $quoteAddress, CustomerAddressInterface $customerAddress) { $customerAddress->setRegionId($quoteAddress->getRegionId()); $customerAddress->setCountryId($quoteAddress->getCountryId()); $customerAddress->setStreet($quoteAddress->getStreet()); $customerAddress->setPostcode($quoteAddress->getPostcode()); $customerAddress->setCity($quoteAddress->getCity()); $customerAddressData = $this->getCustomerAddressData($customerAddress); $customerAddressDataWithRegion = []; $customerAddressDataWithRegion['region']['region'] = $quoteAddress->getRegion(); $customerAddressDataWithRegion['region']['region_code'] = $quoteAddress->getRegionCode(); if ($customerAddressData['region_id']) { $customerAddressDataWithRegion['region']['region_id'] = $quoteAddress->getRegionId(); } $customerAddressData = array_merge($customerAddressData, $customerAddressDataWithRegion); // Per Github issue #4, the \Magento\Framework\Api\DataObjectHelper::_setDataValues method chokes on the // custom_attributes array, so remove it and set it after the data has been mapped $customAttributes = false; if (isset($customerAddressData[CustomAttributesDataInterface::CUSTOM_ATTRIBUTES]) && is_array($customerAddressData[CustomAttributesDataInterface::CUSTOM_ATTRIBUTES])) { $customAttributes = $customerAddressData[CustomAttributesDataInterface::CUSTOM_ATTRIBUTES]; unset($customerAddressData[CustomAttributesDataInterface::CUSTOM_ATTRIBUTES]); } $addressDataObject = $this->customerAddressFactory->create(); $this->dataObjectHelper->populateWithArray($addressDataObject, $customerAddressData, '\\Magento\\Customer\\Api\\Data\\AddressInterface'); if ($customAttributes) { $addressDataObject->setCustomAttributes($customAttributes); } return $addressDataObject; }
/** * Convert the address into an array of key-value-pairs. * * @param AddressInterface $address * @return string[]|string[][] */ protected function convertAddressToSuggestion(AddressInterface $address) { return array_filter([AddressInterface::KEY_CITY => $address->getCity(), AddressInterface::KEY_COMPANY => $address->getCompany(), AddressInterface::KEY_POSTCODE => $address->getPostcode(), AddressInterface::KEY_STREET => $address->getStreet(), AddressInterface::KEY_COUNTRY_ID => $address->getCountryId(), AddressInterface::KEY_REGION_ID => $address->getRegionId(), AddressInterface::KEY_REGION => $address->getRegion(), AddressInterface::KEY_REGION_CODE => $address->getRegionCode()]); }