<?php

namespace Easy\EasyStruct;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for ClsVoucherTracking_Station EasyStruct
 * Meta information extracted from the WSDL
 * - nillable: true
 * - type: tns:ClsVoucherTracking_Station
 * @package Easy
 * @subpackage Structs
 */
class EasyClsVoucherTracking_Station extends AbstractStructBase
{
    /**
     * The Collected
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $Collected;
    /**
     * The DeliveryDate
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $DeliveryDate;
    /**
     * The DeliveryNotes
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $DeliveryNotes;
    /**
     * The DeliveryStation
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $DeliveryStation;
    /**
     * The DeliveryTime
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $DeliveryTime;
    /**
     * The ItemID1
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $ItemID1;
    /**
     * The ItemID2
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $ItemID2;
    /**
     * The ItemID3
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $ItemID3;
    /**
     * The MasterShipmentNumber
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var float
     */
    public $MasterShipmentNumber;
    /**
     * The NonDeliveryReason
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $NonDeliveryReason;
    /**
     * The ReceivedBy
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $ReceivedBy;
    /**
     * The ReturnShipmentNumber
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var float
     */
    public $ReturnShipmentNumber;
    /**
     * The ShipmentNumber
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var float
     */
    public $ShipmentNumber;
    /**
     * The VoucherCheckpoints
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \Easy\EasyArray\EasyArrayOfClsVoucherCheckpoint_Station
     */
    public $VoucherCheckpoints;
    /**
     * The Weight
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var float
     */
    public $Weight;
    /**
     * Constructor method for ClsVoucherTracking_Station
     * @uses EasyClsVoucherTracking_Station::setCollected()
     * @uses EasyClsVoucherTracking_Station::setDeliveryDate()
     * @uses EasyClsVoucherTracking_Station::setDeliveryNotes()
     * @uses EasyClsVoucherTracking_Station::setDeliveryStation()
     * @uses EasyClsVoucherTracking_Station::setDeliveryTime()
     * @uses EasyClsVoucherTracking_Station::setItemID1()
     * @uses EasyClsVoucherTracking_Station::setItemID2()
     * @uses EasyClsVoucherTracking_Station::setItemID3()
     * @uses EasyClsVoucherTracking_Station::setMasterShipmentNumber()
     * @uses EasyClsVoucherTracking_Station::setNonDeliveryReason()
     * @uses EasyClsVoucherTracking_Station::setReceivedBy()
     * @uses EasyClsVoucherTracking_Station::setReturnShipmentNumber()
     * @uses EasyClsVoucherTracking_Station::setShipmentNumber()
     * @uses EasyClsVoucherTracking_Station::setVoucherCheckpoints()
     * @uses EasyClsVoucherTracking_Station::setWeight()
     * @param bool $collected
     * @param string $deliveryDate
     * @param string $deliveryNotes
     * @param string $deliveryStation
     * @param string $deliveryTime
     * @param string $itemID1
     * @param string $itemID2
     * @param string $itemID3
     * @param float $masterShipmentNumber
     * @param string $nonDeliveryReason
     * @param string $receivedBy
     * @param float $returnShipmentNumber
     * @param float $shipmentNumber
     * @param \Easy\EasyArray\EasyArrayOfClsVoucherCheckpoint_Station $voucherCheckpoints
     * @param float $weight
     */
    public function __construct($collected = null, $deliveryDate = null, $deliveryNotes = null, $deliveryStation = null, $deliveryTime = null, $itemID1 = null, $itemID2 = null, $itemID3 = null, $masterShipmentNumber = null, $nonDeliveryReason = null, $receivedBy = null, $returnShipmentNumber = null, $shipmentNumber = null, \Easy\EasyArray\EasyArrayOfClsVoucherCheckpoint_Station $voucherCheckpoints = null, $weight = null)
    {
        $this
            ->setCollected($collected)
            ->setDeliveryDate($deliveryDate)
            ->setDeliveryNotes($deliveryNotes)
            ->setDeliveryStation($deliveryStation)
            ->setDeliveryTime($deliveryTime)
            ->setItemID1($itemID1)
            ->setItemID2($itemID2)
            ->setItemID3($itemID3)
            ->setMasterShipmentNumber($masterShipmentNumber)
            ->setNonDeliveryReason($nonDeliveryReason)
            ->setReceivedBy($receivedBy)
            ->setReturnShipmentNumber($returnShipmentNumber)
            ->setShipmentNumber($shipmentNumber)
            ->setVoucherCheckpoints($voucherCheckpoints)
            ->setWeight($weight);
    }
    /**
     * Get Collected value
     * @return bool|null
     */
    public function getCollected()
    {
        return $this->Collected;
    }
    /**
     * Set Collected value
     * @param bool $collected
     * @return \Easy\EasyStruct\EasyClsVoucherTracking_Station
     */
    public function setCollected($collected = null)
    {
        // validation for constraint: boolean
        if (!is_null($collected) && !is_bool($collected)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($collected, true), gettype($collected)), __LINE__);
        }
        $this->Collected = $collected;
        return $this;
    }
    /**
     * Get DeliveryDate 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 getDeliveryDate()
    {
        return isset($this->DeliveryDate) ? $this->DeliveryDate : null;
    }
    /**
     * Set DeliveryDate 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 $deliveryDate
     * @return \Easy\EasyStruct\EasyClsVoucherTracking_Station
     */
    public function setDeliveryDate($deliveryDate = null)
    {
        // validation for constraint: string
        if (!is_null($deliveryDate) && !is_string($deliveryDate)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($deliveryDate, true), gettype($deliveryDate)), __LINE__);
        }
        if (is_null($deliveryDate) || (is_array($deliveryDate) && empty($deliveryDate))) {
            unset($this->DeliveryDate);
        } else {
            $this->DeliveryDate = $deliveryDate;
        }
        return $this;
    }
    /**
     * Get DeliveryNotes 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 getDeliveryNotes()
    {
        return isset($this->DeliveryNotes) ? $this->DeliveryNotes : null;
    }
    /**
     * Set DeliveryNotes 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 $deliveryNotes
     * @return \Easy\EasyStruct\EasyClsVoucherTracking_Station
     */
    public function setDeliveryNotes($deliveryNotes = null)
    {
        // validation for constraint: string
        if (!is_null($deliveryNotes) && !is_string($deliveryNotes)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($deliveryNotes, true), gettype($deliveryNotes)), __LINE__);
        }
        if (is_null($deliveryNotes) || (is_array($deliveryNotes) && empty($deliveryNotes))) {
            unset($this->DeliveryNotes);
        } else {
            $this->DeliveryNotes = $deliveryNotes;
        }
        return $this;
    }
    /**
     * Get DeliveryStation 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 getDeliveryStation()
    {
        return isset($this->DeliveryStation) ? $this->DeliveryStation : null;
    }
    /**
     * Set DeliveryStation 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 $deliveryStation
     * @return \Easy\EasyStruct\EasyClsVoucherTracking_Station
     */
    public function setDeliveryStation($deliveryStation = null)
    {
        // validation for constraint: string
        if (!is_null($deliveryStation) && !is_string($deliveryStation)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($deliveryStation, true), gettype($deliveryStation)), __LINE__);
        }
        if (is_null($deliveryStation) || (is_array($deliveryStation) && empty($deliveryStation))) {
            unset($this->DeliveryStation);
        } else {
            $this->DeliveryStation = $deliveryStation;
        }
        return $this;
    }
    /**
     * Get DeliveryTime 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 getDeliveryTime()
    {
        return isset($this->DeliveryTime) ? $this->DeliveryTime : null;
    }
    /**
     * Set DeliveryTime 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 $deliveryTime
     * @return \Easy\EasyStruct\EasyClsVoucherTracking_Station
     */
    public function setDeliveryTime($deliveryTime = null)
    {
        // validation for constraint: string
        if (!is_null($deliveryTime) && !is_string($deliveryTime)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($deliveryTime, true), gettype($deliveryTime)), __LINE__);
        }
        if (is_null($deliveryTime) || (is_array($deliveryTime) && empty($deliveryTime))) {
            unset($this->DeliveryTime);
        } else {
            $this->DeliveryTime = $deliveryTime;
        }
        return $this;
    }
    /**
     * Get ItemID1 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 getItemID1()
    {
        return isset($this->ItemID1) ? $this->ItemID1 : null;
    }
    /**
     * Set ItemID1 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 $itemID1
     * @return \Easy\EasyStruct\EasyClsVoucherTracking_Station
     */
    public function setItemID1($itemID1 = null)
    {
        // validation for constraint: string
        if (!is_null($itemID1) && !is_string($itemID1)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($itemID1, true), gettype($itemID1)), __LINE__);
        }
        if (is_null($itemID1) || (is_array($itemID1) && empty($itemID1))) {
            unset($this->ItemID1);
        } else {
            $this->ItemID1 = $itemID1;
        }
        return $this;
    }
    /**
     * Get ItemID2 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 getItemID2()
    {
        return isset($this->ItemID2) ? $this->ItemID2 : null;
    }
    /**
     * Set ItemID2 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 $itemID2
     * @return \Easy\EasyStruct\EasyClsVoucherTracking_Station
     */
    public function setItemID2($itemID2 = null)
    {
        // validation for constraint: string
        if (!is_null($itemID2) && !is_string($itemID2)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($itemID2, true), gettype($itemID2)), __LINE__);
        }
        if (is_null($itemID2) || (is_array($itemID2) && empty($itemID2))) {
            unset($this->ItemID2);
        } else {
            $this->ItemID2 = $itemID2;
        }
        return $this;
    }
    /**
     * Get ItemID3 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 getItemID3()
    {
        return isset($this->ItemID3) ? $this->ItemID3 : null;
    }
    /**
     * Set ItemID3 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 $itemID3
     * @return \Easy\EasyStruct\EasyClsVoucherTracking_Station
     */
    public function setItemID3($itemID3 = null)
    {
        // validation for constraint: string
        if (!is_null($itemID3) && !is_string($itemID3)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($itemID3, true), gettype($itemID3)), __LINE__);
        }
        if (is_null($itemID3) || (is_array($itemID3) && empty($itemID3))) {
            unset($this->ItemID3);
        } else {
            $this->ItemID3 = $itemID3;
        }
        return $this;
    }
    /**
     * Get MasterShipmentNumber value
     * @return float|null
     */
    public function getMasterShipmentNumber()
    {
        return $this->MasterShipmentNumber;
    }
    /**
     * Set MasterShipmentNumber value
     * @param float $masterShipmentNumber
     * @return \Easy\EasyStruct\EasyClsVoucherTracking_Station
     */
    public function setMasterShipmentNumber($masterShipmentNumber = null)
    {
        // validation for constraint: float
        if (!is_null($masterShipmentNumber) && !(is_float($masterShipmentNumber) || is_numeric($masterShipmentNumber))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a float value, %s given', var_export($masterShipmentNumber, true), gettype($masterShipmentNumber)), __LINE__);
        }
        $this->MasterShipmentNumber = $masterShipmentNumber;
        return $this;
    }
    /**
     * Get NonDeliveryReason 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 getNonDeliveryReason()
    {
        return isset($this->NonDeliveryReason) ? $this->NonDeliveryReason : null;
    }
    /**
     * Set NonDeliveryReason 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 $nonDeliveryReason
     * @return \Easy\EasyStruct\EasyClsVoucherTracking_Station
     */
    public function setNonDeliveryReason($nonDeliveryReason = null)
    {
        // validation for constraint: string
        if (!is_null($nonDeliveryReason) && !is_string($nonDeliveryReason)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($nonDeliveryReason, true), gettype($nonDeliveryReason)), __LINE__);
        }
        if (is_null($nonDeliveryReason) || (is_array($nonDeliveryReason) && empty($nonDeliveryReason))) {
            unset($this->NonDeliveryReason);
        } else {
            $this->NonDeliveryReason = $nonDeliveryReason;
        }
        return $this;
    }
    /**
     * Get ReceivedBy 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 getReceivedBy()
    {
        return isset($this->ReceivedBy) ? $this->ReceivedBy : null;
    }
    /**
     * Set ReceivedBy 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 $receivedBy
     * @return \Easy\EasyStruct\EasyClsVoucherTracking_Station
     */
    public function setReceivedBy($receivedBy = null)
    {
        // validation for constraint: string
        if (!is_null($receivedBy) && !is_string($receivedBy)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($receivedBy, true), gettype($receivedBy)), __LINE__);
        }
        if (is_null($receivedBy) || (is_array($receivedBy) && empty($receivedBy))) {
            unset($this->ReceivedBy);
        } else {
            $this->ReceivedBy = $receivedBy;
        }
        return $this;
    }
    /**
     * Get ReturnShipmentNumber value
     * @return float|null
     */
    public function getReturnShipmentNumber()
    {
        return $this->ReturnShipmentNumber;
    }
    /**
     * Set ReturnShipmentNumber value
     * @param float $returnShipmentNumber
     * @return \Easy\EasyStruct\EasyClsVoucherTracking_Station
     */
    public function setReturnShipmentNumber($returnShipmentNumber = null)
    {
        // validation for constraint: float
        if (!is_null($returnShipmentNumber) && !(is_float($returnShipmentNumber) || is_numeric($returnShipmentNumber))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a float value, %s given', var_export($returnShipmentNumber, true), gettype($returnShipmentNumber)), __LINE__);
        }
        $this->ReturnShipmentNumber = $returnShipmentNumber;
        return $this;
    }
    /**
     * Get ShipmentNumber value
     * @return float|null
     */
    public function getShipmentNumber()
    {
        return $this->ShipmentNumber;
    }
    /**
     * Set ShipmentNumber value
     * @param float $shipmentNumber
     * @return \Easy\EasyStruct\EasyClsVoucherTracking_Station
     */
    public function setShipmentNumber($shipmentNumber = null)
    {
        // validation for constraint: float
        if (!is_null($shipmentNumber) && !(is_float($shipmentNumber) || is_numeric($shipmentNumber))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a float value, %s given', var_export($shipmentNumber, true), gettype($shipmentNumber)), __LINE__);
        }
        $this->ShipmentNumber = $shipmentNumber;
        return $this;
    }
    /**
     * Get VoucherCheckpoints 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 \Easy\EasyArray\EasyArrayOfClsVoucherCheckpoint_Station|null
     */
    public function getVoucherCheckpoints()
    {
        return isset($this->VoucherCheckpoints) ? $this->VoucherCheckpoints : null;
    }
    /**
     * Set VoucherCheckpoints 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 \Easy\EasyArray\EasyArrayOfClsVoucherCheckpoint_Station $voucherCheckpoints
     * @return \Easy\EasyStruct\EasyClsVoucherTracking_Station
     */
    public function setVoucherCheckpoints(\Easy\EasyArray\EasyArrayOfClsVoucherCheckpoint_Station $voucherCheckpoints = null)
    {
        if (is_null($voucherCheckpoints) || (is_array($voucherCheckpoints) && empty($voucherCheckpoints))) {
            unset($this->VoucherCheckpoints);
        } else {
            $this->VoucherCheckpoints = $voucherCheckpoints;
        }
        return $this;
    }
    /**
     * Get Weight value
     * @return float|null
     */
    public function getWeight()
    {
        return $this->Weight;
    }
    /**
     * Set Weight value
     * @param float $weight
     * @return \Easy\EasyStruct\EasyClsVoucherTracking_Station
     */
    public function setWeight($weight = null)
    {
        // validation for constraint: float
        if (!is_null($weight) && !(is_float($weight) || is_numeric($weight))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a float value, %s given', var_export($weight, true), gettype($weight)), __LINE__);
        }
        $this->Weight = $weight;
        return $this;
    }
}
