<?php

namespace StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for ArtigoFornecedorERP StructType
 * Meta informations extracted from the WSDL
 * - nillable: true
 * - type: tns:ArtigoFornecedorERP
 * @subpackage Structs
 */
class ArtigoFornecedorERP extends AbstractStructBase
{
    /**
     * The Artigo
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Artigo;
    /**
     * The Classificacao
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var int
     */
    public $Classificacao;
    /**
     * The CodBarras
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $CodBarras;
    /**
     * The CodIva
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $CodIva;
    /**
     * The DatUltEntrada
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $DatUltEntrada;
    /**
     * The DescFor
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var float
     */
    public $DescFor;
    /**
     * The DescricaoFor
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $DescricaoFor;
    /**
     * The FactorConvCompra
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var float
     */
    public $FactorConvCompra;
    /**
     * The Fornecedor
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Fornecedor;
    /**
     * The IvaIncluido
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $IvaIncluido;
    /**
     * The Moeda
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Moeda;
    /**
     * The NumDoc
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var int
     */
    public $NumDoc;
    /**
     * The PrCustoUltimo
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var float
     */
    public $PrCustoUltimo;
    /**
     * The PrazoEntrega
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var int
     */
    public $PrazoEntrega;
    /**
     * The PrecoUltEncomenda
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var float
     */
    public $PrecoUltEncomenda;
    /**
     * The Protegida
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $Protegida;
    /**
     * The ReferenciaFor
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $ReferenciaFor;
    /**
     * The SerieDoc
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $SerieDoc;
    /**
     * The TaxaIva
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var float
     */
    public $TaxaIva;
    /**
     * The TempoSeguranca
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var int
     */
    public $TempoSeguranca;
    /**
     * The TipoDoc
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $TipoDoc;
    /**
     * The UltDescontoComercialCompra
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var float
     */
    public $UltDescontoComercialCompra;
    /**
     * The UltDespesaAdicionalCompra
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var float
     */
    public $UltDespesaAdicionalCompra;
    /**
     * The UnidadeCompra
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $UnidadeCompra;
    /**
     * The VersaoUltAct
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $VersaoUltAct;
    /**
     * Constructor method for ArtigoFornecedorERP
     * @uses ArtigoFornecedorERP::setArtigo()
     * @uses ArtigoFornecedorERP::setClassificacao()
     * @uses ArtigoFornecedorERP::setCodBarras()
     * @uses ArtigoFornecedorERP::setCodIva()
     * @uses ArtigoFornecedorERP::setDatUltEntrada()
     * @uses ArtigoFornecedorERP::setDescFor()
     * @uses ArtigoFornecedorERP::setDescricaoFor()
     * @uses ArtigoFornecedorERP::setFactorConvCompra()
     * @uses ArtigoFornecedorERP::setFornecedor()
     * @uses ArtigoFornecedorERP::setIvaIncluido()
     * @uses ArtigoFornecedorERP::setMoeda()
     * @uses ArtigoFornecedorERP::setNumDoc()
     * @uses ArtigoFornecedorERP::setPrCustoUltimo()
     * @uses ArtigoFornecedorERP::setPrazoEntrega()
     * @uses ArtigoFornecedorERP::setPrecoUltEncomenda()
     * @uses ArtigoFornecedorERP::setProtegida()
     * @uses ArtigoFornecedorERP::setReferenciaFor()
     * @uses ArtigoFornecedorERP::setSerieDoc()
     * @uses ArtigoFornecedorERP::setTaxaIva()
     * @uses ArtigoFornecedorERP::setTempoSeguranca()
     * @uses ArtigoFornecedorERP::setTipoDoc()
     * @uses ArtigoFornecedorERP::setUltDescontoComercialCompra()
     * @uses ArtigoFornecedorERP::setUltDespesaAdicionalCompra()
     * @uses ArtigoFornecedorERP::setUnidadeCompra()
     * @uses ArtigoFornecedorERP::setVersaoUltAct()
     * @param string $artigo
     * @param int $classificacao
     * @param string $codBarras
     * @param string $codIva
     * @param string $datUltEntrada
     * @param float $descFor
     * @param string $descricaoFor
     * @param float $factorConvCompra
     * @param string $fornecedor
     * @param bool $ivaIncluido
     * @param string $moeda
     * @param int $numDoc
     * @param float $prCustoUltimo
     * @param int $prazoEntrega
     * @param float $precoUltEncomenda
     * @param bool $protegida
     * @param string $referenciaFor
     * @param string $serieDoc
     * @param float $taxaIva
     * @param int $tempoSeguranca
     * @param string $tipoDoc
     * @param float $ultDescontoComercialCompra
     * @param float $ultDespesaAdicionalCompra
     * @param string $unidadeCompra
     * @param string $versaoUltAct
     */
    public function __construct($artigo = null, $classificacao = null, $codBarras = null, $codIva = null, $datUltEntrada = null, $descFor = null, $descricaoFor = null, $factorConvCompra = null, $fornecedor = null, $ivaIncluido = null, $moeda = null, $numDoc = null, $prCustoUltimo = null, $prazoEntrega = null, $precoUltEncomenda = null, $protegida = null, $referenciaFor = null, $serieDoc = null, $taxaIva = null, $tempoSeguranca = null, $tipoDoc = null, $ultDescontoComercialCompra = null, $ultDespesaAdicionalCompra = null, $unidadeCompra = null, $versaoUltAct = null)
    {
        $this
            ->setArtigo($artigo)
            ->setClassificacao($classificacao)
            ->setCodBarras($codBarras)
            ->setCodIva($codIva)
            ->setDatUltEntrada($datUltEntrada)
            ->setDescFor($descFor)
            ->setDescricaoFor($descricaoFor)
            ->setFactorConvCompra($factorConvCompra)
            ->setFornecedor($fornecedor)
            ->setIvaIncluido($ivaIncluido)
            ->setMoeda($moeda)
            ->setNumDoc($numDoc)
            ->setPrCustoUltimo($prCustoUltimo)
            ->setPrazoEntrega($prazoEntrega)
            ->setPrecoUltEncomenda($precoUltEncomenda)
            ->setProtegida($protegida)
            ->setReferenciaFor($referenciaFor)
            ->setSerieDoc($serieDoc)
            ->setTaxaIva($taxaIva)
            ->setTempoSeguranca($tempoSeguranca)
            ->setTipoDoc($tipoDoc)
            ->setUltDescontoComercialCompra($ultDescontoComercialCompra)
            ->setUltDespesaAdicionalCompra($ultDespesaAdicionalCompra)
            ->setUnidadeCompra($unidadeCompra)
            ->setVersaoUltAct($versaoUltAct);
    }
    /**
     * Get Artigo 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 getArtigo()
    {
        return isset($this->Artigo) ? $this->Artigo : null;
    }
    /**
     * Set Artigo 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 $artigo
     * @return \StructType\ArtigoFornecedorERP
     */
    public function setArtigo($artigo = null)
    {
        // validation for constraint: string
        if (!is_null($artigo) && !is_string($artigo)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($artigo)), __LINE__);
        }
        if (is_null($artigo) || (is_array($artigo) && empty($artigo))) {
            unset($this->Artigo);
        } else {
            $this->Artigo = $artigo;
        }
        return $this;
    }
    /**
     * Get Classificacao 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 getClassificacao()
    {
        return isset($this->Classificacao) ? $this->Classificacao : null;
    }
    /**
     * Set Classificacao 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 $classificacao
     * @return \StructType\ArtigoFornecedorERP
     */
    public function setClassificacao($classificacao = null)
    {
        // validation for constraint: int
        if (!is_null($classificacao) && !is_numeric($classificacao)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a numeric value, "%s" given', gettype($classificacao)), __LINE__);
        }
        if (is_null($classificacao) || (is_array($classificacao) && empty($classificacao))) {
            unset($this->Classificacao);
        } else {
            $this->Classificacao = $classificacao;
        }
        return $this;
    }
    /**
     * Get CodBarras 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 getCodBarras()
    {
        return isset($this->CodBarras) ? $this->CodBarras : null;
    }
    /**
     * Set CodBarras 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 $codBarras
     * @return \StructType\ArtigoFornecedorERP
     */
    public function setCodBarras($codBarras = null)
    {
        // validation for constraint: string
        if (!is_null($codBarras) && !is_string($codBarras)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($codBarras)), __LINE__);
        }
        if (is_null($codBarras) || (is_array($codBarras) && empty($codBarras))) {
            unset($this->CodBarras);
        } else {
            $this->CodBarras = $codBarras;
        }
        return $this;
    }
    /**
     * Get CodIva 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 getCodIva()
    {
        return isset($this->CodIva) ? $this->CodIva : null;
    }
    /**
     * Set CodIva 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 $codIva
     * @return \StructType\ArtigoFornecedorERP
     */
    public function setCodIva($codIva = null)
    {
        // validation for constraint: string
        if (!is_null($codIva) && !is_string($codIva)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($codIva)), __LINE__);
        }
        if (is_null($codIva) || (is_array($codIva) && empty($codIva))) {
            unset($this->CodIva);
        } else {
            $this->CodIva = $codIva;
        }
        return $this;
    }
    /**
     * Get DatUltEntrada 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 getDatUltEntrada()
    {
        return isset($this->DatUltEntrada) ? $this->DatUltEntrada : null;
    }
    /**
     * Set DatUltEntrada 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 $datUltEntrada
     * @return \StructType\ArtigoFornecedorERP
     */
    public function setDatUltEntrada($datUltEntrada = null)
    {
        // validation for constraint: string
        if (!is_null($datUltEntrada) && !is_string($datUltEntrada)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($datUltEntrada)), __LINE__);
        }
        if (is_null($datUltEntrada) || (is_array($datUltEntrada) && empty($datUltEntrada))) {
            unset($this->DatUltEntrada);
        } else {
            $this->DatUltEntrada = $datUltEntrada;
        }
        return $this;
    }
    /**
     * Get DescFor 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 float|null
     */
    public function getDescFor()
    {
        return isset($this->DescFor) ? $this->DescFor : null;
    }
    /**
     * Set DescFor 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 float $descFor
     * @return \StructType\ArtigoFornecedorERP
     */
    public function setDescFor($descFor = null)
    {
        if (is_null($descFor) || (is_array($descFor) && empty($descFor))) {
            unset($this->DescFor);
        } else {
            $this->DescFor = $descFor;
        }
        return $this;
    }
    /**
     * Get DescricaoFor 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 getDescricaoFor()
    {
        return isset($this->DescricaoFor) ? $this->DescricaoFor : null;
    }
    /**
     * Set DescricaoFor 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 $descricaoFor
     * @return \StructType\ArtigoFornecedorERP
     */
    public function setDescricaoFor($descricaoFor = null)
    {
        // validation for constraint: string
        if (!is_null($descricaoFor) && !is_string($descricaoFor)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($descricaoFor)), __LINE__);
        }
        if (is_null($descricaoFor) || (is_array($descricaoFor) && empty($descricaoFor))) {
            unset($this->DescricaoFor);
        } else {
            $this->DescricaoFor = $descricaoFor;
        }
        return $this;
    }
    /**
     * Get FactorConvCompra 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 float|null
     */
    public function getFactorConvCompra()
    {
        return isset($this->FactorConvCompra) ? $this->FactorConvCompra : null;
    }
    /**
     * Set FactorConvCompra 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 float $factorConvCompra
     * @return \StructType\ArtigoFornecedorERP
     */
    public function setFactorConvCompra($factorConvCompra = null)
    {
        if (is_null($factorConvCompra) || (is_array($factorConvCompra) && empty($factorConvCompra))) {
            unset($this->FactorConvCompra);
        } else {
            $this->FactorConvCompra = $factorConvCompra;
        }
        return $this;
    }
    /**
     * Get Fornecedor 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 getFornecedor()
    {
        return isset($this->Fornecedor) ? $this->Fornecedor : null;
    }
    /**
     * Set Fornecedor 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 $fornecedor
     * @return \StructType\ArtigoFornecedorERP
     */
    public function setFornecedor($fornecedor = null)
    {
        // validation for constraint: string
        if (!is_null($fornecedor) && !is_string($fornecedor)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($fornecedor)), __LINE__);
        }
        if (is_null($fornecedor) || (is_array($fornecedor) && empty($fornecedor))) {
            unset($this->Fornecedor);
        } else {
            $this->Fornecedor = $fornecedor;
        }
        return $this;
    }
    /**
     * Get IvaIncluido value
     * @return bool|null
     */
    public function getIvaIncluido()
    {
        return $this->IvaIncluido;
    }
    /**
     * Set IvaIncluido value
     * @param bool $ivaIncluido
     * @return \StructType\ArtigoFornecedorERP
     */
    public function setIvaIncluido($ivaIncluido = null)
    {
        // validation for constraint: boolean
        if (!is_null($ivaIncluido) && !is_bool($ivaIncluido)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($ivaIncluido)), __LINE__);
        }
        $this->IvaIncluido = $ivaIncluido;
        return $this;
    }
    /**
     * Get Moeda 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 getMoeda()
    {
        return isset($this->Moeda) ? $this->Moeda : null;
    }
    /**
     * Set Moeda 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 $moeda
     * @return \StructType\ArtigoFornecedorERP
     */
    public function setMoeda($moeda = null)
    {
        // validation for constraint: string
        if (!is_null($moeda) && !is_string($moeda)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($moeda)), __LINE__);
        }
        if (is_null($moeda) || (is_array($moeda) && empty($moeda))) {
            unset($this->Moeda);
        } else {
            $this->Moeda = $moeda;
        }
        return $this;
    }
    /**
     * Get NumDoc 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 getNumDoc()
    {
        return isset($this->NumDoc) ? $this->NumDoc : null;
    }
    /**
     * Set NumDoc 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 $numDoc
     * @return \StructType\ArtigoFornecedorERP
     */
    public function setNumDoc($numDoc = null)
    {
        // validation for constraint: int
        if (!is_null($numDoc) && !is_numeric($numDoc)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a numeric value, "%s" given', gettype($numDoc)), __LINE__);
        }
        if (is_null($numDoc) || (is_array($numDoc) && empty($numDoc))) {
            unset($this->NumDoc);
        } else {
            $this->NumDoc = $numDoc;
        }
        return $this;
    }
    /**
     * Get PrCustoUltimo 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 float|null
     */
    public function getPrCustoUltimo()
    {
        return isset($this->PrCustoUltimo) ? $this->PrCustoUltimo : null;
    }
    /**
     * Set PrCustoUltimo 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 float $prCustoUltimo
     * @return \StructType\ArtigoFornecedorERP
     */
    public function setPrCustoUltimo($prCustoUltimo = null)
    {
        if (is_null($prCustoUltimo) || (is_array($prCustoUltimo) && empty($prCustoUltimo))) {
            unset($this->PrCustoUltimo);
        } else {
            $this->PrCustoUltimo = $prCustoUltimo;
        }
        return $this;
    }
    /**
     * Get PrazoEntrega 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 getPrazoEntrega()
    {
        return isset($this->PrazoEntrega) ? $this->PrazoEntrega : null;
    }
    /**
     * Set PrazoEntrega 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 $prazoEntrega
     * @return \StructType\ArtigoFornecedorERP
     */
    public function setPrazoEntrega($prazoEntrega = null)
    {
        // validation for constraint: int
        if (!is_null($prazoEntrega) && !is_numeric($prazoEntrega)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a numeric value, "%s" given', gettype($prazoEntrega)), __LINE__);
        }
        if (is_null($prazoEntrega) || (is_array($prazoEntrega) && empty($prazoEntrega))) {
            unset($this->PrazoEntrega);
        } else {
            $this->PrazoEntrega = $prazoEntrega;
        }
        return $this;
    }
    /**
     * Get PrecoUltEncomenda 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 float|null
     */
    public function getPrecoUltEncomenda()
    {
        return isset($this->PrecoUltEncomenda) ? $this->PrecoUltEncomenda : null;
    }
    /**
     * Set PrecoUltEncomenda 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 float $precoUltEncomenda
     * @return \StructType\ArtigoFornecedorERP
     */
    public function setPrecoUltEncomenda($precoUltEncomenda = null)
    {
        if (is_null($precoUltEncomenda) || (is_array($precoUltEncomenda) && empty($precoUltEncomenda))) {
            unset($this->PrecoUltEncomenda);
        } else {
            $this->PrecoUltEncomenda = $precoUltEncomenda;
        }
        return $this;
    }
    /**
     * Get Protegida value
     * @return bool|null
     */
    public function getProtegida()
    {
        return $this->Protegida;
    }
    /**
     * Set Protegida value
     * @param bool $protegida
     * @return \StructType\ArtigoFornecedorERP
     */
    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 ReferenciaFor 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 getReferenciaFor()
    {
        return isset($this->ReferenciaFor) ? $this->ReferenciaFor : null;
    }
    /**
     * Set ReferenciaFor 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 $referenciaFor
     * @return \StructType\ArtigoFornecedorERP
     */
    public function setReferenciaFor($referenciaFor = null)
    {
        // validation for constraint: string
        if (!is_null($referenciaFor) && !is_string($referenciaFor)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($referenciaFor)), __LINE__);
        }
        if (is_null($referenciaFor) || (is_array($referenciaFor) && empty($referenciaFor))) {
            unset($this->ReferenciaFor);
        } else {
            $this->ReferenciaFor = $referenciaFor;
        }
        return $this;
    }
    /**
     * Get SerieDoc 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 getSerieDoc()
    {
        return isset($this->SerieDoc) ? $this->SerieDoc : null;
    }
    /**
     * Set SerieDoc 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 $serieDoc
     * @return \StructType\ArtigoFornecedorERP
     */
    public function setSerieDoc($serieDoc = null)
    {
        // validation for constraint: string
        if (!is_null($serieDoc) && !is_string($serieDoc)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($serieDoc)), __LINE__);
        }
        if (is_null($serieDoc) || (is_array($serieDoc) && empty($serieDoc))) {
            unset($this->SerieDoc);
        } else {
            $this->SerieDoc = $serieDoc;
        }
        return $this;
    }
    /**
     * Get TaxaIva 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 float|null
     */
    public function getTaxaIva()
    {
        return isset($this->TaxaIva) ? $this->TaxaIva : null;
    }
    /**
     * Set TaxaIva 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 float $taxaIva
     * @return \StructType\ArtigoFornecedorERP
     */
    public function setTaxaIva($taxaIva = null)
    {
        if (is_null($taxaIva) || (is_array($taxaIva) && empty($taxaIva))) {
            unset($this->TaxaIva);
        } else {
            $this->TaxaIva = $taxaIva;
        }
        return $this;
    }
    /**
     * Get TempoSeguranca 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 getTempoSeguranca()
    {
        return isset($this->TempoSeguranca) ? $this->TempoSeguranca : null;
    }
    /**
     * Set TempoSeguranca 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 $tempoSeguranca
     * @return \StructType\ArtigoFornecedorERP
     */
    public function setTempoSeguranca($tempoSeguranca = null)
    {
        // validation for constraint: int
        if (!is_null($tempoSeguranca) && !is_numeric($tempoSeguranca)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a numeric value, "%s" given', gettype($tempoSeguranca)), __LINE__);
        }
        if (is_null($tempoSeguranca) || (is_array($tempoSeguranca) && empty($tempoSeguranca))) {
            unset($this->TempoSeguranca);
        } else {
            $this->TempoSeguranca = $tempoSeguranca;
        }
        return $this;
    }
    /**
     * Get TipoDoc 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 getTipoDoc()
    {
        return isset($this->TipoDoc) ? $this->TipoDoc : null;
    }
    /**
     * Set TipoDoc 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 $tipoDoc
     * @return \StructType\ArtigoFornecedorERP
     */
    public function setTipoDoc($tipoDoc = null)
    {
        // validation for constraint: string
        if (!is_null($tipoDoc) && !is_string($tipoDoc)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($tipoDoc)), __LINE__);
        }
        if (is_null($tipoDoc) || (is_array($tipoDoc) && empty($tipoDoc))) {
            unset($this->TipoDoc);
        } else {
            $this->TipoDoc = $tipoDoc;
        }
        return $this;
    }
    /**
     * Get UltDescontoComercialCompra 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 float|null
     */
    public function getUltDescontoComercialCompra()
    {
        return isset($this->UltDescontoComercialCompra) ? $this->UltDescontoComercialCompra : null;
    }
    /**
     * Set UltDescontoComercialCompra 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 float $ultDescontoComercialCompra
     * @return \StructType\ArtigoFornecedorERP
     */
    public function setUltDescontoComercialCompra($ultDescontoComercialCompra = null)
    {
        if (is_null($ultDescontoComercialCompra) || (is_array($ultDescontoComercialCompra) && empty($ultDescontoComercialCompra))) {
            unset($this->UltDescontoComercialCompra);
        } else {
            $this->UltDescontoComercialCompra = $ultDescontoComercialCompra;
        }
        return $this;
    }
    /**
     * Get UltDespesaAdicionalCompra 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 float|null
     */
    public function getUltDespesaAdicionalCompra()
    {
        return isset($this->UltDespesaAdicionalCompra) ? $this->UltDespesaAdicionalCompra : null;
    }
    /**
     * Set UltDespesaAdicionalCompra 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 float $ultDespesaAdicionalCompra
     * @return \StructType\ArtigoFornecedorERP
     */
    public function setUltDespesaAdicionalCompra($ultDespesaAdicionalCompra = null)
    {
        if (is_null($ultDespesaAdicionalCompra) || (is_array($ultDespesaAdicionalCompra) && empty($ultDespesaAdicionalCompra))) {
            unset($this->UltDespesaAdicionalCompra);
        } else {
            $this->UltDespesaAdicionalCompra = $ultDespesaAdicionalCompra;
        }
        return $this;
    }
    /**
     * Get UnidadeCompra 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 getUnidadeCompra()
    {
        return isset($this->UnidadeCompra) ? $this->UnidadeCompra : null;
    }
    /**
     * Set UnidadeCompra 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 $unidadeCompra
     * @return \StructType\ArtigoFornecedorERP
     */
    public function setUnidadeCompra($unidadeCompra = null)
    {
        // validation for constraint: string
        if (!is_null($unidadeCompra) && !is_string($unidadeCompra)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($unidadeCompra)), __LINE__);
        }
        if (is_null($unidadeCompra) || (is_array($unidadeCompra) && empty($unidadeCompra))) {
            unset($this->UnidadeCompra);
        } else {
            $this->UnidadeCompra = $unidadeCompra;
        }
        return $this;
    }
    /**
     * Get VersaoUltAct value
     * @return string|null
     */
    public function getVersaoUltAct()
    {
        return $this->VersaoUltAct;
    }
    /**
     * Set VersaoUltAct value
     * @param string $versaoUltAct
     * @return \StructType\ArtigoFornecedorERP
     */
    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\ArtigoFornecedorERP
     */
    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__;
    }
}
