<?php

namespace StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for MoradasAlternativasClientesERP StructType
 * Meta informations extracted from the WSDL
 * - nillable: true
 * - type: tns:MoradasAlternativasClientesERP
 * @subpackage Structs
 */
class MoradasAlternativasClientesERP extends AbstractStructBase
{
    /**
     * The Cliente
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Cliente;
    /**
     * The CodigoLocal
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $CodigoLocal;
    /**
     * 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 Distrito
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Distrito;
    /**
     * 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 MoradaAlternativa
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $MoradaAlternativa;
    /**
     * The MoradaEnvio
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $MoradaEnvio;
    /**
     * The MoradaFacturacao
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $MoradaFacturacao;
    /**
     * The MoradaPorDefeito
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $MoradaPorDefeito;
    /**
     * 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 TipoRemetente
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $TipoRemetente;
    /**
     * 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_Isenta
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $eGAR_Isenta;
    /**
     * The eGAR_NumPGL
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $eGAR_NumPGL;
    /**
     * The eGAR_TipoProdutor
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $eGAR_TipoProdutor;
    /**
     * Constructor method for MoradasAlternativasClientesERP
     * @uses MoradasAlternativasClientesERP::setCliente()
     * @uses MoradasAlternativasClientesERP::setCodigoLocal()
     * @uses MoradasAlternativasClientesERP::setCp()
     * @uses MoradasAlternativasClientesERP::setCpLocalidade()
     * @uses MoradasAlternativasClientesERP::setDistrito()
     * @uses MoradasAlternativasClientesERP::setFax()
     * @uses MoradasAlternativasClientesERP::setLocalidade()
     * @uses MoradasAlternativasClientesERP::setMorada()
     * @uses MoradasAlternativasClientesERP::setMorada2()
     * @uses MoradasAlternativasClientesERP::setMoradaAlternativa()
     * @uses MoradasAlternativasClientesERP::setMoradaEnvio()
     * @uses MoradasAlternativasClientesERP::setMoradaFacturacao()
     * @uses MoradasAlternativasClientesERP::setMoradaPorDefeito()
     * @uses MoradasAlternativasClientesERP::setPais()
     * @uses MoradasAlternativasClientesERP::setProtegida()
     * @uses MoradasAlternativasClientesERP::setTelefone()
     * @uses MoradasAlternativasClientesERP::setTipoRemetente()
     * @uses MoradasAlternativasClientesERP::setVersaoUltAct()
     * @uses MoradasAlternativasClientesERP::setEGAR_CodigoAPA()
     * @uses MoradasAlternativasClientesERP::setEGAR_Isenta()
     * @uses MoradasAlternativasClientesERP::setEGAR_NumPGL()
     * @uses MoradasAlternativasClientesERP::setEGAR_TipoProdutor()
     * @param string $cliente
     * @param string $codigoLocal
     * @param string $cp
     * @param string $cpLocalidade
     * @param string $distrito
     * @param string $fax
     * @param string $localidade
     * @param string $morada
     * @param string $morada2
     * @param string $moradaAlternativa
     * @param bool $moradaEnvio
     * @param bool $moradaFacturacao
     * @param bool $moradaPorDefeito
     * @param string $pais
     * @param bool $protegida
     * @param string $telefone
     * @param string $tipoRemetente
     * @param string $versaoUltAct
     * @param string $eGAR_CodigoAPA
     * @param bool $eGAR_Isenta
     * @param string $eGAR_NumPGL
     * @param string $eGAR_TipoProdutor
     */
    public function __construct($cliente = null, $codigoLocal = null, $cp = null, $cpLocalidade = null, $distrito = null, $fax = null, $localidade = null, $morada = null, $morada2 = null, $moradaAlternativa = null, $moradaEnvio = null, $moradaFacturacao = null, $moradaPorDefeito = null, $pais = null, $protegida = null, $telefone = null, $tipoRemetente = null, $versaoUltAct = null, $eGAR_CodigoAPA = null, $eGAR_Isenta = null, $eGAR_NumPGL = null, $eGAR_TipoProdutor = null)
    {
        $this
            ->setCliente($cliente)
            ->setCodigoLocal($codigoLocal)
            ->setCp($cp)
            ->setCpLocalidade($cpLocalidade)
            ->setDistrito($distrito)
            ->setFax($fax)
            ->setLocalidade($localidade)
            ->setMorada($morada)
            ->setMorada2($morada2)
            ->setMoradaAlternativa($moradaAlternativa)
            ->setMoradaEnvio($moradaEnvio)
            ->setMoradaFacturacao($moradaFacturacao)
            ->setMoradaPorDefeito($moradaPorDefeito)
            ->setPais($pais)
            ->setProtegida($protegida)
            ->setTelefone($telefone)
            ->setTipoRemetente($tipoRemetente)
            ->setVersaoUltAct($versaoUltAct)
            ->setEGAR_CodigoAPA($eGAR_CodigoAPA)
            ->setEGAR_Isenta($eGAR_Isenta)
            ->setEGAR_NumPGL($eGAR_NumPGL)
            ->setEGAR_TipoProdutor($eGAR_TipoProdutor);
    }
    /**
     * Get Cliente 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 getCliente()
    {
        return isset($this->Cliente) ? $this->Cliente : null;
    }
    /**
     * Set Cliente 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 $cliente
     * @return \StructType\MoradasAlternativasClientesERP
     */
    public function setCliente($cliente = null)
    {
        // validation for constraint: string
        if (!is_null($cliente) && !is_string($cliente)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($cliente)), __LINE__);
        }
        if (is_null($cliente) || (is_array($cliente) && empty($cliente))) {
            unset($this->Cliente);
        } else {
            $this->Cliente = $cliente;
        }
        return $this;
    }
    /**
     * Get CodigoLocal 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 getCodigoLocal()
    {
        return isset($this->CodigoLocal) ? $this->CodigoLocal : null;
    }
    /**
     * Set CodigoLocal 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 $codigoLocal
     * @return \StructType\MoradasAlternativasClientesERP
     */
    public function setCodigoLocal($codigoLocal = null)
    {
        // validation for constraint: string
        if (!is_null($codigoLocal) && !is_string($codigoLocal)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($codigoLocal)), __LINE__);
        }
        if (is_null($codigoLocal) || (is_array($codigoLocal) && empty($codigoLocal))) {
            unset($this->CodigoLocal);
        } else {
            $this->CodigoLocal = $codigoLocal;
        }
        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\MoradasAlternativasClientesERP
     */
    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\MoradasAlternativasClientesERP
     */
    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 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\MoradasAlternativasClientesERP
     */
    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 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\MoradasAlternativasClientesERP
     */
    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\MoradasAlternativasClientesERP
     */
    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\MoradasAlternativasClientesERP
     */
    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\MoradasAlternativasClientesERP
     */
    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 MoradaAlternativa 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 getMoradaAlternativa()
    {
        return isset($this->MoradaAlternativa) ? $this->MoradaAlternativa : null;
    }
    /**
     * Set MoradaAlternativa 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 $moradaAlternativa
     * @return \StructType\MoradasAlternativasClientesERP
     */
    public function setMoradaAlternativa($moradaAlternativa = null)
    {
        // validation for constraint: string
        if (!is_null($moradaAlternativa) && !is_string($moradaAlternativa)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($moradaAlternativa)), __LINE__);
        }
        if (is_null($moradaAlternativa) || (is_array($moradaAlternativa) && empty($moradaAlternativa))) {
            unset($this->MoradaAlternativa);
        } else {
            $this->MoradaAlternativa = $moradaAlternativa;
        }
        return $this;
    }
    /**
     * Get MoradaEnvio 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 getMoradaEnvio()
    {
        return isset($this->MoradaEnvio) ? $this->MoradaEnvio : null;
    }
    /**
     * Set MoradaEnvio 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 $moradaEnvio
     * @return \StructType\MoradasAlternativasClientesERP
     */
    public function setMoradaEnvio($moradaEnvio = null)
    {
        // validation for constraint: boolean
        if (!is_null($moradaEnvio) && !is_bool($moradaEnvio)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($moradaEnvio)), __LINE__);
        }
        if (is_null($moradaEnvio) || (is_array($moradaEnvio) && empty($moradaEnvio))) {
            unset($this->MoradaEnvio);
        } else {
            $this->MoradaEnvio = $moradaEnvio;
        }
        return $this;
    }
    /**
     * Get MoradaFacturacao 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 getMoradaFacturacao()
    {
        return isset($this->MoradaFacturacao) ? $this->MoradaFacturacao : null;
    }
    /**
     * Set MoradaFacturacao 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 $moradaFacturacao
     * @return \StructType\MoradasAlternativasClientesERP
     */
    public function setMoradaFacturacao($moradaFacturacao = null)
    {
        // validation for constraint: boolean
        if (!is_null($moradaFacturacao) && !is_bool($moradaFacturacao)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($moradaFacturacao)), __LINE__);
        }
        if (is_null($moradaFacturacao) || (is_array($moradaFacturacao) && empty($moradaFacturacao))) {
            unset($this->MoradaFacturacao);
        } else {
            $this->MoradaFacturacao = $moradaFacturacao;
        }
        return $this;
    }
    /**
     * Get MoradaPorDefeito 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 getMoradaPorDefeito()
    {
        return isset($this->MoradaPorDefeito) ? $this->MoradaPorDefeito : null;
    }
    /**
     * Set MoradaPorDefeito 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 $moradaPorDefeito
     * @return \StructType\MoradasAlternativasClientesERP
     */
    public function setMoradaPorDefeito($moradaPorDefeito = null)
    {
        // validation for constraint: boolean
        if (!is_null($moradaPorDefeito) && !is_bool($moradaPorDefeito)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($moradaPorDefeito)), __LINE__);
        }
        if (is_null($moradaPorDefeito) || (is_array($moradaPorDefeito) && empty($moradaPorDefeito))) {
            unset($this->MoradaPorDefeito);
        } else {
            $this->MoradaPorDefeito = $moradaPorDefeito;
        }
        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\MoradasAlternativasClientesERP
     */
    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\MoradasAlternativasClientesERP
     */
    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\MoradasAlternativasClientesERP
     */
    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 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 getTipoRemetente()
    {
        return isset($this->TipoRemetente) ? $this->TipoRemetente : null;
    }
    /**
     * Set 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 $tipoRemetente
     * @return \StructType\MoradasAlternativasClientesERP
     */
    public function setTipoRemetente($tipoRemetente = null)
    {
        // validation for constraint: string
        if (!is_null($tipoRemetente) && !is_string($tipoRemetente)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($tipoRemetente)), __LINE__);
        }
        if (is_null($tipoRemetente) || (is_array($tipoRemetente) && empty($tipoRemetente))) {
            unset($this->TipoRemetente);
        } else {
            $this->TipoRemetente = $tipoRemetente;
        }
        return $this;
    }
    /**
     * Get VersaoUltAct value
     * @return string|null
     */
    public function getVersaoUltAct()
    {
        return $this->VersaoUltAct;
    }
    /**
     * Set VersaoUltAct value
     * @param string $versaoUltAct
     * @return \StructType\MoradasAlternativasClientesERP
     */
    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\MoradasAlternativasClientesERP
     */
    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_Isenta value
     * @return bool|null
     */
    public function getEGAR_Isenta()
    {
        return $this->eGAR_Isenta;
    }
    /**
     * Set eGAR_Isenta value
     * @param bool $eGAR_Isenta
     * @return \StructType\MoradasAlternativasClientesERP
     */
    public function setEGAR_Isenta($eGAR_Isenta = null)
    {
        // validation for constraint: boolean
        if (!is_null($eGAR_Isenta) && !is_bool($eGAR_Isenta)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($eGAR_Isenta)), __LINE__);
        }
        $this->eGAR_Isenta = $eGAR_Isenta;
        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\MoradasAlternativasClientesERP
     */
    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_TipoProdutor 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_TipoProdutor()
    {
        return isset($this->eGAR_TipoProdutor) ? $this->eGAR_TipoProdutor : null;
    }
    /**
     * Set eGAR_TipoProdutor 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_TipoProdutor
     * @return \StructType\MoradasAlternativasClientesERP
     */
    public function setEGAR_TipoProdutor($eGAR_TipoProdutor = null)
    {
        // validation for constraint: string
        if (!is_null($eGAR_TipoProdutor) && !is_string($eGAR_TipoProdutor)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($eGAR_TipoProdutor)), __LINE__);
        }
        if (is_null($eGAR_TipoProdutor) || (is_array($eGAR_TipoProdutor) && empty($eGAR_TipoProdutor))) {
            unset($this->eGAR_TipoProdutor);
        } else {
            $this->eGAR_TipoProdutor = $eGAR_TipoProdutor;
        }
        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\MoradasAlternativasClientesERP
     */
    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__;
    }
}
