/** * * @param \Magento\Sales\Model\Order\Address $address * @return array */ public function validate(Address $address) { $warnings = []; foreach ($this->required as $code => $label) { if (!$address->hasData($code)) { $warnings[] = sprintf('%s is a required field', $label); } } if (!filter_var($address->getEmail(), FILTER_VALIDATE_EMAIL)) { $warnings[] = 'Email has a wrong format'; } if (!filter_var(in_array($address->getAddressType(), [Address::TYPE_BILLING, Address::TYPE_SHIPPING]))) { $warnings[] = 'Address type doesn\'t match required options'; } return $warnings; }
/** * 2016-07-27 * Адрес приобретает тип, только когда используется при оформлении заказа. * Пока же адрес просто принадлежит покупателю * @see \Magento\Customer\Model\Data\Address * @see \Magento\Customer\Api\Data\AddressInterface * а не используется в контексте оформления заказа, то такой адрес ещё типа не имеет, * и в будущем, в зависимости от контекста, * может использоваться и как адрес доставки, и как платёжный адрес. * * @uses \Magento\Quote\Model\Quote\Address::getAddressType() * @uses \Magento\Customer\Model\Address::getAddressType() * @param AA|CA|QA|OA $a * @return bool */ function df_address_is_billing($a) { return $a instanceof AA ? AA::TYPE_BILLING === $a['address_type'] : ($a instanceof OA ? OA::TYPE_BILLING === $a->getAddressType() : df_error("Invalid address class: «%s».", get_class($a))); }
/** * Convert order address to quote address * * @param \Magento\Sales\Model\Order\Address $address * @return \Magento\Sales\Model\Quote\Address */ public function addressToQuoteAddress(\Magento\Sales\Model\Order\Address $address) { $quoteAddress = $this->_quoteAddressFactory->create()->setStoreId($address->getStoreId())->setAddressType($address->getAddressType())->setCustomerId($address->getCustomerId())->setCustomerAddressId($address->getCustomerAddressId()); $this->_objectCopyService->copyFieldsetToTarget('sales_convert_order_address', 'to_quote_address', $address, $quoteAddress); return $quoteAddress; }
/** * Import address data from order address * * @param \Magento\Sales\Model\Order\Address $address * @return $this * @deprecated Use \Magento\Sales\Model\Quote\Address::importCustomerAddressData() instead */ public function importOrderAddress(\Magento\Sales\Model\Order\Address $address) { $this->setAddressType($address->getAddressType())->setCustomerId($address->getCustomerId())->setCustomerAddressId($address->getCustomerAddressId())->setEmail($address->getEmail()); $this->_objectCopyService->copyFieldsetToTarget('sales_convert_order_address', 'to_quote_address', $address, $this); return $this; }