示例#1
0
 /**
  * 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;
 }
示例#2
0
 /**
  * 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();
 }
示例#3
0
 /**
  * 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();
 }
示例#4
0
文件: Tools.php 项目: onepica/avatax
 /**
  * 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;
 }