/** * 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)); } }
/** * 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))]; }