/**
  * Validate address using AvaTax Address Validation API
  *
  * @param array|\Magento\Customer\Api\Data\AddressInterface|\Magento\Sales\Api\Data\OrderAddressInterface|/AvaTax/ValidAddress|\Magento\Customer\Api\Data\AddressInterface|\Magento\Quote\Api\Data\AddressInterface|\Magento\Sales\Api\Data\OrderAddressInterface|array|null
  * @param $storeId
  * @return array|\Magento\Customer\Api\Data\AddressInterface|\Magento\Sales\Api\Data\OrderAddressInterface|/AvaTax/ValidAddress|\Magento\Customer\Api\Data\AddressInterface|\Magento\Quote\Api\Data\AddressInterface|\Magento\Sales\Api\Data\OrderAddressInterface|array|null
  * @throws AddressValidateException
  * @throws LocalizedException
  */
 public function validateAddress($addressInput, $storeId)
 {
     $returnCoordinates = 1;
     $validateRequest = $this->validateRequestFactory->create(['address' => $this->interactionAddress->getAddress($addressInput), 'textCase' => TextCase::$Mixed ? TextCase::$Mixed : TextCase::$Default, 'coordinates' => $returnCoordinates]);
     $validateResult = $this->addressService->validate($validateRequest, $storeId);
     if ($validateResult->getResultCode() == SeverityLevel::$Success) {
         $validAddresses = $validateResult->getValidAddresses();
         if (isset($validAddresses[0])) {
             $validAddress = $validAddresses[0];
         } else {
             return null;
         }
         // Convert data back to the type it was passed in as
         switch (true) {
             case $addressInput instanceof \Magento\Customer\Api\Data\AddressInterface:
                 $validAddress = $this->interactionAddress->convertAvaTaxValidAddressToCustomerAddress($validAddress, $addressInput);
                 break;
             case $addressInput instanceof \Magento\Quote\Api\Data\AddressInterface:
                 $validAddress = $this->interactionAddress->convertAvaTaxValidAddressToQuoteAddress($validAddress, $addressInput);
                 break;
             default:
                 throw new LocalizedException(__('Input parameter "$addressInput" was not of a recognized/valid type: "%1".', [gettype($addressInput)]));
                 break;
         }
         return $validAddress;
     } else {
         $messages = $validateResult->getMessages();
         $firstMessage = array_shift($messages);
         $message = $firstMessage instanceof \AvaTax\Message ? $firstMessage->getSummary() : self::GENERIC_VALIDATION_MESSAGE;
         throw new AddressValidateException(__($message));
     }
 }
示例#2
0
 /**
  * Get details for GetTaxRequest
  *
  * @param \Magento\Store\Api\Data\StoreInterface $store
  * @param $address \Magento\Quote\Api\Data\AddressInterface|\Magento\Sales\Api\Data\OrderAddressInterface
  * @param \Magento\Quote\Api\Data\CartInterface|\Magento\Sales\Api\Data\OrderInterface $object
  * @return array
  * @throws LocalizedException
  */
 protected function retrieveGetTaxRequestFields(StoreInterface $store, $address, $object)
 {
     $customerId = $object->getCustomerId();
     $customer = $this->getCustomerById($customerId);
     $storeId = $store->getId();
     if ($this->config->getLiveMode() == Config::API_PROFILE_NAME_PROD) {
         $companyCode = $this->config->getCompanyCode($storeId);
     } else {
         $companyCode = $this->config->getDevelopmentCompanyCode($storeId);
     }
     $businessIdentificationNumber = $this->getBusinessIdentificationNumber($store, $address, $customer);
     $locationCode = $this->config->getLocationCode($store);
     return ['BusinessIdentificationNo' => $businessIdentificationNumber, 'CompanyCode' => $companyCode, 'LocationCode' => $locationCode, 'OriginAddress' => $this->address->getAddress($this->config->getOriginAddress($storeId))];
 }