<?php

namespace StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for PaisERP StructType
 * Meta informations extracted from the WSDL
 * - nillable: true
 * - type: tns:PaisERP
 * @subpackage Structs
 */
class PaisERP extends AbstractStructBase
{
    /**
     * The CDU_ExtensaoFoto
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $CDU_ExtensaoFoto;
    /**
     * The CDU_Foto
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $CDU_Foto;
    /**
     * The CDU_NomeFoto
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $CDU_NomeFoto;
    /**
     * The Codigo
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Codigo;
    /**
     * The Comunidade
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Comunidade;
    /**
     * 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 ISOA2
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $ISOA2;
    /**
     * The ISOA3
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $ISOA3;
    /**
     * The ISON
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $ISON;
    /**
     * The Idioma
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Idioma;
    /**
     * The IntrastatPais
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $IntrastatPais;
    /**
     * 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 SiglaDeclIntracom
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $SiglaDeclIntracom;
    /**
     * The SiglaIVA
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $SiglaIVA;
    /**
     * The SiglaTributacao
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $SiglaTributacao;
    /**
     * The VersaoUltAct
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $VersaoUltAct;
    /**
     * The Zona
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Zona;
    /**
     * Constructor method for PaisERP
     * @uses PaisERP::setCDU_ExtensaoFoto()
     * @uses PaisERP::setCDU_Foto()
     * @uses PaisERP::setCDU_NomeFoto()
     * @uses PaisERP::setCodigo()
     * @uses PaisERP::setComunidade()
     * @uses PaisERP::setDataUltimaActualizacao()
     * @uses PaisERP::setDescricao()
     * @uses PaisERP::setISOA2()
     * @uses PaisERP::setISOA3()
     * @uses PaisERP::setISON()
     * @uses PaisERP::setIdioma()
     * @uses PaisERP::setIntrastatPais()
     * @uses PaisERP::setPais()
     * @uses PaisERP::setProtegida()
     * @uses PaisERP::setSiglaDeclIntracom()
     * @uses PaisERP::setSiglaIVA()
     * @uses PaisERP::setSiglaTributacao()
     * @uses PaisERP::setVersaoUltAct()
     * @uses PaisERP::setZona()
     * @param string $cDU_ExtensaoFoto
     * @param string $cDU_Foto
     * @param string $cDU_NomeFoto
     * @param string $codigo
     * @param string $comunidade
     * @param string $dataUltimaActualizacao
     * @param string $descricao
     * @param string $iSOA2
     * @param string $iSOA3
     * @param string $iSON
     * @param string $idioma
     * @param string $intrastatPais
     * @param string $pais
     * @param bool $protegida
     * @param string $siglaDeclIntracom
     * @param string $siglaIVA
     * @param string $siglaTributacao
     * @param string $versaoUltAct
     * @param string $zona
     */
    public function __construct($cDU_ExtensaoFoto = null, $cDU_Foto = null, $cDU_NomeFoto = null, $codigo = null, $comunidade = null, $dataUltimaActualizacao = null, $descricao = null, $iSOA2 = null, $iSOA3 = null, $iSON = null, $idioma = null, $intrastatPais = null, $pais = null, $protegida = null, $siglaDeclIntracom = null, $siglaIVA = null, $siglaTributacao = null, $versaoUltAct = null, $zona = null)
    {
        $this
            ->setCDU_ExtensaoFoto($cDU_ExtensaoFoto)
            ->setCDU_Foto($cDU_Foto)
            ->setCDU_NomeFoto($cDU_NomeFoto)
            ->setCodigo($codigo)
            ->setComunidade($comunidade)
            ->setDataUltimaActualizacao($dataUltimaActualizacao)
            ->setDescricao($descricao)
            ->setISOA2($iSOA2)
            ->setISOA3($iSOA3)
            ->setISON($iSON)
            ->setIdioma($idioma)
            ->setIntrastatPais($intrastatPais)
            ->setPais($pais)
            ->setProtegida($protegida)
            ->setSiglaDeclIntracom($siglaDeclIntracom)
            ->setSiglaIVA($siglaIVA)
            ->setSiglaTributacao($siglaTributacao)
            ->setVersaoUltAct($versaoUltAct)
            ->setZona($zona);
    }
    /**
     * Get CDU_ExtensaoFoto 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 getCDU_ExtensaoFoto()
    {
        return isset($this->CDU_ExtensaoFoto) ? $this->CDU_ExtensaoFoto : null;
    }
    /**
     * Set CDU_ExtensaoFoto 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 $cDU_ExtensaoFoto
     * @return \StructType\PaisERP
     */
    public function setCDU_ExtensaoFoto($cDU_ExtensaoFoto = null)
    {
        // validation for constraint: string
        if (!is_null($cDU_ExtensaoFoto) && !is_string($cDU_ExtensaoFoto)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($cDU_ExtensaoFoto)), __LINE__);
        }
        if (is_null($cDU_ExtensaoFoto) || (is_array($cDU_ExtensaoFoto) && empty($cDU_ExtensaoFoto))) {
            unset($this->CDU_ExtensaoFoto);
        } else {
            $this->CDU_ExtensaoFoto = $cDU_ExtensaoFoto;
        }
        return $this;
    }
    /**
     * Get CDU_Foto 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 getCDU_Foto()
    {
        return isset($this->CDU_Foto) ? $this->CDU_Foto : null;
    }
    /**
     * Set CDU_Foto 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 $cDU_Foto
     * @return \StructType\PaisERP
     */
    public function setCDU_Foto($cDU_Foto = null)
    {
        // validation for constraint: string
        if (!is_null($cDU_Foto) && !is_string($cDU_Foto)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($cDU_Foto)), __LINE__);
        }
        if (is_null($cDU_Foto) || (is_array($cDU_Foto) && empty($cDU_Foto))) {
            unset($this->CDU_Foto);
        } else {
            $this->CDU_Foto = $cDU_Foto;
        }
        return $this;
    }
    /**
     * Get CDU_NomeFoto 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 getCDU_NomeFoto()
    {
        return isset($this->CDU_NomeFoto) ? $this->CDU_NomeFoto : null;
    }
    /**
     * Set CDU_NomeFoto 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 $cDU_NomeFoto
     * @return \StructType\PaisERP
     */
    public function setCDU_NomeFoto($cDU_NomeFoto = null)
    {
        // validation for constraint: string
        if (!is_null($cDU_NomeFoto) && !is_string($cDU_NomeFoto)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($cDU_NomeFoto)), __LINE__);
        }
        if (is_null($cDU_NomeFoto) || (is_array($cDU_NomeFoto) && empty($cDU_NomeFoto))) {
            unset($this->CDU_NomeFoto);
        } else {
            $this->CDU_NomeFoto = $cDU_NomeFoto;
        }
        return $this;
    }
    /**
     * Get Codigo 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 getCodigo()
    {
        return isset($this->Codigo) ? $this->Codigo : null;
    }
    /**
     * Set Codigo 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 $codigo
     * @return \StructType\PaisERP
     */
    public function setCodigo($codigo = null)
    {
        // validation for constraint: string
        if (!is_null($codigo) && !is_string($codigo)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($codigo)), __LINE__);
        }
        if (is_null($codigo) || (is_array($codigo) && empty($codigo))) {
            unset($this->Codigo);
        } else {
            $this->Codigo = $codigo;
        }
        return $this;
    }
    /**
     * Get Comunidade 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 getComunidade()
    {
        return isset($this->Comunidade) ? $this->Comunidade : null;
    }
    /**
     * Set Comunidade 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 $comunidade
     * @return \StructType\PaisERP
     */
    public function setComunidade($comunidade = null)
    {
        // validation for constraint: string
        if (!is_null($comunidade) && !is_string($comunidade)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($comunidade)), __LINE__);
        }
        if (is_null($comunidade) || (is_array($comunidade) && empty($comunidade))) {
            unset($this->Comunidade);
        } else {
            $this->Comunidade = $comunidade;
        }
        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\PaisERP
     */
    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\PaisERP
     */
    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 ISOA2 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 getISOA2()
    {
        return isset($this->ISOA2) ? $this->ISOA2 : null;
    }
    /**
     * Set ISOA2 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 $iSOA2
     * @return \StructType\PaisERP
     */
    public function setISOA2($iSOA2 = null)
    {
        // validation for constraint: string
        if (!is_null($iSOA2) && !is_string($iSOA2)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($iSOA2)), __LINE__);
        }
        if (is_null($iSOA2) || (is_array($iSOA2) && empty($iSOA2))) {
            unset($this->ISOA2);
        } else {
            $this->ISOA2 = $iSOA2;
        }
        return $this;
    }
    /**
     * Get ISOA3 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 getISOA3()
    {
        return isset($this->ISOA3) ? $this->ISOA3 : null;
    }
    /**
     * Set ISOA3 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 $iSOA3
     * @return \StructType\PaisERP
     */
    public function setISOA3($iSOA3 = null)
    {
        // validation for constraint: string
        if (!is_null($iSOA3) && !is_string($iSOA3)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($iSOA3)), __LINE__);
        }
        if (is_null($iSOA3) || (is_array($iSOA3) && empty($iSOA3))) {
            unset($this->ISOA3);
        } else {
            $this->ISOA3 = $iSOA3;
        }
        return $this;
    }
    /**
     * Get ISON 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 getISON()
    {
        return isset($this->ISON) ? $this->ISON : null;
    }
    /**
     * Set ISON 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 $iSON
     * @return \StructType\PaisERP
     */
    public function setISON($iSON = null)
    {
        // validation for constraint: string
        if (!is_null($iSON) && !is_string($iSON)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($iSON)), __LINE__);
        }
        if (is_null($iSON) || (is_array($iSON) && empty($iSON))) {
            unset($this->ISON);
        } else {
            $this->ISON = $iSON;
        }
        return $this;
    }
    /**
     * Get Idioma 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 getIdioma()
    {
        return isset($this->Idioma) ? $this->Idioma : null;
    }
    /**
     * Set Idioma 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 $idioma
     * @return \StructType\PaisERP
     */
    public function setIdioma($idioma = null)
    {
        // validation for constraint: string
        if (!is_null($idioma) && !is_string($idioma)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($idioma)), __LINE__);
        }
        if (is_null($idioma) || (is_array($idioma) && empty($idioma))) {
            unset($this->Idioma);
        } else {
            $this->Idioma = $idioma;
        }
        return $this;
    }
    /**
     * Get IntrastatPais 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 getIntrastatPais()
    {
        return isset($this->IntrastatPais) ? $this->IntrastatPais : null;
    }
    /**
     * Set IntrastatPais 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 $intrastatPais
     * @return \StructType\PaisERP
     */
    public function setIntrastatPais($intrastatPais = null)
    {
        // validation for constraint: string
        if (!is_null($intrastatPais) && !is_string($intrastatPais)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($intrastatPais)), __LINE__);
        }
        if (is_null($intrastatPais) || (is_array($intrastatPais) && empty($intrastatPais))) {
            unset($this->IntrastatPais);
        } else {
            $this->IntrastatPais = $intrastatPais;
        }
        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\PaisERP
     */
    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\PaisERP
     */
    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 SiglaDeclIntracom 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 getSiglaDeclIntracom()
    {
        return isset($this->SiglaDeclIntracom) ? $this->SiglaDeclIntracom : null;
    }
    /**
     * Set SiglaDeclIntracom 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 $siglaDeclIntracom
     * @return \StructType\PaisERP
     */
    public function setSiglaDeclIntracom($siglaDeclIntracom = null)
    {
        // validation for constraint: string
        if (!is_null($siglaDeclIntracom) && !is_string($siglaDeclIntracom)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($siglaDeclIntracom)), __LINE__);
        }
        if (is_null($siglaDeclIntracom) || (is_array($siglaDeclIntracom) && empty($siglaDeclIntracom))) {
            unset($this->SiglaDeclIntracom);
        } else {
            $this->SiglaDeclIntracom = $siglaDeclIntracom;
        }
        return $this;
    }
    /**
     * Get SiglaIVA 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 getSiglaIVA()
    {
        return isset($this->SiglaIVA) ? $this->SiglaIVA : null;
    }
    /**
     * Set SiglaIVA 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 $siglaIVA
     * @return \StructType\PaisERP
     */
    public function setSiglaIVA($siglaIVA = null)
    {
        // validation for constraint: string
        if (!is_null($siglaIVA) && !is_string($siglaIVA)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($siglaIVA)), __LINE__);
        }
        if (is_null($siglaIVA) || (is_array($siglaIVA) && empty($siglaIVA))) {
            unset($this->SiglaIVA);
        } else {
            $this->SiglaIVA = $siglaIVA;
        }
        return $this;
    }
    /**
     * Get SiglaTributacao 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 getSiglaTributacao()
    {
        return isset($this->SiglaTributacao) ? $this->SiglaTributacao : null;
    }
    /**
     * Set SiglaTributacao 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 $siglaTributacao
     * @return \StructType\PaisERP
     */
    public function setSiglaTributacao($siglaTributacao = null)
    {
        // validation for constraint: string
        if (!is_null($siglaTributacao) && !is_string($siglaTributacao)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($siglaTributacao)), __LINE__);
        }
        if (is_null($siglaTributacao) || (is_array($siglaTributacao) && empty($siglaTributacao))) {
            unset($this->SiglaTributacao);
        } else {
            $this->SiglaTributacao = $siglaTributacao;
        }
        return $this;
    }
    /**
     * Get VersaoUltAct value
     * @return string|null
     */
    public function getVersaoUltAct()
    {
        return $this->VersaoUltAct;
    }
    /**
     * Set VersaoUltAct value
     * @param string $versaoUltAct
     * @return \StructType\PaisERP
     */
    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 Zona 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 getZona()
    {
        return isset($this->Zona) ? $this->Zona : null;
    }
    /**
     * Set Zona 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 $zona
     * @return \StructType\PaisERP
     */
    public function setZona($zona = null)
    {
        // validation for constraint: string
        if (!is_null($zona) && !is_string($zona)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($zona)), __LINE__);
        }
        if (is_null($zona) || (is_array($zona) && empty($zona))) {
            unset($this->Zona);
        } else {
            $this->Zona = $zona;
        }
        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\PaisERP
     */
    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__;
    }
}
