<?php
use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for SendEArchiveListForReconcilition StructType
 * @subpackage Structs
 */
class SendEArchiveListForReconcilition extends AbstractStructBase
{
    /**
     * The beginDate
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $beginDate;
    /**
     * The endDate
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $endDate;
    /**
     * The sessionID
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $sessionID;
    /**
     * The invoiceList
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var ArrayOfReconInvoiceType
     */
    public $invoiceList;
    /**
     * The invoiceType
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $invoiceType;
    /**
     * Constructor method for SendEArchiveListForReconcilition
     * @uses SendEArchiveListForReconcilition::setBeginDate()
     * @uses SendEArchiveListForReconcilition::setEndDate()
     * @uses SendEArchiveListForReconcilition::setSessionID()
     * @uses SendEArchiveListForReconcilition::setInvoiceList()
     * @uses SendEArchiveListForReconcilition::setInvoiceType()
     * @param string $beginDate
     * @param string $endDate
     * @param string $sessionID
     * @param ArrayOfReconInvoiceType $invoiceList
     * @param string $invoiceType
     */
    public function __construct($beginDate = null, $endDate = null, $sessionID = null, ArrayOfReconInvoiceType $invoiceList = null, $invoiceType = null)
    {
        $this
            ->setBeginDate($beginDate)
            ->setEndDate($endDate)
            ->setSessionID($sessionID)
            ->setInvoiceList($invoiceList)
            ->setInvoiceType($invoiceType);
    }
    /**
     * Get beginDate value
     * @return string|null
     */
    public function getBeginDate()
    {
        return $this->beginDate;
    }
    /**
     * Set beginDate value
     * @param string $beginDate
     * @return SendEArchiveListForReconcilition
     */
    public function setBeginDate($beginDate = null)
    {
        $this->beginDate = $beginDate;
        return $this;
    }
    /**
     * Get endDate value
     * @return string|null
     */
    public function getEndDate()
    {
        return $this->endDate;
    }
    /**
     * Set endDate value
     * @param string $endDate
     * @return SendEArchiveListForReconcilition
     */
    public function setEndDate($endDate = null)
    {
        $this->endDate = $endDate;
        return $this;
    }
    /**
     * Get sessionID 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 getSessionID()
    {
        return isset($this->sessionID) ? $this->sessionID : null;
    }
    /**
     * Set sessionID 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 $sessionID
     * @return SendEArchiveListForReconcilition
     */
    public function setSessionID($sessionID = null)
    {
        if (is_null($sessionID) || (is_array($sessionID) && empty($sessionID))) {
            unset($this->sessionID);
        } else {
            $this->sessionID = $sessionID;
        }
        return $this;
    }
    /**
     * Get invoiceList 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 ArrayOfReconInvoiceType|null
     */
    public function getInvoiceList()
    {
        return isset($this->invoiceList) ? $this->invoiceList : null;
    }
    /**
     * Set invoiceList 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 ArrayOfReconInvoiceType $invoiceList
     * @return SendEArchiveListForReconcilition
     */
    public function setInvoiceList(ArrayOfReconInvoiceType $invoiceList = null)
    {
        if (is_null($invoiceList) || (is_array($invoiceList) && empty($invoiceList))) {
            unset($this->invoiceList);
        } else {
            $this->invoiceList = $invoiceList;
        }
        return $this;
    }
    /**
     * Get invoiceType value
     * @return string|null
     */
    public function getInvoiceType()
    {
        return $this->invoiceType;
    }
    /**
     * Set invoiceType value
     * @param string $invoiceType
     * @return SendEArchiveListForReconcilition
     */
    public function setInvoiceType($invoiceType = null)
    {
        $this->invoiceType = $invoiceType;
        return $this;
    }
}
