PHP Classes
Icontem

File: class.fasttax.php


  Search   All class groups All class groups   Latest entries Latest entries   Top 10 charts Top 10 charts   Newsletter Newsletter   Blog Blog   Forums Forums   Help FAQ Help FAQ  
  Login   Register  
Recommend this page to a friend! ReTweet ReTweet Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Jonathan Nichols  >  DOTS FastTax  >  class.fasttax.php  
File: class.fasttax.php
Role: Class source
Content type: text/plain
Description: FastTAx base class
Class: DOTS FastTax
Get tax rate information from DOTS FastTax
 

Contents

Class file image Download
<?php
class FastTax {
    
/**
     *    @author Jonathan Nichols
     *    @version 1.0
     *    @copyright 2009-06-02 
     */
     
    /**
     *
     * Use however you want. I do not expect any credit for this, but if you feel it is necessary... thanks.
     *
     */

    /**
     *    Short desc
     *    A simple class to submit information to DOTS FastTax
     *    Uses the WSDL feed to gather information about the tax
     *
     * Sample usage:
     *
     *    $fasttax = new FastTax();
     *    $fasttax->license_key = 'XXXX-XXXX-XXXX';
     *    $fasttax->setPostalCode("90210");
     *    echo "<pre>";
     *    if (!$fasttax->SendRequest()) {
     *        echo $fasttax->error;
     *    } else {
     *        print_r($fasttax->outputs);
     *    }
     *    echo "</pre>";
     */
    
    /**
     * Short Desc
     *
     * @TODO Create language files
     * Define constant error messages
     */
    
const POSTAL_CODE_ERR_MSG "A valid postal code must be supplied.<br />";
    const 
LICENSE_INVALID "A valid license key must be supplied.<br />";
    const 
REQUEST_ERR "There was an error processing this request.<br />";
    
    
/**
     * Short Desc
     *
     * This is what prepends all functions with the exception of the Canada function.
     * e.g. <b>GetTaxInfoBy</b>CityCountyState
     */
    
const FUNCTION_PREPEND "GetTaxInfoBy";
    
    
/**#@+
     *    @access public
     *    @var string
     */
    
public $error null;
    
public $is_production false;
    
/**#@-*/
    
    /**#@+
     *    @access public
     *    @var array
     */
    
public $outputs = array();
    
/**#@-*/
    
    /**#@+
     *    @access public
     *    @var string
     */
    
public $license_key null;
    
public $postal_code null;
    
public $address null;
    
public $city null;
    
public $county null;
    
public $state null;
    
public $province null;
    
public $tax_type "sales";
    
public $lookup_function "Zip_V2";
    
/**#@-*/
    
    /**#@+
     *    @access private
     *    @var string
     */
    
private $server_address "";
    
/**#@-*/
    
    /**#@+
     *    @access public
     *    @return $this
     */
    
public function __construct() {
        
$this->server_address $this->is_production "" "http://trial.serviceobjects.com/ft/FastTax.asmx?WSDL";
        return require_once(
"lib/nusoap/nusoap.php");
    }
    
/**#@-*/
    
    /**#@+
     *    @access private
     *    @return string
     */
    
private function UseValues() {
        if (  
$this->lookup_function == "GetCandianTaxInfoByProvince" ) {return array("Province" => $this->province"TaxType" => $this->tax_type"LicenseKey" => $this->license_key);}
        if ( (
$this->lookup_function == "Zip_V2") || ($this->lookup_function "Zip") ) {return array("PostalCode" => $this->postal_code"TaxType" => $this->tax_type"LicenseKey" => $this->license_key);}
        if (  
$this->lookup_function == "Address" ) {return array("City" => $this->city"State" => $this->State"PostalCode" => $this->postal_code"Address" => $this->Address"TaxType" => $this->tax_type"LicenseKey" => $this->license_key);}
        if (  
$this->lookup_function == "CityState" ) {return array("City" => $this->city"State" => $this->state"TaxType" => $this->tax_type"LicenseKey" => $this->license_key);}
        if (  
$this->lookup_function == "CityCountyState" ) {return array("City" => $this->city"County" => $this->county"State" => $this->state"TaxType" => $this->tax_type"LicenseKey" => $this->license_key);}
        return 
false;
    }
    
/**#@-*/
    
    /**#@+
     *    @access private
     *    @return boolean
     */
    
private function CheckLicense() {
        if (isset(
$this->license_key)){return true;}
        
        
$this->error self::LICENSE_INVALID;
        return 
false;
    }
    
/**#@-*/
    
    /**#@+
     *    @access public
     *  @param string 5 or 6 digit postal code
     *    @return string
     */
    
public function setPostalCode($postalcode null) {
        if (!
$this->CheckLicense()){return false;}
        
$this->error null;
            if ( (!isset(
$postalcode)) || (strlen($postalcode) < 5) || (!preg_match('/^(\d{5}-\d{4}|\d{5}|\d{9})$|^([a-zA-Z]\d[a-zA-Z]( )?\d[a-zA-Z]\d)$/'$postalcode)) ) {
            
$this->error self::POSTAL_CODE_ERR_MSG;
            return 
false;
        }
        if ( (
strlen($postalcode) > 5) && (!preg_match('/^([a-zA-Z]\d[a-zA-Z]( )?\d[a-zA-Z]\d)$/'$postalcode)) ) {
            
$postalcode substr($postalcode05);
        }
        
$this->postal_code $postalcode;
    }
    
    
/**#@-*/
    
    /**#@+
     *    @access public
     *    @return boolean
     */
    
public function SendRequest() {
        if (!
$this->CheckLicense()){return false;}
        
$this->error null;
        
        
$client = new nusoap_client($this->server_addresstrue);
        
        if (
$client->getError()) {
            
$this->err REQUEST_ERR;
            return 
false;
        }
        
        
$result $client->call(self::FUNCTION_PREPEND $this->lookup_function$this->UseValues());
        
        if (
$client->fault) {
            
$this->err REQUEST_ERR;
            return 
false;
        }
        
        if ( isset(
$result[self::FUNCTION_PREPEND $this->lookup_function "Result"]["Error"]) ) {
            
$this->error $result[self::FUNCTION_PREPEND $this->lookup_function "Result"]["Error"]["Desc"];
            return 
false;
        }
        
        
$this->outputs $result[self::FUNCTION_PREPEND $this->lookup_function "Result"]["TaxInfo"];
        return 
true;
    }
}
?>

 
  Advertise on this site Advertise on this site   Site map Site map   Statistics Statistics   Site tips Site tips   Privacy policy Privacy policy   Contact Contact  

For more information send a message to :
info at phpclasses dot org.
Copyright (c) Icontem 1999-2009 PHP Classes - PHP Class Scripts
  PHP Book Reviews - Reviews of books and other products