<?php

namespace StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for ArmazemERP StructType
 * Meta informations extracted from the WSDL
 * - nillable: true
 * - type: tns:ArmazemERP
 * @subpackage Structs
 */
class ArmazemERP extends AbstractStructBase
{
    /**
     * The Armazem
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Armazem;
    /**
     * The BloqueioEntradas
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $BloqueioEntradas;
    /**
     * The BloqueioSaidas
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $BloqueioSaidas;
    /**
     * The Cp
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Cp;
    /**
     * The CpLocalidade
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $CpLocalidade;
    /**
     * The DataUltimaActualizacao
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $DataUltimaActualizacao;
    /**
     * The Descricao
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Descricao;
    /**
     * The Distrito
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Distrito;
    /**
     * The ExcluiCNGPR
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $ExcluiCNGPR;
    /**
     * The Fax
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Fax;
    /**
     * The Localidade
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Localidade;
    /**
     * The Morada
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Morada;
    /**
     * The Morada2
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Morada2;
    /**
     * The Pais
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Pais;
    /**
     * The Protegida
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $Protegida;
    /**
     * The Telefone
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Telefone;
    /**
     * The VersaoUltAct
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $VersaoUltAct;
    /**
     * The eGAR_CodigoAPA
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $eGAR_CodigoAPA;
    /**
     * The eGAR_NumPGL
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $eGAR_NumPGL;
    /**
     * The eGAR_TipoRemetente
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $eGAR_TipoRemetente;
    /**
     * Constructor method for ArmazemERP
     * @uses ArmazemERP::setArmazem()
     * @uses ArmazemERP::setBloqueioEntradas()
     * @uses ArmazemERP::setBloqueioSaidas()
     * @uses ArmazemERP::setCp()
     * @uses ArmazemERP::setCpLocalidade()
     * @uses ArmazemERP::setDataUltimaActualizacao()
     * @uses ArmazemERP::setDescricao()
     * @uses ArmazemERP::setDistrito()
     * @uses ArmazemERP::setExcluiCNGPR()
     * @uses ArmazemERP::setFax()
     * @uses ArmazemERP::setLocalidade()
     * @uses ArmazemERP::setMorada()
     * @uses ArmazemERP::setMorada2()
     * @uses ArmazemERP::setPais()
     * @uses ArmazemERP::setProtegida()
     * @uses ArmazemERP::setTelefone()
     * @uses ArmazemERP::setVersaoUltAct()
     * @uses ArmazemERP::setEGAR_CodigoAPA()
     * @uses ArmazemERP::setEGAR_NumPGL()
     * @uses ArmazemERP::setEGAR_TipoRemetente()
     * @param string $armazem
     * @param bool $bloqueioEntradas
     * @param bool $bloqueioSaidas
     * @param string $cp
     * @param string $cpLocalidade
     * @param string $dataUltimaActualizacao
     * @param string $descricao
     * @param string $distrito
     * @param bool $excluiCNGPR
     * @param string $fax
     * @param string $localidade
     * @param string $morada
     * @param string $morada2
     * @param string $pais
     * @param bool $protegida
     * @param string $telefone
     * @param string $versaoUltAct
     * @param string $eGAR_CodigoAPA
     * @param string $eGAR_NumPGL
     * @param string $eGAR_TipoRemetente
     */
    public function __construct($armazem = null, $bloqueioEntradas = null, $bloqueioSaidas = null, $cp = null, $cpLocalidade = null, $dataUltimaActualizacao = null, $descricao = null, $distrito = null, $excluiCNGPR = null, $fax = null, $localidade = null, $morada = null, $morada2 = null, $pais = null, $protegida = null, $telefone = null, $versaoUltAct = null, $eGAR_CodigoAPA = null, $eGAR_NumPGL = null, $eGAR_TipoRemetente = null)
    {
        $this
            ->setArmazem($armazem)
            ->setBloqueioEntradas($bloqueioEntradas)
            ->setBloqueioSaidas($bloqueioSaidas)
            ->setCp($cp)
            ->setCpLocalidade($cpLocalidade)
            ->setDataUltimaActualizacao($dataUltimaActualizacao)
            ->setDescricao($descricao)
            ->setDistrito($distrito)
            ->setExcluiCNGPR($excluiCNGPR)
            ->setFax($fax)
            ->setLocalidade($localidade)
            ->setMorada($morada)
            ->setMorada2($morada2)
            ->setPais($pais)
            ->setProtegida($protegida)
            ->setTelefone($telefone)
            ->setVersaoUltAct($versaoUltAct)
            ->setEGAR_CodigoAPA($eGAR_CodigoAPA)
            ->setEGAR_NumPGL($eGAR_NumPGL)
            ->setEGAR_TipoRemetente($eGAR_TipoRemetente);
    }
    /**
     * Get Armazem 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 getArmazem()
    {
        return isset($this->Armazem) ? $this->Armazem : null;
    }
    /**
     * Set Armazem 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 $armazem
     * @return \StructType\ArmazemERP
     */
    public function setArmazem($armazem = null)
    {
        // validation for constraint: string
        if (!is_null($armazem) && !is_string($armazem)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($armazem)), __LINE__);
        }
        if (is_null($armazem) || (is_array($armazem) && empty($armazem))) {
            unset($this->Armazem);
        } else {
            $this->Armazem = $armazem;
        }
        return $this;
    }
    /**
     * Get BloqueioEntradas 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 bool|null
     */
    public function getBloqueioEntradas()
    {
        return isset($this->BloqueioEntradas) ? $this->BloqueioEntradas : null;
    }
    /**
     * Set BloqueioEntradas 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 bool $bloqueioEntradas
     * @return \StructType\ArmazemERP
     */
    public function setBloqueioEntradas($bloqueioEntradas = null)
    {
        // validation for constraint: boolean
        if (!is_null($bloqueioEntradas) && !is_bool($bloqueioEntradas)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($bloqueioEntradas)), __LINE__);
        }
        if (is_null($bloqueioEntradas) || (is_array($bloqueioEntradas) && empty($bloqueioEntradas))) {
            unset($this->BloqueioEntradas);
        } else {
            $this->BloqueioEntradas = $bloqueioEntradas;
        }
        return $this;
    }
    /**
     * Get BloqueioSaidas 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 bool|null
     */
    public function getBloqueioSaidas()
    {
        return isset($this->BloqueioSaidas) ? $this->BloqueioSaidas : null;
    }
    /**
     * Set BloqueioSaidas 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 bool $bloqueioSaidas
     * @return \StructType\ArmazemERP
     */
    public function setBloqueioSaidas($bloqueioSaidas = null)
    {
        // validation for constraint: boolean
        if (!is_null($bloqueioSaidas) && !is_bool($bloqueioSaidas)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($bloqueioSaidas)), __LINE__);
        }
        if (is_null($bloqueioSaidas) || (is_array($bloqueioSaidas) && empty($bloqueioSaidas))) {
            unset($this->BloqueioSaidas);
        } else {
            $this->BloqueioSaidas = $bloqueioSaidas;
        }
        return $this;
    }
    /**
     * Get Cp 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 getCp()
    {
        return isset($this->Cp) ? $this->Cp : null;
    }
    /**
     * Set Cp 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 $cp
     * @return \StructType\ArmazemERP
     */
    public function setCp($cp = null)
    {
        // validation for constraint: string
        if (!is_null($cp) && !is_string($cp)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($cp)), __LINE__);
        }
        if (is_null($cp) || (is_array($cp) && empty($cp))) {
            unset($this->Cp);
        } else {
            $this->Cp = $cp;
        }
        return $this;
    }
    /**
     * Get CpLocalidade 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 getCpLocalidade()
    {
        return isset($this->CpLocalidade) ? $this->CpLocalidade : null;
    }
    /**
     * Set CpLocalidade 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 $cpLocalidade
     * @return \StructType\ArmazemERP
     */
    public function setCpLocalidade($cpLocalidade = null)
    {
        // validation for constraint: string
        if (!is_null($cpLocalidade) && !is_string($cpLocalidade)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($cpLocalidade)), __LINE__);
        }
        if (is_null($cpLocalidade) || (is_array($cpLocalidade) && empty($cpLocalidade))) {
            unset($this->CpLocalidade);
        } else {
            $this->CpLocalidade = $cpLocalidade;
        }
        return $this;
    }
    /**
     * Get DataUltimaActualizacao 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 getDataUltimaActualizacao()
    {
        return isset($this->DataUltimaActualizacao) ? $this->DataUltimaActualizacao : null;
    }
    /**
     * Set DataUltimaActualizacao 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 $dataUltimaActualizacao
     * @return \StructType\ArmazemERP
     */
    public function setDataUltimaActualizacao($dataUltimaActualizacao = null)
    {
        // validation for constraint: string
        if (!is_null($dataUltimaActualizacao) && !is_string($dataUltimaActualizacao)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($dataUltimaActualizacao)), __LINE__);
        }
        if (is_null($dataUltimaActualizacao) || (is_array($dataUltimaActualizacao) && empty($dataUltimaActualizacao))) {
            unset($this->DataUltimaActualizacao);
        } else {
            $this->DataUltimaActualizacao = $dataUltimaActualizacao;
        }
        return $this;
    }
    /**
     * Get Descricao 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 getDescricao()
    {
        return isset($this->Descricao) ? $this->Descricao : null;
    }
    /**
     * Set Descricao 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 $descricao
     * @return \StructType\ArmazemERP
     */
    public function setDescricao($descricao = null)
    {
        // validation for constraint: string
        if (!is_null($descricao) && !is_string($descricao)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($descricao)), __LINE__);
        }
        if (is_null($descricao) || (is_array($descricao) && empty($descricao))) {
            unset($this->Descricao);
        } else {
            $this->Descricao = $descricao;
        }
        return $this;
    }
    /**
     * Get Distrito 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 getDistrito()
    {
        return isset($this->Distrito) ? $this->Distrito : null;
    }
    /**
     * Set Distrito 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 $distrito
     * @return \StructType\ArmazemERP
     */
    public function setDistrito($distrito = null)
    {
        // validation for constraint: string
        if (!is_null($distrito) && !is_string($distrito)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($distrito)), __LINE__);
        }
        if (is_null($distrito) || (is_array($distrito) && empty($distrito))) {
            unset($this->Distrito);
        } else {
            $this->Distrito = $distrito;
        }
        return $this;
    }
    /**
     * Get ExcluiCNGPR value
     * @return bool|null
     */
    public function getExcluiCNGPR()
    {
        return $this->ExcluiCNGPR;
    }
    /**
     * Set ExcluiCNGPR value
     * @param bool $excluiCNGPR
     * @return \StructType\ArmazemERP
     */
    public function setExcluiCNGPR($excluiCNGPR = null)
    {
        // validation for constraint: boolean
        if (!is_null($excluiCNGPR) && !is_bool($excluiCNGPR)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($excluiCNGPR)), __LINE__);
        }
        $this->ExcluiCNGPR = $excluiCNGPR;
        return $this;
    }
    /**
     * Get Fax 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 getFax()
    {
        return isset($this->Fax) ? $this->Fax : null;
    }
    /**
     * Set Fax 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 $fax
     * @return \StructType\ArmazemERP
     */
    public function setFax($fax = null)
    {
        // validation for constraint: string
        if (!is_null($fax) && !is_string($fax)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($fax)), __LINE__);
        }
        if (is_null($fax) || (is_array($fax) && empty($fax))) {
            unset($this->Fax);
        } else {
            $this->Fax = $fax;
        }
        return $this;
    }
    /**
     * Get Localidade 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 getLocalidade()
    {
        return isset($this->Localidade) ? $this->Localidade : null;
    }
    /**
     * Set Localidade 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 $localidade
     * @return \StructType\ArmazemERP
     */
    public function setLocalidade($localidade = null)
    {
        // validation for constraint: string
        if (!is_null($localidade) && !is_string($localidade)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($localidade)), __LINE__);
        }
        if (is_null($localidade) || (is_array($localidade) && empty($localidade))) {
            unset($this->Localidade);
        } else {
            $this->Localidade = $localidade;
        }
        return $this;
    }
    /**
     * Get Morada 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 getMorada()
    {
        return isset($this->Morada) ? $this->Morada : null;
    }
    /**
     * Set Morada 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 $morada
     * @return \StructType\ArmazemERP
     */
    public function setMorada($morada = null)
    {
        // validation for constraint: string
        if (!is_null($morada) && !is_string($morada)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($morada)), __LINE__);
        }
        if (is_null($morada) || (is_array($morada) && empty($morada))) {
            unset($this->Morada);
        } else {
            $this->Morada = $morada;
        }
        return $this;
    }
    /**
     * Get Morada2 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 getMorada2()
    {
        return isset($this->Morada2) ? $this->Morada2 : null;
    }
    /**
     * Set Morada2 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 $morada2
     * @return \StructType\ArmazemERP
     */
    public function setMorada2($morada2 = null)
    {
        // validation for constraint: string
        if (!is_null($morada2) && !is_string($morada2)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($morada2)), __LINE__);
        }
        if (is_null($morada2) || (is_array($morada2) && empty($morada2))) {
            unset($this->Morada2);
        } else {
            $this->Morada2 = $morada2;
        }
        return $this;
    }
    /**
     * Get Pais 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 getPais()
    {
        return isset($this->Pais) ? $this->Pais : null;
    }
    /**
     * Set Pais 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 $pais
     * @return \StructType\ArmazemERP
     */
    public function setPais($pais = null)
    {
        // validation for constraint: string
        if (!is_null($pais) && !is_string($pais)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($pais)), __LINE__);
        }
        if (is_null($pais) || (is_array($pais) && empty($pais))) {
            unset($this->Pais);
        } else {
            $this->Pais = $pais;
        }
        return $this;
    }
    /**
     * Get Protegida value
     * @return bool|null
     */
    public function getProtegida()
    {
        return $this->Protegida;
    }
    /**
     * Set Protegida value
     * @param bool $protegida
     * @return \StructType\ArmazemERP
     */
    public function setProtegida($protegida = null)
    {
        // validation for constraint: boolean
        if (!is_null($protegida) && !is_bool($protegida)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($protegida)), __LINE__);
        }
        $this->Protegida = $protegida;
        return $this;
    }
    /**
     * Get Telefone 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 getTelefone()
    {
        return isset($this->Telefone) ? $this->Telefone : null;
    }
    /**
     * Set Telefone 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 $telefone
     * @return \StructType\ArmazemERP
     */
    public function setTelefone($telefone = null)
    {
        // validation for constraint: string
        if (!is_null($telefone) && !is_string($telefone)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($telefone)), __LINE__);
        }
        if (is_null($telefone) || (is_array($telefone) && empty($telefone))) {
            unset($this->Telefone);
        } else {
            $this->Telefone = $telefone;
        }
        return $this;
    }
    /**
     * Get VersaoUltAct value
     * @return string|null
     */
    public function getVersaoUltAct()
    {
        return $this->VersaoUltAct;
    }
    /**
     * Set VersaoUltAct value
     * @param string $versaoUltAct
     * @return \StructType\ArmazemERP
     */
    public function setVersaoUltAct($versaoUltAct = null)
    {
        // validation for constraint: string
        if (!is_null($versaoUltAct) && !is_string($versaoUltAct)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($versaoUltAct)), __LINE__);
        }
        $this->VersaoUltAct = $versaoUltAct;
        return $this;
    }
    /**
     * Get eGAR_CodigoAPA 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 getEGAR_CodigoAPA()
    {
        return isset($this->eGAR_CodigoAPA) ? $this->eGAR_CodigoAPA : null;
    }
    /**
     * Set eGAR_CodigoAPA 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 $eGAR_CodigoAPA
     * @return \StructType\ArmazemERP
     */
    public function setEGAR_CodigoAPA($eGAR_CodigoAPA = null)
    {
        // validation for constraint: string
        if (!is_null($eGAR_CodigoAPA) && !is_string($eGAR_CodigoAPA)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($eGAR_CodigoAPA)), __LINE__);
        }
        if (is_null($eGAR_CodigoAPA) || (is_array($eGAR_CodigoAPA) && empty($eGAR_CodigoAPA))) {
            unset($this->eGAR_CodigoAPA);
        } else {
            $this->eGAR_CodigoAPA = $eGAR_CodigoAPA;
        }
        return $this;
    }
    /**
     * Get eGAR_NumPGL 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 getEGAR_NumPGL()
    {
        return isset($this->eGAR_NumPGL) ? $this->eGAR_NumPGL : null;
    }
    /**
     * Set eGAR_NumPGL 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 $eGAR_NumPGL
     * @return \StructType\ArmazemERP
     */
    public function setEGAR_NumPGL($eGAR_NumPGL = null)
    {
        // validation for constraint: string
        if (!is_null($eGAR_NumPGL) && !is_string($eGAR_NumPGL)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($eGAR_NumPGL)), __LINE__);
        }
        if (is_null($eGAR_NumPGL) || (is_array($eGAR_NumPGL) && empty($eGAR_NumPGL))) {
            unset($this->eGAR_NumPGL);
        } else {
            $this->eGAR_NumPGL = $eGAR_NumPGL;
        }
        return $this;
    }
    /**
     * Get eGAR_TipoRemetente 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 getEGAR_TipoRemetente()
    {
        return isset($this->eGAR_TipoRemetente) ? $this->eGAR_TipoRemetente : null;
    }
    /**
     * Set eGAR_TipoRemetente 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 $eGAR_TipoRemetente
     * @return \StructType\ArmazemERP
     */
    public function setEGAR_TipoRemetente($eGAR_TipoRemetente = null)
    {
        // validation for constraint: string
        if (!is_null($eGAR_TipoRemetente) && !is_string($eGAR_TipoRemetente)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($eGAR_TipoRemetente)), __LINE__);
        }
        if (is_null($eGAR_TipoRemetente) || (is_array($eGAR_TipoRemetente) && empty($eGAR_TipoRemetente))) {
            unset($this->eGAR_TipoRemetente);
        } else {
            $this->eGAR_TipoRemetente = $eGAR_TipoRemetente;
        }
        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\ArmazemERP
     */
    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__;
    }
}
