<?php

namespace StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for JPSOAP_SuppleOfferPrice StructType
 * @subpackage Structs
 */
class JPSOAP_SuppleOfferPrice extends AbstractStructBase
{
    /**
     * The RoomTypes
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var \ArrayType\ArrayOfJPSOAP_IntCodeAttr2
     */
    public $RoomTypes;
    /**
     * The Boards
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var \ArrayType\ArrayOfJPSOAP_IntCodeAttr3
     */
    public $Boards;
    /**
     * The Percent
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var \StructType\JPSOAP_Price
     */
    public $Percent;
    /**
     * The Booking
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var \StructType\JPSOAP_PriceTyped
     */
    public $Booking;
    /**
     * The Adult
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var \StructType\JPSOAP_PriceTyped
     */
    public $Adult;
    /**
     * The Room
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var \StructType\JPSOAP_PriceTyped
     */
    public $Room;
    /**
     * The AdultsAdditionals
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var \ArrayType\ArrayOfJPSOAP_OrderedTypedPrice
     */
    public $AdultsAdditionals;
    /**
     * The ChildrenA
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var \ArrayType\ArrayOfJPSOAP_OrderedTypedPrice1
     */
    public $ChildrenA;
    /**
     * The ChildrenB
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var \ArrayType\ArrayOfJPSOAP_OrderedTypedPrice2
     */
    public $ChildrenB;
    /**
     * The Infants
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var \ArrayType\ArrayOfJPSOAP_OrderedTypedPrice3
     */
    public $Infants;
    /**
     * The From
     * @var string
     */
    public $From;
    /**
     * The To
     * @var string
     */
    public $To;
    /**
     * Constructor method for JPSOAP_SuppleOfferPrice
     * @uses JPSOAP_SuppleOfferPrice::setRoomTypes()
     * @uses JPSOAP_SuppleOfferPrice::setBoards()
     * @uses JPSOAP_SuppleOfferPrice::setPercent()
     * @uses JPSOAP_SuppleOfferPrice::setBooking()
     * @uses JPSOAP_SuppleOfferPrice::setAdult()
     * @uses JPSOAP_SuppleOfferPrice::setRoom()
     * @uses JPSOAP_SuppleOfferPrice::setAdultsAdditionals()
     * @uses JPSOAP_SuppleOfferPrice::setChildrenA()
     * @uses JPSOAP_SuppleOfferPrice::setChildrenB()
     * @uses JPSOAP_SuppleOfferPrice::setInfants()
     * @uses JPSOAP_SuppleOfferPrice::setFrom()
     * @uses JPSOAP_SuppleOfferPrice::setTo()
     * @param \ArrayType\ArrayOfJPSOAP_IntCodeAttr2 $roomTypes
     * @param \ArrayType\ArrayOfJPSOAP_IntCodeAttr3 $boards
     * @param \StructType\JPSOAP_Price $percent
     * @param \StructType\JPSOAP_PriceTyped $booking
     * @param \StructType\JPSOAP_PriceTyped $adult
     * @param \StructType\JPSOAP_PriceTyped $room
     * @param \ArrayType\ArrayOfJPSOAP_OrderedTypedPrice $adultsAdditionals
     * @param \ArrayType\ArrayOfJPSOAP_OrderedTypedPrice1 $childrenA
     * @param \ArrayType\ArrayOfJPSOAP_OrderedTypedPrice2 $childrenB
     * @param \ArrayType\ArrayOfJPSOAP_OrderedTypedPrice3 $infants
     * @param string $from
     * @param string $to
     */
    public function __construct(\ArrayType\ArrayOfJPSOAP_IntCodeAttr2 $roomTypes = null, \ArrayType\ArrayOfJPSOAP_IntCodeAttr3 $boards = null, \StructType\JPSOAP_Price $percent = null, \StructType\JPSOAP_PriceTyped $booking = null, \StructType\JPSOAP_PriceTyped $adult = null, \StructType\JPSOAP_PriceTyped $room = null, \ArrayType\ArrayOfJPSOAP_OrderedTypedPrice $adultsAdditionals = null, \ArrayType\ArrayOfJPSOAP_OrderedTypedPrice1 $childrenA = null, \ArrayType\ArrayOfJPSOAP_OrderedTypedPrice2 $childrenB = null, \ArrayType\ArrayOfJPSOAP_OrderedTypedPrice3 $infants = null, $from = null, $to = null)
    {
        $this
            ->setRoomTypes($roomTypes)
            ->setBoards($boards)
            ->setPercent($percent)
            ->setBooking($booking)
            ->setAdult($adult)
            ->setRoom($room)
            ->setAdultsAdditionals($adultsAdditionals)
            ->setChildrenA($childrenA)
            ->setChildrenB($childrenB)
            ->setInfants($infants)
            ->setFrom($from)
            ->setTo($to);
    }
    /**
     * Get RoomTypes value
     * @return \ArrayType\ArrayOfJPSOAP_IntCodeAttr2|null
     */
    public function getRoomTypes()
    {
        return $this->RoomTypes;
    }
    /**
     * Set RoomTypes value
     * @param \ArrayType\ArrayOfJPSOAP_IntCodeAttr2 $roomTypes
     * @return \StructType\JPSOAP_SuppleOfferPrice
     */
    public function setRoomTypes(\ArrayType\ArrayOfJPSOAP_IntCodeAttr2 $roomTypes = null)
    {
        $this->RoomTypes = $roomTypes;
        return $this;
    }
    /**
     * Get Boards value
     * @return \ArrayType\ArrayOfJPSOAP_IntCodeAttr3|null
     */
    public function getBoards()
    {
        return $this->Boards;
    }
    /**
     * Set Boards value
     * @param \ArrayType\ArrayOfJPSOAP_IntCodeAttr3 $boards
     * @return \StructType\JPSOAP_SuppleOfferPrice
     */
    public function setBoards(\ArrayType\ArrayOfJPSOAP_IntCodeAttr3 $boards = null)
    {
        $this->Boards = $boards;
        return $this;
    }
    /**
     * Get Percent value
     * @return \StructType\JPSOAP_Price|null
     */
    public function getPercent()
    {
        return $this->Percent;
    }
    /**
     * Set Percent value
     * @param \StructType\JPSOAP_Price $percent
     * @return \StructType\JPSOAP_SuppleOfferPrice
     */
    public function setPercent(\StructType\JPSOAP_Price $percent = null)
    {
        $this->Percent = $percent;
        return $this;
    }
    /**
     * Get Booking value
     * @return \StructType\JPSOAP_PriceTyped|null
     */
    public function getBooking()
    {
        return $this->Booking;
    }
    /**
     * Set Booking value
     * @param \StructType\JPSOAP_PriceTyped $booking
     * @return \StructType\JPSOAP_SuppleOfferPrice
     */
    public function setBooking(\StructType\JPSOAP_PriceTyped $booking = null)
    {
        $this->Booking = $booking;
        return $this;
    }
    /**
     * Get Adult value
     * @return \StructType\JPSOAP_PriceTyped|null
     */
    public function getAdult()
    {
        return $this->Adult;
    }
    /**
     * Set Adult value
     * @param \StructType\JPSOAP_PriceTyped $adult
     * @return \StructType\JPSOAP_SuppleOfferPrice
     */
    public function setAdult(\StructType\JPSOAP_PriceTyped $adult = null)
    {
        $this->Adult = $adult;
        return $this;
    }
    /**
     * Get Room value
     * @return \StructType\JPSOAP_PriceTyped|null
     */
    public function getRoom()
    {
        return $this->Room;
    }
    /**
     * Set Room value
     * @param \StructType\JPSOAP_PriceTyped $room
     * @return \StructType\JPSOAP_SuppleOfferPrice
     */
    public function setRoom(\StructType\JPSOAP_PriceTyped $room = null)
    {
        $this->Room = $room;
        return $this;
    }
    /**
     * Get AdultsAdditionals value
     * @return \ArrayType\ArrayOfJPSOAP_OrderedTypedPrice|null
     */
    public function getAdultsAdditionals()
    {
        return $this->AdultsAdditionals;
    }
    /**
     * Set AdultsAdditionals value
     * @param \ArrayType\ArrayOfJPSOAP_OrderedTypedPrice $adultsAdditionals
     * @return \StructType\JPSOAP_SuppleOfferPrice
     */
    public function setAdultsAdditionals(\ArrayType\ArrayOfJPSOAP_OrderedTypedPrice $adultsAdditionals = null)
    {
        $this->AdultsAdditionals = $adultsAdditionals;
        return $this;
    }
    /**
     * Get ChildrenA value
     * @return \ArrayType\ArrayOfJPSOAP_OrderedTypedPrice1|null
     */
    public function getChildrenA()
    {
        return $this->ChildrenA;
    }
    /**
     * Set ChildrenA value
     * @param \ArrayType\ArrayOfJPSOAP_OrderedTypedPrice1 $childrenA
     * @return \StructType\JPSOAP_SuppleOfferPrice
     */
    public function setChildrenA(\ArrayType\ArrayOfJPSOAP_OrderedTypedPrice1 $childrenA = null)
    {
        $this->ChildrenA = $childrenA;
        return $this;
    }
    /**
     * Get ChildrenB value
     * @return \ArrayType\ArrayOfJPSOAP_OrderedTypedPrice2|null
     */
    public function getChildrenB()
    {
        return $this->ChildrenB;
    }
    /**
     * Set ChildrenB value
     * @param \ArrayType\ArrayOfJPSOAP_OrderedTypedPrice2 $childrenB
     * @return \StructType\JPSOAP_SuppleOfferPrice
     */
    public function setChildrenB(\ArrayType\ArrayOfJPSOAP_OrderedTypedPrice2 $childrenB = null)
    {
        $this->ChildrenB = $childrenB;
        return $this;
    }
    /**
     * Get Infants value
     * @return \ArrayType\ArrayOfJPSOAP_OrderedTypedPrice3|null
     */
    public function getInfants()
    {
        return $this->Infants;
    }
    /**
     * Set Infants value
     * @param \ArrayType\ArrayOfJPSOAP_OrderedTypedPrice3 $infants
     * @return \StructType\JPSOAP_SuppleOfferPrice
     */
    public function setInfants(\ArrayType\ArrayOfJPSOAP_OrderedTypedPrice3 $infants = null)
    {
        $this->Infants = $infants;
        return $this;
    }
    /**
     * Get From value
     * @return string|null
     */
    public function getFrom()
    {
        return $this->From;
    }
    /**
     * Set From value
     * @param string $from
     * @return \StructType\JPSOAP_SuppleOfferPrice
     */
    public function setFrom($from = null)
    {
        // validation for constraint: string
        if (!is_null($from) && !is_string($from)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($from)), __LINE__);
        }
        $this->From = $from;
        return $this;
    }
    /**
     * Get To value
     * @return string|null
     */
    public function getTo()
    {
        return $this->To;
    }
    /**
     * Set To value
     * @param string $to
     * @return \StructType\JPSOAP_SuppleOfferPrice
     */
    public function setTo($to = null)
    {
        // validation for constraint: string
        if (!is_null($to) && !is_string($to)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($to)), __LINE__);
        }
        $this->To = $to;
        return $this;
    }
    /**
     * Method called when an object has been exported with var_export() functions
     * It allows to return an object instantiated with the values
     * @see AbstractStructBase::__set_state()
     * @uses AbstractStructBase::__set_state()
     * @param array $array the exported values
     * @return \StructType\JPSOAP_SuppleOfferPrice
     */
    public static function __set_state(array $array)
    {
        return parent::__set_state($array);
    }
    /**
     * Method returning the class name
     * @return string __CLASS__
     */
    public function __toString()
    {
        return __CLASS__;
    }
}
