<?php
use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for getInvoiceStatusResponse StructType
 * @subpackage Structs
 */
class GetInvoiceStatusResponse extends AbstractStructBase
{
    /**
     * The getInvoiceStatusResult
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $getInvoiceStatusResult;
    /**
     * The status
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $status;
    /**
     * The statusDescription
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $statusDescription;
    /**
     * The envelopeId
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $envelopeId;
    /**
     * Constructor method for getInvoiceStatusResponse
     * @uses GetInvoiceStatusResponse::setGetInvoiceStatusResult()
     * @uses GetInvoiceStatusResponse::setStatus()
     * @uses GetInvoiceStatusResponse::setStatusDescription()
     * @uses GetInvoiceStatusResponse::setEnvelopeId()
     * @param bool $getInvoiceStatusResult
     * @param string $status
     * @param string $statusDescription
     * @param string $envelopeId
     */
    public function __construct($getInvoiceStatusResult = null, $status = null, $statusDescription = null, $envelopeId = null)
    {
        $this
            ->setGetInvoiceStatusResult($getInvoiceStatusResult)
            ->setStatus($status)
            ->setStatusDescription($statusDescription)
            ->setEnvelopeId($envelopeId);
    }
    /**
     * Get getInvoiceStatusResult value
     * @return bool|null
     */
    public function getGetInvoiceStatusResult()
    {
        return $this->getInvoiceStatusResult;
    }
    /**
     * Set getInvoiceStatusResult value
     * @param bool $getInvoiceStatusResult
     * @return GetInvoiceStatusResponse
     */
    public function setGetInvoiceStatusResult($getInvoiceStatusResult = null)
    {
        $this->getInvoiceStatusResult = $getInvoiceStatusResult;
        return $this;
    }
    /**
     * Get status value
     * @return string|null
     */
    public function getStatus()
    {
        return $this->status;
    }
    /**
     * Set status value
     * @param string $status
     * @return GetInvoiceStatusResponse
     */
    public function setStatus($status = null)
    {
        $this->status = $status;
        return $this;
    }
    /**
     * Get statusDescription 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 getStatusDescription()
    {
        return isset($this->statusDescription) ? $this->statusDescription : null;
    }
    /**
     * Set statusDescription 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 $statusDescription
     * @return GetInvoiceStatusResponse
     */
    public function setStatusDescription($statusDescription = null)
    {
        if (is_null($statusDescription) || (is_array($statusDescription) && empty($statusDescription))) {
            unset($this->statusDescription);
        } else {
            $this->statusDescription = $statusDescription;
        }
        return $this;
    }
    /**
     * Get envelopeId 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 getEnvelopeId()
    {
        return isset($this->envelopeId) ? $this->envelopeId : null;
    }
    /**
     * Set envelopeId 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 $envelopeId
     * @return GetInvoiceStatusResponse
     */
    public function setEnvelopeId($envelopeId = null)
    {
        if (is_null($envelopeId) || (is_array($envelopeId) && empty($envelopeId))) {
            unset($this->envelopeId);
        } else {
            $this->envelopeId = $envelopeId;
        }
        return $this;
    }
}
