<?php

namespace Pepitelabs\PWS\TrackingService;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for ProofOfPickUpScanDetails TrackingService
 * Meta information extracted from the WSDL
 * - documentation: ProofOfPickUpScanDetails
 * - nillable: true
 * - type: tns:ProofOfPickUpScanDetails
 * @subpackage Structs
 */
class ProofOfPickUpScanDetails extends AbstractStructBase
{
    /**
     * The PickUpConfirmationNumber
     * Meta information extracted from the WSDL
     * - documentation: PickUpConfirmationNumber - string
     * - nillable: true
     * @var string
     */
    public $PickUpConfirmationNumber;
    /**
     * The PickUpAddress
     * Meta information extracted from the WSDL
     * - documentation: PickUpAddress - Address
     * - nillable: true
     * @var \Pepitelabs\PWS\TrackingService\Address
     */
    public $PickUpAddress;
    /**
     * The PickUpContactName
     * Meta information extracted from the WSDL
     * - documentation: PickUpContactName - string
     * - nillable: true
     * @var string
     */
    public $PickUpContactName;
    /**
     * The PickUpCompanyName
     * Meta information extracted from the WSDL
     * - documentation: PickUpCompanyName - string
     * - nillable: true
     * @var string
     */
    public $PickUpCompanyName;
    /**
     * The PickUpLocation
     * Meta information extracted from the WSDL
     * - documentation: PickUpLocation - string
     * - nillable: true
     * @var string
     */
    public $PickUpLocation;
    /**
     * The CommitedDeliveryDate
     * Meta information extracted from the WSDL
     * - documentation: CommitedDeliveryDate - string
     * - nillable: true
     * @var string
     */
    public $CommitedDeliveryDate;
    /**
     * The PremiumServiceText
     * Meta information extracted from the WSDL
     * - documentation: PremiumServiceText - string
     * - nillable: true
     * @var string
     */
    public $PremiumServiceText;
    /**
     * The ProductTypeText
     * Meta information extracted from the WSDL
     * - documentation: ProductTypeText - string
     * - nillable: true
     * @var string
     */
    public $ProductTypeText;
    /**
     * The SpecialHandlingText
     * Meta information extracted from the WSDL
     * - documentation: SpecialHandlingText - string
     * - nillable: true
     * @var string
     */
    public $SpecialHandlingText;
    /**
     * The PaymentTypeText
     * Meta information extracted from the WSDL
     * - documentation: PaymentTypeText - string
     * - nillable: true
     * @var string
     */
    public $PaymentTypeText;
    /**
     * Constructor method for ProofOfPickUpScanDetails
     * @uses ProofOfPickUpScanDetails::setPickUpConfirmationNumber()
     * @uses ProofOfPickUpScanDetails::setPickUpAddress()
     * @uses ProofOfPickUpScanDetails::setPickUpContactName()
     * @uses ProofOfPickUpScanDetails::setPickUpCompanyName()
     * @uses ProofOfPickUpScanDetails::setPickUpLocation()
     * @uses ProofOfPickUpScanDetails::setCommitedDeliveryDate()
     * @uses ProofOfPickUpScanDetails::setPremiumServiceText()
     * @uses ProofOfPickUpScanDetails::setProductTypeText()
     * @uses ProofOfPickUpScanDetails::setSpecialHandlingText()
     * @uses ProofOfPickUpScanDetails::setPaymentTypeText()
     * @param string $pickUpConfirmationNumber
     * @param \Pepitelabs\PWS\TrackingService\Address $pickUpAddress
     * @param string $pickUpContactName
     * @param string $pickUpCompanyName
     * @param string $pickUpLocation
     * @param string $commitedDeliveryDate
     * @param string $premiumServiceText
     * @param string $productTypeText
     * @param string $specialHandlingText
     * @param string $paymentTypeText
     */
    public function __construct($pickUpConfirmationNumber = null, \Pepitelabs\PWS\TrackingService\Address $pickUpAddress = null, $pickUpContactName = null, $pickUpCompanyName = null, $pickUpLocation = null, $commitedDeliveryDate = null, $premiumServiceText = null, $productTypeText = null, $specialHandlingText = null, $paymentTypeText = null)
    {
        $this
            ->setPickUpConfirmationNumber($pickUpConfirmationNumber)
            ->setPickUpAddress($pickUpAddress)
            ->setPickUpContactName($pickUpContactName)
            ->setPickUpCompanyName($pickUpCompanyName)
            ->setPickUpLocation($pickUpLocation)
            ->setCommitedDeliveryDate($commitedDeliveryDate)
            ->setPremiumServiceText($premiumServiceText)
            ->setProductTypeText($productTypeText)
            ->setSpecialHandlingText($specialHandlingText)
            ->setPaymentTypeText($paymentTypeText);
    }
    /**
     * Get PickUpConfirmationNumber value
     * @return string|null
     */
    public function getPickUpConfirmationNumber()
    {
        return $this->PickUpConfirmationNumber;
    }
    /**
     * Set PickUpConfirmationNumber value
     * @param string $pickUpConfirmationNumber
     * @return \Pepitelabs\PWS\TrackingService\ProofOfPickUpScanDetails
     */
    public function setPickUpConfirmationNumber($pickUpConfirmationNumber = null)
    {
        // validation for constraint: string
        if (!is_null($pickUpConfirmationNumber) && !is_string($pickUpConfirmationNumber)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($pickUpConfirmationNumber, true), gettype($pickUpConfirmationNumber)), __LINE__);
        }
        $this->PickUpConfirmationNumber = $pickUpConfirmationNumber;
        return $this;
    }
    /**
     * Get PickUpAddress value
     * @return \Pepitelabs\PWS\TrackingService\Address|null
     */
    public function getPickUpAddress()
    {
        return $this->PickUpAddress;
    }
    /**
     * Set PickUpAddress value
     * @param \Pepitelabs\PWS\TrackingService\Address $pickUpAddress
     * @return \Pepitelabs\PWS\TrackingService\ProofOfPickUpScanDetails
     */
    public function setPickUpAddress(\Pepitelabs\PWS\TrackingService\Address $pickUpAddress = null)
    {
        $this->PickUpAddress = $pickUpAddress;
        return $this;
    }
    /**
     * Get PickUpContactName value
     * @return string|null
     */
    public function getPickUpContactName()
    {
        return $this->PickUpContactName;
    }
    /**
     * Set PickUpContactName value
     * @param string $pickUpContactName
     * @return \Pepitelabs\PWS\TrackingService\ProofOfPickUpScanDetails
     */
    public function setPickUpContactName($pickUpContactName = null)
    {
        // validation for constraint: string
        if (!is_null($pickUpContactName) && !is_string($pickUpContactName)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($pickUpContactName, true), gettype($pickUpContactName)), __LINE__);
        }
        $this->PickUpContactName = $pickUpContactName;
        return $this;
    }
    /**
     * Get PickUpCompanyName value
     * @return string|null
     */
    public function getPickUpCompanyName()
    {
        return $this->PickUpCompanyName;
    }
    /**
     * Set PickUpCompanyName value
     * @param string $pickUpCompanyName
     * @return \Pepitelabs\PWS\TrackingService\ProofOfPickUpScanDetails
     */
    public function setPickUpCompanyName($pickUpCompanyName = null)
    {
        // validation for constraint: string
        if (!is_null($pickUpCompanyName) && !is_string($pickUpCompanyName)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($pickUpCompanyName, true), gettype($pickUpCompanyName)), __LINE__);
        }
        $this->PickUpCompanyName = $pickUpCompanyName;
        return $this;
    }
    /**
     * Get PickUpLocation value
     * @return string|null
     */
    public function getPickUpLocation()
    {
        return $this->PickUpLocation;
    }
    /**
     * Set PickUpLocation value
     * @param string $pickUpLocation
     * @return \Pepitelabs\PWS\TrackingService\ProofOfPickUpScanDetails
     */
    public function setPickUpLocation($pickUpLocation = null)
    {
        // validation for constraint: string
        if (!is_null($pickUpLocation) && !is_string($pickUpLocation)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($pickUpLocation, true), gettype($pickUpLocation)), __LINE__);
        }
        $this->PickUpLocation = $pickUpLocation;
        return $this;
    }
    /**
     * Get CommitedDeliveryDate value
     * @return string|null
     */
    public function getCommitedDeliveryDate()
    {
        return $this->CommitedDeliveryDate;
    }
    /**
     * Set CommitedDeliveryDate value
     * @param string $commitedDeliveryDate
     * @return \Pepitelabs\PWS\TrackingService\ProofOfPickUpScanDetails
     */
    public function setCommitedDeliveryDate($commitedDeliveryDate = null)
    {
        // validation for constraint: string
        if (!is_null($commitedDeliveryDate) && !is_string($commitedDeliveryDate)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($commitedDeliveryDate, true), gettype($commitedDeliveryDate)), __LINE__);
        }
        $this->CommitedDeliveryDate = $commitedDeliveryDate;
        return $this;
    }
    /**
     * Get PremiumServiceText value
     * @return string|null
     */
    public function getPremiumServiceText()
    {
        return $this->PremiumServiceText;
    }
    /**
     * Set PremiumServiceText value
     * @param string $premiumServiceText
     * @return \Pepitelabs\PWS\TrackingService\ProofOfPickUpScanDetails
     */
    public function setPremiumServiceText($premiumServiceText = null)
    {
        // validation for constraint: string
        if (!is_null($premiumServiceText) && !is_string($premiumServiceText)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($premiumServiceText, true), gettype($premiumServiceText)), __LINE__);
        }
        $this->PremiumServiceText = $premiumServiceText;
        return $this;
    }
    /**
     * Get ProductTypeText value
     * @return string|null
     */
    public function getProductTypeText()
    {
        return $this->ProductTypeText;
    }
    /**
     * Set ProductTypeText value
     * @param string $productTypeText
     * @return \Pepitelabs\PWS\TrackingService\ProofOfPickUpScanDetails
     */
    public function setProductTypeText($productTypeText = null)
    {
        // validation for constraint: string
        if (!is_null($productTypeText) && !is_string($productTypeText)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($productTypeText, true), gettype($productTypeText)), __LINE__);
        }
        $this->ProductTypeText = $productTypeText;
        return $this;
    }
    /**
     * Get SpecialHandlingText value
     * @return string|null
     */
    public function getSpecialHandlingText()
    {
        return $this->SpecialHandlingText;
    }
    /**
     * Set SpecialHandlingText value
     * @param string $specialHandlingText
     * @return \Pepitelabs\PWS\TrackingService\ProofOfPickUpScanDetails
     */
    public function setSpecialHandlingText($specialHandlingText = null)
    {
        // validation for constraint: string
        if (!is_null($specialHandlingText) && !is_string($specialHandlingText)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($specialHandlingText, true), gettype($specialHandlingText)), __LINE__);
        }
        $this->SpecialHandlingText = $specialHandlingText;
        return $this;
    }
    /**
     * Get PaymentTypeText value
     * @return string|null
     */
    public function getPaymentTypeText()
    {
        return $this->PaymentTypeText;
    }
    /**
     * Set PaymentTypeText value
     * @param string $paymentTypeText
     * @return \Pepitelabs\PWS\TrackingService\ProofOfPickUpScanDetails
     */
    public function setPaymentTypeText($paymentTypeText = null)
    {
        // validation for constraint: string
        if (!is_null($paymentTypeText) && !is_string($paymentTypeText)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($paymentTypeText, true), gettype($paymentTypeText)), __LINE__);
        }
        $this->PaymentTypeText = $paymentTypeText;
        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 \Pepitelabs\PWS\TrackingService\ProofOfPickUpScanDetails
     */
    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__;
    }
}
