/** * Validates the address with the AvaTax validation API. * Returns true on success and an array with an error on failure. * * @return array|bool * @throws OnePica_AvaTax_Model_Avatax_Address_Exception */ public function validate() { if (!$this->_mageAddress) { throw new OnePica_AvaTax_Model_Avatax_Address_Exception($this->__('An address must be set before validation.')); } /** @var Mage_Sales_Model_Quote $quote */ $quote = $this->_mageAddress->getQuote(); $isAddressValidationOn = $this->_getDataHelper()->isAddressValidationOn($this->_mageAddress, $this->_storeId); $isAddressNormalizationOn = $this->_getDataHelper()->isAddressNormalizationOn($this->_mageAddress, $this->_storeId); $isAddressActionable = $this->_getDataHelper()->isAddressActionable($this->_mageAddress, $quote->getStoreId(), OnePica_AvaTax_Model_Config::REGIONFILTER_ALL, true); //if there is no use cases for AvaTax services, return address as valid without doing a lookup if (!$isAddressValidationOn && !$isAddressNormalizationOn && !$isAddressActionable) { return true; } //lookup in AvaTax (with caching) $key = $this->_mageAddress->getCacheHashKey(); if (array_key_exists($key, $this->_cache)) { $result = unserialize($this->_cache[$key]); } elseif ($this->_mageAddress->getPostcode() && $this->_mageAddress->getPostcode() != '-') { $checkFieldsResult = $this->_checkFields(); if ($checkFieldsResult) { return $checkFieldsResult; } $result = $this->_sendAddressValidationRequest(); $this->_cache[$key] = serialize($result); } else { $errors = array(); $errors[] = $this->__('Invalid ZIP/Postal Code.'); return $errors; } $this->_addressNormalization($isAddressNormalizationOn, $result); $addressValidationResult = $this->_addressValidation($isAddressValidationOn, $isAddressActionable, $result); if ($addressValidationResult) { return $addressValidationResult; } return true; }
/** * Retrieve storeId from object * * @param OnePica_AvaTax_Model_Sales_Quote_Address|Mage_Sales_Model_Order $object * @return int */ protected function _getStoreIdByObject($object) { if ($object instanceof OnePica_AvaTax_Model_Sales_Quote_Address) { return $object->getQuote()->getStoreId(); } return $object->getStoreId(); }
/** * Get tax class id * * @param OnePica_AvaTax_Model_Sales_Quote_Address|Mage_Sales_Model_Order $object * @return int */ protected function _getTaxClassId($object) { if ($object instanceof OnePica_AvaTax_Model_Sales_Quote_Address) { return $object->getQuote()->getCustomerTaxClassId(); } return Mage::getSingleton('customer/group')->load($object->getCustomerGroupId())->getTaxClassId(); }
/** * Retrieve Vat Id from quote address * * @param OnePica_AvaTax_Model_Sales_Quote_Address $address * @return string */ protected function _getVatIdByQuoteAddress($address) { $vatId = $address->getVatId() ?: $address->getQuote()->getBillingAddress()->getVatId(); return (string) $vatId; }