/**
  * Convert ValidAddress to QuoteAddressInterface
  *
  * @param \AvaTax\ValidAddress $address
  * @param QuoteAddressInterface $originalAddress
  * @return QuoteAddressInterface
  */
 public function convertAvaTaxValidAddressToQuoteAddress(\AvaTax\ValidAddress $address, \Magento\Quote\Api\Data\AddressInterface $originalAddress)
 {
     $street = [];
     if ($address->getLine1()) {
         $street[] = $address->getLine1();
     }
     if ($address->getLine2()) {
         $street[] = $address->getLine2();
     }
     if ($address->getLine3()) {
         $street[] = $address->getLine3();
     }
     // Not using line 4, as it returns a concatenation of city, state, and zip (e.g., BAINBRIDGE IS WA 98110-2450)
     // Get data from original address so that information like name and telephone will be preserved
     $data = array_merge($originalAddress->getData(), [QuoteAddressInterface::KEY_COUNTRY_ID => $address->getCountry(), QuoteAddressInterface::KEY_REGION_CODE => $address->getRegion(), QuoteAddressInterface::KEY_STREET => $street, QuoteAddressInterface::KEY_POSTCODE => $address->getPostalCode(), QuoteAddressInterface::KEY_CITY => $address->getCity()]);
     $region = $this->getRegionByCodeAndCountry($address->getRegion(), $address->getCountry());
     if (!is_null($region)) {
         $data[QuoteAddressInterface::KEY_REGION_ID] = $region->getId();
         $data[QuoteAddressInterface::KEY_REGION] = $region;
     }
     return $this->quoteAddressFactory->create(['data' => $data]);
 }
Example #2
0
 /**
  * Set shipping address
  *
  * @param \Magento\Quote\Api\Data\AddressInterface $address
  * @return $this
  */
 public function setShippingAddress(\Magento\Quote\Api\Data\AddressInterface $address = null)
 {
     if ($this->getIsMultiShipping()) {
         $this->addAddress($address->setAddressType(Address::TYPE_SHIPPING));
     } else {
         $old = $this->getShippingAddress();
         if (!empty($old)) {
             $old->addData($address->getData());
         } else {
             $this->addAddress($address->setAddressType(Address::TYPE_SHIPPING));
         }
     }
     return $this;
 }
 /**
  * @inheritdoc
  */
 public function estimateByExtendedAddress($cartId, AddressInterface $address)
 {
     /** @var \Magento\Quote\Model\Quote $quote */
     $quote = $this->quoteRepository->getActive($cartId);
     // no methods applicable for empty carts or carts with virtual products
     if ($quote->isVirtual() || 0 == $quote->getItemsCount()) {
         return [];
     }
     return $this->getShippingMethods($quote, $address->getData());
 }