Spade
Mini Shell
| Directory:~$ /home/lmsyaran/public_html/joomla4/ |
| [Home] [System Details] [Kill Me] |
index.html000064400000000054151157023530006542 0ustar00<html><body
bgcolor="#FFFFFF"></body></html>taxcloud.js000064400000012132151157023530006726
0ustar00(function(){
window.taxcloudData = {
tics: null,
fields:{}
};
var taxcloudTics = function(data) {
window.taxcloudData.tics = data.tic_list;
for(var i in window.taxcloudData.fields) {
if(window.taxcloudData.fields.hasOwnProperty(i))
window.taxcloudData.fields[i].init();
}
};
window.taxcloudTics = taxcloudTics;
var taxcloud = function(id) {
var t = this, d = document, w = window;
t.id = id;
if(w.taxcloudData.tics === null) {
var datetime = new Date().getTime().toString(),
script = document.createElement("script");
script.setAttribute("src", t.json + "&time=" +
datetime);
script.setAttribute("type", "text/javascript");
d.body.appendChild(script);
w.taxcloudData.tics = true;
}
w.taxcloudData.fields[t.id] = (this);
};
taxcloud.prototype = {
json: 'https://taxcloud.net/tic/default.aspx?format=jsonp',
init: function() {
var t = this, d = document, w = window,
field = d.getElementById(t.id);
if(field.value.length > 0) {
var value = parseInt(field.value);
field.type = "hidden";
var tic = t.find(value);
if(tic) {
var el = d.createElement('span');
el.id = t.id + '_result';
el.innerHTML = tic.id + ' - <span
title="'+tic.title+'">' + tic.label +
'</span> <a class="hkIcon-delete hkIcon"
href="#remove" onclick="return
window.taxcloudData.fields[\''+t.id+'\'].reinit();"></a>';
field.parentNode.appendChild(el);
} else {
t.reinit();
}
} else {
field.type = "hidden";
t.reinit();
}
},
find: function(value) {
var t = this, d = document, w = window;
for(var i = 0; i < w.taxcloudData.tics.length; i++) {
var tic = w.taxcloudData.tics[i].tic, tic_id = parseInt(tic.id);
if(tic_id == value)
return tic;
if(tic.children) {
var r = t.rfind(value, tic.children);
if(r)
return r;
}
}
return null;
},
rfind: function(value, data) {
var t = this;
for(var j = 0; j < data.length; j++) {
var tic_id = parseInt(data[j].tic.id);
if(tic_id == value)
return data[j].tic;
if(data[j].tic.children) {
var r = t.rfind(value, data[j].tic.children);
if(r)
return r;
}
}
return null;
},
reinit: function() {
var t = this, d = document, w = window,
field = d.getElementById(t.id),
res = d.getElementById(t.id + '_result');
if(res)
res.parentNode.removeChild(res);
if(field) {
field.value = '-1';
var select = d.createElement('div');
select.id = t.id + '_select';
select.innerHTML = '<span
id="'+t.id+'_breadcrumb"></span><select
id="'+t.id+'_drop"></select>';
field.parentNode.appendChild(select);
var drop = d.getElementById(t.id + '_drop');
w.Oby.addEvent(drop, 'change', function(){ t.selection(drop);
});
t.populate();
}
return false;
},
populate: function(parent, value){
var t = this, d = document, w = window,
field = d.getElementById(t.id),
drop = d.getElementById(t.id + '_drop');
if(parent === undefined)
parent = false;
if(drop) {
var opt = d.createElement('option');
opt.value = '-1';
opt.innerHTML = '[Please Select]';
drop.appendChild(opt);
if(!parent) {
for(var i = 0; i < window.taxcloudData.tics.length; i++) {
opt = d.createElement('option');
opt.value = window.taxcloudData.tics[i].tic.id;
opt.title = window.taxcloudData.tics[i].tic.label;
opt.innerHTML = window.taxcloudData.tics[i].tic.label;
if(window.taxcloudData.tics[i].tic.children)
opt.innerHTML += '...';
drop.appendChild(opt);
}
} else {
value = parseInt(value);
for(var i = 0; i < parent.children.length; i++) {
opt = d.createElement('option');
opt.value = parent.children[i].tic.id;
opt.title = parent.children[i].tic.label;
opt.innerHTML = parent.children[i].tic.label;
if(parent.children[i].tic.children)
opt.innerHTML += '...';
drop.appendChild(opt);
}
}
}
},
selection: function(el) {
var t = this, d = document, w = window,
field = d.getElementById(t.id),
bread = d.getElementById(t.id + '_breadcrumb'),
drop = d.getElementById(t.id + '_drop'),
n = t.find(el.value);
if(el.value === '')
return false;
if(field) {
field.value = el.value;
}
if(bread) {
if(bread.innerHTML.length > 0)
bread.innerHTML += ' - ';
bread.innerHTML += n.label;
}
if(n && n.children) {
drop.innerHTML = '';
t.populate(n, el.value);
} else {
drop.parentNode.removeChild(drop);
var res = d.getElementById(t.id + '_select');
if(res)
res.parentNode.removeChild(res);
res = d.createElement('span');
res.id = t.id + '_result';
res.innerHTML = n.id + ' - <span
title="'+n.title+'">' + n.label +
'</span> <a class="hkIcon-delete hkIcon"
href="#remove" onclick="return
window.taxcloudData.fields[\''+t.id+'\'].reinit();"></a>';
field.parentNode.appendChild(res);
}
return false;
}
};
window.taxcloud = taxcloud;
})();taxcloud.php000064400000132541151157023530007110 0ustar00<?php
/**
* @package HikaShop for Joomla!
* @version 4.4.1
* @author hikashop.com
* @copyright (C) 2010-2021 HIKARI SOFTWARE. All rights reserved.
* @license GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
*/
defined('_JEXEC') or die('Restricted access');
?><?php
class plgHikaShopTaxcloud extends JPlugin {
protected $soap = null;
protected $debug = false;
protected $errors = array();
public function onHikashopBeforeDisplayView(&$view){
$app = JFactory::getApplication();
if(!hikashop_isClient('administrator')) return true;
$viewName = $view->getName();
$layoutName = $view->getLayout();
if($viewName!='order' || $layoutName!='show') return
true;
$_SESSION['order_products'][$view->order->order_id] =
$view->order->products;
}
public function onAfterOrderUpdate(&$order,&$send_email){
$full_order = null;
if(!isset($order->order_type)){
$orderClass = hikashop_get('class.order');
$full_order = $orderClass->loadFullOrder($order->order_id,false
,false);
if($full_order->order_type!='sale'){
return;
}
}elseif($order->order_type!='sale'){
return;
}
if(!$this->loadOptions()){
return false;
}
$config =& hikashop_config();
$app = JFactory::getApplication();
$confirmed_statuses = explode(',',
trim($config->get('invoice_order_statuses','confirmed,shipped'),
','));
$cancelled_statuses = explode(',',
trim($config->get('cancelled_order_status','cancelled'),
','));
if(empty($confirmed_statuses))
$confirmed_statuses = array('confirmed','shipped');
if(empty($cancelled_statuses))
$cancelled_statuses = array('cancelled');
if(!empty($_SESSION['order_products'][$order->order_id])){
if(!isset($full_order)){
$orderClass = hikashop_get('class.order');
$full_order = $orderClass->loadFullOrder($order->order_id,false
,false);
}
if($this->partialReturn($full_order, false))
return;
}
if(!empty($order->order_status)){
if(in_array($order->order_status,$confirmed_statuses) &&
(empty($order->old->order_status) ||
!in_array($order->old->order_status,$confirmed_statuses))) {//if the
actual status is confirmed and the old status wasn't confirmed
if(!isset($full_order)){
$orderClass = hikashop_get('class.order');
$full_order = $orderClass->loadFullOrder($order->order_id,false
,false);
}
$this->AuthorizedWithCaptured($full_order);
return;
}
if(in_array($order->order_status,$cancelled_statuses) &&
in_array($order->old->order_status,$confirmed_statuses)){//if the
changed status is cancelled and the old status was confirmed
if(!isset($full_order)){
$orderClass = hikashop_get('class.order');
$full_order = $orderClass->loadFullOrder($order->order_id,false
,false);
}
$error = '';
$error=$this->Returned($full_order);
if($error != '')
$app->enqueueMessage('TaxCloud Error : '.$error);
return;
}
}
}
public function partialReturn($order, $all){
static $soapCache = array();
$app = JFactory::getApplication();
$new_products_qty = array();
if(empty($order->order_user_id)){
$orderClass = hikashop_get('class.order');
$dbOrder = $orderClass->get($order->order_id);
$order->order_user_id = $dbOrder->order_user_id;
}
$user_id = $order->order_user_id;
if($all == false){
foreach($order->products as $product) {
$new_products_qty[$product->order_product_id] =
$product->order_product_quantity;
}
}
$ids = array();
if($all==false){
foreach($_SESSION['order_products'][$order->order_id] as
$product) {//getting the id of the product to get its tic
if($product->product_id) $ids[$product->order_product_id] =
(int)$product->product_id; //make sure that the product_id is set in the
product (it might be a product manually added to the order)
}
}else{
foreach($order->products as $product) {//getting the id of the
product to get its tic
if($product->product_id) $ids[$product->order_product_id] =
(int)$product->product_id; //make sure that the product_id is set in the
product (it might be a product manually added to the order)
}
}
$db = JFactory::getDBO();
if(empty($ids) || !count($ids))
return false;
$product_query = 'SELECT product_id, product_taxability_code,
product_parent_id FROM ' . hikashop_table('product') .
' WHERE product_id IN (' . implode(',', $ids) . ')
AND product_access=\'all\' AND product_published=1';
$db->setQuery($product_query);
$products = $db->loadObjectList();
if(empty($products))
return false;
$tics = array();
$parents_ids = array();
foreach($products as $product){//associating the tics with the right
ItemIds
if(empty($product->product_taxability_code)){
if(!empty($product->product_parent_id)){
$parents_ids[$product->product_id] =
$product->product_parent_id;
}
continue;
}
$tics[$product->product_id] = $product->product_taxability_code;
}
if(count($parents_ids)){
$product_query = 'SELECT product_id, product_taxability_code FROM
' . hikashop_table('product') . ' WHERE product_id IN
(' . implode(',', $parents_ids) . ') AND
product_access=\'all\' AND product_published=1 AND
product_type=\'main\'';
$db->setQuery($product_query);
$parents = $db->loadObjectList('product_id');
if(!empty($parents)){
foreach($products as $product){
if(!empty($tics[$product->product_id]))
continue;
if(empty($parents_ids[$product->product_id]))
continue;
if(empty($parents[$parents_ids[$product->product_id]]))
continue;
$tics[$product->product_id] =
$parents[$parents_ids[$product->product_id]]->product_taxability_code;
}
}
}
$return_items = array();
$all_returned = true;
$i = 0;
if($all == false){
foreach($_SESSION['order_products'][$order->order_id] as
$old_product_values){
$old_product_id= $old_product_values->order_product_id;
$old_product_qty= $old_product_values->order_product_quantity;
if(!empty($old_product_values->order_product_params->taxcloud->taxcloud_id))
$id =
$old_product_values->order_product_params->taxcloud->taxcloud_id;
else
$id = $old_product_values->order_product_id;
if(empty($new_products_qty[$old_product_id]) &&
$old_product_qty!= '0'){
$old_product_values->order_product_quantity = 0;
$tic = (int)$this->plugin_options['default_tic'];
if(isset($ids[$old_product_values->order_product_id]) &&
isset($tics[$ids[$old_product_values->order_product_id]])){
if((int)$tics[$ids[$old_product_values->order_product_id]] !=
'-1' &&
(int)$tics[$ids[$old_product_values->order_product_id]]
!=='')
$tic = (int)$tics[$ids[$old_product_values->order_product_id]];
}
$return_items[] = array(
'Index' => $id,
'ItemID' => $old_product_values->order_product_code,
'TIC' => $tic,
'Price' => $old_product_values->order_product_price,
'Qty' => $old_product_qty
);
unset($old_product_values);
}
else if(@$new_products_qty[$old_product_id] < $old_product_qty){
$old_product_values->order_product_quantity =
$new_products_qty[$old_product_id];
$tic = (int)$this->plugin_options['default_tic'];
if(isset($ids[$old_product_values->order_product_id]) &&
isset($tics[$ids[$old_product_values->order_product_id]])){
if((int)$tics[$ids[$old_product_values->order_product_id]] !=
'-1' &&
(int)$tics[$ids[$old_product_values->order_product_id]]
!=='')
$tic = (int)$tics[$ids[$old_product_values->order_product_id]];
}
else {$all_returned = false;}
$return_items[] = array(
'Index' => $id,
'ItemID' => $old_product_values->order_product_code,
'TIC' => $tic,
'Price' => $old_product_values->order_product_price,
'Qty' => $old_product_qty -
$new_products_qty[$old_product_id]
);
}
}
}else{
foreach($order->products as $product){
if(!isset($ids[$product->order_product_id]) ||
!isset($tics[$product->product_id])){
continue;
}
if(!empty($product->order_product_params->taxcloud->taxcloud_id))
$id = $product->order_product_params->taxcloud->taxcloud_id;
else
$id = $product->order_product_id;
$product_id= $product->order_product_id;
$product_qty= $product->order_product_quantity;
$tic = (int)$this->plugin_options['default_tic'];
if(isset($ids[$old_product_values->order_product_id]) &&
isset($tics[$ids[$old_product_values->order_product_id]])){
if((int)$tics[$ids[$product->order_product_id]] != '-1'
&& (int)$tics[$ids[$product->order_product_id]]
!=='')
$tic = (int)$tics[$ids[$product->order_product_id]];
}else{$all_returned = false;}
$return_items[] = array(
'Index' => $id,
'ItemID' => $product->order_product_code,
'TIC' => $tic,
'Price' => $product->order_product_price,
'Qty' => $product_qty
);
}
foreach($order->order_shipping_params->prices as $shipping){
$return_items[] = array(
'Index' => $shipping->taxcloud_index,
'ItemID' => $shipping->taxcloud_itemId,
'TIC' =>
(int)$this->plugin_options['shipping_tic'],
'Price' => $shipping->taxcloud_price,
'Qty' => 1
);
}
}
if(!$all_returned)
$app->enqueueMessage('TaxCloud error : Some item(s) could not be
returned. Please return it manually.', 'error');
if(empty($return_items))
return false;
$parameters = array(
'apiLoginID' =>
$this->plugin_options['api_id'],
'apiKey' => $this->plugin_options['api_key'],
'customerID' => $user_id,
'orderID' => $order->order_id,
'cartItems' => $return_items,
'returnedDate' => date('c'),
);
if(!$this->initSoap())
return true;
try {
$soapRet = $this->soap->__soapCall('Returned',
array($parameters));
$ret = $soapRet->ReturnedResult;
} catch(Exception $e) {
hikashop_display($e->getMessage());
$ret = false;
}
if(@$ret->Messages->ResponseMessage->ResponseType ==
"Error"){
if(empty($ret->Messages->ResponseMessage->Message))
$ret->Messages->ResponseMessage->Message = 'Unkown
error';
$this->display_errors(@$ret->Messages->ResponseMessage->Message);
}
return true;
}
public function Returned($order){
if(!$this->initSoap())
return false;
static $soapCache = array();
$app = JFactory::getApplication();
if(!$this->loadOptions()){
return false;
}
$cart_items = array();
$parameters = array(
'apiLoginID' =>
$this->plugin_options['api_id'],
'apiKey' => $this->plugin_options['api_key'],
'orderID' => $order->order_id,
'returnedDate' => date('c')
);
try {
$soapRet = $this->soap->__soapCall('Returned',
array($parameters));
$ret = $soapRet->ReturnedResult;
if(@$ret->Messages->ResponseMessage->ResponseType ==
"Error"){
$this->partialReturn($order, true);
}
} catch(Exception $e) {
hikashop_display($e->getMessage());
$ret = false;
}
if($this->debug) {
var_dump($ret);
}
}
private function AuthorizedWithCaptured(&$order){
if(!$this->initSoap())
return false;
if(!$this->loadOptions()){
return false;
}
$parameters = array(
'apiLoginID' =>
$this->plugin_options['api_id'],
'apiKey' => $this->plugin_options['api_key'],
'customerID' => $order->order_user_id,
'cartID' => $order->order_id,
'orderID' => $order->order_id,
'dateAuthorized' => date('c'),
'dateCaptured' => date('c')
);
static $soapCache = array();
$app = JFactory::getApplication();
try {
$soapRet =
$this->soap->__soapCall('AuthorizedWithCapture',
array($parameters));
$ret = $soapRet->AuthorizedWithCaptureResult;
} catch(Exception $e) {
hikashop_display($e->getMessage());
$ret = false;
}
if($this->debug) {
var_dump($ret);
}
}
public function onAfterOrderCreate(&$order,&$send_email){
if($order->order_type!='sale')
return;
$app = JFactory::getApplication();
if(hikashop_isClient('administrator'))
return;
$this->lookupAfterOrderCreate($order);
if(!empty($order->order_status)){
$config =& hikashop_config();
$confirmed_statuses = explode(',',
trim($config->get('invoice_order_statuses','confirmed,shipped'),
','));
if(empty($confirmed_statuses))
$confirmed_statuses =
array('confirmed','shipped');
if(in_array($order->order_status,$confirmed_statuses) &&
(empty($order->old->order_status) ||
!in_array($order->old->order_status,$confirmed_statuses))) {//if the
actual status is confirmed and the old status wasn't confirmed
$this->AuthorizedWithCaptured($order);
return;
}
}
}
public function __construct(&$subject, $config) {
parent::__construct($subject, $config);
$app = JFactory::getApplication();
$app->setUserState(HIKASHOP_COMPONENT.'.taxcloud.address_hash',
'');
}
private function init() {
static $init = null;
if($init !== null)
return $init;
$init = defined('HIKASHOP_COMPONENT');
if(!$init) {
$filename =
rtrim(JPATH_ADMINISTRATOR,DS).DS.'components'.DS.'com_hikashop'.DS.'helpers'.DS.'helper.php';
if(file_exists($filename)) {
include_once($filename);
$init = defined('HIKASHOP_COMPONENT');
}
}
return $init;
}
protected function lookupAfterOrderCreate(&$order) {
if(!$this->initSoap())
return false;
$cart = $order->cart;
$address = $this->loadAddress();
if(empty($address)){
$address = $order->cart->shipping_address;
}
$app = JFactory::getApplication();
if(!$this->loadOptions()){
return false;
}
$db = JFactory::getDBO();
$parameters = array(
'uspsUserID' =>
$this->plugin_options['usps_id'],
'address1' => $address->address_street,
'address2' => $address->address_street2,
'city' => $address->address_city,
'state' => $address->address_state->zone_code_3,
'zip5' => $address->address_post_code,
'zip4' => ''
);
$ret = $this->soap->__soapCall('verifyAddress',
array($parameters));
try {
$ret = $this->soap->__soapCall('verifyAddress',
array($parameters));
} catch(Exception $e) {
$ret = false;
}
if(!empty($ret) && !empty($ret->VerifyAddressResult)) {
$errNumber = $ret->VerifyAddressResult->ErrNumber;
if($errNumber === '0') {
$usps_address = array(
'Address1' => $ret->VerifyAddressResult->Address1,
'Address2' =>
@$ret->VerifyAddressResult->Address2,
'City' => $ret->VerifyAddressResult->City,
'State' => $ret->VerifyAddressResult->State,
'Zip5' => $ret->VerifyAddressResult->Zip5,
'Zip4' => $ret->VerifyAddressResult->Zip4
);
} else if($errNumber === '97'){//if the address is incorrect,
use the original address anyway
$usps_address = array(
'Address1' => $address->address_street,
'Address2' => $address->address_street2,
'City' => $address->address_city,
'State' => $address->address_state->zone_code_3,
'Zip5' => $address->address_post_code,
'Zip4' => ''
);
}
else{
$option = hikaInput::get()->getCmd('option',
'');
$ctrl = hikaInput::get()->getCmd('ctrl', '');
if($option == 'com_hikashop' && $ctrl ==
'checkout') {
$app->enqueueMessage(JText::_('WRONG_SHIPPING_ADDRESS'),
'error');
}
}
}
$user_id = $order->order_user_id;
$cart_items = array();
$id = 0;
foreach($cart->products as &$product) {
$tic = $this->getCode($product, $cart);
if(!$tic)
$tic = (int)$this->plugin_options['default_tic'];
$id++;
if(!isset($product->order_product_params))
$product->order_product_params = new stdClass();
if(!isset($product->order_product_params->taxcloud))
$product->order_product_params->taxcloud = new stdClass();
$product->order_product_params->taxcloud->taxcloud_id = $id;
$cart_items[] = array(
'Index' => $id,
'ItemID' => $product->order_product_code,
'TIC' => $tic,
'Price' => $product->order_product_price,
'Qty' => $product->order_product_quantity
);
$product_query = 'UPDATE '.
hikashop_table('order_product') .' SET order_product_params
=
'.$db->Quote(json_encode($product->order_product_params)).'
WHERE order_product_id = '.(int)$product->order_product_id;
$db->setQuery($product_query);
$db->execute();
}
unset($product);
$j=0;
$db = JFactory::getDBO();
if(!empty($order->order_shipping_params->prices)){
foreach($order->order_shipping_params->prices as $key =>
$shipping) {
$id++;
$order->order_shipping_params->prices[$key]->taxcloud_index =
$id;
$order->order_shipping_params->prices[$key]->taxcloud_itemId =
"Shipping".$j;
$order->order_shipping_params->prices[$key]->taxcloud_tic =
$this->plugin_options['shipping_tic'];
$order->order_shipping_params->prices[$key]->taxcloud_price =
$shipping->price_with_tax - $shipping->tax;
$cart_items[] = array(
'Index' => $id,
'ItemID' => "Shipping".$j,
'TIC' =>
$this->plugin_options['shipping_tic'],
'Price' =>
$order->order_shipping_params->prices[$key]->taxcloud_price,
'Qty' => '1'
);
$j++;
}
$product_query = 'UPDATE '. hikashop_table('order')
.' SET order_shipping_params =
'.$db->Quote(serialize($order->order_shipping_params)).'
WHERE order_id = '.(int)$order->order_id;
$db->setQuery($product_query);
$db->execute();
}
$parameters = array(
'apiLoginID' =>
$this->plugin_options['api_id'],
'apiKey' => $this->plugin_options['api_key'],
'customerID' => $user_id,
'cartID' => $order->order_id,//important change here !
Not cart_id but order_id
'cartItems' => $cart_items,
'origin' => array(
'Address1' =>
$this->plugin_options['origin_address1'],
'Address2' =>
$this->plugin_options['origin_address2'],
'City' =>
$this->plugin_options['origin_city'],
'State' =>
$this->plugin_options['origin_state'],
'Zip5' =>
$this->plugin_options['origin_zip5'],
'Zip4' =>
$this->plugin_options['origin_zip4']
),
'destination' => $usps_address,
'deliveredBySeller' => false,
'exemptCert' => null
);
static $soapCache = array();
try {
$soapRet = $this->soap->__soapCall('Lookup',
array($parameters));
$ret = $soapRet->LookupResult;
} catch(Exception $e) {
$ret = false;
}
if($this->debug) {
hikashop_display($ret->ResponseType);
if($ret->ResponseType == 'OK')
hikashop_display(($ret->CartItemsResponse->CartItemResponse));
else
var_dump($ret);
}
}
public function onAfterCartProductsLoad(&$cart) {
$verify_address = $this->verifyAddress();
$this->lookup($cart);
}
public function onHikashopBeforeCheckDB(&$createTable,
&$custom_fields, &$structure, &$helper){
$structure['#__hikashop_product']['product_taxability_code']
= '`product_taxability_code` INT(10) NOT NULL DEFAULT 0';
}
public function onProductFormDisplay(&$product, &$html) {
if($product->product_type == 'variant')
return false;
$db = JFactory::getDBO();
$current = $db->getTableColumns(hikashop_table('product'));
if(!isset($current['product_taxability_code'])) {
$databaseHelper = hikashop_get('helper.database');
$databaseHelper->addColumns('product','`product_taxability_code`
INT(10) NOT NULL DEFAULT 0');
}
$doc = JFactory::getDocument();
$doc->addScript(HIKASHOP_LIVE.'plugins/hikashop/taxcloud/taxcloud.js');
if(!HIKASHOP_J30)
JHTML::_('behavior.mootools');
else
JHTML::_('behavior.framework');
$doc->addScriptDeclaration('
window.addEvent("domready", function(){ var taxcloudField = new
taxcloud("hikashop_data_product_taxability_code"); });
');
$html[] = '
<tr>
<td class="key">
<label
for="">'.JText::_('TAXABILITY_CODE').'</label>
</td>
<td>
<input type="text"
name="data[product][product_taxability_code]"
value="'.@$product->product_taxability_code.'"
id="hikashop_data_product_taxability_code">
<input type="hidden"
name="product_taxability_code_field" value="1"/>
</td>
</tr>
';
}
public function onAfterProductCreate(&$product) {
$app = JFactory::getApplication();
if(hikashop_isClient('administrator')) {
$this->productFormSave($product);
}
}
public function onAfterProductUpdate(&$product) {
$app = JFactory::getApplication();
if(hikashop_isClient('administrator')) {
$this->productFormSave($product);
}
}
protected function productFormSave(&$product) {
$field =
hikaInput::get()->getInt('product_taxability_code_field',
'0');
if(!empty($field) && empty($product->product_taxability_code))
{
$product->product_taxability_code =
(int)@$this->plugin_options['default_tic'];
}
}
public function onAfterProcessShippings(&$usable_rates) {
$verify_address = $this->verifyAddress();
if($verify_address == 2 )
return;
if(!$this->initSoap())
return false;
$app = JFactory::getApplication();
if(!$this->loadOptions()){
return false;
}
$user_id = hikashop_loadUser(false);
if(empty($user_id)){
return false;
}
$usps_address =
$app->getUserState(HIKASHOP_COMPONENT.'.taxcloud.full_address',
null);
if(empty($usps_address)){
$address = $this->loadAddress();
if(empty($address)) return false;
$usps_address = array(
'Address1' => $address->address_street,
'Address2' => $address->address_street2,
'City' => $address->address_city,
'State' => $address->address_state->zone_code_3,
'Zip5' => $address->address_post_code,
'Zip4' => ''
);
}
$shipping_tic =
(int)@$this->plugin_options['shipping_tic'];
$done = array();
$i=0;
foreach($usable_rates as $k => $method) {
if(isset($method->shipping_price_with_tax))
unset($usable_rates[$k]->shipping_price_with_tax);
$group_key =$method->shipping_id;
if(!empty($method->shipping_warehouse_id)){
$group_key .= '_';
if(is_array($method->shipping_warehouse_id)){
foreach($method->shipping_warehouse_id as $key => $val){
$group_key .= $key.$val;
}
}else{
$group_key .= $method->shipping_warehouse_id;
}
}
if(isset($done[$group_key])){
$usable_rates[$k]->taxcloud_id = $done[$group_key];
continue;
}
$i++;
$done[$group_key] = $i;
$usable_rates[$k]->taxcloud_id = $i;
$cart_items[] = array(
'Index' => $i,
'ItemID' => 'shipping_rate_'.$group_key,
'TIC' => $shipping_tic,
'Price' => $method->shipping_price,
'Qty' => 1
);
}
$parameters = array(
'apiLoginID' =>
$this->plugin_options['api_id'],
'apiKey' => $this->plugin_options['api_key'],
'customerID' => $user_id,
'cartID' => 'sp0',
'cartItems' => $cart_items,
'origin' => array(
'Address1' =>
$this->plugin_options['origin_address1'],
'Address2' =>
$this->plugin_options['origin_address2'],
'City' =>
$this->plugin_options['origin_city'],
'State' =>
$this->plugin_options['origin_state'],
'Zip5' =>
$this->plugin_options['origin_zip5'],
'Zip4' =>
$this->plugin_options['origin_zip4']
),
'destination' => $usps_address,
'deliveredBySeller' => true,
'exemptCert' => null
);
static $soapCache = array();
$hash = md5(serialize($parameters));
$session_hash =
$app->getUserState(HIKASHOP_COMPONENT.'.taxcloud.shipping_cache_hash',
'');
if($hash == $session_hash) {
$ret =
$app->getUserState(HIKASHOP_COMPONENT.'.taxcloud.shipping_cache',
'');
if(!empty($ret) && !empty($ret->ResponseType)) {
$useCache = true;
if(!isset($soapCache[$hash]))
$soapCache[$hash] = $ret;
} else {
unset($ret);
}
} else {
$app->setUserState(HIKASHOP_COMPONENT.'.taxcloud.shipping_cache_hash',
'');
$app->setUserState(HIKASHOP_COMPONENT.'.taxcloud.shipping_cache',
null);
}
if(!isset($soapCache[$hash])) {
try {
$soapRet = $this->soap->__soapCall('Lookup',
array($parameters)); //, array('uri' =>
'http://taxcloud.net','soapaction' =>
''));
$soapCache[$hash] = $soapRet->LookupResult;
$ret = $soapRet->LookupResult;
} catch(Exception $e) {
$ret = false;
}
if($ret !== false) {
$app->setUserState(HIKASHOP_COMPONENT.'.taxcloud.shipping_cache_hash',
$hash);
$app->setUserState(HIKASHOP_COMPONENT.'.taxcloud.shipping_cache',
$ret);
}
if($this->debug) {
var_dump($ret->ResponseType);
if($ret->ResponseType == 'OK')
var_dump($ret->CartItemsResponse->CartItemResponse);
else
var_dump($ret);
}
} else {
$ret = $soapCache[$hash];
$useCache = true;
}
$rates = array();
if(!empty($ret) && $ret->ResponseType == 'OK') {
if(!is_array($ret->CartItemsResponse->CartItemResponse))
$ret->CartItemsResponse->CartItemResponse =
array($ret->CartItemsResponse->CartItemResponse);
foreach($ret->CartItemsResponse->CartItemResponse as $item) {
foreach($usable_rates as &$method) {
if($method->taxcloud_id == $item->CartItemIndex) {
$tic = (int)@$this->plugin_options['shipping_tic'];
if(!empty($method->shipping_taxability_code))
$tic = (int)$method->shipping_taxability_code;
$price_value = $method->shipping_price;
$new_price = $price_value + $item->TaxAmount;
$t = new stdClass();
if($price_value != '0'){
$t->tax_rate = round(($new_price / $price_value) - 1, 4);
$t->tax_amount = $item->TaxAmount;
$t->tax_namekey = $this->taxName($t->tax_rate); //
JText::sprintf('TAXCLOUD_TAX', $t->tax_rate);
$method->shipping_price_with_tax = $new_price;
$method->taxes = array($t->tax_namekey => $t);
if(!isset($rates[$tic])) {
$rates[$tic] = new stdClass();
$rates[$tic]->amount = 0.0;
}
$rates[$tic]->amount += $item->TaxAmount;
if($this->debug && empty($useCache))
var_dump($method);
}
}
}
unset($method);
}
}
$this->errors = array();
}
protected function initSoap() {
if($this->soap !== null)
return true;
if(!extension_loaded('soap') &&
!class_exists('SoapClient')){
static $done = false;
if(!$done){
$app = JFactory::getApplication();
$app->enqueueMessage('The HikaShop TaxCloud plugin requires the
SOAP PHP extension to be installed and activated on your web server. Please
contact your hosting company for help on installing/activating it as we
detected that it is not or deactivate the TaxCloud plugin.');
$done = true;
}
return false;
}
$wsdl = dirname(__FILE__).DIRECTORY_SEPARATOR.'taxcloud.wsdl';
try {
$this->soap = new SoapClient($wsdl, array('trace' =>
true, 'exceptions' => true));
} catch(Exception $e) {
var_dump($e);
unset($this->soap);
$this->soap = null;
return false;
}
return true;
}
protected function taxName($rate) {
$key = 'TAXCLOUD_TAX';
if(JText::_($key) == $key)
$key = 'Tax (%s)';
$rate = round($rate * 100, 2) . '%';
$ret = JText::sprintf($key, $rate);
return $ret;
}
protected function loadOptions() {
if(!empty($this->plugin_options)){
if(empty($this->plugin_options['api_id']) ||
empty($this->plugin_options['api_key'])){
return false;
}
return true;
}
$this->plugin_options = array(
'api_id' => '',
'api_key' => '',
'usps_id' => '',
'default_tic' => '0',
'shipping_tic' => '0',
'origin_address1' => '',
'origin_address2' => '',
'origin_city' => '',
'origin_state' => '',
'origin_zip5' => '',
'origin_zip4' => ''
);
if(!isset($this->params)) {
$pluginsClass = hikashop_get('class.plugins');
$plugin = $pluginsClass->getByName('hikashop',
'taxcloud');
foreach($this->plugin_options as $key => &$value) {
if(!empty($plugin->params[$key])) $value =
$plugin->params[$key];
}
unset($value);
} else {
foreach($this->plugin_options as $key => &$value) {
$value = $this->params->get($key, $value);
}
unset($value);
}
if(empty($this->plugin_options['api_id']) ||
empty($this->plugin_options['api_key'])){
$app = JFactory::getApplication();
if(hikashop_isClient('administrator')){
$app->enqueueMessage('Please configure your TaxCloud plugin via
the Joomla plugins manager');
}
return false;
}
return true;
}
protected function verifyAddress() {
$app = JFactory::getApplication();
if(!$this->loadOptions()){
return false;
}
$address = $this->loadAddress();
if(empty($address)) return false;
$address_hash = md5(serialize($address));
$taxcloud_checkaddress =
$app->getUserState(HIKASHOP_COMPONENT.'.taxcloud.address_hash',
'');
if($taxcloud_checkaddress == $address_hash) {
return
(int)$app->getUserState(HIKASHOP_COMPONENT.'.taxcloud.address_result',
0);
}
$app->setUserState(HIKASHOP_COMPONENT.'.taxcloud.address_hash',
$address_hash);
$app->setUserState(HIKASHOP_COMPONENT.'.taxcloud.address_result',
0);
$app->setUserState(HIKASHOP_COMPONENT.'.taxcloud.full_address',
null);
if(!$this->initSoap())
return false;
if($address->address_country->zone_code_3 != 'USA') {
$app->setUserState(HIKASHOP_COMPONENT.'.taxcloud.address_result',
2);
return 2;
}
$parameters = array(
'uspsUserID' =>
$this->plugin_options['usps_id'],
'address1' => $address->address_street,
'address2' => $address->address_street2,
'city' => $address->address_city,
'state' => $address->address_state->zone_code_3,
'zip5' => $address->address_post_code,
'zip4' => ''
);
try {
$ret = $this->soap->__soapCall('verifyAddress',
array($parameters)); //, array('uri' =>
'http://taxcloud.net','soapaction' =>
''));
} catch(Exception $e) {
$ret = false;
}
if(!empty($ret) && !empty($ret->VerifyAddressResult)) {
$errNumber = $ret->VerifyAddressResult->ErrNumber;
if($errNumber === '0') {
$usps_address = array(
'Address1' => $ret->VerifyAddressResult->Address1,
'Address2' =>
@$ret->VerifyAddressResult->Address2,
'City' => $ret->VerifyAddressResult->City,
'State' => $ret->VerifyAddressResult->State,
'Zip5' => $ret->VerifyAddressResult->Zip5,
'Zip4' => $ret->VerifyAddressResult->Zip4
);
$app->setUserState(HIKASHOP_COMPONENT.'.taxcloud.full_address',
$usps_address);
$app->setUserState(HIKASHOP_COMPONENT.'.taxcloud.address_result',
1);
return 1;
} else {
$option = hikaInput::get()->getCmd('option',
'');
$ctrl = hikaInput::get()->getCmd('ctrl', '');
if($option == 'com_hikashop' && $ctrl ==
'checkout') {
$app->enqueueMessage(JText::_('WRONG_SHIPPING_ADDRESS'),
'error');
}
}
}
return 0;
}
protected function loadAddress(){
$app = JFactory::getApplication();
$shipping_method =
$app->getUserState(HIKASHOP_COMPONENT.'.shipping_method');
if(empty($shipping_method))
$shipping_method = array();
if(!is_array($shipping_method))
$shipping_method = array($shipping_method);
$currentShipping = array();
if(count($shipping_method)==1){
foreach($shipping_method as $method){
$method = explode('@',$method);
$method = $method[0];
$currentShipping[] = hikashop_import('hikashopshipping',
$method);
}
}
$override = false;
foreach($currentShipping as $selectedMethod){
if(!empty($selectedMethod) && method_exists($selectedMethod,
'getShippingAddress')) {
$override = $selectedMethod->getShippingAddress();
}
}
if($override){
if(@$this->plugin_options['use_origin_address_when_override']){
$address = new stdClass();
$address->address_street =
$this->plugin_options['origin_address1'];
$address->address_street2 =
$this->plugin_options['origin_address2'];
$address->address_city =
$this->plugin_options['origin_city'];
$address->address_state = new stdClass();
$address->address_state->zone_code_3 =
$this->plugin_options['origin_state'];
$address->address_post_code =
$this->plugin_options['origin_zip5'].$this->plugin_options['origin_zip4'];
return $address;
}
return false;
}
$shipping_address =
(int)$app->getUserState(HIKASHOP_COMPONENT.'.shipping_address',
0);
if(empty($shipping_address))
$shipping_address =
(int)$app->getUserState(HIKASHOP_COMPONENT.'.billing_address',
0);
if(empty($shipping_address))
return false;
$addressClass = hikashop_get('class.address');
$address = $addressClass->get($shipping_address);
if(empty($address)) {
return false;
}
$array = array(&$address);
$addressClass->loadZone($array,'object');
if(empty($address->address_country)) {
$address->address_country = new stdClass();
$address->address_country->zone_code_3 = 'USA';
}
return $address;
}
protected function getCode(&$product, &$cart){
if(!empty($product->product_taxability_code) &&
$product->product_taxability_code!= '-1')
return (int)$product->product_taxability_code;
if(!empty($cart->full_products)) {
$fp =& $cart->full_products;
if(isset($fp[$product->cart_product_id]) &&
!empty($fp[$product->cart_product_id]->product_taxability_code)
&& $fp[$product->cart_product_id]->product_taxability_code !=
'-1')
return
(int)$fp[$product->cart_product_id]->product_taxability_code;
}
$p =& $cart->products;
if(!empty($product->cart_product_parent_id) &&
isset($p[$product->cart_product_parent_id])) {
if(!empty($p[$product->cart_product_parent_id]->product_taxability_code)
&&
$p[$product->cart_product_parent_id]->product_taxability_code !=
'-1')
return
(int)$p[$product->cart_product_parent_id]->product_taxability_code;
if(isset($fp) &&
isset($fp[$p[$product->cart_product_parent_id]->cart_product_id])
&&
!empty($fp[$p[$product->cart_product_parent_id]->cart_product_id]->product_taxability_code)
&&
$fp[$p[$product->cart_product_parent_id]->cart_product_id]->product_taxability_code
!= '-1')
return
(int)$fp[$p[$product->cart_product_parent_id]->cart_product_id]->product_taxability_code;
}
if(isset($product->product_taxability_code) ||
empty($product->product_id))
return;
$productClass = hikashop_get('class.product');
$data = $productClass->get($product->product_id);
if(!empty($data->product_taxability_code) &&
$data->product_taxability_code!= '-1')
return $data->product_taxability_code;
if(!empty($data->product_parent_id)) {
$data = $productClass->get($product->product_parent_id);
if(!empty($data->product_taxability_code) &&
$data->product_taxability_code!= '-1')
return $data->product_taxability_code;
}
return false;
}
protected function lookup(&$cart) {
if(!$this->initSoap())
return false;
if(!$this->loadOptions()){
return false;
}
$address = $this->loadAddress();
if(empty($address)) return false;
if($address->address_country->zone_code_3 != 'USA')
return true;
$app = JFactory::getApplication();
$user_id = hikashop_loadUser(false);
if(empty($user_id)){
return false;
}
$usps_address =
$app->getUserState(HIKASHOP_COMPONENT.'.taxcloud.full_address',
null);
if(empty($usps_address)){
$usps_address = array(
'Address1' => $address->address_street,
'Address2' => $address->address_street2,
'City' => $address->address_city,
'State' => $address->address_state->zone_code_3,
'Zip5' => $address->address_post_code,
'Zip4' => ''
);
}
$cart_items = array();
$tics = array();
$i = 0;
foreach($cart->products as $product) {
if(empty($product->cart_product_quantity))
continue;
$i++;
$tic = $this->getCode($product, $cart);
if(!$tic)
$tic = (int)$this->plugin_options['default_tic'];
if(!isset($tics[$tic])) {
$cart_items[] = array(
'Index' => -$i,
'ItemID' => 'tic_rate_'.$tic,
'TIC' => $tic,
'Price' => 1,
'Qty' => 1
);
$tics[$tic] = $i;
}
}
$i=0;
foreach($cart->products as $k => $product) {
if(empty($product->cart_product_quantity))
continue;
$i++;
$tic = $this->getCode($product, $cart);
if(!$tic)
$tic = (int)$this->plugin_options['default_tic'];
$cart->products[$k]->taxcloud_id = $i;
if(isset($product->prices[0]->unit_price->price_value))
$price = $product->prices[0]->unit_price->price_value;
else if (isset($product->prices[0]->price_value))
$price = $product->prices[0]->price_value;
else
$price = 0;
if($price<=0.0)
continue;
$cart_items[] = array(
'Index' => $i,
'ItemID' => $product->product_code,
'TIC' => $tic,
'Price' => $price,
'Qty' => $product->cart_product_quantity
);
}
$parameters = array(
'apiLoginID' =>
$this->plugin_options['api_id'],
'apiKey' => $this->plugin_options['api_key'],
'customerID' => $user_id,
'cartID' => $cart->cart_id,
'cartItems' => $cart_items,
'origin' => array(
'Address1' =>
$this->plugin_options['origin_address1'],
'Address2' =>
$this->plugin_options['origin_address2'],
'City' =>
$this->plugin_options['origin_city'],
'State' =>
$this->plugin_options['origin_state'],
'Zip5' =>
$this->plugin_options['origin_zip5'],
'Zip4' =>
$this->plugin_options['origin_zip4']
),
'destination' => $usps_address,
'deliveredBySeller' => false,
'exemptCert' => null
);
static $soapCache = array();
$hash = md5(serialize($parameters));
$session_hash =
$app->getUserState(HIKASHOP_COMPONENT.'.taxcloud.cache_hash',
'');
if($hash == $session_hash) {
$ret =
$app->getUserState(HIKASHOP_COMPONENT.'.taxcloud.cache',
'');
if(!empty($ret) && !empty($ret->ResponseType)) {
$useCache = true;
if(!isset($soapCache[$hash]))
$soapCache[$hash] = $ret;
} else {
unset($ret);
}
} else {
$app->setUserState(HIKASHOP_COMPONENT.'.taxcloud.cache_hash',
'');
$app->setUserState(HIKASHOP_COMPONENT.'.taxcloud.cache',
null);
}
if(!isset($soapCache[$hash])) {
try {
$soapRet = $this->soap->__soapCall('Lookup',
array($parameters)); //, array('uri' =>
'http://taxcloud.net','soapaction' =>
''));
$soapCache[$hash] = $soapRet->LookupResult;
$ret = $soapRet->LookupResult;
} catch(Exception $e) {
$ret = false;
}
if($ret !== false && @$ret->ResponseType == 'OK')
{
$app->setUserState(HIKASHOP_COMPONENT.'.taxcloud.cache_hash',
$hash);
$app->setUserState(HIKASHOP_COMPONENT.'.taxcloud.cache',
$ret);
}
if($this->debug) {
var_dump($ret->ResponseType);
if($ret->ResponseType == 'OK')
var_dump($ret->CartItemsResponse->CartItemResponse);
else
var_dump($ret);
}
} else {
$ret = $soapCache[$hash];
$useCache = true;
}
$rates = array();
if(!empty($ret) && $ret->ResponseType == 'OK') {
foreach($cart->products as &$product) {
if(empty($product->cart_product_quantity))
continue;
if(isset($product->prices[0])){
$product->prices[0]->price_value_with_tax =
$product->prices[0]->price_value;
$product->prices[0]->taxes = array();
}
}
unset($product);
if(!is_array($ret->CartItemsResponse->CartItemResponse))
$ret->CartItemsResponse->CartItemResponse =
array($ret->CartItemsResponse->CartItemResponse);
foreach($ret->CartItemsResponse->CartItemResponse as $item) {
foreach($cart->products as &$product) {
if(empty($product->cart_product_quantity))
continue;
if($item->CartItemIndex <= 0) {
$tic = $this->getCode($product, $cart);
if(!$tic)
$tic = (int)$this->plugin_options['default_tic'];
if(!isset($rates[$tic]) ) {
$r = new stdClass();
$r->rate = $item->TaxAmount;
$r->amount = 0.0;
$rates[ $tic ] = $r;
} else {
$rates[$tic]->rate = $item->TaxAmount;
}
continue;
}
if((int)$product->taxcloud_id == $item->CartItemIndex) {
if(!isset($product->prices[0]))
continue;
$tic = $this->getCode($product, $cart);
if(!$tic)
$tic = (int)$this->plugin_options['default_tic'];
$price_value = $product->prices[0]->price_value;
$new_price = $price_value + $item->TaxAmount;
$t = new stdClass();
$t->tax_rate = round(($new_price / $price_value) - 1, 4);
$t->tax_amount = $item->TaxAmount;
$t->tax_namekey = $this->taxName($t->tax_rate);
$product->prices[0]->price_value_with_tax = $new_price;
$product->prices[0]->taxes[$t->tax_namekey] = $t;
if(!isset($rates[$tic])) {
$rates[$tic] = new stdClass();
$rates[$tic]->amount = 0.0;
}
$rates[$tic]->amount += $item->TaxAmount;
if($this->debug && empty($useCache))
var_dump($product->prices[0]);
if(!empty($product->prices[0]->unit_price))
$product->prices[0]->unit_price->price_value_with_tax =
$product->prices[0]->unit_price->price_value +
$item->TaxAmount/$product->cart_product_quantity;
}
}
unset($product);
}
$cart->total->prices[0]->taxes = array();
foreach($rates as $k => $rate) {
$key = $this->taxName($rate->rate);
if(!isset($cart->total->prices[0]->taxes[$key])) {
$t = new stdClass();
$t->tax_amount = 0.0;
$t->tax_rate = $rate->rate;
$t->tax_namekey = $this->taxName($t->tax_rate); //
JText::sprintf('TAXCLOUD_TAX', $t->tax_rate);
$cart->total->prices[0]->taxes[$key] = $t;
}
$cart->total->prices[0]->taxes[$key]->tax_amount +=
$rate->amount;
}
$total_taxes = 0;
foreach($cart->total->prices[0]->taxes as &$tax) {
$total_taxes += $tax->tax_amount;
}
unset($tax);
$cart->total->prices[0]->price_value_with_tax =
$cart->total->prices[0]->price_value + $total_taxes;
if($this->debug && empty($useCache))
var_dump($cart->total->prices[0]);
} else {
if(empty($ret->Messages->ResponseMessage->Message)){
$ret->Messages->ResponseMessage->Message = "Unknown
error. The tax calculation service is probably down.";
}
$this->display_errors(@$ret->Messages->ResponseMessage->Message);
}
}
public function display_errors($error){
$app = JFactory::getApplication();
if(!isset($this->errors[$error])){
$app->enqueueMessage('TaxCloud error : '.@$error,
'error');
$this->errors[$error]=1;
}
}
public function check_address() {
JToolBarHelper::title('TaxCloud' , 'plugin.png' );
if(!$this->init())
return;
if(!$this->initSoap())
return false;
$pluginsClass = hikashop_get('class.plugins');
$plugin = $pluginsClass->getByName('hikashop',
'taxcloud');
$url =
JRoute::_('index.php?option=com_plugins&view=plugin&layout=edit&extension_id='.$plugin->extension_id);
$bar = JToolBar::getInstance('toolbar');
$bar->appendButton('Link', 'cancel',
JText::_('HIKA_CANCEL'), $url);
if(!$this->loadOptions()){
return false;
}
$parameters = array(
'uspsUserID' =>
$this->plugin_options['usps_id'],
'address1' =>
$this->plugin_options['origin_address1'],
'address2' =>
$this->plugin_options['origin_address2'],
'city' =>
$this->plugin_options['origin_city'],
'state' =>
$this->plugin_options['origin_state'],
'zip5' =>
$this->plugin_options['origin_zip5'],
'zip4' =>
$this->plugin_options['origin_zip4']
);
try{
$ret = $this->soap->__soapCall('verifyAddress',
array($parameters));
if(!empty($ret) && !empty($ret->VerifyAddressResult)) {
$errNumber = $ret->VerifyAddressResult->ErrNumber;
if($errNumber === '0') {
echo '<fieldset><h1>Check Address</h1><table
width="100%"
style="width:100%"><thead><tr>'.
'<th>Name</th>'.
'<th>Original value</th>'.
'<th>Processed value</th>'.
'</thead><tbody>'.
'<tr><td>Address
1</td><td>'.$this->plugin_options['origin_address1'].'</td><td>'.@$ret->VerifyAddressResult->Address1.'</td></tr>'.
'<tr><td>Address
2</td><td>'.$this->plugin_options['origin_address2'].'</td><td>'.@$ret->VerifyAddressResult->Address2.'</td></tr>'.
'<tr><td>City</td><td>'.$this->plugin_options['origin_city'].'</td><td>'.@$ret->VerifyAddressResult->City.'</td></tr>'.
'<tr><td>State</td><td>'.$this->plugin_options['origin_state'].'</td><td>'.@$ret->VerifyAddressResult->State.'</td></tr>'.
'<tr><td>Zip5</td><td>'.$this->plugin_options['origin_zip5'].'</td><td>'.@$ret->VerifyAddressResult->Zip5.'</td></tr>'.
'<tr><td>Zip4</td><td>'.$this->plugin_options['origin_zip4'].'</td><td>'.@$ret->VerifyAddressResult->Zip4.'</td></tr>'.
'</tbody></table></fieldset>';
} else {
echo '<fieldset><h1>Check Address
Error</h1><p>'.$ret->VerifyAddressResult->ErrDescription.'</p></fieldset>';
}
} else {
echo '<fieldset><h1>Check Address
Error</h1><p>';
var_dump($ret);
echo '</p></fieldset>';
}
}catch(Exception $e){
echo '<fieldset><h1>Check Address
Error</h1><p><pre>';
var_dump($e);
echo '</pre></p></fieldset>';
}
}
public function browse_tic() {
JToolBarHelper::title('TaxCloud' , 'plugin.png' );
if(!$this->init())
return;
$pluginsClass = hikashop_get('class.plugins');
$plugin = $pluginsClass->getByName('hikashop',
'taxcloud');
$url =
JRoute::_('index.php?option=com_plugins&view=plugin&layout=edit&extension_id='.$plugin->extension_id);
$bar = JToolBar::getInstance('toolbar');
$bar->appendButton('Link', 'cancel',
JText::_('HIKA_CANCEL'), $url);
$doc = JFactory::getDocument();
$doc->addScript(HIKASHOP_LIVE.'plugins/hikashop/taxcloud/taxcloud.js');
if(!HIKASHOP_J30)
JHTML::_('behavior.mootools');
else
JHTML::_('behavior.framework');
$doc->addScriptDeclaration('
window.addEvent("domready", function(){ var taxcloudField = new
taxcloud("taxability_code"); });
');
echo '<fieldset><h1>Browse
TIC</h1><div><input type="text" value=""
id="taxability_code"/></div></fieldset>';
}
}
taxcloud.wsdl000064400000151272151157023530007274 0ustar00<?xml
version="1.0" encoding="utf-8"?>
<wsdl:definitions xmlns:s="http://www.w3.org/2001/XMLSchema"
xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
xmlns:tns="http://taxcloud.net"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"
xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
targetNamespace="http://taxcloud.net"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:documentation
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">TaxCloud Web
Service</wsdl:documentation>
<wsdl:types>
<s:schema elementFormDefault="qualified"
targetNamespace="http://taxcloud.net">
<s:element name="VerifyAddress">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1"
name="uspsUserID" type="s:string" />
<s:element minOccurs="0" maxOccurs="1"
name="address1" type="s:string" />
<s:element minOccurs="0" maxOccurs="1"
name="address2" type="s:string" />
<s:element minOccurs="0" maxOccurs="1"
name="city" type="s:string" />
<s:element minOccurs="0" maxOccurs="1"
name="state" type="s:string" />
<s:element minOccurs="0" maxOccurs="1"
name="zip5" type="s:string" />
<s:element minOccurs="0" maxOccurs="1"
name="zip4" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="VerifyAddressResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1"
name="VerifyAddressResult" type="tns:VerifiedAddress"
/>
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="VerifiedAddress">
<s:complexContent mixed="false">
<s:extension base="tns:Address">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1"
name="ErrNumber" type="s:string" />
<s:element minOccurs="0" maxOccurs="1"
name="ErrDescription" type="s:string" />
</s:sequence>
</s:extension>
</s:complexContent>
</s:complexType>
<s:complexType name="Address">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1"
name="Address1" type="s:string" />
<s:element minOccurs="0" maxOccurs="1"
name="Address2" type="s:string" />
<s:element minOccurs="0" maxOccurs="1"
name="City" type="s:string" />
<s:element minOccurs="0" maxOccurs="1"
name="State" type="s:string" />
<s:element minOccurs="0" maxOccurs="1"
name="Zip5" type="s:string" />
<s:element minOccurs="0" maxOccurs="1"
name="Zip4" type="s:string" />
</s:sequence>
</s:complexType>
<s:element name="LookupForDate">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1"
name="apiLoginID" type="s:string" />
<s:element minOccurs="0" maxOccurs="1"
name="apiKey" type="s:string" />
<s:element minOccurs="0" maxOccurs="1"
name="customerID" type="s:string" />
<s:element minOccurs="0" maxOccurs="1"
name="cartID" type="s:string" />
<s:element minOccurs="0" maxOccurs="1"
name="cartItems" type="tns:ArrayOfCartItem" />
<s:element minOccurs="0" maxOccurs="1"
name="origin" type="tns:Address" />
<s:element minOccurs="0" maxOccurs="1"
name="destination" type="tns:Address" />
<s:element minOccurs="1" maxOccurs="1"
name="deliveredBySeller" type="s:boolean" />
<s:element minOccurs="0" maxOccurs="1"
name="exemptCert" type="tns:ExemptionCertificate"
/>
<s:element minOccurs="1" maxOccurs="1"
name="useDate" type="s:dateTime" />
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="ArrayOfCartItem">
<s:sequence>
<s:element minOccurs="0"
maxOccurs="unbounded" name="CartItem"
nillable="true" type="tns:CartItem" />
</s:sequence>
</s:complexType>
<s:complexType name="CartItem">
<s:sequence>
<s:element minOccurs="1" maxOccurs="1"
name="Index" type="s:int" />
<s:element minOccurs="0" maxOccurs="1"
name="ItemID" type="s:string" />
<s:element minOccurs="1" maxOccurs="1"
name="TIC" nillable="true" type="s:int"
/>
<s:element minOccurs="1" maxOccurs="1"
name="Price" type="s:double" />
<s:element minOccurs="1" maxOccurs="1"
name="Qty" type="s:float" />
</s:sequence>
</s:complexType>
<s:complexType name="ExemptionCertificate">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1"
name="CertificateID" type="s:string" />
<s:element minOccurs="0" maxOccurs="1"
name="Detail" type="tns:ExemptionCertificateDetail"
/>
</s:sequence>
</s:complexType>
<s:complexType name="ExemptionCertificateDetail">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1"
name="ExemptStates" type="tns:ArrayOfExemptState"
/>
<s:element minOccurs="1" maxOccurs="1"
name="SinglePurchase" type="s:boolean" />
<s:element minOccurs="0" maxOccurs="1"
name="SinglePurchaseOrderNumber" type="s:string" />
<s:element minOccurs="0" maxOccurs="1"
name="PurchaserFirstName" type="s:string" />
<s:element minOccurs="0" maxOccurs="1"
name="PurchaserLastName" type="s:string" />
<s:element minOccurs="0" maxOccurs="1"
name="PurchaserTitle" type="s:string" />
<s:element minOccurs="0" maxOccurs="1"
name="PurchaserAddress1" type="s:string" />
<s:element minOccurs="0" maxOccurs="1"
name="PurchaserAddress2" type="s:string" />
<s:element minOccurs="0" maxOccurs="1"
name="PurchaserCity" type="s:string" />
<s:element minOccurs="1" maxOccurs="1"
name="PurchaserState" type="tns:State" />
<s:element minOccurs="0" maxOccurs="1"
name="PurchaserZip" type="s:string" />
<s:element minOccurs="0" maxOccurs="1"
name="PurchaserTaxID" type="tns:TaxID" />
<s:element minOccurs="1" maxOccurs="1"
name="PurchaserBusinessType" type="tns:BusinessType"
/>
<s:element minOccurs="0" maxOccurs="1"
name="PurchaserBusinessTypeOtherValue" type="s:string"
/>
<s:element minOccurs="1" maxOccurs="1"
name="PurchaserExemptionReason"
type="tns:ExemptionReason" />
<s:element minOccurs="0" maxOccurs="1"
name="PurchaserExemptionReasonValue" type="s:string"
/>
<s:element minOccurs="1" maxOccurs="1"
name="CreatedDate" type="s:dateTime" />
</s:sequence>
</s:complexType>
<s:complexType name="ArrayOfExemptState">
<s:sequence>
<s:element minOccurs="0"
maxOccurs="unbounded" name="ExemptState"
nillable="true" type="tns:ExemptState" />
</s:sequence>
</s:complexType>
<s:complexType name="ExemptState">
<s:sequence>
<s:element minOccurs="1" maxOccurs="1"
name="StateAbbr" type="tns:State" />
<s:element minOccurs="0" maxOccurs="1"
name="ReasonForExemption" type="s:string" />
<s:element minOccurs="0" maxOccurs="1"
name="IdentificationNumber" type="s:string" />
</s:sequence>
</s:complexType>
<s:simpleType name="State">
<s:restriction base="s:string">
<s:enumeration value="AL" />
<s:enumeration value="AK" />
<s:enumeration value="AZ" />
<s:enumeration value="AR" />
<s:enumeration value="CA" />
<s:enumeration value="CO" />
<s:enumeration value="CT" />
<s:enumeration value="DE" />
<s:enumeration value="DC" />
<s:enumeration value="FL" />
<s:enumeration value="GA" />
<s:enumeration value="HI" />
<s:enumeration value="ID" />
<s:enumeration value="IL" />
<s:enumeration value="IN" />
<s:enumeration value="IA" />
<s:enumeration value="KS" />
<s:enumeration value="KY" />
<s:enumeration value="LA" />
<s:enumeration value="ME" />
<s:enumeration value="MD" />
<s:enumeration value="MA" />
<s:enumeration value="MI" />
<s:enumeration value="MN" />
<s:enumeration value="MS" />
<s:enumeration value="MO" />
<s:enumeration value="MT" />
<s:enumeration value="NE" />
<s:enumeration value="NV" />
<s:enumeration value="NH" />
<s:enumeration value="NJ" />
<s:enumeration value="NM" />
<s:enumeration value="NY" />
<s:enumeration value="NC" />
<s:enumeration value="ND" />
<s:enumeration value="OH" />
<s:enumeration value="OK" />
<s:enumeration value="OR" />
<s:enumeration value="PA" />
<s:enumeration value="RI" />
<s:enumeration value="SC" />
<s:enumeration value="SD" />
<s:enumeration value="TN" />
<s:enumeration value="TX" />
<s:enumeration value="UT" />
<s:enumeration value="VT" />
<s:enumeration value="VA" />
<s:enumeration value="WA" />
<s:enumeration value="WV" />
<s:enumeration value="WI" />
<s:enumeration value="WY" />
</s:restriction>
</s:simpleType>
<s:complexType name="TaxID">
<s:sequence>
<s:element minOccurs="1" maxOccurs="1"
name="TaxType" type="tns:TaxIDType" />
<s:element minOccurs="0" maxOccurs="1"
name="IDNumber" type="s:string" />
<s:element minOccurs="0" maxOccurs="1"
name="StateOfIssue" type="s:string" />
</s:sequence>
</s:complexType>
<s:simpleType name="TaxIDType">
<s:restriction base="s:string">
<s:enumeration value="SSN" />
<s:enumeration value="FEIN" />
<s:enumeration value="StateIssued" />
<s:enumeration value="ForeignDiplomat" />
</s:restriction>
</s:simpleType>
<s:simpleType name="BusinessType">
<s:restriction base="s:string">
<s:enumeration value="AccommodationAndFoodServices"
/>
<s:enumeration
value="Agricultural_Forestry_Fishing_Hunting" />
<s:enumeration value="Construction" />
<s:enumeration value="FinanceAndInsurance" />
<s:enumeration
value="Information_PublishingAndCommunications" />
<s:enumeration value="Manufacturing" />
<s:enumeration value="Mining" />
<s:enumeration value="RealEstate" />
<s:enumeration value="RentalAndLeasing" />
<s:enumeration value="RetailTrade" />
<s:enumeration value="TransportationAndWarehousing"
/>
<s:enumeration value="Utilities" />
<s:enumeration value="WholesaleTrade" />
<s:enumeration value="BusinessServices" />
<s:enumeration value="ProfessionalServices" />
<s:enumeration
value="EducationAndHealthCareServices" />
<s:enumeration value="NonprofitOrganization" />
<s:enumeration value="Government" />
<s:enumeration value="NotABusiness" />
<s:enumeration value="Other" />
</s:restriction>
</s:simpleType>
<s:simpleType name="ExemptionReason">
<s:restriction base="s:string">
<s:enumeration value="FederalGovernmentDepartment"
/>
<s:enumeration value="StateOrLocalGovernmentName"
/>
<s:enumeration value="TribalGovernmentName" />
<s:enumeration value="ForeignDiplomat" />
<s:enumeration value="CharitableOrganization" />
<s:enumeration
value="ReligiousOrEducationalOrganization" />
<s:enumeration value="Resale" />
<s:enumeration value="AgriculturalProduction" />
<s:enumeration
value="IndustrialProductionOrManufacturing" />
<s:enumeration value="DirectPayPermit" />
<s:enumeration value="DirectMail" />
<s:enumeration value="Other" />
</s:restriction>
</s:simpleType>
<s:element name="LookupForDateResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1"
name="LookupForDateResult" type="tns:LookupRsp" />
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="LookupRsp">
<s:complexContent mixed="false">
<s:extension base="tns:ResponseBase">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1"
name="CartID" type="s:string" />
<s:element minOccurs="0" maxOccurs="1"
name="CartItemsResponse"
type="tns:ArrayOfCartItemResponse" />
</s:sequence>
</s:extension>
</s:complexContent>
</s:complexType>
<s:complexType name="ResponseBase">
<s:sequence>
<s:element minOccurs="1" maxOccurs="1"
name="ResponseType" type="tns:MessageType" />
<s:element minOccurs="0" maxOccurs="1"
name="Messages" type="tns:ArrayOfResponseMessage"
/>
</s:sequence>
</s:complexType>
<s:simpleType name="MessageType">
<s:restriction base="s:string">
<s:enumeration value="Error" />
<s:enumeration value="Warning" />
<s:enumeration value="Informational" />
<s:enumeration value="OK" />
</s:restriction>
</s:simpleType>
<s:complexType name="ArrayOfResponseMessage">
<s:sequence>
<s:element minOccurs="0"
maxOccurs="unbounded" name="ResponseMessage"
nillable="true" type="tns:ResponseMessage" />
</s:sequence>
</s:complexType>
<s:complexType name="ResponseMessage">
<s:sequence>
<s:element minOccurs="1" maxOccurs="1"
name="ResponseType" type="tns:MessageType" />
<s:element minOccurs="0" maxOccurs="1"
name="Message" type="s:string" />
</s:sequence>
</s:complexType>
<s:complexType name="ArrayOfCartItemResponse">
<s:sequence>
<s:element minOccurs="0"
maxOccurs="unbounded" name="CartItemResponse"
nillable="true" type="tns:CartItemResponse" />
</s:sequence>
</s:complexType>
<s:complexType name="CartItemResponse">
<s:sequence>
<s:element minOccurs="1" maxOccurs="1"
name="CartItemIndex" type="s:int" />
<s:element minOccurs="1" maxOccurs="1"
name="TaxAmount" type="s:float" />
</s:sequence>
</s:complexType>
<s:element name="Lookup">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1"
name="apiLoginID" type="s:string" />
<s:element minOccurs="0" maxOccurs="1"
name="apiKey" type="s:string" />
<s:element minOccurs="0" maxOccurs="1"
name="customerID" type="s:string" />
<s:element minOccurs="0" maxOccurs="1"
name="cartID" type="s:string" />
<s:element minOccurs="0" maxOccurs="1"
name="cartItems" type="tns:ArrayOfCartItem" />
<s:element minOccurs="0" maxOccurs="1"
name="origin" type="tns:Address" />
<s:element minOccurs="0" maxOccurs="1"
name="destination" type="tns:Address" />
<s:element minOccurs="1" maxOccurs="1"
name="deliveredBySeller" type="s:boolean" />
<s:element minOccurs="0" maxOccurs="1"
name="exemptCert" type="tns:ExemptionCertificate"
/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="LookupResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1"
name="LookupResult" type="tns:LookupRsp" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="Authorized">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1"
name="apiLoginID" type="s:string" />
<s:element minOccurs="0" maxOccurs="1"
name="apiKey" type="s:string" />
<s:element minOccurs="0" maxOccurs="1"
name="customerID" type="s:string" />
<s:element minOccurs="0" maxOccurs="1"
name="cartID" type="s:string" />
<s:element minOccurs="0" maxOccurs="1"
name="orderID" type="s:string" />
<s:element minOccurs="1" maxOccurs="1"
name="dateAuthorized" type="s:dateTime" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="AuthorizedResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1"
name="AuthorizedResult" type="tns:AuthorizedRsp" />
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="AuthorizedRsp">
<s:complexContent mixed="false">
<s:extension base="tns:ResponseBase" />
</s:complexContent>
</s:complexType>
<s:element name="AuthorizedWithCapture">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1"
name="apiLoginID" type="s:string" />
<s:element minOccurs="0" maxOccurs="1"
name="apiKey" type="s:string" />
<s:element minOccurs="0" maxOccurs="1"
name="customerID" type="s:string" />
<s:element minOccurs="0" maxOccurs="1"
name="cartID" type="s:string" />
<s:element minOccurs="0" maxOccurs="1"
name="orderID" type="s:string" />
<s:element minOccurs="1" maxOccurs="1"
name="dateAuthorized" type="s:dateTime" />
<s:element minOccurs="1" maxOccurs="1"
name="dateCaptured" type="s:dateTime" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="AuthorizedWithCaptureResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1"
name="AuthorizedWithCaptureResult"
type="tns:AuthorizedRsp" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="Captured">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1"
name="apiLoginID" type="s:string" />
<s:element minOccurs="0" maxOccurs="1"
name="apiKey" type="s:string" />
<s:element minOccurs="0" maxOccurs="1"
name="orderID" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="CapturedResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1"
name="CapturedResult" type="tns:CapturedRsp" />
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="CapturedRsp">
<s:complexContent mixed="false">
<s:extension base="tns:ResponseBase" />
</s:complexContent>
</s:complexType>
<s:element name="Returned">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1"
name="apiLoginID" type="s:string" />
<s:element minOccurs="0" maxOccurs="1"
name="apiKey" type="s:string" />
<s:element minOccurs="0" maxOccurs="1"
name="orderID" type="s:string" />
<s:element minOccurs="0" maxOccurs="1"
name="cartItems" type="tns:ArrayOfCartItem" />
<s:element minOccurs="1" maxOccurs="1"
name="returnedDate" type="s:dateTime" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="ReturnedResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1"
name="ReturnedResult" type="tns:ReturnedRsp" />
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="ReturnedRsp">
<s:complexContent mixed="false">
<s:extension base="tns:ResponseBase" />
</s:complexContent>
</s:complexType>
<s:element name="GetTICGroups">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1"
name="apiLoginID" type="s:string" />
<s:element minOccurs="0" maxOccurs="1"
name="apiKey" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="GetTICGroupsResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1"
name="GetTICGroupsResult" type="tns:GetTICGroupsRsp"
/>
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="GetTICGroupsRsp">
<s:complexContent mixed="false">
<s:extension base="tns:ResponseBase">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1"
name="TICGroups" type="tns:ArrayOfTICGroup" />
</s:sequence>
</s:extension>
</s:complexContent>
</s:complexType>
<s:complexType name="ArrayOfTICGroup">
<s:sequence>
<s:element minOccurs="0"
maxOccurs="unbounded" name="TICGroup"
nillable="true" type="tns:TICGroup" />
</s:sequence>
</s:complexType>
<s:complexType name="TICGroup">
<s:sequence>
<s:element minOccurs="1" maxOccurs="1"
name="GroupID" type="s:int" />
<s:element minOccurs="0" maxOccurs="1"
name="Description" type="s:string" />
</s:sequence>
</s:complexType>
<s:element name="GetTICs">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1"
name="apiLoginID" type="s:string" />
<s:element minOccurs="0" maxOccurs="1"
name="apiKey" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="GetTICsResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1"
name="GetTICsResult" type="tns:GetTICsRsp" />
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="GetTICsRsp">
<s:complexContent mixed="false">
<s:extension base="tns:ResponseBase">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1"
name="TICs" type="tns:ArrayOfTIC" />
</s:sequence>
</s:extension>
</s:complexContent>
</s:complexType>
<s:complexType name="ArrayOfTIC">
<s:sequence>
<s:element minOccurs="0"
maxOccurs="unbounded" name="TIC"
nillable="true" type="tns:TIC" />
</s:sequence>
</s:complexType>
<s:complexType name="TIC">
<s:sequence>
<s:element minOccurs="1" maxOccurs="1"
name="TICID" type="s:int" />
<s:element minOccurs="0" maxOccurs="1"
name="Description" type="s:string" />
</s:sequence>
</s:complexType>
<s:element name="GetTICsByGroup">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1"
name="apiLoginID" type="s:string" />
<s:element minOccurs="0" maxOccurs="1"
name="apiKey" type="s:string" />
<s:element minOccurs="1" maxOccurs="1"
name="ticGroup" type="s:int" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="GetTICsByGroupResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1"
name="GetTICsByGroupResult" type="tns:GetTICsRsp"
/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="AddExemptCertificate">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1"
name="apiLoginID" type="s:string" />
<s:element minOccurs="0" maxOccurs="1"
name="apiKey" type="s:string" />
<s:element minOccurs="0" maxOccurs="1"
name="customerID" type="s:string" />
<s:element minOccurs="0" maxOccurs="1"
name="exemptCert" type="tns:ExemptionCertificate"
/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="AddExemptCertificateResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1"
name="AddExemptCertificateResult"
type="tns:AddCertificateRsp" />
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="AddCertificateRsp">
<s:complexContent mixed="false">
<s:extension base="tns:ResponseBase">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1"
name="CertificateID" type="s:string" />
</s:sequence>
</s:extension>
</s:complexContent>
</s:complexType>
<s:element name="DeleteExemptCertificate">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1"
name="apiLoginID" type="s:string" />
<s:element minOccurs="0" maxOccurs="1"
name="apiKey" type="s:string" />
<s:element minOccurs="0" maxOccurs="1"
name="certificateID" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="DeleteExemptCertificateResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1"
name="DeleteExemptCertificateResult"
type="tns:DeleteCertificateRsp" />
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="DeleteCertificateRsp">
<s:complexContent mixed="false">
<s:extension base="tns:ResponseBase" />
</s:complexContent>
</s:complexType>
<s:element name="GetExemptCertificates">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1"
name="apiLoginID" type="s:string" />
<s:element minOccurs="0" maxOccurs="1"
name="apiKey" type="s:string" />
<s:element minOccurs="0" maxOccurs="1"
name="customerID" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="GetExemptCertificatesResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1"
name="GetExemptCertificatesResult"
type="tns:GetCertificatesRsp" />
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="GetCertificatesRsp">
<s:complexContent mixed="false">
<s:extension base="tns:ResponseBase">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1"
name="ExemptCertificates"
type="tns:ArrayOfExemptionCertificate" />
</s:sequence>
</s:extension>
</s:complexContent>
</s:complexType>
<s:complexType name="ArrayOfExemptionCertificate">
<s:sequence>
<s:element minOccurs="0"
maxOccurs="unbounded" name="ExemptionCertificate"
nillable="true" type="tns:ExemptionCertificate" />
</s:sequence>
</s:complexType>
<s:element name="Ping">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1"
name="apiLoginID" type="s:string" />
<s:element minOccurs="0" maxOccurs="1"
name="apiKey" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="PingResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1"
name="PingResult" type="tns:PingRsp" />
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="PingRsp">
<s:complexContent mixed="false">
<s:extension base="tns:ResponseBase" />
</s:complexContent>
</s:complexType>
<s:element name="VerifiedAddress"
nillable="true" type="tns:VerifiedAddress" />
<s:element name="AuthorizedRsp"
nillable="true" type="tns:AuthorizedRsp" />
<s:element name="CapturedRsp" nillable="true"
type="tns:CapturedRsp" />
<s:element name="GetTICGroupsRsp"
nillable="true" type="tns:GetTICGroupsRsp" />
<s:element name="GetTICsRsp" nillable="true"
type="tns:GetTICsRsp" />
<s:element name="DeleteCertificateRsp"
nillable="true" type="tns:DeleteCertificateRsp" />
<s:element name="GetCertificatesRsp"
nillable="true" type="tns:GetCertificatesRsp" />
<s:element name="PingRsp" nillable="true"
type="tns:PingRsp" />
</s:schema>
</wsdl:types>
<wsdl:message name="VerifyAddressSoapIn">
<wsdl:part name="parameters"
element="tns:VerifyAddress" />
</wsdl:message>
<wsdl:message name="VerifyAddressSoapOut">
<wsdl:part name="parameters"
element="tns:VerifyAddressResponse" />
</wsdl:message>
<wsdl:message name="LookupForDateSoapIn">
<wsdl:part name="parameters"
element="tns:LookupForDate" />
</wsdl:message>
<wsdl:message name="LookupForDateSoapOut">
<wsdl:part name="parameters"
element="tns:LookupForDateResponse" />
</wsdl:message>
<wsdl:message name="LookupSoapIn">
<wsdl:part name="parameters"
element="tns:Lookup" />
</wsdl:message>
<wsdl:message name="LookupSoapOut">
<wsdl:part name="parameters"
element="tns:LookupResponse" />
</wsdl:message>
<wsdl:message name="AuthorizedSoapIn">
<wsdl:part name="parameters"
element="tns:Authorized" />
</wsdl:message>
<wsdl:message name="AuthorizedSoapOut">
<wsdl:part name="parameters"
element="tns:AuthorizedResponse" />
</wsdl:message>
<wsdl:message name="AuthorizedWithCaptureSoapIn">
<wsdl:part name="parameters"
element="tns:AuthorizedWithCapture" />
</wsdl:message>
<wsdl:message name="AuthorizedWithCaptureSoapOut">
<wsdl:part name="parameters"
element="tns:AuthorizedWithCaptureResponse" />
</wsdl:message>
<wsdl:message name="CapturedSoapIn">
<wsdl:part name="parameters"
element="tns:Captured" />
</wsdl:message>
<wsdl:message name="CapturedSoapOut">
<wsdl:part name="parameters"
element="tns:CapturedResponse" />
</wsdl:message>
<wsdl:message name="ReturnedSoapIn">
<wsdl:part name="parameters"
element="tns:Returned" />
</wsdl:message>
<wsdl:message name="ReturnedSoapOut">
<wsdl:part name="parameters"
element="tns:ReturnedResponse" />
</wsdl:message>
<wsdl:message name="GetTICGroupsSoapIn">
<wsdl:part name="parameters"
element="tns:GetTICGroups" />
</wsdl:message>
<wsdl:message name="GetTICGroupsSoapOut">
<wsdl:part name="parameters"
element="tns:GetTICGroupsResponse" />
</wsdl:message>
<wsdl:message name="GetTICsSoapIn">
<wsdl:part name="parameters"
element="tns:GetTICs" />
</wsdl:message>
<wsdl:message name="GetTICsSoapOut">
<wsdl:part name="parameters"
element="tns:GetTICsResponse" />
</wsdl:message>
<wsdl:message name="GetTICsByGroupSoapIn">
<wsdl:part name="parameters"
element="tns:GetTICsByGroup" />
</wsdl:message>
<wsdl:message name="GetTICsByGroupSoapOut">
<wsdl:part name="parameters"
element="tns:GetTICsByGroupResponse" />
</wsdl:message>
<wsdl:message name="AddExemptCertificateSoapIn">
<wsdl:part name="parameters"
element="tns:AddExemptCertificate" />
</wsdl:message>
<wsdl:message name="AddExemptCertificateSoapOut">
<wsdl:part name="parameters"
element="tns:AddExemptCertificateResponse" />
</wsdl:message>
<wsdl:message name="DeleteExemptCertificateSoapIn">
<wsdl:part name="parameters"
element="tns:DeleteExemptCertificate" />
</wsdl:message>
<wsdl:message name="DeleteExemptCertificateSoapOut">
<wsdl:part name="parameters"
element="tns:DeleteExemptCertificateResponse" />
</wsdl:message>
<wsdl:message name="GetExemptCertificatesSoapIn">
<wsdl:part name="parameters"
element="tns:GetExemptCertificates" />
</wsdl:message>
<wsdl:message name="GetExemptCertificatesSoapOut">
<wsdl:part name="parameters"
element="tns:GetExemptCertificatesResponse" />
</wsdl:message>
<wsdl:message name="PingSoapIn">
<wsdl:part name="parameters" element="tns:Ping"
/>
</wsdl:message>
<wsdl:message name="PingSoapOut">
<wsdl:part name="parameters"
element="tns:PingResponse" />
</wsdl:message>
<wsdl:message name="VerifyAddressHttpPostIn">
<wsdl:part name="uspsUserID" type="s:string"
/>
<wsdl:part name="address1" type="s:string"
/>
<wsdl:part name="address2" type="s:string"
/>
<wsdl:part name="city" type="s:string" />
<wsdl:part name="state" type="s:string" />
<wsdl:part name="zip5" type="s:string" />
<wsdl:part name="zip4" type="s:string" />
</wsdl:message>
<wsdl:message name="VerifyAddressHttpPostOut">
<wsdl:part name="Body"
element="tns:VerifiedAddress" />
</wsdl:message>
<wsdl:message name="AuthorizedHttpPostIn">
<wsdl:part name="apiLoginID" type="s:string"
/>
<wsdl:part name="apiKey" type="s:string" />
<wsdl:part name="customerID" type="s:string"
/>
<wsdl:part name="cartID" type="s:string" />
<wsdl:part name="orderID" type="s:string" />
<wsdl:part name="dateAuthorized" type="s:string"
/>
</wsdl:message>
<wsdl:message name="AuthorizedHttpPostOut">
<wsdl:part name="Body"
element="tns:AuthorizedRsp" />
</wsdl:message>
<wsdl:message name="AuthorizedWithCaptureHttpPostIn">
<wsdl:part name="apiLoginID" type="s:string"
/>
<wsdl:part name="apiKey" type="s:string" />
<wsdl:part name="customerID" type="s:string"
/>
<wsdl:part name="cartID" type="s:string" />
<wsdl:part name="orderID" type="s:string" />
<wsdl:part name="dateAuthorized" type="s:string"
/>
<wsdl:part name="dateCaptured" type="s:string"
/>
</wsdl:message>
<wsdl:message name="AuthorizedWithCaptureHttpPostOut">
<wsdl:part name="Body"
element="tns:AuthorizedRsp" />
</wsdl:message>
<wsdl:message name="CapturedHttpPostIn">
<wsdl:part name="apiLoginID" type="s:string"
/>
<wsdl:part name="apiKey" type="s:string" />
<wsdl:part name="orderID" type="s:string" />
</wsdl:message>
<wsdl:message name="CapturedHttpPostOut">
<wsdl:part name="Body" element="tns:CapturedRsp"
/>
</wsdl:message>
<wsdl:message name="GetTICGroupsHttpPostIn">
<wsdl:part name="apiLoginID" type="s:string"
/>
<wsdl:part name="apiKey" type="s:string" />
</wsdl:message>
<wsdl:message name="GetTICGroupsHttpPostOut">
<wsdl:part name="Body"
element="tns:GetTICGroupsRsp" />
</wsdl:message>
<wsdl:message name="GetTICsHttpPostIn">
<wsdl:part name="apiLoginID" type="s:string"
/>
<wsdl:part name="apiKey" type="s:string" />
</wsdl:message>
<wsdl:message name="GetTICsHttpPostOut">
<wsdl:part name="Body" element="tns:GetTICsRsp"
/>
</wsdl:message>
<wsdl:message name="GetTICsByGroupHttpPostIn">
<wsdl:part name="apiLoginID" type="s:string"
/>
<wsdl:part name="apiKey" type="s:string" />
<wsdl:part name="ticGroup" type="s:string"
/>
</wsdl:message>
<wsdl:message name="GetTICsByGroupHttpPostOut">
<wsdl:part name="Body" element="tns:GetTICsRsp"
/>
</wsdl:message>
<wsdl:message name="DeleteExemptCertificateHttpPostIn">
<wsdl:part name="apiLoginID" type="s:string"
/>
<wsdl:part name="apiKey" type="s:string" />
<wsdl:part name="certificateID" type="s:string"
/>
</wsdl:message>
<wsdl:message name="DeleteExemptCertificateHttpPostOut">
<wsdl:part name="Body"
element="tns:DeleteCertificateRsp" />
</wsdl:message>
<wsdl:message name="GetExemptCertificatesHttpPostIn">
<wsdl:part name="apiLoginID" type="s:string"
/>
<wsdl:part name="apiKey" type="s:string" />
<wsdl:part name="customerID" type="s:string"
/>
</wsdl:message>
<wsdl:message name="GetExemptCertificatesHttpPostOut">
<wsdl:part name="Body"
element="tns:GetCertificatesRsp" />
</wsdl:message>
<wsdl:message name="PingHttpPostIn">
<wsdl:part name="apiLoginID" type="s:string"
/>
<wsdl:part name="apiKey" type="s:string" />
</wsdl:message>
<wsdl:message name="PingHttpPostOut">
<wsdl:part name="Body" element="tns:PingRsp"
/>
</wsdl:message>
<wsdl:portType name="TaxCloudSoap">
<wsdl:operation name="VerifyAddress">
<wsdl:input message="tns:VerifyAddressSoapIn" />
<wsdl:output message="tns:VerifyAddressSoapOut" />
</wsdl:operation>
<wsdl:operation name="LookupForDate">
<wsdl:input message="tns:LookupForDateSoapIn" />
<wsdl:output message="tns:LookupForDateSoapOut" />
</wsdl:operation>
<wsdl:operation name="Lookup">
<wsdl:input message="tns:LookupSoapIn" />
<wsdl:output message="tns:LookupSoapOut" />
</wsdl:operation>
<wsdl:operation name="Authorized">
<wsdl:input message="tns:AuthorizedSoapIn" />
<wsdl:output message="tns:AuthorizedSoapOut" />
</wsdl:operation>
<wsdl:operation name="AuthorizedWithCapture">
<wsdl:input message="tns:AuthorizedWithCaptureSoapIn"
/>
<wsdl:output message="tns:AuthorizedWithCaptureSoapOut"
/>
</wsdl:operation>
<wsdl:operation name="Captured">
<wsdl:input message="tns:CapturedSoapIn" />
<wsdl:output message="tns:CapturedSoapOut" />
</wsdl:operation>
<wsdl:operation name="Returned">
<wsdl:input message="tns:ReturnedSoapIn" />
<wsdl:output message="tns:ReturnedSoapOut" />
</wsdl:operation>
<wsdl:operation name="GetTICGroups">
<wsdl:input message="tns:GetTICGroupsSoapIn" />
<wsdl:output message="tns:GetTICGroupsSoapOut" />
</wsdl:operation>
<wsdl:operation name="GetTICs">
<wsdl:input message="tns:GetTICsSoapIn" />
<wsdl:output message="tns:GetTICsSoapOut" />
</wsdl:operation>
<wsdl:operation name="GetTICsByGroup">
<wsdl:input message="tns:GetTICsByGroupSoapIn" />
<wsdl:output message="tns:GetTICsByGroupSoapOut" />
</wsdl:operation>
<wsdl:operation name="AddExemptCertificate">
<wsdl:input message="tns:AddExemptCertificateSoapIn"
/>
<wsdl:output message="tns:AddExemptCertificateSoapOut"
/>
</wsdl:operation>
<wsdl:operation name="DeleteExemptCertificate">
<wsdl:input message="tns:DeleteExemptCertificateSoapIn"
/>
<wsdl:output
message="tns:DeleteExemptCertificateSoapOut" />
</wsdl:operation>
<wsdl:operation name="GetExemptCertificates">
<wsdl:input message="tns:GetExemptCertificatesSoapIn"
/>
<wsdl:output message="tns:GetExemptCertificatesSoapOut"
/>
</wsdl:operation>
<wsdl:operation name="Ping">
<wsdl:input message="tns:PingSoapIn" />
<wsdl:output message="tns:PingSoapOut" />
</wsdl:operation>
</wsdl:portType>
<wsdl:portType name="TaxCloudHttpPost">
<wsdl:operation name="VerifyAddress">
<wsdl:input message="tns:VerifyAddressHttpPostIn" />
<wsdl:output message="tns:VerifyAddressHttpPostOut"
/>
</wsdl:operation>
<wsdl:operation name="Authorized">
<wsdl:input message="tns:AuthorizedHttpPostIn" />
<wsdl:output message="tns:AuthorizedHttpPostOut" />
</wsdl:operation>
<wsdl:operation name="AuthorizedWithCapture">
<wsdl:input
message="tns:AuthorizedWithCaptureHttpPostIn" />
<wsdl:output
message="tns:AuthorizedWithCaptureHttpPostOut" />
</wsdl:operation>
<wsdl:operation name="Captured">
<wsdl:input message="tns:CapturedHttpPostIn" />
<wsdl:output message="tns:CapturedHttpPostOut" />
</wsdl:operation>
<wsdl:operation name="GetTICGroups">
<wsdl:input message="tns:GetTICGroupsHttpPostIn" />
<wsdl:output message="tns:GetTICGroupsHttpPostOut"
/>
</wsdl:operation>
<wsdl:operation name="GetTICs">
<wsdl:input message="tns:GetTICsHttpPostIn" />
<wsdl:output message="tns:GetTICsHttpPostOut" />
</wsdl:operation>
<wsdl:operation name="GetTICsByGroup">
<wsdl:input message="tns:GetTICsByGroupHttpPostIn"
/>
<wsdl:output message="tns:GetTICsByGroupHttpPostOut"
/>
</wsdl:operation>
<wsdl:operation name="DeleteExemptCertificate">
<wsdl:input
message="tns:DeleteExemptCertificateHttpPostIn" />
<wsdl:output
message="tns:DeleteExemptCertificateHttpPostOut" />
</wsdl:operation>
<wsdl:operation name="GetExemptCertificates">
<wsdl:input
message="tns:GetExemptCertificatesHttpPostIn" />
<wsdl:output
message="tns:GetExemptCertificatesHttpPostOut" />
</wsdl:operation>
<wsdl:operation name="Ping">
<wsdl:input message="tns:PingHttpPostIn" />
<wsdl:output message="tns:PingHttpPostOut" />
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="TaxCloudSoap"
type="tns:TaxCloudSoap">
<soap:binding
transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="VerifyAddress">
<soap:operation
soapAction="http://taxcloud.net/VerifyAddress"
style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="LookupForDate">
<soap:operation
soapAction="http://taxcloud.net/LookupForDate"
style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="Lookup">
<soap:operation soapAction="http://taxcloud.net/Lookup"
style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="Authorized">
<soap:operation
soapAction="http://taxcloud.net/Authorized"
style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="AuthorizedWithCapture">
<soap:operation
soapAction="http://taxcloud.net/AuthorizedWithCapture"
style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="Captured">
<soap:operation
soapAction="http://taxcloud.net/Captured"
style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="Returned">
<soap:operation
soapAction="http://taxcloud.net/Returned"
style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetTICGroups">
<soap:operation
soapAction="http://taxcloud.net/GetTICGroups"
style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetTICs">
<soap:operation soapAction="http://taxcloud.net/GetTICs"
style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetTICsByGroup">
<soap:operation
soapAction="http://taxcloud.net/GetTICsByGroup"
style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="AddExemptCertificate">
<soap:operation
soapAction="http://taxcloud.net/AddExemptCertificate"
style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="DeleteExemptCertificate">
<soap:operation
soapAction="http://taxcloud.net/DeleteExemptCertificate"
style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetExemptCertificates">
<soap:operation
soapAction="http://taxcloud.net/GetExemptCertificates"
style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="Ping">
<soap:operation soapAction="http://taxcloud.net/Ping"
style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:binding name="TaxCloudSoap12"
type="tns:TaxCloudSoap">
<soap12:binding
transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="VerifyAddress">
<soap12:operation
soapAction="http://taxcloud.net/VerifyAddress"
style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="LookupForDate">
<soap12:operation
soapAction="http://taxcloud.net/LookupForDate"
style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="Lookup">
<soap12:operation
soapAction="http://taxcloud.net/Lookup"
style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="Authorized">
<soap12:operation
soapAction="http://taxcloud.net/Authorized"
style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="AuthorizedWithCapture">
<soap12:operation
soapAction="http://taxcloud.net/AuthorizedWithCapture"
style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="Captured">
<soap12:operation
soapAction="http://taxcloud.net/Captured"
style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="Returned">
<soap12:operation
soapAction="http://taxcloud.net/Returned"
style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetTICGroups">
<soap12:operation
soapAction="http://taxcloud.net/GetTICGroups"
style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetTICs">
<soap12:operation
soapAction="http://taxcloud.net/GetTICs"
style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetTICsByGroup">
<soap12:operation
soapAction="http://taxcloud.net/GetTICsByGroup"
style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="AddExemptCertificate">
<soap12:operation
soapAction="http://taxcloud.net/AddExemptCertificate"
style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="DeleteExemptCertificate">
<soap12:operation
soapAction="http://taxcloud.net/DeleteExemptCertificate"
style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetExemptCertificates">
<soap12:operation
soapAction="http://taxcloud.net/GetExemptCertificates"
style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="Ping">
<soap12:operation soapAction="http://taxcloud.net/Ping"
style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:binding name="TaxCloudHttpPost"
type="tns:TaxCloudHttpPost">
<http:binding verb="POST" />
<wsdl:operation name="VerifyAddress">
<http:operation location="/VerifyAddress" />
<wsdl:input>
<mime:content type="application/x-www-form-urlencoded"
/>
</wsdl:input>
<wsdl:output>
<mime:mimeXml part="Body" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="Authorized">
<http:operation location="/Authorized" />
<wsdl:input>
<mime:content type="application/x-www-form-urlencoded"
/>
</wsdl:input>
<wsdl:output>
<mime:mimeXml part="Body" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="AuthorizedWithCapture">
<http:operation location="/AuthorizedWithCapture" />
<wsdl:input>
<mime:content type="application/x-www-form-urlencoded"
/>
</wsdl:input>
<wsdl:output>
<mime:mimeXml part="Body" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="Captured">
<http:operation location="/Captured" />
<wsdl:input>
<mime:content type="application/x-www-form-urlencoded"
/>
</wsdl:input>
<wsdl:output>
<mime:mimeXml part="Body" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetTICGroups">
<http:operation location="/GetTICGroups" />
<wsdl:input>
<mime:content type="application/x-www-form-urlencoded"
/>
</wsdl:input>
<wsdl:output>
<mime:mimeXml part="Body" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetTICs">
<http:operation location="/GetTICs" />
<wsdl:input>
<mime:content type="application/x-www-form-urlencoded"
/>
</wsdl:input>
<wsdl:output>
<mime:mimeXml part="Body" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetTICsByGroup">
<http:operation location="/GetTICsByGroup" />
<wsdl:input>
<mime:content type="application/x-www-form-urlencoded"
/>
</wsdl:input>
<wsdl:output>
<mime:mimeXml part="Body" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="DeleteExemptCertificate">
<http:operation location="/DeleteExemptCertificate"
/>
<wsdl:input>
<mime:content type="application/x-www-form-urlencoded"
/>
</wsdl:input>
<wsdl:output>
<mime:mimeXml part="Body" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetExemptCertificates">
<http:operation location="/GetExemptCertificates" />
<wsdl:input>
<mime:content type="application/x-www-form-urlencoded"
/>
</wsdl:input>
<wsdl:output>
<mime:mimeXml part="Body" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="Ping">
<http:operation location="/Ping" />
<wsdl:input>
<mime:content type="application/x-www-form-urlencoded"
/>
</wsdl:input>
<wsdl:output>
<mime:mimeXml part="Body" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="TaxCloud">
<wsdl:documentation
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">TaxCloud Web
Service</wsdl:documentation>
<wsdl:port name="TaxCloudSoap"
binding="tns:TaxCloudSoap">
<soap:address
location="https://api.taxcloud.net/1.0/TaxCloud.asmx" />
</wsdl:port>
<wsdl:port name="TaxCloudSoap12"
binding="tns:TaxCloudSoap12">
<soap12:address
location="https://api.taxcloud.net/1.0/TaxCloud.asmx" />
</wsdl:port>
<wsdl:port name="TaxCloudHttpPost"
binding="tns:TaxCloudHttpPost">
<http:address
location="https://api.taxcloud.net/1.0/TaxCloud.asmx" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>taxcloud.xml000064400000010374151157023530007120
0ustar00<?xml version="1.0" encoding="utf-8"?>
<extension version="2.5" type="plugin"
group="hikashop" method="upgrade">
<name>Hikashop TaxCloud Plugin</name>
<creationDate>December 2013</creationDate>
<version>4.4.1</version>
<author>Obsidev</author>
<authorEmail>dev@obsidev.com</authorEmail>
<authorUrl>http://www.obsidev.com</authorUrl>
<copyright>Copyright (C) 2012-2021 OBSIDEV SARL - All rights
reserved.</copyright>
<license>http://www.gnu.org/licenses/gpl-2.0.html
GNU/GPL</license>
<description>This plugin enables you to communication with
TaxCloud</description>
<files>
<filename
plugin="taxcloud">taxcloud.php</filename>
<filename>taxcloud.js</filename>
</files>
<params addpath="/components/com_hikashop/params">
<param name="pluginoptions" type="pluginoptions"
default="plugin" label="HIKA_HIKASHOP"
description="HIKASHOP_OPTIONS" />
<param type="spacer" label="TAXCLOUD" />
<param name="api_id" type="text"
default="" label="API_ID"
description=""/>
<param name="api_key" type="text"
default="" label="API_KEY"
description=""/>
<param type="spacer" label="USPS" />
<param name="usps_id" type="text"
default="" label="USPS_ID"
description=""/>
<param type="spacer" label="ADDRESS" />
<param name="origin_address1" type="text"
default="" label="TAXCLOUD_ADDRESS_1"
description=""/>
<param name="origin_address2" type="text"
default="" label="TAXCLOUD_ADDRESS_2"
description=""/>
<param name="origin_city" type="text"
default="" label="CITY" description=""/>
<param name="origin_state" type="text"
default="" label="STATE" description=""/>
<param name="origin_zip4" type="text"
default="" label="TAXCLOUD_ZIP_4"
description=""/>
<param name="origin_zip5" type="text"
default="" label="TAXCLOUD_ZIP_5"
description=""/>
<param name="check_address" type="plugintrigger"
default="check_address" label="CHECK_ADDRESS"
description="TAXCLOUD_CHECK_ADDRESS" />
<param name="use_origin_address_when_override"
type="radio" default="1"
label="HIKA_USE_ORIGIN_ADDRESS_ON_OVERRIDE"
description="USE_ORIGIN_ADDRESS_ON_OVERRIDE">
<option value="0">HIKASHOP_NO</option>
<option value="1">HIKASHOP_YES</option>
</param>
<param type="spacer" label="TIC" />
<param name="default_tic" type="text"
default="" label="DEFAULT_TIC_ID"
description=""/>
<param name="shipping_tic" type="text"
default="" label="SHIPPING_TIC_ID"
description=""/>
</params>
<config>
<fields name="params"
addfieldpath="/components/com_hikashop/fields">
<fieldset name="basic">
<field id="pluginoptions" name="pluginoptions"
type="pluginoptions" label="HIKA_HIKASHOP"
description="HIKASHOP_OPTIONS" />
<field type="spacer" label="TAXCLOUD" />
<field name="api_id" type="text"
default="" label="API_ID"
description=""/>
<field name="api_key" type="text"
default="" label="API_KEY"
description=""/>
<field type="spacer" label="UFPS" />
<field name="usps_id" type="text"
default="" label="USPS_ID"
description=""/>
<field type="spacer" label="ADDRESS" />
<field name="origin_address1" type="text"
default="" label="TAXCLOUD_ADDRESS_1"
description=""/>
<field name="origin_address2" type="text"
default="" label="TAXCLOUD_ADDRESS_2"
description=""/>
<field name="origin_city" type="text"
default="" label="CITY" description=""/>
<field name="origin_state" type="text"
default="" label="STATE" description=""/>
<field name="origin_zip4" type="text"
default="" label="TAXCLOUD_ZIP_4"
description=""/>
<field name="origin_zip5" type="text"
default="" label="TAXCLOUD_ZIP_5"
description=""/>
<field name="check_address" type="plugintrigger"
default="check_address" label="CHECK_ADDRESS"
description="TAXCLOUD_CHECK_ADDRESS" />
<field name="use_origin_address_when_override"
type="radio" default="1"
label="HIKA_USE_ORIGIN_ADDRESS_ON_OVERRIDE"
description="USE_ORIGIN_ADDRESS_ON_OVERRIDE"
class="btn-group btn-group-yesno">
<option value="0">HIKASHOP_NO</option>
<option value="1">HIKASHOP_YES</option>
</field>
<field type="spacer" label="TIC" />
<field name="default_tic" type="text"
default="" label="DEFAULT_TIC_ID"
description=""/>
<field name="shipping_tic" type="text"
default="" label="SHIPPING_TIC_ID"
description=""/>
</fieldset>
</fields>
</config>
</extension>