<?php
namespace QuickBooksOnline\API\Data;

/**
 * @xmlNamespace http://schema.intuit.com/finance/v3
 * @xmlType
 * @xmlName IPPTaxLineDetail
 * @var IPPTaxLineDetail
 * @xmlDefinition
                Product: ALL
                Description: Tax detail for a transaction line.

 */
class IPPTaxLineDetail
{

        /**
        * Initializes this object, optionally with pre-defined property values
        *
        * Initializes this object and it's property members, using the dictionary
        * of key/value pairs passed as an optional argument.
        *
        * @param dictionary $keyValInitializers key/value pairs to be populated into object's properties
        * @param boolean $verbose specifies whether object should echo warnings
        */
        public function __construct($keyValInitializers=array(), $verbose=false)
        {
            foreach ($keyValInitializers as $initPropName => $initPropVal) {
                if (property_exists('IPPTaxLineDetail', $initPropName)|| property_exists('QuickBooksOnline\API\Data\IPPTaxLineDetail', $initPropName)) {
                    $this->{$initPropName} = $initPropVal;
                } else {
                    if ($verbose) {
                        echo "Property does not exist ($initPropName) in class (".get_class($this).")";
                    }
                }
            }
        }


    /**
     * @Definition
                        Product: QBW
                        Description: Reference to a TaxRate. For all editions of QuickBooks, for TaxLineDetail line types that apply a specific TaxRate to the preceding line of the transaction, this
                        is a reference to that TaxRate. For a TaxLineDetail in a TxnTaxDetail, where the TxnTaxCodeRef is set, the TaxRate referenced here MUST also be
                        one of the rates in the referenced tax code's rate list (either the SalesTaxRateList or the PurchaseTaxRateList) that applies to the transaction type.[br /]
                        For international editions of QuickBooks, for a TaxLineDetail in a TxnTaxDetail, the rate referenced here must be referenced by a TaxCode used on  a transaction
                        line. Any given rate may only be listed once.[br]See [a href="http://ipp.developer.intuit.com/0010_Intuit_Partner_Platform/0060_Financial_Management_Services_(v3)/01100_Global_Tax_Model"]Global Tax Model[/a].
                        Product: QBO
                        Description: For US editions of QuickBooks Online, and in TxnTaxDetail only, this references the TaxRate applied to the entire transaction.[br /]
                        For international editions of QuickBooks Online, for a TaxLineDetail in a TxnTaxDetail, where the TxnTaxCodeRef is set, the TaxRate referenced
                        here MUST also be one of the rates in the referenced tax code's rate list (either the SalesTaxRateList or the PurchaseTaxRateList) that applies to the
                        transaction type. Any given rate may only be listed once.[br /]Does not apply to a TaxLineDetail apart from a TxnTaxDetail.[br]See [a href="http://ipp.developer.intuit.com/0010_Intuit_Partner_Platform/0060_Financial_Management_Services_(v3)/01100_Global_Tax_Model"]Global Tax Model[/a].

     * @xmlType element
     * @xmlNamespace http://schema.intuit.com/finance/v3
     * @xmlMinOccurs 0
     * @xmlMaxOccurs 1
     * @xmlName TaxRateRef
     * @var com\intuit\schema\finance\v3\IPPReferenceType
     */
    public $TaxRateRef;
    /**
     * @Definition
                        Product: ALL
                        Description: True if the sales tax is expressed as a percentage; false if expressed as a number amount.

     * @xmlType element
     * @xmlNamespace http://schema.intuit.com/finance/v3
     * @xmlMinOccurs 0
     * @xmlName PercentBased
     * @var boolean
     */
    public $PercentBased;
    /**
     * @Definition
                        Product: ALL
                        Description: Numerical expression of the sales tax percent. For example, use "8.5" not "0.085".

     * @xmlType element
     * @xmlNamespace http://schema.intuit.com/finance/v3
     * @xmlMinOccurs 0
     * @xmlName TaxPercent
     * @var float
     */
    public $TaxPercent;
    /**
     * @Definition
                        Product: QBO
                        Description: This is taxable amount on the total of the applicable tax rates
                        If TaxRate is applicable on two lines, the taxableamount represents total of the two lines for which this rate is applied
                        This is different from the Line.Amount which represent the final tax amount after the tax has been applied

     * @xmlType element
     * @xmlNamespace http://schema.intuit.com/finance/v3
     * @xmlMinOccurs 0
     * @xmlMaxOccurs 1
     * @xmlName NetAmountTaxable
     * @var float
     */
    public $NetAmountTaxable;
    /**
     * @Definition
                        Product: QBO
                        Description: This is the amount which also includes tax.

     * @xmlType element
     * @xmlNamespace http://schema.intuit.com/finance/v3
     * @xmlMinOccurs 0
     * @xmlMaxOccurs 1
     * @xmlName TaxInclusiveAmount
     * @var float
     */
    public $TaxInclusiveAmount;
    /**
     * @Definition
                        Product: QBO
                        Description: This holds the difference between the actual tax and overridden amount supplied by the user.

     * @xmlType element
     * @xmlNamespace http://schema.intuit.com/finance/v3
     * @xmlMinOccurs 0
     * @xmlMaxOccurs 1
     * @xmlName OverrideDeltaAmount
     * @var float
     */
    public $OverrideDeltaAmount;
    /**
     * @Definition
                        Product: ALL
                        Description: Date when the service is performed.

     * @xmlType element
     * @xmlNamespace http://schema.intuit.com/finance/v3
     * @xmlMinOccurs 0
     * @xmlName ServiceDate
     * @var string
     */
    public $ServiceDate;
    /**
     * @Definition
                        Product: ALL
                        Description: Internal use only: extension place holder for TaxLine.

     * @xmlType element
     * @xmlNamespace http://schema.intuit.com/finance/v3
     * @xmlMinOccurs 0
     * @xmlName TaxLineDetailEx
     * @var com\intuit\schema\finance\v3\IPPIntuitAnyType
     */
    public $TaxLineDetailEx;
} // end class IPPTaxLineDetail
