Пример #1
0
 private function fillValidateAvalaraAddress($calc, $vmadd)
 {
     if (!empty($vmadd)) {
         if (is_object($vmadd)) {
             $vmadd = get_object_vars($vmadd);
         }
         if (is_object($calc)) {
             $calc = get_object_vars($calc);
         }
         //avadebug('my $vmadd',$vmadd);
         //First country check
         if (empty($vmadd['virtuemart_country_id'])) {
             self::$validatedAddresses = FALSE;
             return self::$validatedAddresses;
         } else {
             if (empty($calc['avatax_virtuemart_country_id'])) {
                 vmError('AvaTax, please select countries, to validate. Use fallback for USA and Canada');
                 //But lets use a fallback
                 $calc['avatax_virtuemart_country_id'] = array('223', '38');
                 //For USA and Canada
             }
             if (!is_array($calc['avatax_virtuemart_country_id'])) {
                 //Suppress Warning
                 $calc['avatax_virtuemart_country_id'] = json_decode($calc['avatax_virtuemart_country_id'], true);
             }
             if (!in_array($vmadd['virtuemart_country_id'], $calc['avatax_virtuemart_country_id'])) {
                 avadebug('fillValidateAvalaraAddress not validated, country not set', $vmadd['virtuemart_country_id'], $calc['avatax_virtuemart_country_id']);
                 self::$validatedAddresses = FALSE;
                 return self::$validatedAddresses;
             }
         }
         if (!class_exists('Address')) {
             require VMAVALARA_CLASS_PATH . DS . 'Address.class.php';
         }
         $address = new Address();
         if (isset($vmadd['address_1'])) {
             $address->setLine1($vmadd['address_1']);
         }
         if (isset($vmadd['address_2'])) {
             $address->setLine2($vmadd['address_2']);
         }
         if (isset($vmadd['city'])) {
             $address->setCity($vmadd['city']);
         }
         if (isset($vmadd['virtuemart_country_id'])) {
             $vmadd['country'] = ShopFunctions::getCountryByID($vmadd['virtuemart_country_id'], 'country_2_code');
             if (isset($vmadd['country'])) {
                 $address->setCountry($vmadd['country']);
             }
         }
         if (isset($vmadd['virtuemart_state_id'])) {
             $vmadd['state'] = ShopFunctions::getStateByID($vmadd['virtuemart_state_id'], 'state_2_code');
             if (isset($vmadd['state'])) {
                 $address->setRegion($vmadd['state']);
             }
         }
         if (isset($vmadd['zip'])) {
             $address->setPostalCode($vmadd['zip']);
         }
         $hash = md5(implode($vmadd, ','));
         $session = JFactory::getSession();
         $validatedAddress = $session->get('vm_avatax_address_checked.' . $hash, FALSE, 'vm');
         if (!$validatedAddress) {
             $config = $this->newATConfig($calc);
             if (!class_exists('AddressServiceSoap')) {
                 require VMAVALARA_CLASS_PATH . DS . 'AddressServiceSoap.class.php';
             }
             $client = new AddressServiceSoap($this->_connectionType, $config);
             if (!class_exists('SeverityLevel')) {
                 require VMAVALARA_CLASS_PATH . DS . 'SeverityLevel.class.php';
             }
             if (!class_exists('Message')) {
                 require VMAVALARA_CLASS_PATH . DS . 'Message.class.php';
             }
             //if($calc->vAddress==0){
             /*	if(isset($vmadd['country']) and $vmadd['country']!= 'US' and $vmadd['country']!= 'CA'){
             
             					self::$validatedAddresses = array($address);
             					return self::$validatedAddresses;
             				}*/
             $address->Coordinates = 1;
             $address->Taxability = TRUE;
             $textCase = TextCase::$Mixed;
             $coordinates = 1;
             if (!class_exists('ValidateResult')) {
                 require VMAVALARA_CLASS_PATH . DS . 'ValidateResult.class.php';
             }
             if (!class_exists('ValidateRequest')) {
                 require VMAVALARA_CLASS_PATH . DS . 'ValidateRequest.class.php';
             }
             if (!class_exists('ValidAddress')) {
                 require VMAVALARA_CLASS_PATH . DS . 'ValidAddress.class.php';
             }
             //TODO add customer code //shopper_number
             try {
                 $request = new ValidateRequest($address, $textCase ? $textCase : TextCase::$Default, $coordinates);
                 vmSetStartTime('avaValAd');
                 //avadebug('my request for validate address ',$request);
                 $result = $client->Validate($request);
                 vmTime('Avatax validate Address', 'avaValAd');
                 //avadebug('Validate ResultCode is: '. $result->getResultCode());;
                 if ($result->getResultCode() != SeverityLevel::$Success) {
                     foreach ($result->getMessages() as $msg) {
                         avadebug('fillValidateAvalaraAddress ' . $msg->getName() . ": " . $msg->getSummary() . "\n");
                     }
                 } else {
                     self::$validatedAddresses = $result->getvalidAddresses();
                     $session->set('vm_avatax_address_checked.' . $hash, TRUE, 'vm');
                 }
             } catch (SoapFault $exception) {
                 $msg = "Exception: fillValidateAvalaraAddress ";
                 if ($exception) {
                     $msg .= $exception->faultstring;
                 }
                 $msg .= "\n";
                 $msg .= $client->__getLastRequest() . "\n";
                 $msg .= $client->__getLastResponse() . "\n";
                 vmError($msg);
             }
         } else {
             self::$validatedAddresses[] = $address;
         }
         //then for BT and/or $cart->STsameAsBT
     }
     if (empty(self::$validatedAddresses)) {
         self::$validatedAddresses = FALSE;
     }
     return self::$validatedAddresses;
 }
Пример #2
0
 private function fillValidateAvalaraAddress($calc)
 {
     if (!isset(self::$validatedAddresses)) {
         $vmadd = $this->getShopperData();
         if (!empty($vmadd)) {
             $config = $this->newATConfig($calc);
             if (!class_exists('AddressServiceSoap')) {
                 require VMAVALARA_CLASS_PATH . DS . 'AddressServiceSoap.class.php';
             }
             $client = new AddressServiceSoap('Development', $config);
             if (!class_exists('Address')) {
                 require VMAVALARA_CLASS_PATH . DS . 'Address.class.php';
             }
             $address = new Address();
             if (isset($vmadd['address_1'])) {
                 $address->setLine1($vmadd['address_1']);
             }
             if (isset($vmadd['address_2'])) {
                 $address->setLine2($vmadd['address_2']);
             }
             if (isset($vmadd['city'])) {
                 $address->setCity($vmadd['city']);
             }
             if (isset($vmadd['virtuemart_country_id'])) {
                 $vmadd['country'] = ShopFunctions::getCountryByID($vmadd['virtuemart_country_id'], 'country_2_code');
                 if (isset($vmadd['country'])) {
                     $address->setCountry($vmadd['country']);
                 }
             }
             if (isset($vmadd['virtuemart_state_id'])) {
                 $vmadd['state'] = ShopFunctions::getStateByID($vmadd['virtuemart_state_id'], 'state_2_code');
                 if (isset($vmadd['state'])) {
                     $address->setRegion($vmadd['state']);
                 }
             }
             if (isset($vmadd['zip'])) {
                 $address->setPostalCode($vmadd['zip']);
             }
             if (!class_exists('SeverityLevel')) {
                 require VMAVALARA_CLASS_PATH . DS . 'SeverityLevel.class.php';
             }
             if (!class_exists('Message')) {
                 require VMAVALARA_CLASS_PATH . DS . 'Message.class.php';
             }
             //if($calc->vAddress==0){
             if (isset($vmadd['country']) and $vmadd['country'] != 'US' and $vmadd['country'] != 'CA') {
                 self::$validatedAddresses = array($address);
                 return self::$validatedAddresses;
             }
             $address->Coordinates = 1;
             $address->Taxability = TRUE;
             $textCase = TextCase::$Mixed;
             $coordinates = 1;
             if (!class_exists('ValidateResult')) {
                 require VMAVALARA_CLASS_PATH . DS . 'ValidateResult.class.php';
             }
             if (!class_exists('ValidateRequest')) {
                 require VMAVALARA_CLASS_PATH . DS . 'ValidateRequest.class.php';
             }
             if (!class_exists('ValidAddress')) {
                 require VMAVALARA_CLASS_PATH . DS . 'ValidAddress.class.php';
             }
             try {
                 $request = new ValidateRequest($address, $textCase ? $textCase : TextCase::$Default, $coordinates);
                 $result = $client->Validate($request);
                 //vmdebug('Validate ResultCode is: '. $result->getResultCode());;
                 if ($result->getResultCode() != SeverityLevel::$Success) {
                     foreach ($result->getMessages() as $msg) {
                         vmdebug('fillValidateAvalaraAddress ' . $msg->getName() . ": " . $msg->getSummary() . "\n");
                         //vmdebug('fillValidateAvalaraAddress ERROR',$address);
                     }
                 } else {
                     self::$validatedAddresses = $result->getvalidAddresses();
                     /*	$echo = "";
                     			foreach($result->getvalidAddresses() as $valid)
                     			{
                     				$echo .= "Line 1: ".$valid->getline1()."\n";
                     				$echo .=  "Line 2: ".$valid->getline2()."\n";
                     				$echo .=  "Line 3: ".$valid->getline3()."\n";
                     				$echo .=  "Line 4: ".$valid->getline4()."\n";
                     				$echo .=  "City: ".$valid->getcity()."\n";
                     				$echo .=  "Region: ".$valid->getregion()."\n";
                     				$echo .=  "Postal Code: ".$valid->getpostalCode()."\n";
                     				$echo .=  "Country: ".$valid->getcountry()."\n";
                     				$echo .=  "County: ".$valid->getcounty()."\n";
                     				$echo .=  "FIPS Code: ".$valid->getfipsCode()."\n";
                     				$echo .=  "PostNet: ".$valid->getpostNet()."\n";
                     				$echo .=  "Carrier Route: ".$valid->getcarrierRoute()."\n";
                     				$echo .=  "Address Type: ".$valid->getaddressType()."\n";
                     				if($coordinates == 1)
                     				{
                     					$echo .=  "Latitude: ".$valid->getlatitude()."\n";
                     					$echo .=  "Longitude: ".$valid->getlongitude()."\n";
                     				}
                     			}
                     			//vmdebug('Normalized Address:',$echo);*/
                 }
             } catch (SoapFault $exception) {
                 $msg = "Exception: ";
                 if ($exception) {
                     $msg .= $exception->faultstring;
                 }
                 $msg .= "\n";
                 $msg .= $client->__getLastRequest() . "\n";
                 $msg .= $client->__getLastResponse() . "\n";
                 vmError($msg);
             }
             if (empty(self::$validatedAddresses)) {
                 self::$validatedAddresses = FALSE;
             }
             //then for BT and/or $cart->STsameAsBT
         } else {
             self::$validatedAddresses = FALSE;
         }
         //vmdebug("Number of addresses fillValidateAvalaraAddress is ", self::$validatedAddresses);
     }
     return self::$validatedAddresses;
 }