config = $config; $this->countryGuard = $countryGuard; $this->addressDeterminer = $addressDeterminer; } /** * Determine whether or not to use Vertex to calculate taxes for an address * * @param string|null $storeCode * @param AddressInterface|null $address * @param int|null $customerId * @param bool $isVirtual * @param bool $checkCalculation * @return bool */ public function shouldUseVertex( $storeCode = null, $address = null, $customerId = null, $isVirtual = false, $checkCalculation = false ) { if (!$this->config->isVertexActive($storeCode) || ($checkCalculation && !$this->config->isTaxCalculationEnabled($storeCode)) ) { return false; } if ($address !== null && !($address instanceof AddressInterface || $address instanceof QuoteAddressInterface)) { throw new \InvalidArgumentException( '$address must be a Customer or Quote Address. Is: ' .(is_object($address) ? get_class($address) : gettype($address)) ); } $address = $this->addressDeterminer->determineAddress($address, $customerId, $isVirtual); return !$this->config->isDisplayPriceInCatalogEnabled($storeCode) && $address !== null && $address->getCountryId() && $this->countryGuard->isCountryIdServiceableByVertex($address->getCountryId()); } }