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; }
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; }