123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- <?php
- /**
- * Refer to LICENSE.txt distributed with the Temando Shipping module for notice of license
- */
- namespace Temando\Shipping\Model\Order;
- use Magento\Framework\Api\AbstractSimpleObjectBuilder;
- use Magento\Framework\Api\ObjectFactory;
- use Magento\Framework\Exception\LocalizedException;
- use Magento\Quote\Model\Quote\Address\RateRequest;
- use Magento\Sales\Api\Data\OrderInterface;
- use Temando\Shipping\Model\Checkout\RateRequest\Extractor;
- /**
- * Temando Order Billing Builder
- *
- * Create a billing address entity to be shared between shipping module and Temando platform.
- *
- * @package Temando\Shipping\Model
- * @author Christoph Aßmann <christoph.assmann@netresearch.de>
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
- * @link http://www.temando.com/
- */
- class OrderBillingInterfaceBuilder extends AbstractSimpleObjectBuilder
- {
- /**
- * @var Extractor
- */
- private $rateRequestExtractor;
- /**
- * @param ObjectFactory $objectFactory
- * @param Extractor $rateRequestExtractor
- */
- public function __construct(
- ObjectFactory $objectFactory,
- Extractor $rateRequestExtractor
- ) {
- $this->rateRequestExtractor = $rateRequestExtractor;
- parent::__construct($objectFactory);
- }
- /**
- * @param RateRequest $rateRequest
- * @return void
- */
- public function setRateRequest(RateRequest $rateRequest)
- {
- try {
- $billingAddress = $this->rateRequestExtractor->getBillingAddress($rateRequest);
- $this->_set(OrderRecipientInterface::COMPANY, $billingAddress->getCompany());
- $this->_set(OrderRecipientInterface::LASTNAME, $billingAddress->getLastname());
- $this->_set(OrderRecipientInterface::FIRSTNAME, $billingAddress->getFirstname());
- $this->_set(OrderRecipientInterface::EMAIL, $billingAddress->getEmail());
- $this->_set(OrderRecipientInterface::PHONE, $billingAddress->getTelephone());
- $this->_set(OrderRecipientInterface::FAX, $billingAddress->getFax());
- if (is_array($billingAddress->getStreet())) {
- $billingStreet = $billingAddress->getStreet();
- } else {
- $billingStreet = explode("\n", $billingAddress->getStreet());
- }
- $this->_set(OrderRecipientInterface::NATIONAL_ID, '');
- $this->_set(OrderRecipientInterface::TAX_ID, $billingAddress->getVatId());
- $this->_set(OrderRecipientInterface::STREET, $billingStreet);
- $this->_set(OrderRecipientInterface::COUNTRY_CODE, $billingAddress->getCountryId());
- $this->_set(OrderRecipientInterface::REGION, $billingAddress->getRegion());
- $this->_set(OrderRecipientInterface::POSTAL_CODE, $billingAddress->getPostcode());
- $this->_set(OrderRecipientInterface::CITY, $billingAddress->getCity());
- $this->_set(OrderRecipientInterface::SUBURB, '');
- $this->_set(OrderRecipientInterface::LONGITUDE, null);
- $this->_set(OrderRecipientInterface::LATITUDE, null);
- } catch (LocalizedException $e) {
- // detailed address data unavailable
- $this->_set(OrderRecipientInterface::COMPANY, '');
- $this->_set(OrderRecipientInterface::LASTNAME, '');
- $this->_set(OrderRecipientInterface::FIRSTNAME, '');
- $this->_set(OrderRecipientInterface::EMAIL, '');
- $this->_set(OrderRecipientInterface::PHONE, '');
- $this->_set(OrderRecipientInterface::FAX, '');
- $this->_set(OrderRecipientInterface::NATIONAL_ID, '');
- $this->_set(OrderRecipientInterface::TAX_ID, '');
- $this->_set(OrderRecipientInterface::STREET, []);
- $this->_set(OrderRecipientInterface::COUNTRY_CODE, '');
- $this->_set(OrderRecipientInterface::REGION, '');
- $this->_set(OrderRecipientInterface::POSTAL_CODE, '');
- $this->_set(OrderRecipientInterface::CITY, '');
- $this->_set(OrderRecipientInterface::SUBURB, '');
- $this->_set(OrderRecipientInterface::LONGITUDE, null);
- $this->_set(OrderRecipientInterface::LATITUDE, null);
- }
- }
- /**
- * @param \Magento\Sales\Api\Data\OrderInterface|\Magento\Sales\Model\Order $order
- * @return void
- */
- public function setOrder(OrderInterface $order)
- {
- $billingAddress = $order->getBillingAddress();
- $this->_set(OrderRecipientInterface::COMPANY, $billingAddress->getCompany());
- $this->_set(OrderRecipientInterface::LASTNAME, $billingAddress->getLastname());
- $this->_set(OrderRecipientInterface::FIRSTNAME, $billingAddress->getFirstname());
- $this->_set(OrderRecipientInterface::EMAIL, $billingAddress->getEmail());
- $this->_set(OrderRecipientInterface::PHONE, $billingAddress->getTelephone());
- $this->_set(OrderRecipientInterface::FAX, $billingAddress->getFax());
- $this->_set(OrderRecipientInterface::NATIONAL_ID, '');
- $this->_set(OrderRecipientInterface::TAX_ID, $billingAddress->getVatId());
- $this->_set(OrderRecipientInterface::STREET, $billingAddress->getStreet());
- $this->_set(OrderRecipientInterface::COUNTRY_CODE, $billingAddress->getCountryId());
- $this->_set(OrderRecipientInterface::REGION, $billingAddress->getRegionCode());
- $this->_set(OrderRecipientInterface::POSTAL_CODE, $billingAddress->getPostcode());
- $this->_set(OrderRecipientInterface::CITY, $billingAddress->getCity());
- $this->_set(OrderRecipientInterface::SUBURB, '');
- $this->_set(OrderRecipientInterface::LONGITUDE, null);
- $this->_set(OrderRecipientInterface::LATITUDE, null);
- }
- }
|