File: /home/confeduphaar/backip-old-files/plugins/vmcalculation/avalara/classes/TaxServiceSoap.class.php
<?php
/**
* TaxServiceSoap.class.php
*/
/**
* Proxy interface for the Avalara Tax Web Service. It contains methods that perform remote calls
* to the Avalara Tax Service.
*
* TaxServiceSoap reads its configuration values from static variables defined
* in ATConfig.class.php. This file must be properly configured with your security credentials.
*
* <p>
* <b>Example:</b>
* <pre>
* $taxService = new TaxServiceSoap();
* $result = $taxService->ping();
* </pre>
*
* @author Avalara
* @copyright � 2004 - 2011 Avalara, Inc. All rights reserved.
* @package Tax
*/
if(!class_exists('AvalaraSoapClient')) require (VMAVALARA_CLASS_PATH.DS.'AvalaraSoapClient.class.php');
class TaxServiceSoap extends AvalaraSoapClient
{
static $servicePath = '/Tax/TaxSvc.asmx';
static protected $classmap = array(
'BaseAddress' => 'Address',
'ValidAddress' => 'ValidAddress',
'Message' => 'Message',
'ValidateRequest' => 'ValidateRequest',
'IsAuthorizedResult' => 'IsAuthorizedResult',
'PingResult' => 'PingResult',
'ValidateResult' => 'ValidateResult',
'Line'=>'Line',
'AdjustTaxRequest'=>'AdjustTaxRequest',
'AdjustTaxResult'=>'AdjustTaxResult',
'CancelTaxRequest'=>'CancelTaxRequest',
'CancelTaxResult'=>'CancelTaxResult',
'CommitTaxRequest'=>'CommitTaxRequest',
'CommitTaxResult'=>'CommitTaxResult',
'GetTaxRequest'=>'GetTaxRequest',
'GetTaxResult'=>'GetTaxResult',
'GetTaxHistoryRequest'=>'GetTaxHistoryRequest',
'GetTaxHistoryResult'=>'GetTaxHistoryResult',
'PostTaxRequest'=>'PostTaxRequest',
'PostTaxResult'=>'PostTaxResult',
'ReconcileTaxHistoryRequest'=>'ReconcileTaxHistoryRequest',
'ReconcileTaxHistoryResult'=>'ReconcileTaxHistoryResult',
'TaxLine'=>'TaxLine',
'TaxDetail' => 'TaxDetail',
'ApplyPaymentRequest'=>'ApplyPaymentRequest',
'ApplyPaymentResult'=>'ApplyPaymentResult',
'BaseResult'=>'BaseResult',
'TaxOverride'=>'TaxOverride'
);
public function __construct($configurationName = 'Default')
{
$config = new ATConfig($configurationName);
if(!class_exists('DynamicSoapClient')) require (VMAVALARA_CLASS_PATH.DS.'DynamicSoapClient.class.php');
$this->client = new DynamicSoapClient (
$config->taxWSDL,
array
(
'location' => $config->url.$config->taxService,
'trace' => $config->trace,
'classmap' => TaxServiceSoap::$classmap
),
$config
);
}
/**
* Calculates taxes on a document such as a sales order, sales invoice, purchase order, purchase invoice, or credit memo.
* <br>The tax data is saved Sales Invoice and Purchase Invoice document types {@link GetTaxRequest#getDocType}.
*
* @param getTaxRequest -- Tax calculation request
*
* @return GetTaxResult
* @throws SoapFault
*/
public function getTax(&$getTaxRequest)
{
$getTaxRequest->prepare();
return $this->client->GetTax(array('GetTaxRequest' => $getTaxRequest))->GetTaxResult;
}
/**
* Retrieves a previously calculated tax document.
* <p>
* This is only available for saved tax documents (Sales Invoices, Purchase Invoices).
* </p>
* <p>
* A document can be indicated solely by the {@link PostTaxRequest#getDocId} if it is known.
* Otherwise the request must specify all of {@link PostTaxRequest#getCompanyCode}, see {@link PostTaxRequest#getDocCode}
* and {@link PostTaxRequest#getDocType} in order to uniquely identify the document.
* </p>
*
* @param getTaxHistoryRequest a {@link GetTaxHistoryRequest} object indicating the document for which history should be retrieved.
* @return a {@link GetTaxHistoryResult} object
* @throws SoapFault
*/
/*public com.avalara.avatax.services.tax.GetTaxHistoryResult getTaxHistory(com.avalara.avatax.services.tax.GetTaxHistoryRequest getTaxHistoryRequest) throws SoapFault;
*/
public function getTaxHistory(&$getTaxHistoryRequest)
{
$result = $this->client->GetTaxHistory(array('GetTaxHistoryRequest'=>$getTaxHistoryRequest))->GetTaxHistoryResult;
$result->getGetTaxRequest()->postFetch();
return $result;
}
/**
* Posts a previously calculated tax
* <p>
* This is only available for saved tax documents (Sales Invoices, Purchase Invoices).
* </p>
* <p>
* A document can be indicated solely by the {@link PostTaxRequest#getDocId} if it is known.
* Otherwise the request must specify all of {@link PostTaxRequest#getCompanyCode}, {@link PostTaxRequest#getDocCode}, and
* {@link PostTaxRequest#getDocType} in order to uniquely identify the document.
* </p>
*
* @param postTaxRequest a {@link PostTaxRequest} object indicating the document that should be posted.
* @return a {@link PostTaxResult} object
* @throws SoapFault
*/
/*public com.avalara.avatax.services.tax.PostTaxResult postTax(com.avalara.avatax.services.tax.PostTaxRequest postTaxRequest) throws SoapFault;
*/
public function postTax(&$postTaxRequest)
{
return $this->client->PostTax(array('PostTaxRequest'=>$postTaxRequest))->PostTaxResult;
}
/**
* Commits a previously posted tax.
* <p>
* This is only available for posted tax documents (Sales Invoices, Purchase Invoices). Committed documents cannot
* be changed or deleted.
* </p>
* <p>
* A document can be indicated solely by the {@link CommitTaxRequest#getDocId} if it is known. Otherwise the
* request must specify all of {@link CommitTaxRequest#getCompanyCode}, {@link CommitTaxRequest#getDocCode}, and
* {@link CommitTaxRequest#getDocType} in order to uniquely identify the document.
* </p>
*
* @param commitTaxRequest a {@link CommitTaxRequest} object indicating the document that should be committed.
* @return a {@link CommitTaxResult} object
* @throws SoapFault
*/
/*public com.avalara.avatax.services.tax.CommitTaxResult commitTax(com.avalara.avatax.services.tax.CommitTaxRequest commitTaxRequest) throws SoapFault;
*/
public function commitTax(&$commitTaxRequest)
{
return $this->client->CommitTax(array('CommitTaxRequest'=>$commitTaxRequest))->CommitTaxResult;
}
/**
* Cancels a previously calculated tax; This is for use as a
* compensating action when posting on the client fails to complete.
* <p>
* This is only available for saved tax document types (Sales Invoices, Purchase Invoices). A document that is saved
* but not posted will be deleted if canceled. A document that has been posted will revert to a saved state if canceled
* (in this case <b>CancelTax</b> should be called with a {@link CancelTaxRequest#getCancelCode} of
* <i>PostFailed</i>). A document that has been committed cannot be reverted to a posted state or deleted. In the case
* that a document on the client side no longer exists, a committed document can be virtually removed by calling
* <b>CancelTax</b> with a <b>CancelCode</b> of <i>DocDeleted</i>. The record will be retained in history but removed
* from all reports.
* </p>
* <p>
* A document can be indicated solely by the {@link CancelTaxRequest#getDocId} if it is known. Otherwise the request
* must specify all of {@link CancelTaxRequest#getCompanyCode}, {@link CancelTaxRequest#getDocCode}, and
* {@link CancelTaxRequest#getDocType} in order to uniquely identify the document.
*
* @param cancelTaxRequest a {@link CancelTaxRequest} object indicating the document that should be canceled.
* @return a {@link CancelTaxResult} object
* @throws SoapFault
*/
/* public com.avalara.avatax.services.tax.CancelTaxResult cancelTax(com.avalara.avatax.services.tax.CancelTaxRequest cancelTaxRequest) throws SoapFault;
*/
public function cancelTax(&$cancelTaxRequest)
{
return $this->client->CancelTax(array('CancelTaxRequest'=>$cancelTaxRequest))->CancelTaxResult;
}
/**
* Reconciles tax history to ensure the client data matches the
* AvaTax history.
* <p>The Reconcile operation allows reconciliation of the AvaTax history with the client accounting system.
* It must be used periodically according to your service contract.
* </p>
* <p>
* Because there may be a large number of documents to reconcile, it is designed to be called repetitively
* until all documents have been reconciled. It should be called until no more documents are returned.
* Each subsequent call should pass the previous results {@link ReconcileTaxHistoryRequest#getLastDocId}.
* </p>
* <p>
* When all results have been reconciled, Reconcile should be called once more with
* {@link ReconcileTaxHistoryRequest#getLastDocId}
* equal to the last document code processed and {@link ReconcileTaxHistoryRequest#isReconciled} set to true to indicate
* that all items have been reconciled. If desired, this may be done incrementally with each result set. Just send
* Reconciled as true when requesting the next result set and the prior results will be marked as reconciled.
* </p>
* <p>
* The {@link #postTax}, {@link #commitTax}, and {@link #cancelTax} operations can be used to correct any differences.
* {@link #getTax} should be called if any committed documents are out of balance
* ({@link GetTaxResult#getTotalAmount} or {@link GetTaxResult#getTotalTax}
* don't match the accounting system records). This is to make sure the correct tax is reported.
* </p>
*
* @param reconcileTaxHistoryRequest a Reconciliation request
* @return A collection of documents that have been posted or committed since the last reconciliation.
* @throws SoapFault
*/
/*public com.avalara.avatax.services.tax.ReconcileTaxHistoryResult reconcileTaxHistory(com.avalara.avatax.services.tax.ReconcileTaxHistoryRequest reconcileTaxHistoryRequest) throws SoapFault;
*/
public function reconcileTaxHistory(&$reconcileTaxHistoryRequest)
{
return $this->client->ReconcileTaxHistory(array('ReconcileTaxHistoryRequest'=>$reconcileTaxHistoryRequest))->ReconcileTaxHistoryResult;
}
/**
* Adjusts a previously calculated tax.
* <p>
* This is only available for unlocked tax documents (Sales Invoices, Purchase Invoices). * </p>
* <p>
* </p>
*
* @param adjustTaxRequest a {@link AdjustTaxRequest} object indicating the document that should be edited.
* @return a {@link AdjustTaxResult} object
* @throws SoapFault
*/
/*public com.avalara.avatax.services.tax.CommitTaxResult commitTax(com.avalara.avatax.services.tax.CommitTaxRequest commitTaxRequest) throws SoapFault;
*/
public function adjustTax(&$adjustTaxRequest)
{
$adjustTaxRequest->getGetTaxRequest()->prepare();
return $this->client->AdjustTax(array('AdjustTaxRequest'=>$adjustTaxRequest))->AdjustTaxResult;
}
/**
* Checks authentication of and authorization to one or more
* operations on the service.
*
* This operation allows pre-authorization checking of any
* or all operations. It will return a comma delimited set of
* operation names which will be all or a subset of the requested
* operation names. For security, it will never return operation
* names other than those requested (no phishing allowed).
*
* <b>Example:</b><br>
* <code> isAuthorized("GetTax,PostTax")</code>
*
* @param string $operations a comma-delimited list of operation names
*
* @return IsAuthorizedResult
* @throws SoapFault
*/
public function isAuthorized($operations)
{
return $this->client->IsAuthorized(array('Operations' => $operations))->IsAuthorizedResult;
}
/**
* Verifies connectivity to the web service and returns version
* information about the service.
*
* <b>NOTE:</b>This replaces TestConnection and is available on
* every service.
*
* @param string $message for future use
* @return PingResult
* @throws SoapFault
*/
public function ping($message = '')
{
return $this->client->Ping(array('Message' => $message))->PingResult;
}
/**
* This method is used to apply a payment to a document for cash basis accounting. Applies a payment date to an existing invoice
* It sets the document PaymentDate and changes the reporting date from the DocDate default. It may be called before or after a document is committed. It should not be used for accrual basis accounting
*
* @param ApplyPaymentRequest $applyPaymentRequest
* @return ApplyPaymentResult
*/
public function applyPayment(&$applyPaymentRequest)
{
return $this->client->ApplyPayment(array('ApplyPaymentRequest' => $applyPaymentRequest))->ApplyPaymentResult;
}
}
?>