<?php

namespace Sabre\EnhancedAirBook\Structs;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for BaggageProvisions Structs
 * @subpackage Structs
 */
class BaggageProvisions extends AbstractStructBase
{
    /**
     * The Associations
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var \Sabre\EnhancedAirBook\Structs\Associations
     */
    public $Associations;
    /**
     * The CarrierWhoseBaggageProvisionsApply
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $CarrierWhoseBaggageProvisionsApply;
    /**
     * The Commissionable
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $Commissionable;
    /**
     * The FeeApplicationIndicator
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $FeeApplicationIndicator;
    /**
     * The FeeNotGuaranteedIndicator
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $FeeNotGuaranteedIndicator;
    /**
     * The FirstOccurrence
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $FirstOccurrence;
    /**
     * The FQTV_CarrierFiledTierLevel
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $FQTV_CarrierFiledTierLevel;
    /**
     * The Interlineable
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $Interlineable;
    /**
     * The LastOccurrence
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $LastOccurrence;
    /**
     * The NoChargeNotAvailableIndicator
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $NoChargeNotAvailableIndicator;
    /**
     * The NumPiecesBDI
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $NumPiecesBDI;
    /**
     * The NumPiecesITR
     * Meta informations extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var string[]
     */
    public $NumPiecesITR;
    /**
     * The PassengerType
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var \Sabre\EnhancedAirBook\Structs\PassengerType
     */
    public $PassengerType;
    /**
     * The PriceInformation
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var \Sabre\EnhancedAirBook\Structs\PriceInformation
     */
    public $PriceInformation;
    /**
     * The ProvisionType
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $ProvisionType;
    /**
     * The RefundForm
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $RefundForm;
    /**
     * The RefundReissue
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $RefundReissue;
    /**
     * The SimultaneousTicketIndicator
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $SimultaneousTicketIndicator;
    /**
     * The SubCodeInfo
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var \Sabre\EnhancedAirBook\Structs\SubCodeInfo
     */
    public $SubCodeInfo;
    /**
     * The WeightLimit
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var \Sabre\EnhancedAirBook\Structs\WeightLimit
     */
    public $WeightLimit;
    /**
     * The RPH
     * Meta informations extracted from the WSDL
     * - use: optional
     * @var string
     */
    public $RPH;
    /**
     * Constructor method for BaggageProvisions
     * @uses BaggageProvisions::setAssociations()
     * @uses BaggageProvisions::setCarrierWhoseBaggageProvisionsApply()
     * @uses BaggageProvisions::setCommissionable()
     * @uses BaggageProvisions::setFeeApplicationIndicator()
     * @uses BaggageProvisions::setFeeNotGuaranteedIndicator()
     * @uses BaggageProvisions::setFirstOccurrence()
     * @uses BaggageProvisions::setFQTV_CarrierFiledTierLevel()
     * @uses BaggageProvisions::setInterlineable()
     * @uses BaggageProvisions::setLastOccurrence()
     * @uses BaggageProvisions::setNoChargeNotAvailableIndicator()
     * @uses BaggageProvisions::setNumPiecesBDI()
     * @uses BaggageProvisions::setNumPiecesITR()
     * @uses BaggageProvisions::setPassengerType()
     * @uses BaggageProvisions::setPriceInformation()
     * @uses BaggageProvisions::setProvisionType()
     * @uses BaggageProvisions::setRefundForm()
     * @uses BaggageProvisions::setRefundReissue()
     * @uses BaggageProvisions::setSimultaneousTicketIndicator()
     * @uses BaggageProvisions::setSubCodeInfo()
     * @uses BaggageProvisions::setWeightLimit()
     * @uses BaggageProvisions::setRPH()
     * @param \Sabre\EnhancedAirBook\Structs\Associations $associations
     * @param string $carrierWhoseBaggageProvisionsApply
     * @param string $commissionable
     * @param string $feeApplicationIndicator
     * @param string $feeNotGuaranteedIndicator
     * @param string $firstOccurrence
     * @param string $fQTV_CarrierFiledTierLevel
     * @param string $interlineable
     * @param string $lastOccurrence
     * @param string $noChargeNotAvailableIndicator
     * @param string $numPiecesBDI
     * @param string[] $numPiecesITR
     * @param \Sabre\EnhancedAirBook\Structs\PassengerType $passengerType
     * @param \Sabre\EnhancedAirBook\Structs\PriceInformation $priceInformation
     * @param string $provisionType
     * @param string $refundForm
     * @param string $refundReissue
     * @param string $simultaneousTicketIndicator
     * @param \Sabre\EnhancedAirBook\Structs\SubCodeInfo $subCodeInfo
     * @param \Sabre\EnhancedAirBook\Structs\WeightLimit $weightLimit
     * @param string $rPH
     */
    public function __construct(\Sabre\EnhancedAirBook\Structs\Associations $associations = null, $carrierWhoseBaggageProvisionsApply = null, $commissionable = null, $feeApplicationIndicator = null, $feeNotGuaranteedIndicator = null, $firstOccurrence = null, $fQTV_CarrierFiledTierLevel = null, $interlineable = null, $lastOccurrence = null, $noChargeNotAvailableIndicator = null, $numPiecesBDI = null, array $numPiecesITR = array(), \Sabre\EnhancedAirBook\Structs\PassengerType $passengerType = null, \Sabre\EnhancedAirBook\Structs\PriceInformation $priceInformation = null, $provisionType = null, $refundForm = null, $refundReissue = null, $simultaneousTicketIndicator = null, \Sabre\EnhancedAirBook\Structs\SubCodeInfo $subCodeInfo = null, \Sabre\EnhancedAirBook\Structs\WeightLimit $weightLimit = null, $rPH = null)
    {
        $this
            ->setAssociations($associations)
            ->setCarrierWhoseBaggageProvisionsApply($carrierWhoseBaggageProvisionsApply)
            ->setCommissionable($commissionable)
            ->setFeeApplicationIndicator($feeApplicationIndicator)
            ->setFeeNotGuaranteedIndicator($feeNotGuaranteedIndicator)
            ->setFirstOccurrence($firstOccurrence)
            ->setFQTV_CarrierFiledTierLevel($fQTV_CarrierFiledTierLevel)
            ->setInterlineable($interlineable)
            ->setLastOccurrence($lastOccurrence)
            ->setNoChargeNotAvailableIndicator($noChargeNotAvailableIndicator)
            ->setNumPiecesBDI($numPiecesBDI)
            ->setNumPiecesITR($numPiecesITR)
            ->setPassengerType($passengerType)
            ->setPriceInformation($priceInformation)
            ->setProvisionType($provisionType)
            ->setRefundForm($refundForm)
            ->setRefundReissue($refundReissue)
            ->setSimultaneousTicketIndicator($simultaneousTicketIndicator)
            ->setSubCodeInfo($subCodeInfo)
            ->setWeightLimit($weightLimit)
            ->setRPH($rPH);
    }
    /**
     * Get Associations value
     * @return \Sabre\EnhancedAirBook\Structs\Associations|null
     */
    public function getAssociations()
    {
        return $this->Associations;
    }
    /**
     * Set Associations value
     * @param \Sabre\EnhancedAirBook\Structs\Associations $associations
     * @return \Sabre\EnhancedAirBook\Structs\BaggageProvisions
     */
    public function setAssociations(\Sabre\EnhancedAirBook\Structs\Associations $associations = null)
    {
        $this->Associations = $associations;
        return $this;
    }
    /**
     * Get CarrierWhoseBaggageProvisionsApply value
     * @return string|null
     */
    public function getCarrierWhoseBaggageProvisionsApply()
    {
        return $this->CarrierWhoseBaggageProvisionsApply;
    }
    /**
     * Set CarrierWhoseBaggageProvisionsApply value
     * @param string $carrierWhoseBaggageProvisionsApply
     * @return \Sabre\EnhancedAirBook\Structs\BaggageProvisions
     */
    public function setCarrierWhoseBaggageProvisionsApply($carrierWhoseBaggageProvisionsApply = null)
    {
        $this->CarrierWhoseBaggageProvisionsApply = $carrierWhoseBaggageProvisionsApply;
        return $this;
    }
    /**
     * Get Commissionable value
     * @return string|null
     */
    public function getCommissionable()
    {
        return $this->Commissionable;
    }
    /**
     * Set Commissionable value
     * @param string $commissionable
     * @return \Sabre\EnhancedAirBook\Structs\BaggageProvisions
     */
    public function setCommissionable($commissionable = null)
    {
        $this->Commissionable = $commissionable;
        return $this;
    }
    /**
     * Get FeeApplicationIndicator value
     * @return string|null
     */
    public function getFeeApplicationIndicator()
    {
        return $this->FeeApplicationIndicator;
    }
    /**
     * Set FeeApplicationIndicator value
     * @param string $feeApplicationIndicator
     * @return \Sabre\EnhancedAirBook\Structs\BaggageProvisions
     */
    public function setFeeApplicationIndicator($feeApplicationIndicator = null)
    {
        $this->FeeApplicationIndicator = $feeApplicationIndicator;
        return $this;
    }
    /**
     * Get FeeNotGuaranteedIndicator value
     * @return string|null
     */
    public function getFeeNotGuaranteedIndicator()
    {
        return $this->FeeNotGuaranteedIndicator;
    }
    /**
     * Set FeeNotGuaranteedIndicator value
     * @param string $feeNotGuaranteedIndicator
     * @return \Sabre\EnhancedAirBook\Structs\BaggageProvisions
     */
    public function setFeeNotGuaranteedIndicator($feeNotGuaranteedIndicator = null)
    {
        $this->FeeNotGuaranteedIndicator = $feeNotGuaranteedIndicator;
        return $this;
    }
    /**
     * Get FirstOccurrence value
     * @return string|null
     */
    public function getFirstOccurrence()
    {
        return $this->FirstOccurrence;
    }
    /**
     * Set FirstOccurrence value
     * @param string $firstOccurrence
     * @return \Sabre\EnhancedAirBook\Structs\BaggageProvisions
     */
    public function setFirstOccurrence($firstOccurrence = null)
    {
        $this->FirstOccurrence = $firstOccurrence;
        return $this;
    }
    /**
     * Get FQTV_CarrierFiledTierLevel value
     * @return string|null
     */
    public function getFQTV_CarrierFiledTierLevel()
    {
        return $this->FQTV_CarrierFiledTierLevel;
    }
    /**
     * Set FQTV_CarrierFiledTierLevel value
     * @param string $fQTV_CarrierFiledTierLevel
     * @return \Sabre\EnhancedAirBook\Structs\BaggageProvisions
     */
    public function setFQTV_CarrierFiledTierLevel($fQTV_CarrierFiledTierLevel = null)
    {
        $this->FQTV_CarrierFiledTierLevel = $fQTV_CarrierFiledTierLevel;
        return $this;
    }
    /**
     * Get Interlineable value
     * @return string|null
     */
    public function getInterlineable()
    {
        return $this->Interlineable;
    }
    /**
     * Set Interlineable value
     * @param string $interlineable
     * @return \Sabre\EnhancedAirBook\Structs\BaggageProvisions
     */
    public function setInterlineable($interlineable = null)
    {
        $this->Interlineable = $interlineable;
        return $this;
    }
    /**
     * Get LastOccurrence value
     * @return string|null
     */
    public function getLastOccurrence()
    {
        return $this->LastOccurrence;
    }
    /**
     * Set LastOccurrence value
     * @param string $lastOccurrence
     * @return \Sabre\EnhancedAirBook\Structs\BaggageProvisions
     */
    public function setLastOccurrence($lastOccurrence = null)
    {
        $this->LastOccurrence = $lastOccurrence;
        return $this;
    }
    /**
     * Get NoChargeNotAvailableIndicator value
     * @return string|null
     */
    public function getNoChargeNotAvailableIndicator()
    {
        return $this->NoChargeNotAvailableIndicator;
    }
    /**
     * Set NoChargeNotAvailableIndicator value
     * @param string $noChargeNotAvailableIndicator
     * @return \Sabre\EnhancedAirBook\Structs\BaggageProvisions
     */
    public function setNoChargeNotAvailableIndicator($noChargeNotAvailableIndicator = null)
    {
        $this->NoChargeNotAvailableIndicator = $noChargeNotAvailableIndicator;
        return $this;
    }
    /**
     * Get NumPiecesBDI value
     * @return string|null
     */
    public function getNumPiecesBDI()
    {
        return $this->NumPiecesBDI;
    }
    /**
     * Set NumPiecesBDI value
     * @param string $numPiecesBDI
     * @return \Sabre\EnhancedAirBook\Structs\BaggageProvisions
     */
    public function setNumPiecesBDI($numPiecesBDI = null)
    {
        $this->NumPiecesBDI = $numPiecesBDI;
        return $this;
    }
    /**
     * Get NumPiecesITR value
     * @return string[]|null
     */
    public function getNumPiecesITR()
    {
        return $this->NumPiecesITR;
    }
    /**
     * Set NumPiecesITR value
     * @throws \InvalidArgumentException
     * @param string[] $numPiecesITR
     * @return \Sabre\EnhancedAirBook\Structs\BaggageProvisions
     */
    public function setNumPiecesITR(array $numPiecesITR = array())
    {
        $this->NumPiecesITR = $numPiecesITR;
        return $this;
    }
    /**
     * Add item to NumPiecesITR value
     * @throws \InvalidArgumentException
     * @param string $item
     * @return \Sabre\EnhancedAirBook\Structs\BaggageProvisions
     */
    public function addToNumPiecesITR($item)
    {
        $this->NumPiecesITR[] = $item;
        return $this;
    }
    /**
     * Get PassengerType value
     * @return \Sabre\EnhancedAirBook\Structs\PassengerType|null
     */
    public function getPassengerType()
    {
        return $this->PassengerType;
    }
    /**
     * Set PassengerType value
     * @param \Sabre\EnhancedAirBook\Structs\PassengerType $passengerType
     * @return \Sabre\EnhancedAirBook\Structs\BaggageProvisions
     */
    public function setPassengerType(\Sabre\EnhancedAirBook\Structs\PassengerType $passengerType = null)
    {
        $this->PassengerType = $passengerType;
        return $this;
    }
    /**
     * Get PriceInformation value
     * @return \Sabre\EnhancedAirBook\Structs\PriceInformation|null
     */
    public function getPriceInformation()
    {
        return $this->PriceInformation;
    }
    /**
     * Set PriceInformation value
     * @param \Sabre\EnhancedAirBook\Structs\PriceInformation $priceInformation
     * @return \Sabre\EnhancedAirBook\Structs\BaggageProvisions
     */
    public function setPriceInformation(\Sabre\EnhancedAirBook\Structs\PriceInformation $priceInformation = null)
    {
        $this->PriceInformation = $priceInformation;
        return $this;
    }
    /**
     * Get ProvisionType value
     * @return string|null
     */
    public function getProvisionType()
    {
        return $this->ProvisionType;
    }
    /**
     * Set ProvisionType value
     * @param string $provisionType
     * @return \Sabre\EnhancedAirBook\Structs\BaggageProvisions
     */
    public function setProvisionType($provisionType = null)
    {
        $this->ProvisionType = $provisionType;
        return $this;
    }
    /**
     * Get RefundForm value
     * @return string|null
     */
    public function getRefundForm()
    {
        return $this->RefundForm;
    }
    /**
     * Set RefundForm value
     * @param string $refundForm
     * @return \Sabre\EnhancedAirBook\Structs\BaggageProvisions
     */
    public function setRefundForm($refundForm = null)
    {
        $this->RefundForm = $refundForm;
        return $this;
    }
    /**
     * Get RefundReissue value
     * @return string|null
     */
    public function getRefundReissue()
    {
        return $this->RefundReissue;
    }
    /**
     * Set RefundReissue value
     * @param string $refundReissue
     * @return \Sabre\EnhancedAirBook\Structs\BaggageProvisions
     */
    public function setRefundReissue($refundReissue = null)
    {
        $this->RefundReissue = $refundReissue;
        return $this;
    }
    /**
     * Get SimultaneousTicketIndicator value
     * @return string|null
     */
    public function getSimultaneousTicketIndicator()
    {
        return $this->SimultaneousTicketIndicator;
    }
    /**
     * Set SimultaneousTicketIndicator value
     * @param string $simultaneousTicketIndicator
     * @return \Sabre\EnhancedAirBook\Structs\BaggageProvisions
     */
    public function setSimultaneousTicketIndicator($simultaneousTicketIndicator = null)
    {
        $this->SimultaneousTicketIndicator = $simultaneousTicketIndicator;
        return $this;
    }
    /**
     * Get SubCodeInfo value
     * @return \Sabre\EnhancedAirBook\Structs\SubCodeInfo|null
     */
    public function getSubCodeInfo()
    {
        return $this->SubCodeInfo;
    }
    /**
     * Set SubCodeInfo value
     * @param \Sabre\EnhancedAirBook\Structs\SubCodeInfo $subCodeInfo
     * @return \Sabre\EnhancedAirBook\Structs\BaggageProvisions
     */
    public function setSubCodeInfo(\Sabre\EnhancedAirBook\Structs\SubCodeInfo $subCodeInfo = null)
    {
        $this->SubCodeInfo = $subCodeInfo;
        return $this;
    }
    /**
     * Get WeightLimit value
     * @return \Sabre\EnhancedAirBook\Structs\WeightLimit|null
     */
    public function getWeightLimit()
    {
        return $this->WeightLimit;
    }
    /**
     * Set WeightLimit value
     * @param \Sabre\EnhancedAirBook\Structs\WeightLimit $weightLimit
     * @return \Sabre\EnhancedAirBook\Structs\BaggageProvisions
     */
    public function setWeightLimit(\Sabre\EnhancedAirBook\Structs\WeightLimit $weightLimit = null)
    {
        $this->WeightLimit = $weightLimit;
        return $this;
    }
    /**
     * Get RPH value
     * @return string|null
     */
    public function getRPH()
    {
        return $this->RPH;
    }
    /**
     * Set RPH value
     * @param string $rPH
     * @return \Sabre\EnhancedAirBook\Structs\BaggageProvisions
     */
    public function setRPH($rPH = null)
    {
        $this->RPH = $rPH;
        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 \Sabre\EnhancedAirBook\Structs\BaggageProvisions
     */
    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__;
    }
}
