<?php

namespace StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for MerchandiseHierarchyNodeHierarchyVersions StructType
 * @subpackage Structs
 */
class MerchandiseHierarchyNodeHierarchyVersions extends AbstractStructBase
{
    /**
     * The isIncluded
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $isIncluded;
    /**
     * The hierarchyVersion
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $hierarchyVersion;
    /**
     * The startDate
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $startDate;
    /**
     * The endDate
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $endDate;
    /**
     * The hierarchyLevel
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $hierarchyLevel;
    /**
     * The parentNode
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $parentNode;
    /**
     * Constructor method for MerchandiseHierarchyNodeHierarchyVersions
     * @uses MerchandiseHierarchyNodeHierarchyVersions::setIsIncluded()
     * @uses MerchandiseHierarchyNodeHierarchyVersions::setHierarchyVersion()
     * @uses MerchandiseHierarchyNodeHierarchyVersions::setStartDate()
     * @uses MerchandiseHierarchyNodeHierarchyVersions::setEndDate()
     * @uses MerchandiseHierarchyNodeHierarchyVersions::setHierarchyLevel()
     * @uses MerchandiseHierarchyNodeHierarchyVersions::setParentNode()
     * @param bool $isIncluded
     * @param \StructType\RecordRef $hierarchyVersion
     * @param string $startDate
     * @param string $endDate
     * @param \StructType\RecordRef $hierarchyLevel
     * @param \StructType\RecordRef $parentNode
     */
    public function __construct($isIncluded = null, \StructType\RecordRef $hierarchyVersion = null, $startDate = null, $endDate = null, \StructType\RecordRef $hierarchyLevel = null, \StructType\RecordRef $parentNode = null)
    {
        $this
            ->setIsIncluded($isIncluded)
            ->setHierarchyVersion($hierarchyVersion)
            ->setStartDate($startDate)
            ->setEndDate($endDate)
            ->setHierarchyLevel($hierarchyLevel)
            ->setParentNode($parentNode);
    }
    /**
     * Get isIncluded value
     * @return bool|null
     */
    public function getIsIncluded()
    {
        return $this->isIncluded;
    }
    /**
     * Set isIncluded value
     * @param bool $isIncluded
     * @return \StructType\MerchandiseHierarchyNodeHierarchyVersions
     */
    public function setIsIncluded($isIncluded = null)
    {
        // validation for constraint: boolean
        if (!is_null($isIncluded) && !is_bool($isIncluded)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($isIncluded, true), gettype($isIncluded)), __LINE__);
        }
        $this->isIncluded = $isIncluded;
        return $this;
    }
    /**
     * Get hierarchyVersion value
     * @return \StructType\RecordRef|null
     */
    public function getHierarchyVersion()
    {
        return $this->hierarchyVersion;
    }
    /**
     * Set hierarchyVersion value
     * @param \StructType\RecordRef $hierarchyVersion
     * @return \StructType\MerchandiseHierarchyNodeHierarchyVersions
     */
    public function setHierarchyVersion(\StructType\RecordRef $hierarchyVersion = null)
    {
        $this->hierarchyVersion = $hierarchyVersion;
        return $this;
    }
    /**
     * Get startDate value
     * @return string|null
     */
    public function getStartDate()
    {
        return $this->startDate;
    }
    /**
     * Set startDate value
     * @param string $startDate
     * @return \StructType\MerchandiseHierarchyNodeHierarchyVersions
     */
    public function setStartDate($startDate = null)
    {
        // validation for constraint: string
        if (!is_null($startDate) && !is_string($startDate)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($startDate, true), gettype($startDate)), __LINE__);
        }
        $this->startDate = $startDate;
        return $this;
    }
    /**
     * Get endDate value
     * @return string|null
     */
    public function getEndDate()
    {
        return $this->endDate;
    }
    /**
     * Set endDate value
     * @param string $endDate
     * @return \StructType\MerchandiseHierarchyNodeHierarchyVersions
     */
    public function setEndDate($endDate = null)
    {
        // validation for constraint: string
        if (!is_null($endDate) && !is_string($endDate)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($endDate, true), gettype($endDate)), __LINE__);
        }
        $this->endDate = $endDate;
        return $this;
    }
    /**
     * Get hierarchyLevel value
     * @return \StructType\RecordRef|null
     */
    public function getHierarchyLevel()
    {
        return $this->hierarchyLevel;
    }
    /**
     * Set hierarchyLevel value
     * @param \StructType\RecordRef $hierarchyLevel
     * @return \StructType\MerchandiseHierarchyNodeHierarchyVersions
     */
    public function setHierarchyLevel(\StructType\RecordRef $hierarchyLevel = null)
    {
        $this->hierarchyLevel = $hierarchyLevel;
        return $this;
    }
    /**
     * Get parentNode value
     * @return \StructType\RecordRef|null
     */
    public function getParentNode()
    {
        return $this->parentNode;
    }
    /**
     * Set parentNode value
     * @param \StructType\RecordRef $parentNode
     * @return \StructType\MerchandiseHierarchyNodeHierarchyVersions
     */
    public function setParentNode(\StructType\RecordRef $parentNode = null)
    {
        $this->parentNode = $parentNode;
        return $this;
    }
}
