<?php

namespace dgsoft\StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for AncillaryTicketCouponDetailType StructType
 * @package Dg
 * @subpackage Structs
 */
class DgAncillaryTicketCouponDetailType extends AbstractStructBase
{
    /**
     * The RefundableCode
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $RefundableCode;
    /**
     * The Refundable
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $Refundable;
    /**
     * The ExchangeableCode
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $ExchangeableCode;
    /**
     * The Exchangeable
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $Exchangeable;
    /**
     * The InterlinableCode
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $InterlinableCode;
    /**
     * The Interlinable
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $Interlinable;
    /**
     * The ConsummedIssuanceCode
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $ConsummedIssuanceCode;
    /**
     * The ConsummedIssuance
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $ConsummedIssuance;
    /**
     * The QuantityTypeCode
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $QuantityTypeCode;
    /**
     * The QuantityType
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $QuantityType;
    /**
     * The UnitQualifierCode
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $UnitQualifierCode;
    /**
     * The UnitQualifier
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $UnitQualifier;
    /**
     * The FreeAllowance
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $FreeAllowance;
    /**
     * The ExcessBaggage
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $ExcessBaggage;
    /**
     * The RatePerUnitAmount
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $RatePerUnitAmount;
    /**
     * The RatePerUnitCurrency
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $RatePerUnitCurrency;
    /**
     * The RatePerUnit
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $RatePerUnit;
    /**
     * Constructor method for AncillaryTicketCouponDetailType
     * @uses DgAncillaryTicketCouponDetailType::setRefundableCode()
     * @uses DgAncillaryTicketCouponDetailType::setRefundable()
     * @uses DgAncillaryTicketCouponDetailType::setExchangeableCode()
     * @uses DgAncillaryTicketCouponDetailType::setExchangeable()
     * @uses DgAncillaryTicketCouponDetailType::setInterlinableCode()
     * @uses DgAncillaryTicketCouponDetailType::setInterlinable()
     * @uses DgAncillaryTicketCouponDetailType::setConsummedIssuanceCode()
     * @uses DgAncillaryTicketCouponDetailType::setConsummedIssuance()
     * @uses DgAncillaryTicketCouponDetailType::setQuantityTypeCode()
     * @uses DgAncillaryTicketCouponDetailType::setQuantityType()
     * @uses DgAncillaryTicketCouponDetailType::setUnitQualifierCode()
     * @uses DgAncillaryTicketCouponDetailType::setUnitQualifier()
     * @uses DgAncillaryTicketCouponDetailType::setFreeAllowance()
     * @uses DgAncillaryTicketCouponDetailType::setExcessBaggage()
     * @uses DgAncillaryTicketCouponDetailType::setRatePerUnitAmount()
     * @uses DgAncillaryTicketCouponDetailType::setRatePerUnitCurrency()
     * @uses DgAncillaryTicketCouponDetailType::setRatePerUnit()
     * @param string $refundableCode
     * @param string $refundable
     * @param string $exchangeableCode
     * @param string $exchangeable
     * @param string $interlinableCode
     * @param string $interlinable
     * @param string $consummedIssuanceCode
     * @param string $consummedIssuance
     * @param string $quantityTypeCode
     * @param string $quantityType
     * @param string $unitQualifierCode
     * @param string $unitQualifier
     * @param string $freeAllowance
     * @param string $excessBaggage
     * @param string $ratePerUnitAmount
     * @param string $ratePerUnitCurrency
     * @param string $ratePerUnit
     */
    public function __construct($refundableCode = null, $refundable = null, $exchangeableCode = null, $exchangeable = null, $interlinableCode = null, $interlinable = null, $consummedIssuanceCode = null, $consummedIssuance = null, $quantityTypeCode = null, $quantityType = null, $unitQualifierCode = null, $unitQualifier = null, $freeAllowance = null, $excessBaggage = null, $ratePerUnitAmount = null, $ratePerUnitCurrency = null, $ratePerUnit = null)
    {
        $this
            ->setRefundableCode($refundableCode)
            ->setRefundable($refundable)
            ->setExchangeableCode($exchangeableCode)
            ->setExchangeable($exchangeable)
            ->setInterlinableCode($interlinableCode)
            ->setInterlinable($interlinable)
            ->setConsummedIssuanceCode($consummedIssuanceCode)
            ->setConsummedIssuance($consummedIssuance)
            ->setQuantityTypeCode($quantityTypeCode)
            ->setQuantityType($quantityType)
            ->setUnitQualifierCode($unitQualifierCode)
            ->setUnitQualifier($unitQualifier)
            ->setFreeAllowance($freeAllowance)
            ->setExcessBaggage($excessBaggage)
            ->setRatePerUnitAmount($ratePerUnitAmount)
            ->setRatePerUnitCurrency($ratePerUnitCurrency)
            ->setRatePerUnit($ratePerUnit);
    }
    /**
     * Get RefundableCode value
     * @return string|null
     */
    public function getRefundableCode()
    {
        return $this->RefundableCode;
    }
    /**
     * Set RefundableCode value
     * @param string $refundableCode
     * @return \dgsoft\StructType\DgAncillaryTicketCouponDetailType
     */
    public function setRefundableCode($refundableCode = null)
    {
        // validation for constraint: string
        if (!is_null($refundableCode) && !is_string($refundableCode)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($refundableCode)), __LINE__);
        }
        $this->RefundableCode = $refundableCode;
        return $this;
    }
    /**
     * Get Refundable value
     * @return string|null
     */
    public function getRefundable()
    {
        return $this->Refundable;
    }
    /**
     * Set Refundable value
     * @param string $refundable
     * @return \dgsoft\StructType\DgAncillaryTicketCouponDetailType
     */
    public function setRefundable($refundable = null)
    {
        // validation for constraint: string
        if (!is_null($refundable) && !is_string($refundable)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($refundable)), __LINE__);
        }
        $this->Refundable = $refundable;
        return $this;
    }
    /**
     * Get ExchangeableCode value
     * @return string|null
     */
    public function getExchangeableCode()
    {
        return $this->ExchangeableCode;
    }
    /**
     * Set ExchangeableCode value
     * @param string $exchangeableCode
     * @return \dgsoft\StructType\DgAncillaryTicketCouponDetailType
     */
    public function setExchangeableCode($exchangeableCode = null)
    {
        // validation for constraint: string
        if (!is_null($exchangeableCode) && !is_string($exchangeableCode)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($exchangeableCode)), __LINE__);
        }
        $this->ExchangeableCode = $exchangeableCode;
        return $this;
    }
    /**
     * Get Exchangeable value
     * @return string|null
     */
    public function getExchangeable()
    {
        return $this->Exchangeable;
    }
    /**
     * Set Exchangeable value
     * @param string $exchangeable
     * @return \dgsoft\StructType\DgAncillaryTicketCouponDetailType
     */
    public function setExchangeable($exchangeable = null)
    {
        // validation for constraint: string
        if (!is_null($exchangeable) && !is_string($exchangeable)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($exchangeable)), __LINE__);
        }
        $this->Exchangeable = $exchangeable;
        return $this;
    }
    /**
     * Get InterlinableCode value
     * @return string|null
     */
    public function getInterlinableCode()
    {
        return $this->InterlinableCode;
    }
    /**
     * Set InterlinableCode value
     * @param string $interlinableCode
     * @return \dgsoft\StructType\DgAncillaryTicketCouponDetailType
     */
    public function setInterlinableCode($interlinableCode = null)
    {
        // validation for constraint: string
        if (!is_null($interlinableCode) && !is_string($interlinableCode)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($interlinableCode)), __LINE__);
        }
        $this->InterlinableCode = $interlinableCode;
        return $this;
    }
    /**
     * Get Interlinable value
     * @return string|null
     */
    public function getInterlinable()
    {
        return $this->Interlinable;
    }
    /**
     * Set Interlinable value
     * @param string $interlinable
     * @return \dgsoft\StructType\DgAncillaryTicketCouponDetailType
     */
    public function setInterlinable($interlinable = null)
    {
        // validation for constraint: string
        if (!is_null($interlinable) && !is_string($interlinable)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($interlinable)), __LINE__);
        }
        $this->Interlinable = $interlinable;
        return $this;
    }
    /**
     * Get ConsummedIssuanceCode value
     * @return string|null
     */
    public function getConsummedIssuanceCode()
    {
        return $this->ConsummedIssuanceCode;
    }
    /**
     * Set ConsummedIssuanceCode value
     * @param string $consummedIssuanceCode
     * @return \dgsoft\StructType\DgAncillaryTicketCouponDetailType
     */
    public function setConsummedIssuanceCode($consummedIssuanceCode = null)
    {
        // validation for constraint: string
        if (!is_null($consummedIssuanceCode) && !is_string($consummedIssuanceCode)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($consummedIssuanceCode)), __LINE__);
        }
        $this->ConsummedIssuanceCode = $consummedIssuanceCode;
        return $this;
    }
    /**
     * Get ConsummedIssuance value
     * @return string|null
     */
    public function getConsummedIssuance()
    {
        return $this->ConsummedIssuance;
    }
    /**
     * Set ConsummedIssuance value
     * @param string $consummedIssuance
     * @return \dgsoft\StructType\DgAncillaryTicketCouponDetailType
     */
    public function setConsummedIssuance($consummedIssuance = null)
    {
        // validation for constraint: string
        if (!is_null($consummedIssuance) && !is_string($consummedIssuance)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($consummedIssuance)), __LINE__);
        }
        $this->ConsummedIssuance = $consummedIssuance;
        return $this;
    }
    /**
     * Get QuantityTypeCode value
     * @return string|null
     */
    public function getQuantityTypeCode()
    {
        return $this->QuantityTypeCode;
    }
    /**
     * Set QuantityTypeCode value
     * @param string $quantityTypeCode
     * @return \dgsoft\StructType\DgAncillaryTicketCouponDetailType
     */
    public function setQuantityTypeCode($quantityTypeCode = null)
    {
        // validation for constraint: string
        if (!is_null($quantityTypeCode) && !is_string($quantityTypeCode)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($quantityTypeCode)), __LINE__);
        }
        $this->QuantityTypeCode = $quantityTypeCode;
        return $this;
    }
    /**
     * Get QuantityType value
     * @return string|null
     */
    public function getQuantityType()
    {
        return $this->QuantityType;
    }
    /**
     * Set QuantityType value
     * @param string $quantityType
     * @return \dgsoft\StructType\DgAncillaryTicketCouponDetailType
     */
    public function setQuantityType($quantityType = null)
    {
        // validation for constraint: string
        if (!is_null($quantityType) && !is_string($quantityType)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($quantityType)), __LINE__);
        }
        $this->QuantityType = $quantityType;
        return $this;
    }
    /**
     * Get UnitQualifierCode value
     * @return string|null
     */
    public function getUnitQualifierCode()
    {
        return $this->UnitQualifierCode;
    }
    /**
     * Set UnitQualifierCode value
     * @param string $unitQualifierCode
     * @return \dgsoft\StructType\DgAncillaryTicketCouponDetailType
     */
    public function setUnitQualifierCode($unitQualifierCode = null)
    {
        // validation for constraint: string
        if (!is_null($unitQualifierCode) && !is_string($unitQualifierCode)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($unitQualifierCode)), __LINE__);
        }
        $this->UnitQualifierCode = $unitQualifierCode;
        return $this;
    }
    /**
     * Get UnitQualifier value
     * @return string|null
     */
    public function getUnitQualifier()
    {
        return $this->UnitQualifier;
    }
    /**
     * Set UnitQualifier value
     * @param string $unitQualifier
     * @return \dgsoft\StructType\DgAncillaryTicketCouponDetailType
     */
    public function setUnitQualifier($unitQualifier = null)
    {
        // validation for constraint: string
        if (!is_null($unitQualifier) && !is_string($unitQualifier)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($unitQualifier)), __LINE__);
        }
        $this->UnitQualifier = $unitQualifier;
        return $this;
    }
    /**
     * Get FreeAllowance value
     * @return string|null
     */
    public function getFreeAllowance()
    {
        return $this->FreeAllowance;
    }
    /**
     * Set FreeAllowance value
     * @param string $freeAllowance
     * @return \dgsoft\StructType\DgAncillaryTicketCouponDetailType
     */
    public function setFreeAllowance($freeAllowance = null)
    {
        // validation for constraint: string
        if (!is_null($freeAllowance) && !is_string($freeAllowance)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($freeAllowance)), __LINE__);
        }
        $this->FreeAllowance = $freeAllowance;
        return $this;
    }
    /**
     * Get ExcessBaggage value
     * @return string|null
     */
    public function getExcessBaggage()
    {
        return $this->ExcessBaggage;
    }
    /**
     * Set ExcessBaggage value
     * @param string $excessBaggage
     * @return \dgsoft\StructType\DgAncillaryTicketCouponDetailType
     */
    public function setExcessBaggage($excessBaggage = null)
    {
        // validation for constraint: string
        if (!is_null($excessBaggage) && !is_string($excessBaggage)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($excessBaggage)), __LINE__);
        }
        $this->ExcessBaggage = $excessBaggage;
        return $this;
    }
    /**
     * Get RatePerUnitAmount value
     * @return string|null
     */
    public function getRatePerUnitAmount()
    {
        return $this->RatePerUnitAmount;
    }
    /**
     * Set RatePerUnitAmount value
     * @param string $ratePerUnitAmount
     * @return \dgsoft\StructType\DgAncillaryTicketCouponDetailType
     */
    public function setRatePerUnitAmount($ratePerUnitAmount = null)
    {
        // validation for constraint: string
        if (!is_null($ratePerUnitAmount) && !is_string($ratePerUnitAmount)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($ratePerUnitAmount)), __LINE__);
        }
        $this->RatePerUnitAmount = $ratePerUnitAmount;
        return $this;
    }
    /**
     * Get RatePerUnitCurrency value
     * @return string|null
     */
    public function getRatePerUnitCurrency()
    {
        return $this->RatePerUnitCurrency;
    }
    /**
     * Set RatePerUnitCurrency value
     * @param string $ratePerUnitCurrency
     * @return \dgsoft\StructType\DgAncillaryTicketCouponDetailType
     */
    public function setRatePerUnitCurrency($ratePerUnitCurrency = null)
    {
        // validation for constraint: string
        if (!is_null($ratePerUnitCurrency) && !is_string($ratePerUnitCurrency)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($ratePerUnitCurrency)), __LINE__);
        }
        $this->RatePerUnitCurrency = $ratePerUnitCurrency;
        return $this;
    }
    /**
     * Get RatePerUnit value
     * @return string|null
     */
    public function getRatePerUnit()
    {
        return $this->RatePerUnit;
    }
    /**
     * Set RatePerUnit value
     * @param string $ratePerUnit
     * @return \dgsoft\StructType\DgAncillaryTicketCouponDetailType
     */
    public function setRatePerUnit($ratePerUnit = null)
    {
        // validation for constraint: string
        if (!is_null($ratePerUnit) && !is_string($ratePerUnit)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($ratePerUnit)), __LINE__);
        }
        $this->RatePerUnit = $ratePerUnit;
        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 \dgsoft\StructType\DgAncillaryTicketCouponDetailType
     */
    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__;
    }
}
