<?php

namespace StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for FamiliasERP StructType
 * Meta informations extracted from the WSDL
 * - nillable: true
 * - type: tns:FamiliasERP
 * @subpackage Structs
 */
class FamiliasERP 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 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 Dim1
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Dim1;
    /**
     * The Dim2
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Dim2;
    /**
     * The Dim3
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Dim3;
    /**
     * The Etiqueta
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Etiqueta;
    /**
     * The Familia
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Familia;
    /**
     * The GrupoCenariosCompras
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $GrupoCenariosCompras;
    /**
     * The IdPastaCCOP
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var int
     */
    public $IdPastaCCOP;
    /**
     * The NaturezaAnalitica
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var int
     */
    public $NaturezaAnalitica;
    /**
     * The PermiteDevolucao
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $PermiteDevolucao;
    /**
     * The Protegida
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $Protegida;
    /**
     * The TipoDim1
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $TipoDim1;
    /**
     * The TipoDim2
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $TipoDim2;
    /**
     * The TipoDim3
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $TipoDim3;
    /**
     * The UtilizadoCCOP
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $UtilizadoCCOP;
    /**
     * The VersaoUltAct
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $VersaoUltAct;
    /**
     * Constructor method for FamiliasERP
     * @uses FamiliasERP::setCDU_ExtensaoFoto()
     * @uses FamiliasERP::setCDU_Foto()
     * @uses FamiliasERP::setCDU_NomeFoto()
     * @uses FamiliasERP::setDataUltimaActualizacao()
     * @uses FamiliasERP::setDescricao()
     * @uses FamiliasERP::setDim1()
     * @uses FamiliasERP::setDim2()
     * @uses FamiliasERP::setDim3()
     * @uses FamiliasERP::setEtiqueta()
     * @uses FamiliasERP::setFamilia()
     * @uses FamiliasERP::setGrupoCenariosCompras()
     * @uses FamiliasERP::setIdPastaCCOP()
     * @uses FamiliasERP::setNaturezaAnalitica()
     * @uses FamiliasERP::setPermiteDevolucao()
     * @uses FamiliasERP::setProtegida()
     * @uses FamiliasERP::setTipoDim1()
     * @uses FamiliasERP::setTipoDim2()
     * @uses FamiliasERP::setTipoDim3()
     * @uses FamiliasERP::setUtilizadoCCOP()
     * @uses FamiliasERP::setVersaoUltAct()
     * @param string $cDU_ExtensaoFoto
     * @param string $cDU_Foto
     * @param string $cDU_NomeFoto
     * @param string $dataUltimaActualizacao
     * @param string $descricao
     * @param string $dim1
     * @param string $dim2
     * @param string $dim3
     * @param string $etiqueta
     * @param string $familia
     * @param string $grupoCenariosCompras
     * @param int $idPastaCCOP
     * @param int $naturezaAnalitica
     * @param bool $permiteDevolucao
     * @param bool $protegida
     * @param string $tipoDim1
     * @param string $tipoDim2
     * @param string $tipoDim3
     * @param bool $utilizadoCCOP
     * @param string $versaoUltAct
     */
    public function __construct($cDU_ExtensaoFoto = null, $cDU_Foto = null, $cDU_NomeFoto = null, $dataUltimaActualizacao = null, $descricao = null, $dim1 = null, $dim2 = null, $dim3 = null, $etiqueta = null, $familia = null, $grupoCenariosCompras = null, $idPastaCCOP = null, $naturezaAnalitica = null, $permiteDevolucao = null, $protegida = null, $tipoDim1 = null, $tipoDim2 = null, $tipoDim3 = null, $utilizadoCCOP = null, $versaoUltAct = null)
    {
        $this
            ->setCDU_ExtensaoFoto($cDU_ExtensaoFoto)
            ->setCDU_Foto($cDU_Foto)
            ->setCDU_NomeFoto($cDU_NomeFoto)
            ->setDataUltimaActualizacao($dataUltimaActualizacao)
            ->setDescricao($descricao)
            ->setDim1($dim1)
            ->setDim2($dim2)
            ->setDim3($dim3)
            ->setEtiqueta($etiqueta)
            ->setFamilia($familia)
            ->setGrupoCenariosCompras($grupoCenariosCompras)
            ->setIdPastaCCOP($idPastaCCOP)
            ->setNaturezaAnalitica($naturezaAnalitica)
            ->setPermiteDevolucao($permiteDevolucao)
            ->setProtegida($protegida)
            ->setTipoDim1($tipoDim1)
            ->setTipoDim2($tipoDim2)
            ->setTipoDim3($tipoDim3)
            ->setUtilizadoCCOP($utilizadoCCOP)
            ->setVersaoUltAct($versaoUltAct);
    }
    /**
     * 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\FamiliasERP
     */
    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\FamiliasERP
     */
    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\FamiliasERP
     */
    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 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\FamiliasERP
     */
    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\FamiliasERP
     */
    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 Dim1 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 getDim1()
    {
        return isset($this->Dim1) ? $this->Dim1 : null;
    }
    /**
     * Set Dim1 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 $dim1
     * @return \StructType\FamiliasERP
     */
    public function setDim1($dim1 = null)
    {
        // validation for constraint: string
        if (!is_null($dim1) && !is_string($dim1)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($dim1)), __LINE__);
        }
        if (is_null($dim1) || (is_array($dim1) && empty($dim1))) {
            unset($this->Dim1);
        } else {
            $this->Dim1 = $dim1;
        }
        return $this;
    }
    /**
     * Get Dim2 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 getDim2()
    {
        return isset($this->Dim2) ? $this->Dim2 : null;
    }
    /**
     * Set Dim2 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 $dim2
     * @return \StructType\FamiliasERP
     */
    public function setDim2($dim2 = null)
    {
        // validation for constraint: string
        if (!is_null($dim2) && !is_string($dim2)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($dim2)), __LINE__);
        }
        if (is_null($dim2) || (is_array($dim2) && empty($dim2))) {
            unset($this->Dim2);
        } else {
            $this->Dim2 = $dim2;
        }
        return $this;
    }
    /**
     * Get Dim3 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 getDim3()
    {
        return isset($this->Dim3) ? $this->Dim3 : null;
    }
    /**
     * Set Dim3 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 $dim3
     * @return \StructType\FamiliasERP
     */
    public function setDim3($dim3 = null)
    {
        // validation for constraint: string
        if (!is_null($dim3) && !is_string($dim3)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($dim3)), __LINE__);
        }
        if (is_null($dim3) || (is_array($dim3) && empty($dim3))) {
            unset($this->Dim3);
        } else {
            $this->Dim3 = $dim3;
        }
        return $this;
    }
    /**
     * Get Etiqueta 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 getEtiqueta()
    {
        return isset($this->Etiqueta) ? $this->Etiqueta : null;
    }
    /**
     * Set Etiqueta 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 $etiqueta
     * @return \StructType\FamiliasERP
     */
    public function setEtiqueta($etiqueta = null)
    {
        // validation for constraint: string
        if (!is_null($etiqueta) && !is_string($etiqueta)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($etiqueta)), __LINE__);
        }
        if (is_null($etiqueta) || (is_array($etiqueta) && empty($etiqueta))) {
            unset($this->Etiqueta);
        } else {
            $this->Etiqueta = $etiqueta;
        }
        return $this;
    }
    /**
     * Get Familia 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 getFamilia()
    {
        return isset($this->Familia) ? $this->Familia : null;
    }
    /**
     * Set Familia 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 $familia
     * @return \StructType\FamiliasERP
     */
    public function setFamilia($familia = null)
    {
        // validation for constraint: string
        if (!is_null($familia) && !is_string($familia)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($familia)), __LINE__);
        }
        if (is_null($familia) || (is_array($familia) && empty($familia))) {
            unset($this->Familia);
        } else {
            $this->Familia = $familia;
        }
        return $this;
    }
    /**
     * Get GrupoCenariosCompras 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 getGrupoCenariosCompras()
    {
        return isset($this->GrupoCenariosCompras) ? $this->GrupoCenariosCompras : null;
    }
    /**
     * Set GrupoCenariosCompras 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 $grupoCenariosCompras
     * @return \StructType\FamiliasERP
     */
    public function setGrupoCenariosCompras($grupoCenariosCompras = null)
    {
        // validation for constraint: string
        if (!is_null($grupoCenariosCompras) && !is_string($grupoCenariosCompras)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($grupoCenariosCompras)), __LINE__);
        }
        if (is_null($grupoCenariosCompras) || (is_array($grupoCenariosCompras) && empty($grupoCenariosCompras))) {
            unset($this->GrupoCenariosCompras);
        } else {
            $this->GrupoCenariosCompras = $grupoCenariosCompras;
        }
        return $this;
    }
    /**
     * Get IdPastaCCOP 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 int|null
     */
    public function getIdPastaCCOP()
    {
        return isset($this->IdPastaCCOP) ? $this->IdPastaCCOP : null;
    }
    /**
     * Set IdPastaCCOP 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 int $idPastaCCOP
     * @return \StructType\FamiliasERP
     */
    public function setIdPastaCCOP($idPastaCCOP = null)
    {
        // validation for constraint: int
        if (!is_null($idPastaCCOP) && !is_numeric($idPastaCCOP)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a numeric value, "%s" given', gettype($idPastaCCOP)), __LINE__);
        }
        if (is_null($idPastaCCOP) || (is_array($idPastaCCOP) && empty($idPastaCCOP))) {
            unset($this->IdPastaCCOP);
        } else {
            $this->IdPastaCCOP = $idPastaCCOP;
        }
        return $this;
    }
    /**
     * Get NaturezaAnalitica 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 int|null
     */
    public function getNaturezaAnalitica()
    {
        return isset($this->NaturezaAnalitica) ? $this->NaturezaAnalitica : null;
    }
    /**
     * Set NaturezaAnalitica 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 int $naturezaAnalitica
     * @return \StructType\FamiliasERP
     */
    public function setNaturezaAnalitica($naturezaAnalitica = null)
    {
        // validation for constraint: int
        if (!is_null($naturezaAnalitica) && !is_numeric($naturezaAnalitica)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a numeric value, "%s" given', gettype($naturezaAnalitica)), __LINE__);
        }
        if (is_null($naturezaAnalitica) || (is_array($naturezaAnalitica) && empty($naturezaAnalitica))) {
            unset($this->NaturezaAnalitica);
        } else {
            $this->NaturezaAnalitica = $naturezaAnalitica;
        }
        return $this;
    }
    /**
     * Get PermiteDevolucao 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 getPermiteDevolucao()
    {
        return isset($this->PermiteDevolucao) ? $this->PermiteDevolucao : null;
    }
    /**
     * Set PermiteDevolucao 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 $permiteDevolucao
     * @return \StructType\FamiliasERP
     */
    public function setPermiteDevolucao($permiteDevolucao = null)
    {
        // validation for constraint: boolean
        if (!is_null($permiteDevolucao) && !is_bool($permiteDevolucao)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($permiteDevolucao)), __LINE__);
        }
        if (is_null($permiteDevolucao) || (is_array($permiteDevolucao) && empty($permiteDevolucao))) {
            unset($this->PermiteDevolucao);
        } else {
            $this->PermiteDevolucao = $permiteDevolucao;
        }
        return $this;
    }
    /**
     * Get Protegida value
     * @return bool|null
     */
    public function getProtegida()
    {
        return $this->Protegida;
    }
    /**
     * Set Protegida value
     * @param bool $protegida
     * @return \StructType\FamiliasERP
     */
    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 TipoDim1 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 getTipoDim1()
    {
        return isset($this->TipoDim1) ? $this->TipoDim1 : null;
    }
    /**
     * Set TipoDim1 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 $tipoDim1
     * @return \StructType\FamiliasERP
     */
    public function setTipoDim1($tipoDim1 = null)
    {
        // validation for constraint: string
        if (!is_null($tipoDim1) && !is_string($tipoDim1)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($tipoDim1)), __LINE__);
        }
        if (is_null($tipoDim1) || (is_array($tipoDim1) && empty($tipoDim1))) {
            unset($this->TipoDim1);
        } else {
            $this->TipoDim1 = $tipoDim1;
        }
        return $this;
    }
    /**
     * Get TipoDim2 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 getTipoDim2()
    {
        return isset($this->TipoDim2) ? $this->TipoDim2 : null;
    }
    /**
     * Set TipoDim2 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 $tipoDim2
     * @return \StructType\FamiliasERP
     */
    public function setTipoDim2($tipoDim2 = null)
    {
        // validation for constraint: string
        if (!is_null($tipoDim2) && !is_string($tipoDim2)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($tipoDim2)), __LINE__);
        }
        if (is_null($tipoDim2) || (is_array($tipoDim2) && empty($tipoDim2))) {
            unset($this->TipoDim2);
        } else {
            $this->TipoDim2 = $tipoDim2;
        }
        return $this;
    }
    /**
     * Get TipoDim3 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 getTipoDim3()
    {
        return isset($this->TipoDim3) ? $this->TipoDim3 : null;
    }
    /**
     * Set TipoDim3 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 $tipoDim3
     * @return \StructType\FamiliasERP
     */
    public function setTipoDim3($tipoDim3 = null)
    {
        // validation for constraint: string
        if (!is_null($tipoDim3) && !is_string($tipoDim3)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($tipoDim3)), __LINE__);
        }
        if (is_null($tipoDim3) || (is_array($tipoDim3) && empty($tipoDim3))) {
            unset($this->TipoDim3);
        } else {
            $this->TipoDim3 = $tipoDim3;
        }
        return $this;
    }
    /**
     * Get UtilizadoCCOP value
     * @return bool|null
     */
    public function getUtilizadoCCOP()
    {
        return $this->UtilizadoCCOP;
    }
    /**
     * Set UtilizadoCCOP value
     * @param bool $utilizadoCCOP
     * @return \StructType\FamiliasERP
     */
    public function setUtilizadoCCOP($utilizadoCCOP = null)
    {
        // validation for constraint: boolean
        if (!is_null($utilizadoCCOP) && !is_bool($utilizadoCCOP)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($utilizadoCCOP)), __LINE__);
        }
        $this->UtilizadoCCOP = $utilizadoCCOP;
        return $this;
    }
    /**
     * Get VersaoUltAct value
     * @return string|null
     */
    public function getVersaoUltAct()
    {
        return $this->VersaoUltAct;
    }
    /**
     * Set VersaoUltAct value
     * @param string $versaoUltAct
     * @return \StructType\FamiliasERP
     */
    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;
    }
    /**
     * 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\FamiliasERP
     */
    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__;
    }
}
