/** * Get billing address request data * * @param \Magento\Framework\DataObject $address * @return array * @SuppressWarnings(PHPMD.NPathComplexity) */ protected function _getBillingAddress(\Magento\Framework\DataObject $address) { $region = $address->getRegionCode() ? $address->getRegionCode() : $address->getRegion(); $request = ['billing_first_name' => $address->getFirstname(), 'billing_last_name' => $address->getLastname(), 'billing_city' => $address->getCity(), 'billing_state' => $region ? $region : $address->getCity(), 'billing_zip' => $address->getPostcode(), 'billing_country' => $address->getCountryId()]; // convert streets to tow lines format $street = $this->_customerAddress->convertStreetLines($address->getStreet(), 2); $request['billing_address1'] = isset($street[0]) ? $street[0] : ''; $request['billing_address2'] = isset($street[1]) ? $street[1] : ''; return $request; }
/** * Export streets from address data * * @param DataObject $address * @return array */ protected function getAddressStreets(DataObject $address) { $street1 = ''; $street2 = ''; $data = $this->customerAddress->convertStreetLines($address->getStreet(), 2); if (!empty($data[0])) { $street1 = $data[0]; } if (!empty($data[1])) { $street2 = $data[1]; } return [$street1, $street2]; }
/** * @param DataObject $request * @param DataObject $shipping * * @return Object */ public function setShipping($request, $shipping) { $request->setShiptofirstname($shipping->getFirstname())->setShiptolastname($shipping->getLastname())->setShiptostreet(implode(' ', $shipping->getStreet()))->setShiptocity($shipping->getCity())->setShiptostate($shipping->getRegionCode())->setShiptozip($shipping->getPostcode())->setShiptocountry($shipping->getCountryId()); return $request; }
/** * Street address workaround: divides address lines into parts by specified keys * (keys should go as 3rd, 4th[...] parameters) * * @param \Magento\Framework\DataObject $address * @param array $to * @return void */ protected function _importStreetFromAddress(\Magento\Framework\DataObject $address, array &$to) { $keys = func_get_args(); array_shift($keys); array_shift($keys); $street = $address->getStreet(); if (!$keys || !$street || !is_array($street)) { return; } $street = $this->_customerAddress->convertStreetLines($address->getStreet(), count($keys)); $i = 0; foreach ($keys as $key) { $to[$key] = isset($street[$i]) ? $street[$i] : ''; $i++; } }
/** * Adopt specified address object to be compatible with Magento * * @param \Magento\Framework\DataObject $address * @return void */ protected function _applyStreetAndRegionWorkarounds(\Magento\Framework\DataObject $address) { // merge street addresses into 1 if ($address->hasStreet2()) { $address->setStreet(implode("\n", [$address->getStreet(), $address->getStreetLine(2)])); $address->unsStreet2(); } // attempt to fetch region_id from directory if ($address->getCountryId() && $address->getRegion()) { $regions = $this->_countryFactory->create()->loadByCode($address->getCountryId())->getRegionCollection()->addRegionCodeOrNameFilter($address->getRegion())->setPageSize(1); foreach ($regions as $region) { $address->setRegionId($region->getId()); $address->setExportedKeys(array_merge($address->getExportedKeys(), ['region_id'])); break; } } }