<?php

namespace patest\StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for Sales.PricingVariationsCatalog StructType
 * @subpackage Structs
 */
class Sales_PricingVariationsCatalog extends AnyEntity
{
    /**
     * The BasePrice
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\Money
     */
    public $BasePrice;
    /**
     * The CommissionAmount
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\Money
     */
    public $CommissionAmount;
    /**
     * The DiscountAmount
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\Money
     */
    public $DiscountAmount;
    /**
     * The HolderCompanyId
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var int
     */
    public $HolderCompanyId;
    /**
     * The InsideCommissionAmount
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\Money
     */
    public $InsideCommissionAmount;
    /**
     * The ListPrice
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\Money
     */
    public $ListPrice;
    /**
     * The LocalId
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var int
     */
    public $LocalId;
    /**
     * The ManualPriceChangeAmount
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\Money
     */
    public $ManualPriceChangeAmount;
    /**
     * The PriceModifiersTotal
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\Money
     */
    public $PriceModifiersTotal;
    /**
     * The PricingDetails
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $PricingDetails;
    /**
     * The PricingDetailsLength
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var int
     */
    public $PricingDetailsLength;
    /**
     * The PricingVariationId
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var int
     */
    public $PricingVariationId;
    /**
     * The TaxAmount
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\Money
     */
    public $TaxAmount;
    /**
     * The TaxOnCommissionAmount
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\Money
     */
    public $TaxOnCommissionAmount;
    /**
     * The TotalPrice
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\Money
     */
    public $TotalPrice;
    /**
     * The VatAmount
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\Money
     */
    public $VatAmount;
    /**
     * The VatOnCommissionAmount
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\Money
     */
    public $VatOnCommissionAmount;
    /**
     * Constructor method for Sales.PricingVariationsCatalog
     * @uses Sales_PricingVariationsCatalog::setBasePrice()
     * @uses Sales_PricingVariationsCatalog::setCommissionAmount()
     * @uses Sales_PricingVariationsCatalog::setDiscountAmount()
     * @uses Sales_PricingVariationsCatalog::setHolderCompanyId()
     * @uses Sales_PricingVariationsCatalog::setInsideCommissionAmount()
     * @uses Sales_PricingVariationsCatalog::setListPrice()
     * @uses Sales_PricingVariationsCatalog::setLocalId()
     * @uses Sales_PricingVariationsCatalog::setManualPriceChangeAmount()
     * @uses Sales_PricingVariationsCatalog::setPriceModifiersTotal()
     * @uses Sales_PricingVariationsCatalog::setPricingDetails()
     * @uses Sales_PricingVariationsCatalog::setPricingDetailsLength()
     * @uses Sales_PricingVariationsCatalog::setPricingVariationId()
     * @uses Sales_PricingVariationsCatalog::setTaxAmount()
     * @uses Sales_PricingVariationsCatalog::setTaxOnCommissionAmount()
     * @uses Sales_PricingVariationsCatalog::setTotalPrice()
     * @uses Sales_PricingVariationsCatalog::setVatAmount()
     * @uses Sales_PricingVariationsCatalog::setVatOnCommissionAmount()
     * @param \patest\StructType\Money $basePrice
     * @param \patest\StructType\Money $commissionAmount
     * @param \patest\StructType\Money $discountAmount
     * @param int $holderCompanyId
     * @param \patest\StructType\Money $insideCommissionAmount
     * @param \patest\StructType\Money $listPrice
     * @param int $localId
     * @param \patest\StructType\Money $manualPriceChangeAmount
     * @param \patest\StructType\Money $priceModifiersTotal
     * @param string $pricingDetails
     * @param int $pricingDetailsLength
     * @param int $pricingVariationId
     * @param \patest\StructType\Money $taxAmount
     * @param \patest\StructType\Money $taxOnCommissionAmount
     * @param \patest\StructType\Money $totalPrice
     * @param \patest\StructType\Money $vatAmount
     * @param \patest\StructType\Money $vatOnCommissionAmount
     */
    public function __construct(\patest\StructType\Money $basePrice = null, \patest\StructType\Money $commissionAmount = null, \patest\StructType\Money $discountAmount = null, $holderCompanyId = null, \patest\StructType\Money $insideCommissionAmount = null, \patest\StructType\Money $listPrice = null, $localId = null, \patest\StructType\Money $manualPriceChangeAmount = null, \patest\StructType\Money $priceModifiersTotal = null, $pricingDetails = null, $pricingDetailsLength = null, $pricingVariationId = null, \patest\StructType\Money $taxAmount = null, \patest\StructType\Money $taxOnCommissionAmount = null, \patest\StructType\Money $totalPrice = null, \patest\StructType\Money $vatAmount = null, \patest\StructType\Money $vatOnCommissionAmount = null)
    {
        $this
            ->setBasePrice($basePrice)
            ->setCommissionAmount($commissionAmount)
            ->setDiscountAmount($discountAmount)
            ->setHolderCompanyId($holderCompanyId)
            ->setInsideCommissionAmount($insideCommissionAmount)
            ->setListPrice($listPrice)
            ->setLocalId($localId)
            ->setManualPriceChangeAmount($manualPriceChangeAmount)
            ->setPriceModifiersTotal($priceModifiersTotal)
            ->setPricingDetails($pricingDetails)
            ->setPricingDetailsLength($pricingDetailsLength)
            ->setPricingVariationId($pricingVariationId)
            ->setTaxAmount($taxAmount)
            ->setTaxOnCommissionAmount($taxOnCommissionAmount)
            ->setTotalPrice($totalPrice)
            ->setVatAmount($vatAmount)
            ->setVatOnCommissionAmount($vatOnCommissionAmount);
    }
    /**
     * Get BasePrice value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return \patest\StructType\Money|null
     */
    public function getBasePrice()
    {
        return isset($this->BasePrice) ? $this->BasePrice : null;
    }
    /**
     * Set BasePrice value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param \patest\StructType\Money $basePrice
     * @return \patest\StructType\Sales_PricingVariationsCatalog
     */
    public function setBasePrice(\patest\StructType\Money $basePrice = null)
    {
        if (is_null($basePrice) || (is_array($basePrice) && empty($basePrice))) {
            unset($this->BasePrice);
        } else {
            $this->BasePrice = $basePrice;
        }
        return $this;
    }
    /**
     * Get CommissionAmount value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return \patest\StructType\Money|null
     */
    public function getCommissionAmount()
    {
        return isset($this->CommissionAmount) ? $this->CommissionAmount : null;
    }
    /**
     * Set CommissionAmount value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param \patest\StructType\Money $commissionAmount
     * @return \patest\StructType\Sales_PricingVariationsCatalog
     */
    public function setCommissionAmount(\patest\StructType\Money $commissionAmount = null)
    {
        if (is_null($commissionAmount) || (is_array($commissionAmount) && empty($commissionAmount))) {
            unset($this->CommissionAmount);
        } else {
            $this->CommissionAmount = $commissionAmount;
        }
        return $this;
    }
    /**
     * Get DiscountAmount value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return \patest\StructType\Money|null
     */
    public function getDiscountAmount()
    {
        return isset($this->DiscountAmount) ? $this->DiscountAmount : null;
    }
    /**
     * Set DiscountAmount value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param \patest\StructType\Money $discountAmount
     * @return \patest\StructType\Sales_PricingVariationsCatalog
     */
    public function setDiscountAmount(\patest\StructType\Money $discountAmount = null)
    {
        if (is_null($discountAmount) || (is_array($discountAmount) && empty($discountAmount))) {
            unset($this->DiscountAmount);
        } else {
            $this->DiscountAmount = $discountAmount;
        }
        return $this;
    }
    /**
     * Get HolderCompanyId value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return int|null
     */
    public function getHolderCompanyId()
    {
        return isset($this->HolderCompanyId) ? $this->HolderCompanyId : null;
    }
    /**
     * Set HolderCompanyId value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param int $holderCompanyId
     * @return \patest\StructType\Sales_PricingVariationsCatalog
     */
    public function setHolderCompanyId($holderCompanyId = null)
    {
        // validation for constraint: int
        if (!is_null($holderCompanyId) && !(is_int($holderCompanyId) || ctype_digit($holderCompanyId))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($holderCompanyId, true), gettype($holderCompanyId)), __LINE__);
        }
        if (is_null($holderCompanyId) || (is_array($holderCompanyId) && empty($holderCompanyId))) {
            unset($this->HolderCompanyId);
        } else {
            $this->HolderCompanyId = $holderCompanyId;
        }
        return $this;
    }
    /**
     * Get InsideCommissionAmount value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return \patest\StructType\Money|null
     */
    public function getInsideCommissionAmount()
    {
        return isset($this->InsideCommissionAmount) ? $this->InsideCommissionAmount : null;
    }
    /**
     * Set InsideCommissionAmount value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param \patest\StructType\Money $insideCommissionAmount
     * @return \patest\StructType\Sales_PricingVariationsCatalog
     */
    public function setInsideCommissionAmount(\patest\StructType\Money $insideCommissionAmount = null)
    {
        if (is_null($insideCommissionAmount) || (is_array($insideCommissionAmount) && empty($insideCommissionAmount))) {
            unset($this->InsideCommissionAmount);
        } else {
            $this->InsideCommissionAmount = $insideCommissionAmount;
        }
        return $this;
    }
    /**
     * Get ListPrice value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return \patest\StructType\Money|null
     */
    public function getListPrice()
    {
        return isset($this->ListPrice) ? $this->ListPrice : null;
    }
    /**
     * Set ListPrice value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param \patest\StructType\Money $listPrice
     * @return \patest\StructType\Sales_PricingVariationsCatalog
     */
    public function setListPrice(\patest\StructType\Money $listPrice = null)
    {
        if (is_null($listPrice) || (is_array($listPrice) && empty($listPrice))) {
            unset($this->ListPrice);
        } else {
            $this->ListPrice = $listPrice;
        }
        return $this;
    }
    /**
     * Get LocalId value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return int|null
     */
    public function getLocalId()
    {
        return isset($this->LocalId) ? $this->LocalId : null;
    }
    /**
     * Set LocalId value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param int $localId
     * @return \patest\StructType\Sales_PricingVariationsCatalog
     */
    public function setLocalId($localId = null)
    {
        // validation for constraint: int
        if (!is_null($localId) && !(is_int($localId) || ctype_digit($localId))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($localId, true), gettype($localId)), __LINE__);
        }
        if (is_null($localId) || (is_array($localId) && empty($localId))) {
            unset($this->LocalId);
        } else {
            $this->LocalId = $localId;
        }
        return $this;
    }
    /**
     * Get ManualPriceChangeAmount value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return \patest\StructType\Money|null
     */
    public function getManualPriceChangeAmount()
    {
        return isset($this->ManualPriceChangeAmount) ? $this->ManualPriceChangeAmount : null;
    }
    /**
     * Set ManualPriceChangeAmount value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param \patest\StructType\Money $manualPriceChangeAmount
     * @return \patest\StructType\Sales_PricingVariationsCatalog
     */
    public function setManualPriceChangeAmount(\patest\StructType\Money $manualPriceChangeAmount = null)
    {
        if (is_null($manualPriceChangeAmount) || (is_array($manualPriceChangeAmount) && empty($manualPriceChangeAmount))) {
            unset($this->ManualPriceChangeAmount);
        } else {
            $this->ManualPriceChangeAmount = $manualPriceChangeAmount;
        }
        return $this;
    }
    /**
     * Get PriceModifiersTotal value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return \patest\StructType\Money|null
     */
    public function getPriceModifiersTotal()
    {
        return isset($this->PriceModifiersTotal) ? $this->PriceModifiersTotal : null;
    }
    /**
     * Set PriceModifiersTotal value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param \patest\StructType\Money $priceModifiersTotal
     * @return \patest\StructType\Sales_PricingVariationsCatalog
     */
    public function setPriceModifiersTotal(\patest\StructType\Money $priceModifiersTotal = null)
    {
        if (is_null($priceModifiersTotal) || (is_array($priceModifiersTotal) && empty($priceModifiersTotal))) {
            unset($this->PriceModifiersTotal);
        } else {
            $this->PriceModifiersTotal = $priceModifiersTotal;
        }
        return $this;
    }
    /**
     * Get PricingDetails value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return string|null
     */
    public function getPricingDetails()
    {
        return isset($this->PricingDetails) ? $this->PricingDetails : null;
    }
    /**
     * Set PricingDetails value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param string $pricingDetails
     * @return \patest\StructType\Sales_PricingVariationsCatalog
     */
    public function setPricingDetails($pricingDetails = null)
    {
        // validation for constraint: string
        if (!is_null($pricingDetails) && !is_string($pricingDetails)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($pricingDetails, true), gettype($pricingDetails)), __LINE__);
        }
        if (is_null($pricingDetails) || (is_array($pricingDetails) && empty($pricingDetails))) {
            unset($this->PricingDetails);
        } else {
            $this->PricingDetails = $pricingDetails;
        }
        return $this;
    }
    /**
     * Get PricingDetailsLength value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return int|null
     */
    public function getPricingDetailsLength()
    {
        return isset($this->PricingDetailsLength) ? $this->PricingDetailsLength : null;
    }
    /**
     * Set PricingDetailsLength value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param int $pricingDetailsLength
     * @return \patest\StructType\Sales_PricingVariationsCatalog
     */
    public function setPricingDetailsLength($pricingDetailsLength = null)
    {
        // validation for constraint: int
        if (!is_null($pricingDetailsLength) && !(is_int($pricingDetailsLength) || ctype_digit($pricingDetailsLength))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($pricingDetailsLength, true), gettype($pricingDetailsLength)), __LINE__);
        }
        if (is_null($pricingDetailsLength) || (is_array($pricingDetailsLength) && empty($pricingDetailsLength))) {
            unset($this->PricingDetailsLength);
        } else {
            $this->PricingDetailsLength = $pricingDetailsLength;
        }
        return $this;
    }
    /**
     * Get PricingVariationId value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return int|null
     */
    public function getPricingVariationId()
    {
        return isset($this->PricingVariationId) ? $this->PricingVariationId : null;
    }
    /**
     * Set PricingVariationId value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param int $pricingVariationId
     * @return \patest\StructType\Sales_PricingVariationsCatalog
     */
    public function setPricingVariationId($pricingVariationId = null)
    {
        // validation for constraint: int
        if (!is_null($pricingVariationId) && !(is_int($pricingVariationId) || ctype_digit($pricingVariationId))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($pricingVariationId, true), gettype($pricingVariationId)), __LINE__);
        }
        if (is_null($pricingVariationId) || (is_array($pricingVariationId) && empty($pricingVariationId))) {
            unset($this->PricingVariationId);
        } else {
            $this->PricingVariationId = $pricingVariationId;
        }
        return $this;
    }
    /**
     * Get TaxAmount value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return \patest\StructType\Money|null
     */
    public function getTaxAmount()
    {
        return isset($this->TaxAmount) ? $this->TaxAmount : null;
    }
    /**
     * Set TaxAmount value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param \patest\StructType\Money $taxAmount
     * @return \patest\StructType\Sales_PricingVariationsCatalog
     */
    public function setTaxAmount(\patest\StructType\Money $taxAmount = null)
    {
        if (is_null($taxAmount) || (is_array($taxAmount) && empty($taxAmount))) {
            unset($this->TaxAmount);
        } else {
            $this->TaxAmount = $taxAmount;
        }
        return $this;
    }
    /**
     * Get TaxOnCommissionAmount value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return \patest\StructType\Money|null
     */
    public function getTaxOnCommissionAmount()
    {
        return isset($this->TaxOnCommissionAmount) ? $this->TaxOnCommissionAmount : null;
    }
    /**
     * Set TaxOnCommissionAmount value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param \patest\StructType\Money $taxOnCommissionAmount
     * @return \patest\StructType\Sales_PricingVariationsCatalog
     */
    public function setTaxOnCommissionAmount(\patest\StructType\Money $taxOnCommissionAmount = null)
    {
        if (is_null($taxOnCommissionAmount) || (is_array($taxOnCommissionAmount) && empty($taxOnCommissionAmount))) {
            unset($this->TaxOnCommissionAmount);
        } else {
            $this->TaxOnCommissionAmount = $taxOnCommissionAmount;
        }
        return $this;
    }
    /**
     * Get TotalPrice value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return \patest\StructType\Money|null
     */
    public function getTotalPrice()
    {
        return isset($this->TotalPrice) ? $this->TotalPrice : null;
    }
    /**
     * Set TotalPrice value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param \patest\StructType\Money $totalPrice
     * @return \patest\StructType\Sales_PricingVariationsCatalog
     */
    public function setTotalPrice(\patest\StructType\Money $totalPrice = null)
    {
        if (is_null($totalPrice) || (is_array($totalPrice) && empty($totalPrice))) {
            unset($this->TotalPrice);
        } else {
            $this->TotalPrice = $totalPrice;
        }
        return $this;
    }
    /**
     * Get VatAmount value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return \patest\StructType\Money|null
     */
    public function getVatAmount()
    {
        return isset($this->VatAmount) ? $this->VatAmount : null;
    }
    /**
     * Set VatAmount value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param \patest\StructType\Money $vatAmount
     * @return \patest\StructType\Sales_PricingVariationsCatalog
     */
    public function setVatAmount(\patest\StructType\Money $vatAmount = null)
    {
        if (is_null($vatAmount) || (is_array($vatAmount) && empty($vatAmount))) {
            unset($this->VatAmount);
        } else {
            $this->VatAmount = $vatAmount;
        }
        return $this;
    }
    /**
     * Get VatOnCommissionAmount value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return \patest\StructType\Money|null
     */
    public function getVatOnCommissionAmount()
    {
        return isset($this->VatOnCommissionAmount) ? $this->VatOnCommissionAmount : null;
    }
    /**
     * Set VatOnCommissionAmount value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param \patest\StructType\Money $vatOnCommissionAmount
     * @return \patest\StructType\Sales_PricingVariationsCatalog
     */
    public function setVatOnCommissionAmount(\patest\StructType\Money $vatOnCommissionAmount = null)
    {
        if (is_null($vatOnCommissionAmount) || (is_array($vatOnCommissionAmount) && empty($vatOnCommissionAmount))) {
            unset($this->VatOnCommissionAmount);
        } else {
            $this->VatOnCommissionAmount = $vatOnCommissionAmount;
        }
        return $this;
    }
}
