<?php

namespace StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for ActivitySelection StructType
 * @subpackage Structs
 */
class ActivitySelection extends AbstractStructBase
{
    /**
     * The IncludeQuestionPath
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * - nillable: true
     * @var bool
     */
    public $IncludeQuestionPath;
    /**
     * The IncludeCompensationCodes
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * - nillable: true
     * @var bool
     */
    public $IncludeCompensationCodes;
    /**
     * The IncludeTreatmentCodes
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * - nillable: true
     * @var bool
     */
    public $IncludeTreatmentCodes;
    /**
     * The IncludePalletCodes
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * - nillable: true
     * @var bool
     */
    public $IncludePalletCodes;
    /**
     * The IncludeExtraInfoCodes
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * - nillable: true
     * @var bool
     */
    public $IncludeExtraInfoCodes;
    /**
     * The IncludeAnomalyCodes
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * - nillable: true
     * @var bool
     */
    public $IncludeAnomalyCodes;
    /**
     * The IncludeCostCodes
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * - nillable: true
     * @var bool
     */
    public $IncludeCostCodes;
    /**
     * The IncludeDataTypes
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * - nillable: true
     * @var bool
     */
    public $IncludeDataTypes;
    /**
     * The Versions
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var \ArrayType\ArrayOfInt
     */
    public $Versions;
    /**
     * Constructor method for ActivitySelection
     * @uses ActivitySelection::setIncludeQuestionPath()
     * @uses ActivitySelection::setIncludeCompensationCodes()
     * @uses ActivitySelection::setIncludeTreatmentCodes()
     * @uses ActivitySelection::setIncludePalletCodes()
     * @uses ActivitySelection::setIncludeExtraInfoCodes()
     * @uses ActivitySelection::setIncludeAnomalyCodes()
     * @uses ActivitySelection::setIncludeCostCodes()
     * @uses ActivitySelection::setIncludeDataTypes()
     * @uses ActivitySelection::setVersions()
     * @param bool $includeQuestionPath
     * @param bool $includeCompensationCodes
     * @param bool $includeTreatmentCodes
     * @param bool $includePalletCodes
     * @param bool $includeExtraInfoCodes
     * @param bool $includeAnomalyCodes
     * @param bool $includeCostCodes
     * @param bool $includeDataTypes
     * @param \ArrayType\ArrayOfInt $versions
     */
    public function __construct($includeQuestionPath = null, $includeCompensationCodes = null, $includeTreatmentCodes = null, $includePalletCodes = null, $includeExtraInfoCodes = null, $includeAnomalyCodes = null, $includeCostCodes = null, $includeDataTypes = null, \ArrayType\ArrayOfInt $versions = null)
    {
        $this
            ->setIncludeQuestionPath($includeQuestionPath)
            ->setIncludeCompensationCodes($includeCompensationCodes)
            ->setIncludeTreatmentCodes($includeTreatmentCodes)
            ->setIncludePalletCodes($includePalletCodes)
            ->setIncludeExtraInfoCodes($includeExtraInfoCodes)
            ->setIncludeAnomalyCodes($includeAnomalyCodes)
            ->setIncludeCostCodes($includeCostCodes)
            ->setIncludeDataTypes($includeDataTypes)
            ->setVersions($versions);
    }
    /**
     * Get IncludeQuestionPath value
     * @return bool
     */
    public function getIncludeQuestionPath()
    {
        return $this->IncludeQuestionPath;
    }
    /**
     * Set IncludeQuestionPath value
     * @param bool $includeQuestionPath
     * @return \StructType\ActivitySelection
     */
    public function setIncludeQuestionPath($includeQuestionPath = null)
    {
        // validation for constraint: boolean
        if (!is_null($includeQuestionPath) && !is_bool($includeQuestionPath)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($includeQuestionPath, true), gettype($includeQuestionPath)), __LINE__);
        }
        $this->IncludeQuestionPath = $includeQuestionPath;
        return $this;
    }
    /**
     * Get IncludeCompensationCodes value
     * @return bool
     */
    public function getIncludeCompensationCodes()
    {
        return $this->IncludeCompensationCodes;
    }
    /**
     * Set IncludeCompensationCodes value
     * @param bool $includeCompensationCodes
     * @return \StructType\ActivitySelection
     */
    public function setIncludeCompensationCodes($includeCompensationCodes = null)
    {
        // validation for constraint: boolean
        if (!is_null($includeCompensationCodes) && !is_bool($includeCompensationCodes)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($includeCompensationCodes, true), gettype($includeCompensationCodes)), __LINE__);
        }
        $this->IncludeCompensationCodes = $includeCompensationCodes;
        return $this;
    }
    /**
     * Get IncludeTreatmentCodes value
     * @return bool
     */
    public function getIncludeTreatmentCodes()
    {
        return $this->IncludeTreatmentCodes;
    }
    /**
     * Set IncludeTreatmentCodes value
     * @param bool $includeTreatmentCodes
     * @return \StructType\ActivitySelection
     */
    public function setIncludeTreatmentCodes($includeTreatmentCodes = null)
    {
        // validation for constraint: boolean
        if (!is_null($includeTreatmentCodes) && !is_bool($includeTreatmentCodes)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($includeTreatmentCodes, true), gettype($includeTreatmentCodes)), __LINE__);
        }
        $this->IncludeTreatmentCodes = $includeTreatmentCodes;
        return $this;
    }
    /**
     * Get IncludePalletCodes value
     * @return bool
     */
    public function getIncludePalletCodes()
    {
        return $this->IncludePalletCodes;
    }
    /**
     * Set IncludePalletCodes value
     * @param bool $includePalletCodes
     * @return \StructType\ActivitySelection
     */
    public function setIncludePalletCodes($includePalletCodes = null)
    {
        // validation for constraint: boolean
        if (!is_null($includePalletCodes) && !is_bool($includePalletCodes)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($includePalletCodes, true), gettype($includePalletCodes)), __LINE__);
        }
        $this->IncludePalletCodes = $includePalletCodes;
        return $this;
    }
    /**
     * Get IncludeExtraInfoCodes value
     * @return bool
     */
    public function getIncludeExtraInfoCodes()
    {
        return $this->IncludeExtraInfoCodes;
    }
    /**
     * Set IncludeExtraInfoCodes value
     * @param bool $includeExtraInfoCodes
     * @return \StructType\ActivitySelection
     */
    public function setIncludeExtraInfoCodes($includeExtraInfoCodes = null)
    {
        // validation for constraint: boolean
        if (!is_null($includeExtraInfoCodes) && !is_bool($includeExtraInfoCodes)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($includeExtraInfoCodes, true), gettype($includeExtraInfoCodes)), __LINE__);
        }
        $this->IncludeExtraInfoCodes = $includeExtraInfoCodes;
        return $this;
    }
    /**
     * Get IncludeAnomalyCodes value
     * @return bool
     */
    public function getIncludeAnomalyCodes()
    {
        return $this->IncludeAnomalyCodes;
    }
    /**
     * Set IncludeAnomalyCodes value
     * @param bool $includeAnomalyCodes
     * @return \StructType\ActivitySelection
     */
    public function setIncludeAnomalyCodes($includeAnomalyCodes = null)
    {
        // validation for constraint: boolean
        if (!is_null($includeAnomalyCodes) && !is_bool($includeAnomalyCodes)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($includeAnomalyCodes, true), gettype($includeAnomalyCodes)), __LINE__);
        }
        $this->IncludeAnomalyCodes = $includeAnomalyCodes;
        return $this;
    }
    /**
     * Get IncludeCostCodes value
     * @return bool
     */
    public function getIncludeCostCodes()
    {
        return $this->IncludeCostCodes;
    }
    /**
     * Set IncludeCostCodes value
     * @param bool $includeCostCodes
     * @return \StructType\ActivitySelection
     */
    public function setIncludeCostCodes($includeCostCodes = null)
    {
        // validation for constraint: boolean
        if (!is_null($includeCostCodes) && !is_bool($includeCostCodes)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($includeCostCodes, true), gettype($includeCostCodes)), __LINE__);
        }
        $this->IncludeCostCodes = $includeCostCodes;
        return $this;
    }
    /**
     * Get IncludeDataTypes value
     * @return bool
     */
    public function getIncludeDataTypes()
    {
        return $this->IncludeDataTypes;
    }
    /**
     * Set IncludeDataTypes value
     * @param bool $includeDataTypes
     * @return \StructType\ActivitySelection
     */
    public function setIncludeDataTypes($includeDataTypes = null)
    {
        // validation for constraint: boolean
        if (!is_null($includeDataTypes) && !is_bool($includeDataTypes)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($includeDataTypes, true), gettype($includeDataTypes)), __LINE__);
        }
        $this->IncludeDataTypes = $includeDataTypes;
        return $this;
    }
    /**
     * Get Versions value
     * @return \ArrayType\ArrayOfInt|null
     */
    public function getVersions()
    {
        return $this->Versions;
    }
    /**
     * Set Versions value
     * @param \ArrayType\ArrayOfInt $versions
     * @return \StructType\ActivitySelection
     */
    public function setVersions(\ArrayType\ArrayOfInt $versions = null)
    {
        $this->Versions = $versions;
        return $this;
    }
}
