<?php

namespace StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for CabecDocERP StructType
 * Meta informations extracted from the WSDL
 * - nillable: true
 * - type: tns:CabecDocERP
 * @subpackage Structs
 */
class CabecDocERP extends AbstractStructBase
{
    /**
     * The AnoCBL
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var int
     */
    public $AnoCBL;
    /**
     * The Arredondamento
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var int
     */
    public $Arredondamento;
    /**
     * The ArredondamentoIva
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var int
     */
    public $ArredondamentoIva;
    /**
     * The Assinatura
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Assinatura;
    /**
     * The B2BEnvioNaGravacao
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $B2BEnvioNaGravacao;
    /**
     * The B2BTrataTrans
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $B2BTrataTrans;
    /**
     * The CAE
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $CAE;
    /**
     * The CDU_CodigoLocalizacao
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $CDU_CodigoLocalizacao;
    /**
     * The CDU_DataDePagamentoMB
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $CDU_DataDePagamentoMB;
    /**
     * The CDU_DocumentoDestinoMB
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $CDU_DocumentoDestinoMB;
    /**
     * The CDU_DocumentoPagoMB
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $CDU_DocumentoPagoMB;
    /**
     * The CDU_EntidadeMB
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $CDU_EntidadeMB;
    /**
     * The CDU_Estabelecimento
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $CDU_Estabelecimento;
    /**
     * The CDU_ReferenciaMB
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $CDU_ReferenciaMB;
    /**
     * The CDU_UtilizadorDePagamentoMB
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $CDU_UtilizadorDePagamentoMB;
    /**
     * The Cambio
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var float
     */
    public $Cambio;
    /**
     * The CambioADataDoc
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $CambioADataDoc;
    /**
     * The CambioMAlt
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var float
     */
    public $CambioMAlt;
    /**
     * The CambioMBase
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var float
     */
    public $CambioMBase;
    /**
     * The Certificado
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Certificado;
    /**
     * The CertificadoRecuperacao
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $CertificadoRecuperacao;
    /**
     * The CodPostal
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $CodPostal;
    /**
     * The CodPostalCarga
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $CodPostalCarga;
    /**
     * The CodPostalEntrega
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $CodPostalEntrega;
    /**
     * The CodPostalLocalidade
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $CodPostalLocalidade;
    /**
     * The CodPostalLocalidadeCarga
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $CodPostalLocalidadeCarga;
    /**
     * The CodPostalLocalidadeEntrega
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $CodPostalLocalidadeEntrega;
    /**
     * The CodigoPostalFac
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $CodigoPostalFac;
    /**
     * The CondPag
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $CondPag;
    /**
     * The ContaDomiciliacao
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $ContaDomiciliacao;
    /**
     * The ContratoID
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true | true
     * - pattern: [\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}
     * - type: tns:guid
     * @var string
     */
    public $ContratoID;
    /**
     * The DE_IL
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $DE_IL;
    /**
     * The Data
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Data;
    /**
     * The DataCarga
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $DataCarga;
    /**
     * The DataDescarga
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $DataDescarga;
    /**
     * The DataGravacao
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $DataGravacao;
    /**
     * The DataUltimaActualizacao
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $DataUltimaActualizacao;
    /**
     * The DataVencimento
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $DataVencimento;
    /**
     * The DescEntidade
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var float
     */
    public $DescEntidade;
    /**
     * The DescPag
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var float
     */
    public $DescPag;
    /**
     * The Diario
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Diario;
    /**
     * The Distrito
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Distrito;
    /**
     * The DistritoCarga
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $DistritoCarga;
    /**
     * The DistritoEntrega
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $DistritoEntrega;
    /**
     * The DistritoFac
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $DistritoFac;
    /**
     * The DocsOriginais
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $DocsOriginais;
    /**
     * The Documento
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Documento;
    /**
     * The Entidade
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Entidade;
    /**
     * The EntidadeDescarga
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $EntidadeDescarga;
    /**
     * The EntidadeEntrega
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $EntidadeEntrega;
    /**
     * The EntidadeFac
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $EntidadeFac;
    /**
     * The EspacoFiscal
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var int
     */
    public $EspacoFiscal;
    /**
     * The Estado
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \StructType\CabecDocStatusERP
     */
    public $Estado;
    /**
     * The Filial
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Filial;
    /**
     * The FluxoDocumental
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $FluxoDocumental;
    /**
     * The Grupo
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Grupo;
    /**
     * The HoraCarga
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $HoraCarga;
    /**
     * The HoraDescarga
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $HoraDescarga;
    /**
     * The IDAvenca
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true | true
     * - pattern: [\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}
     * - type: tns:guid
     * @var string
     */
    public $IDAvenca;
    /**
     * The IDDiarioCaixa
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true | true
     * - pattern: [\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}
     * - type: tns:guid
     * @var string
     */
    public $IDDiarioCaixa;
    /**
     * The IDRegularizacao
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true | true
     * - pattern: [\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}
     * - type: tns:guid
     * @var string
     */
    public $IDRegularizacao;
    /**
     * The Id
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * - pattern: [\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}
     * - type: tns:guid
     * @var string
     */
    public $Id;
    /**
     * The IdCabecEstorno
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true | true
     * - pattern: [\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}
     * - type: tns:guid
     * @var string
     */
    public $IdCabecEstorno;
    /**
     * The IdCabecMovCbl
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true | true
     * - pattern: [\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}
     * - type: tns:guid
     * @var string
     */
    public $IdCabecMovCbl;
    /**
     * The IdCabecTesouraria
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true | true
     * - pattern: [\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}
     * - type: tns:guid
     * @var string
     */
    public $IdCabecTesouraria;
    /**
     * The IdDocB2B
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true | true
     * - pattern: [\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}
     * - type: tns:guid
     * @var string
     */
    public $IdDocB2B;
    /**
     * The IdDocOrigem
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true | true
     * - pattern: [\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}
     * - type: tns:guid
     * @var string
     */
    public $IdDocOrigem;
    /**
     * The IdGDOC
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true | true
     * - pattern: [\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}
     * - type: tns:guid
     * @var string
     */
    public $IdGDOC;
    /**
     * The IdOportunidade
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true | true
     * - pattern: [\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}
     * - type: tns:guid
     * @var string
     */
    public $IdOportunidade;
    /**
     * The IntrastatCondEnt
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $IntrastatCondEnt;
    /**
     * The IntrastatModoTransp
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $IntrastatModoTransp;
    /**
     * The IntrastatNatA
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $IntrastatNatA;
    /**
     * The IntrastatNatB
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $IntrastatNatB;
    /**
     * The IntrastatPorto
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $IntrastatPorto;
    /**
     * The IntrastatRegEstatistico
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $IntrastatRegEstatistico;
    /**
     * The Linhas
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \ArrayType\ArrayOfLinhasDocERP
     */
    public $Linhas;
    /**
     * The LocalCarga
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $LocalCarga;
    /**
     * The LocalDescarga
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $LocalDescarga;
    /**
     * The LocalOperacao
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $LocalOperacao;
    /**
     * The Localidade
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Localidade;
    /**
     * The LocalidadeCarga
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $LocalidadeCarga;
    /**
     * The LocalidadeCodigoPostalFac
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $LocalidadeCodigoPostalFac;
    /**
     * The LocalidadeEntrega
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $LocalidadeEntrega;
    /**
     * The LocalidadeFac
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $LocalidadeFac;
    /**
     * The MargemDoc
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var float
     */
    public $MargemDoc;
    /**
     * The Matricula
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Matricula;
    /**
     * The ModoExp
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $ModoExp;
    /**
     * The ModoPag
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $ModoPag;
    /**
     * The ModuloOrigem
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $ModuloOrigem;
    /**
     * The Moeda
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Moeda;
    /**
     * The MoedaDaUEM
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $MoedaDaUEM;
    /**
     * The Morada
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Morada;
    /**
     * The Morada2
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Morada2;
    /**
     * The Morada2Carga
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Morada2Carga;
    /**
     * The Morada2Entrega
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Morada2Entrega;
    /**
     * The Morada2Fac
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Morada2Fac;
    /**
     * The MoradaAltEntrega
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $MoradaAltEntrega;
    /**
     * The MoradaCarga
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $MoradaCarga;
    /**
     * The MoradaEntrega
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $MoradaEntrega;
    /**
     * The MoradaFac
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $MoradaFac;
    /**
     * The Nome
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Nome;
    /**
     * The NomeEntrega
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $NomeEntrega;
    /**
     * The NomeFac
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $NomeFac;
    /**
     * The NumContribuinte
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $NumContribuinte;
    /**
     * The NumContribuinteFac
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $NumContribuinteFac;
    /**
     * The NumDiario
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var int
     */
    public $NumDiario;
    /**
     * The NumDoc
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var int
     */
    public $NumDoc;
    /**
     * The NumProposta
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var int
     */
    public $NumProposta;
    /**
     * The ObraID
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true | true
     * - pattern: [\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}
     * - type: tns:guid
     * @var string
     */
    public $ObraID;
    /**
     * The Observacoes
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Observacoes;
    /**
     * The Origem
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Origem;
    /**
     * The OrigemPOS
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $OrigemPOS;
    /**
     * The Pais
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Pais;
    /**
     * The PaisCarga
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $PaisCarga;
    /**
     * The PaisEntrega
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $PaisEntrega;
    /**
     * The PaisFac
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $PaisFac;
    /**
     * The PendentePorLinha
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $PendentePorLinha;
    /**
     * The PercentagemRetencao
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var float
     */
    public $PercentagemRetencao;
    /**
     * The Posto
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Posto;
    /**
     * The Protegida
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $Protegida;
    /**
     * The RefDocOrig
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $RefDocOrig;
    /**
     * The RefSerieDocOrig
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $RefSerieDocOrig;
    /**
     * The RefTipoDocOrig
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $RefTipoDocOrig;
    /**
     * The Referencia
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Referencia;
    /**
     * The RegimeIva
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $RegimeIva;
    /**
     * The RegimeIvaReembolsos
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var int
     */
    public $RegimeIvaReembolsos;
    /**
     * The Requisicao
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Requisicao;
    /**
     * The RespCobranca
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $RespCobranca;
    /**
     * The Responsavel
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Responsavel;
    /**
     * The Resumo
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $Resumo;
    /**
     * The Seccao
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Seccao;
    /**
     * The Serie
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Serie;
    /**
     * The TipoDoc
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $TipoDoc;
    /**
     * The TipoEntidade
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $TipoEntidade;
    /**
     * The TipoEntidadeEntrega
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $TipoEntidadeEntrega;
    /**
     * The TipoEntidadeFac
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $TipoEntidadeFac;
    /**
     * The TipoFiscal
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $TipoFiscal;
    /**
     * The TipoLancamento
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $TipoLancamento;
    /**
     * The TipoOperacao
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $TipoOperacao;
    /**
     * The TotalDesc
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var float
     */
    public $TotalDesc;
    /**
     * The TotalDocumento
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var float
     */
    public $TotalDocumento;
    /**
     * The TotalEcotaxa
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var float
     */
    public $TotalEcotaxa;
    /**
     * The TotalIEC
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var float
     */
    public $TotalIEC;
    /**
     * The TotalIS
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var float
     */
    public $TotalIS;
    /**
     * The TotalIva
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var float
     */
    public $TotalIva;
    /**
     * The TotalMerc
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var float
     */
    public $TotalMerc;
    /**
     * The TotalOutros
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var float
     */
    public $TotalOutros;
    /**
     * The TotalRecargo
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var float
     */
    public $TotalRecargo;
    /**
     * The TotalRetencao
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var float
     */
    public $TotalRetencao;
    /**
     * The TotalRetencaoGarantia
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var float
     */
    public $TotalRetencaoGarantia;
    /**
     * The TrataIvaCaixa
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $TrataIvaCaixa;
    /**
     * The UtilizaMoradaAltEntrega
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $UtilizaMoradaAltEntrega;
    /**
     * The Utilizador
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Utilizador;
    /**
     * The Versao
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Versao;
    /**
     * The VersaoAssinatura
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $VersaoAssinatura;
    /**
     * The VersaoUltAct
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $VersaoUltAct;
    /**
     * The WBSItem
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $WBSItem;
    /**
     * The Zona
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Zona;
    /**
     * Constructor method for CabecDocERP
     * @uses CabecDocERP::setAnoCBL()
     * @uses CabecDocERP::setArredondamento()
     * @uses CabecDocERP::setArredondamentoIva()
     * @uses CabecDocERP::setAssinatura()
     * @uses CabecDocERP::setB2BEnvioNaGravacao()
     * @uses CabecDocERP::setB2BTrataTrans()
     * @uses CabecDocERP::setCAE()
     * @uses CabecDocERP::setCDU_CodigoLocalizacao()
     * @uses CabecDocERP::setCDU_DataDePagamentoMB()
     * @uses CabecDocERP::setCDU_DocumentoDestinoMB()
     * @uses CabecDocERP::setCDU_DocumentoPagoMB()
     * @uses CabecDocERP::setCDU_EntidadeMB()
     * @uses CabecDocERP::setCDU_Estabelecimento()
     * @uses CabecDocERP::setCDU_ReferenciaMB()
     * @uses CabecDocERP::setCDU_UtilizadorDePagamentoMB()
     * @uses CabecDocERP::setCambio()
     * @uses CabecDocERP::setCambioADataDoc()
     * @uses CabecDocERP::setCambioMAlt()
     * @uses CabecDocERP::setCambioMBase()
     * @uses CabecDocERP::setCertificado()
     * @uses CabecDocERP::setCertificadoRecuperacao()
     * @uses CabecDocERP::setCodPostal()
     * @uses CabecDocERP::setCodPostalCarga()
     * @uses CabecDocERP::setCodPostalEntrega()
     * @uses CabecDocERP::setCodPostalLocalidade()
     * @uses CabecDocERP::setCodPostalLocalidadeCarga()
     * @uses CabecDocERP::setCodPostalLocalidadeEntrega()
     * @uses CabecDocERP::setCodigoPostalFac()
     * @uses CabecDocERP::setCondPag()
     * @uses CabecDocERP::setContaDomiciliacao()
     * @uses CabecDocERP::setContratoID()
     * @uses CabecDocERP::setDE_IL()
     * @uses CabecDocERP::setData()
     * @uses CabecDocERP::setDataCarga()
     * @uses CabecDocERP::setDataDescarga()
     * @uses CabecDocERP::setDataGravacao()
     * @uses CabecDocERP::setDataUltimaActualizacao()
     * @uses CabecDocERP::setDataVencimento()
     * @uses CabecDocERP::setDescEntidade()
     * @uses CabecDocERP::setDescPag()
     * @uses CabecDocERP::setDiario()
     * @uses CabecDocERP::setDistrito()
     * @uses CabecDocERP::setDistritoCarga()
     * @uses CabecDocERP::setDistritoEntrega()
     * @uses CabecDocERP::setDistritoFac()
     * @uses CabecDocERP::setDocsOriginais()
     * @uses CabecDocERP::setDocumento()
     * @uses CabecDocERP::setEntidade()
     * @uses CabecDocERP::setEntidadeDescarga()
     * @uses CabecDocERP::setEntidadeEntrega()
     * @uses CabecDocERP::setEntidadeFac()
     * @uses CabecDocERP::setEspacoFiscal()
     * @uses CabecDocERP::setEstado()
     * @uses CabecDocERP::setFilial()
     * @uses CabecDocERP::setFluxoDocumental()
     * @uses CabecDocERP::setGrupo()
     * @uses CabecDocERP::setHoraCarga()
     * @uses CabecDocERP::setHoraDescarga()
     * @uses CabecDocERP::setIDAvenca()
     * @uses CabecDocERP::setIDDiarioCaixa()
     * @uses CabecDocERP::setIDRegularizacao()
     * @uses CabecDocERP::setId()
     * @uses CabecDocERP::setIdCabecEstorno()
     * @uses CabecDocERP::setIdCabecMovCbl()
     * @uses CabecDocERP::setIdCabecTesouraria()
     * @uses CabecDocERP::setIdDocB2B()
     * @uses CabecDocERP::setIdDocOrigem()
     * @uses CabecDocERP::setIdGDOC()
     * @uses CabecDocERP::setIdOportunidade()
     * @uses CabecDocERP::setIntrastatCondEnt()
     * @uses CabecDocERP::setIntrastatModoTransp()
     * @uses CabecDocERP::setIntrastatNatA()
     * @uses CabecDocERP::setIntrastatNatB()
     * @uses CabecDocERP::setIntrastatPorto()
     * @uses CabecDocERP::setIntrastatRegEstatistico()
     * @uses CabecDocERP::setLinhas()
     * @uses CabecDocERP::setLocalCarga()
     * @uses CabecDocERP::setLocalDescarga()
     * @uses CabecDocERP::setLocalOperacao()
     * @uses CabecDocERP::setLocalidade()
     * @uses CabecDocERP::setLocalidadeCarga()
     * @uses CabecDocERP::setLocalidadeCodigoPostalFac()
     * @uses CabecDocERP::setLocalidadeEntrega()
     * @uses CabecDocERP::setLocalidadeFac()
     * @uses CabecDocERP::setMargemDoc()
     * @uses CabecDocERP::setMatricula()
     * @uses CabecDocERP::setModoExp()
     * @uses CabecDocERP::setModoPag()
     * @uses CabecDocERP::setModuloOrigem()
     * @uses CabecDocERP::setMoeda()
     * @uses CabecDocERP::setMoedaDaUEM()
     * @uses CabecDocERP::setMorada()
     * @uses CabecDocERP::setMorada2()
     * @uses CabecDocERP::setMorada2Carga()
     * @uses CabecDocERP::setMorada2Entrega()
     * @uses CabecDocERP::setMorada2Fac()
     * @uses CabecDocERP::setMoradaAltEntrega()
     * @uses CabecDocERP::setMoradaCarga()
     * @uses CabecDocERP::setMoradaEntrega()
     * @uses CabecDocERP::setMoradaFac()
     * @uses CabecDocERP::setNome()
     * @uses CabecDocERP::setNomeEntrega()
     * @uses CabecDocERP::setNomeFac()
     * @uses CabecDocERP::setNumContribuinte()
     * @uses CabecDocERP::setNumContribuinteFac()
     * @uses CabecDocERP::setNumDiario()
     * @uses CabecDocERP::setNumDoc()
     * @uses CabecDocERP::setNumProposta()
     * @uses CabecDocERP::setObraID()
     * @uses CabecDocERP::setObservacoes()
     * @uses CabecDocERP::setOrigem()
     * @uses CabecDocERP::setOrigemPOS()
     * @uses CabecDocERP::setPais()
     * @uses CabecDocERP::setPaisCarga()
     * @uses CabecDocERP::setPaisEntrega()
     * @uses CabecDocERP::setPaisFac()
     * @uses CabecDocERP::setPendentePorLinha()
     * @uses CabecDocERP::setPercentagemRetencao()
     * @uses CabecDocERP::setPosto()
     * @uses CabecDocERP::setProtegida()
     * @uses CabecDocERP::setRefDocOrig()
     * @uses CabecDocERP::setRefSerieDocOrig()
     * @uses CabecDocERP::setRefTipoDocOrig()
     * @uses CabecDocERP::setReferencia()
     * @uses CabecDocERP::setRegimeIva()
     * @uses CabecDocERP::setRegimeIvaReembolsos()
     * @uses CabecDocERP::setRequisicao()
     * @uses CabecDocERP::setRespCobranca()
     * @uses CabecDocERP::setResponsavel()
     * @uses CabecDocERP::setResumo()
     * @uses CabecDocERP::setSeccao()
     * @uses CabecDocERP::setSerie()
     * @uses CabecDocERP::setTipoDoc()
     * @uses CabecDocERP::setTipoEntidade()
     * @uses CabecDocERP::setTipoEntidadeEntrega()
     * @uses CabecDocERP::setTipoEntidadeFac()
     * @uses CabecDocERP::setTipoFiscal()
     * @uses CabecDocERP::setTipoLancamento()
     * @uses CabecDocERP::setTipoOperacao()
     * @uses CabecDocERP::setTotalDesc()
     * @uses CabecDocERP::setTotalDocumento()
     * @uses CabecDocERP::setTotalEcotaxa()
     * @uses CabecDocERP::setTotalIEC()
     * @uses CabecDocERP::setTotalIS()
     * @uses CabecDocERP::setTotalIva()
     * @uses CabecDocERP::setTotalMerc()
     * @uses CabecDocERP::setTotalOutros()
     * @uses CabecDocERP::setTotalRecargo()
     * @uses CabecDocERP::setTotalRetencao()
     * @uses CabecDocERP::setTotalRetencaoGarantia()
     * @uses CabecDocERP::setTrataIvaCaixa()
     * @uses CabecDocERP::setUtilizaMoradaAltEntrega()
     * @uses CabecDocERP::setUtilizador()
     * @uses CabecDocERP::setVersao()
     * @uses CabecDocERP::setVersaoAssinatura()
     * @uses CabecDocERP::setVersaoUltAct()
     * @uses CabecDocERP::setWBSItem()
     * @uses CabecDocERP::setZona()
     * @param int $anoCBL
     * @param int $arredondamento
     * @param int $arredondamentoIva
     * @param string $assinatura
     * @param bool $b2BEnvioNaGravacao
     * @param bool $b2BTrataTrans
     * @param string $cAE
     * @param string $cDU_CodigoLocalizacao
     * @param string $cDU_DataDePagamentoMB
     * @param string $cDU_DocumentoDestinoMB
     * @param bool $cDU_DocumentoPagoMB
     * @param string $cDU_EntidadeMB
     * @param string $cDU_Estabelecimento
     * @param string $cDU_ReferenciaMB
     * @param string $cDU_UtilizadorDePagamentoMB
     * @param float $cambio
     * @param bool $cambioADataDoc
     * @param float $cambioMAlt
     * @param float $cambioMBase
     * @param string $certificado
     * @param string $certificadoRecuperacao
     * @param string $codPostal
     * @param string $codPostalCarga
     * @param string $codPostalEntrega
     * @param string $codPostalLocalidade
     * @param string $codPostalLocalidadeCarga
     * @param string $codPostalLocalidadeEntrega
     * @param string $codigoPostalFac
     * @param string $condPag
     * @param string $contaDomiciliacao
     * @param string $contratoID
     * @param string $dE_IL
     * @param string $data
     * @param string $dataCarga
     * @param string $dataDescarga
     * @param string $dataGravacao
     * @param string $dataUltimaActualizacao
     * @param string $dataVencimento
     * @param float $descEntidade
     * @param float $descPag
     * @param string $diario
     * @param string $distrito
     * @param string $distritoCarga
     * @param string $distritoEntrega
     * @param string $distritoFac
     * @param string $docsOriginais
     * @param string $documento
     * @param string $entidade
     * @param string $entidadeDescarga
     * @param string $entidadeEntrega
     * @param string $entidadeFac
     * @param int $espacoFiscal
     * @param \StructType\CabecDocStatusERP $estado
     * @param string $filial
     * @param string $fluxoDocumental
     * @param string $grupo
     * @param string $horaCarga
     * @param string $horaDescarga
     * @param string $iDAvenca
     * @param string $iDDiarioCaixa
     * @param string $iDRegularizacao
     * @param string $id
     * @param string $idCabecEstorno
     * @param string $idCabecMovCbl
     * @param string $idCabecTesouraria
     * @param string $idDocB2B
     * @param string $idDocOrigem
     * @param string $idGDOC
     * @param string $idOportunidade
     * @param string $intrastatCondEnt
     * @param string $intrastatModoTransp
     * @param string $intrastatNatA
     * @param string $intrastatNatB
     * @param string $intrastatPorto
     * @param string $intrastatRegEstatistico
     * @param \ArrayType\ArrayOfLinhasDocERP $linhas
     * @param string $localCarga
     * @param string $localDescarga
     * @param string $localOperacao
     * @param string $localidade
     * @param string $localidadeCarga
     * @param string $localidadeCodigoPostalFac
     * @param string $localidadeEntrega
     * @param string $localidadeFac
     * @param float $margemDoc
     * @param string $matricula
     * @param string $modoExp
     * @param string $modoPag
     * @param string $moduloOrigem
     * @param string $moeda
     * @param bool $moedaDaUEM
     * @param string $morada
     * @param string $morada2
     * @param string $morada2Carga
     * @param string $morada2Entrega
     * @param string $morada2Fac
     * @param string $moradaAltEntrega
     * @param string $moradaCarga
     * @param string $moradaEntrega
     * @param string $moradaFac
     * @param string $nome
     * @param string $nomeEntrega
     * @param string $nomeFac
     * @param string $numContribuinte
     * @param string $numContribuinteFac
     * @param int $numDiario
     * @param int $numDoc
     * @param int $numProposta
     * @param string $obraID
     * @param string $observacoes
     * @param string $origem
     * @param bool $origemPOS
     * @param string $pais
     * @param string $paisCarga
     * @param string $paisEntrega
     * @param string $paisFac
     * @param bool $pendentePorLinha
     * @param float $percentagemRetencao
     * @param string $posto
     * @param bool $protegida
     * @param string $refDocOrig
     * @param string $refSerieDocOrig
     * @param string $refTipoDocOrig
     * @param string $referencia
     * @param string $regimeIva
     * @param int $regimeIvaReembolsos
     * @param string $requisicao
     * @param string $respCobranca
     * @param string $responsavel
     * @param bool $resumo
     * @param string $seccao
     * @param string $serie
     * @param string $tipoDoc
     * @param string $tipoEntidade
     * @param string $tipoEntidadeEntrega
     * @param string $tipoEntidadeFac
     * @param string $tipoFiscal
     * @param string $tipoLancamento
     * @param string $tipoOperacao
     * @param float $totalDesc
     * @param float $totalDocumento
     * @param float $totalEcotaxa
     * @param float $totalIEC
     * @param float $totalIS
     * @param float $totalIva
     * @param float $totalMerc
     * @param float $totalOutros
     * @param float $totalRecargo
     * @param float $totalRetencao
     * @param float $totalRetencaoGarantia
     * @param bool $trataIvaCaixa
     * @param bool $utilizaMoradaAltEntrega
     * @param string $utilizador
     * @param string $versao
     * @param string $versaoAssinatura
     * @param string $versaoUltAct
     * @param string $wBSItem
     * @param string $zona
     */
    public function __construct($anoCBL = null, $arredondamento = null, $arredondamentoIva = null, $assinatura = null, $b2BEnvioNaGravacao = null, $b2BTrataTrans = null, $cAE = null, $cDU_CodigoLocalizacao = null, $cDU_DataDePagamentoMB = null, $cDU_DocumentoDestinoMB = null, $cDU_DocumentoPagoMB = null, $cDU_EntidadeMB = null, $cDU_Estabelecimento = null, $cDU_ReferenciaMB = null, $cDU_UtilizadorDePagamentoMB = null, $cambio = null, $cambioADataDoc = null, $cambioMAlt = null, $cambioMBase = null, $certificado = null, $certificadoRecuperacao = null, $codPostal = null, $codPostalCarga = null, $codPostalEntrega = null, $codPostalLocalidade = null, $codPostalLocalidadeCarga = null, $codPostalLocalidadeEntrega = null, $codigoPostalFac = null, $condPag = null, $contaDomiciliacao = null, $contratoID = null, $dE_IL = null, $data = null, $dataCarga = null, $dataDescarga = null, $dataGravacao = null, $dataUltimaActualizacao = null, $dataVencimento = null, $descEntidade = null, $descPag = null, $diario = null, $distrito = null, $distritoCarga = null, $distritoEntrega = null, $distritoFac = null, $docsOriginais = null, $documento = null, $entidade = null, $entidadeDescarga = null, $entidadeEntrega = null, $entidadeFac = null, $espacoFiscal = null, \StructType\CabecDocStatusERP $estado = null, $filial = null, $fluxoDocumental = null, $grupo = null, $horaCarga = null, $horaDescarga = null, $iDAvenca = null, $iDDiarioCaixa = null, $iDRegularizacao = null, $id = null, $idCabecEstorno = null, $idCabecMovCbl = null, $idCabecTesouraria = null, $idDocB2B = null, $idDocOrigem = null, $idGDOC = null, $idOportunidade = null, $intrastatCondEnt = null, $intrastatModoTransp = null, $intrastatNatA = null, $intrastatNatB = null, $intrastatPorto = null, $intrastatRegEstatistico = null, \ArrayType\ArrayOfLinhasDocERP $linhas = null, $localCarga = null, $localDescarga = null, $localOperacao = null, $localidade = null, $localidadeCarga = null, $localidadeCodigoPostalFac = null, $localidadeEntrega = null, $localidadeFac = null, $margemDoc = null, $matricula = null, $modoExp = null, $modoPag = null, $moduloOrigem = null, $moeda = null, $moedaDaUEM = null, $morada = null, $morada2 = null, $morada2Carga = null, $morada2Entrega = null, $morada2Fac = null, $moradaAltEntrega = null, $moradaCarga = null, $moradaEntrega = null, $moradaFac = null, $nome = null, $nomeEntrega = null, $nomeFac = null, $numContribuinte = null, $numContribuinteFac = null, $numDiario = null, $numDoc = null, $numProposta = null, $obraID = null, $observacoes = null, $origem = null, $origemPOS = null, $pais = null, $paisCarga = null, $paisEntrega = null, $paisFac = null, $pendentePorLinha = null, $percentagemRetencao = null, $posto = null, $protegida = null, $refDocOrig = null, $refSerieDocOrig = null, $refTipoDocOrig = null, $referencia = null, $regimeIva = null, $regimeIvaReembolsos = null, $requisicao = null, $respCobranca = null, $responsavel = null, $resumo = null, $seccao = null, $serie = null, $tipoDoc = null, $tipoEntidade = null, $tipoEntidadeEntrega = null, $tipoEntidadeFac = null, $tipoFiscal = null, $tipoLancamento = null, $tipoOperacao = null, $totalDesc = null, $totalDocumento = null, $totalEcotaxa = null, $totalIEC = null, $totalIS = null, $totalIva = null, $totalMerc = null, $totalOutros = null, $totalRecargo = null, $totalRetencao = null, $totalRetencaoGarantia = null, $trataIvaCaixa = null, $utilizaMoradaAltEntrega = null, $utilizador = null, $versao = null, $versaoAssinatura = null, $versaoUltAct = null, $wBSItem = null, $zona = null)
    {
        $this
            ->setAnoCBL($anoCBL)
            ->setArredondamento($arredondamento)
            ->setArredondamentoIva($arredondamentoIva)
            ->setAssinatura($assinatura)
            ->setB2BEnvioNaGravacao($b2BEnvioNaGravacao)
            ->setB2BTrataTrans($b2BTrataTrans)
            ->setCAE($cAE)
            ->setCDU_CodigoLocalizacao($cDU_CodigoLocalizacao)
            ->setCDU_DataDePagamentoMB($cDU_DataDePagamentoMB)
            ->setCDU_DocumentoDestinoMB($cDU_DocumentoDestinoMB)
            ->setCDU_DocumentoPagoMB($cDU_DocumentoPagoMB)
            ->setCDU_EntidadeMB($cDU_EntidadeMB)
            ->setCDU_Estabelecimento($cDU_Estabelecimento)
            ->setCDU_ReferenciaMB($cDU_ReferenciaMB)
            ->setCDU_UtilizadorDePagamentoMB($cDU_UtilizadorDePagamentoMB)
            ->setCambio($cambio)
            ->setCambioADataDoc($cambioADataDoc)
            ->setCambioMAlt($cambioMAlt)
            ->setCambioMBase($cambioMBase)
            ->setCertificado($certificado)
            ->setCertificadoRecuperacao($certificadoRecuperacao)
            ->setCodPostal($codPostal)
            ->setCodPostalCarga($codPostalCarga)
            ->setCodPostalEntrega($codPostalEntrega)
            ->setCodPostalLocalidade($codPostalLocalidade)
            ->setCodPostalLocalidadeCarga($codPostalLocalidadeCarga)
            ->setCodPostalLocalidadeEntrega($codPostalLocalidadeEntrega)
            ->setCodigoPostalFac($codigoPostalFac)
            ->setCondPag($condPag)
            ->setContaDomiciliacao($contaDomiciliacao)
            ->setContratoID($contratoID)
            ->setDE_IL($dE_IL)
            ->setData($data)
            ->setDataCarga($dataCarga)
            ->setDataDescarga($dataDescarga)
            ->setDataGravacao($dataGravacao)
            ->setDataUltimaActualizacao($dataUltimaActualizacao)
            ->setDataVencimento($dataVencimento)
            ->setDescEntidade($descEntidade)
            ->setDescPag($descPag)
            ->setDiario($diario)
            ->setDistrito($distrito)
            ->setDistritoCarga($distritoCarga)
            ->setDistritoEntrega($distritoEntrega)
            ->setDistritoFac($distritoFac)
            ->setDocsOriginais($docsOriginais)
            ->setDocumento($documento)
            ->setEntidade($entidade)
            ->setEntidadeDescarga($entidadeDescarga)
            ->setEntidadeEntrega($entidadeEntrega)
            ->setEntidadeFac($entidadeFac)
            ->setEspacoFiscal($espacoFiscal)
            ->setEstado($estado)
            ->setFilial($filial)
            ->setFluxoDocumental($fluxoDocumental)
            ->setGrupo($grupo)
            ->setHoraCarga($horaCarga)
            ->setHoraDescarga($horaDescarga)
            ->setIDAvenca($iDAvenca)
            ->setIDDiarioCaixa($iDDiarioCaixa)
            ->setIDRegularizacao($iDRegularizacao)
            ->setId($id)
            ->setIdCabecEstorno($idCabecEstorno)
            ->setIdCabecMovCbl($idCabecMovCbl)
            ->setIdCabecTesouraria($idCabecTesouraria)
            ->setIdDocB2B($idDocB2B)
            ->setIdDocOrigem($idDocOrigem)
            ->setIdGDOC($idGDOC)
            ->setIdOportunidade($idOportunidade)
            ->setIntrastatCondEnt($intrastatCondEnt)
            ->setIntrastatModoTransp($intrastatModoTransp)
            ->setIntrastatNatA($intrastatNatA)
            ->setIntrastatNatB($intrastatNatB)
            ->setIntrastatPorto($intrastatPorto)
            ->setIntrastatRegEstatistico($intrastatRegEstatistico)
            ->setLinhas($linhas)
            ->setLocalCarga($localCarga)
            ->setLocalDescarga($localDescarga)
            ->setLocalOperacao($localOperacao)
            ->setLocalidade($localidade)
            ->setLocalidadeCarga($localidadeCarga)
            ->setLocalidadeCodigoPostalFac($localidadeCodigoPostalFac)
            ->setLocalidadeEntrega($localidadeEntrega)
            ->setLocalidadeFac($localidadeFac)
            ->setMargemDoc($margemDoc)
            ->setMatricula($matricula)
            ->setModoExp($modoExp)
            ->setModoPag($modoPag)
            ->setModuloOrigem($moduloOrigem)
            ->setMoeda($moeda)
            ->setMoedaDaUEM($moedaDaUEM)
            ->setMorada($morada)
            ->setMorada2($morada2)
            ->setMorada2Carga($morada2Carga)
            ->setMorada2Entrega($morada2Entrega)
            ->setMorada2Fac($morada2Fac)
            ->setMoradaAltEntrega($moradaAltEntrega)
            ->setMoradaCarga($moradaCarga)
            ->setMoradaEntrega($moradaEntrega)
            ->setMoradaFac($moradaFac)
            ->setNome($nome)
            ->setNomeEntrega($nomeEntrega)
            ->setNomeFac($nomeFac)
            ->setNumContribuinte($numContribuinte)
            ->setNumContribuinteFac($numContribuinteFac)
            ->setNumDiario($numDiario)
            ->setNumDoc($numDoc)
            ->setNumProposta($numProposta)
            ->setObraID($obraID)
            ->setObservacoes($observacoes)
            ->setOrigem($origem)
            ->setOrigemPOS($origemPOS)
            ->setPais($pais)
            ->setPaisCarga($paisCarga)
            ->setPaisEntrega($paisEntrega)
            ->setPaisFac($paisFac)
            ->setPendentePorLinha($pendentePorLinha)
            ->setPercentagemRetencao($percentagemRetencao)
            ->setPosto($posto)
            ->setProtegida($protegida)
            ->setRefDocOrig($refDocOrig)
            ->setRefSerieDocOrig($refSerieDocOrig)
            ->setRefTipoDocOrig($refTipoDocOrig)
            ->setReferencia($referencia)
            ->setRegimeIva($regimeIva)
            ->setRegimeIvaReembolsos($regimeIvaReembolsos)
            ->setRequisicao($requisicao)
            ->setRespCobranca($respCobranca)
            ->setResponsavel($responsavel)
            ->setResumo($resumo)
            ->setSeccao($seccao)
            ->setSerie($serie)
            ->setTipoDoc($tipoDoc)
            ->setTipoEntidade($tipoEntidade)
            ->setTipoEntidadeEntrega($tipoEntidadeEntrega)
            ->setTipoEntidadeFac($tipoEntidadeFac)
            ->setTipoFiscal($tipoFiscal)
            ->setTipoLancamento($tipoLancamento)
            ->setTipoOperacao($tipoOperacao)
            ->setTotalDesc($totalDesc)
            ->setTotalDocumento($totalDocumento)
            ->setTotalEcotaxa($totalEcotaxa)
            ->setTotalIEC($totalIEC)
            ->setTotalIS($totalIS)
            ->setTotalIva($totalIva)
            ->setTotalMerc($totalMerc)
            ->setTotalOutros($totalOutros)
            ->setTotalRecargo($totalRecargo)
            ->setTotalRetencao($totalRetencao)
            ->setTotalRetencaoGarantia($totalRetencaoGarantia)
            ->setTrataIvaCaixa($trataIvaCaixa)
            ->setUtilizaMoradaAltEntrega($utilizaMoradaAltEntrega)
            ->setUtilizador($utilizador)
            ->setVersao($versao)
            ->setVersaoAssinatura($versaoAssinatura)
            ->setVersaoUltAct($versaoUltAct)
            ->setWBSItem($wBSItem)
            ->setZona($zona);
    }
    /**
     * Get AnoCBL 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 getAnoCBL()
    {
        return isset($this->AnoCBL) ? $this->AnoCBL : null;
    }
    /**
     * Set AnoCBL 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 $anoCBL
     * @return \StructType\CabecDocERP
     */
    public function setAnoCBL($anoCBL = null)
    {
        // validation for constraint: int
        if (!is_null($anoCBL) && !is_numeric($anoCBL)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a numeric value, "%s" given', gettype($anoCBL)), __LINE__);
        }
        if (is_null($anoCBL) || (is_array($anoCBL) && empty($anoCBL))) {
            unset($this->AnoCBL);
        } else {
            $this->AnoCBL = $anoCBL;
        }
        return $this;
    }
    /**
     * Get Arredondamento 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 getArredondamento()
    {
        return isset($this->Arredondamento) ? $this->Arredondamento : null;
    }
    /**
     * Set Arredondamento 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 $arredondamento
     * @return \StructType\CabecDocERP
     */
    public function setArredondamento($arredondamento = null)
    {
        // validation for constraint: int
        if (!is_null($arredondamento) && !is_numeric($arredondamento)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a numeric value, "%s" given', gettype($arredondamento)), __LINE__);
        }
        if (is_null($arredondamento) || (is_array($arredondamento) && empty($arredondamento))) {
            unset($this->Arredondamento);
        } else {
            $this->Arredondamento = $arredondamento;
        }
        return $this;
    }
    /**
     * Get ArredondamentoIva 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 getArredondamentoIva()
    {
        return isset($this->ArredondamentoIva) ? $this->ArredondamentoIva : null;
    }
    /**
     * Set ArredondamentoIva 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 $arredondamentoIva
     * @return \StructType\CabecDocERP
     */
    public function setArredondamentoIva($arredondamentoIva = null)
    {
        // validation for constraint: int
        if (!is_null($arredondamentoIva) && !is_numeric($arredondamentoIva)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a numeric value, "%s" given', gettype($arredondamentoIva)), __LINE__);
        }
        if (is_null($arredondamentoIva) || (is_array($arredondamentoIva) && empty($arredondamentoIva))) {
            unset($this->ArredondamentoIva);
        } else {
            $this->ArredondamentoIva = $arredondamentoIva;
        }
        return $this;
    }
    /**
     * Get Assinatura 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 getAssinatura()
    {
        return isset($this->Assinatura) ? $this->Assinatura : null;
    }
    /**
     * Set Assinatura 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 $assinatura
     * @return \StructType\CabecDocERP
     */
    public function setAssinatura($assinatura = null)
    {
        // validation for constraint: string
        if (!is_null($assinatura) && !is_string($assinatura)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($assinatura)), __LINE__);
        }
        if (is_null($assinatura) || (is_array($assinatura) && empty($assinatura))) {
            unset($this->Assinatura);
        } else {
            $this->Assinatura = $assinatura;
        }
        return $this;
    }
    /**
     * Get B2BEnvioNaGravacao 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 getB2BEnvioNaGravacao()
    {
        return isset($this->B2BEnvioNaGravacao) ? $this->B2BEnvioNaGravacao : null;
    }
    /**
     * Set B2BEnvioNaGravacao 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 $b2BEnvioNaGravacao
     * @return \StructType\CabecDocERP
     */
    public function setB2BEnvioNaGravacao($b2BEnvioNaGravacao = null)
    {
        // validation for constraint: boolean
        if (!is_null($b2BEnvioNaGravacao) && !is_bool($b2BEnvioNaGravacao)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($b2BEnvioNaGravacao)), __LINE__);
        }
        if (is_null($b2BEnvioNaGravacao) || (is_array($b2BEnvioNaGravacao) && empty($b2BEnvioNaGravacao))) {
            unset($this->B2BEnvioNaGravacao);
        } else {
            $this->B2BEnvioNaGravacao = $b2BEnvioNaGravacao;
        }
        return $this;
    }
    /**
     * Get B2BTrataTrans value
     * @return bool|null
     */
    public function getB2BTrataTrans()
    {
        return $this->B2BTrataTrans;
    }
    /**
     * Set B2BTrataTrans value
     * @param bool $b2BTrataTrans
     * @return \StructType\CabecDocERP
     */
    public function setB2BTrataTrans($b2BTrataTrans = null)
    {
        // validation for constraint: boolean
        if (!is_null($b2BTrataTrans) && !is_bool($b2BTrataTrans)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($b2BTrataTrans)), __LINE__);
        }
        $this->B2BTrataTrans = $b2BTrataTrans;
        return $this;
    }
    /**
     * Get CAE 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 getCAE()
    {
        return isset($this->CAE) ? $this->CAE : null;
    }
    /**
     * Set CAE 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 $cAE
     * @return \StructType\CabecDocERP
     */
    public function setCAE($cAE = null)
    {
        // validation for constraint: string
        if (!is_null($cAE) && !is_string($cAE)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($cAE)), __LINE__);
        }
        if (is_null($cAE) || (is_array($cAE) && empty($cAE))) {
            unset($this->CAE);
        } else {
            $this->CAE = $cAE;
        }
        return $this;
    }
    /**
     * Get CDU_CodigoLocalizacao 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_CodigoLocalizacao()
    {
        return isset($this->CDU_CodigoLocalizacao) ? $this->CDU_CodigoLocalizacao : null;
    }
    /**
     * Set CDU_CodigoLocalizacao 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_CodigoLocalizacao
     * @return \StructType\CabecDocERP
     */
    public function setCDU_CodigoLocalizacao($cDU_CodigoLocalizacao = null)
    {
        // validation for constraint: string
        if (!is_null($cDU_CodigoLocalizacao) && !is_string($cDU_CodigoLocalizacao)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($cDU_CodigoLocalizacao)), __LINE__);
        }
        if (is_null($cDU_CodigoLocalizacao) || (is_array($cDU_CodigoLocalizacao) && empty($cDU_CodigoLocalizacao))) {
            unset($this->CDU_CodigoLocalizacao);
        } else {
            $this->CDU_CodigoLocalizacao = $cDU_CodigoLocalizacao;
        }
        return $this;
    }
    /**
     * Get CDU_DataDePagamentoMB 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_DataDePagamentoMB()
    {
        return isset($this->CDU_DataDePagamentoMB) ? $this->CDU_DataDePagamentoMB : null;
    }
    /**
     * Set CDU_DataDePagamentoMB 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_DataDePagamentoMB
     * @return \StructType\CabecDocERP
     */
    public function setCDU_DataDePagamentoMB($cDU_DataDePagamentoMB = null)
    {
        // validation for constraint: string
        if (!is_null($cDU_DataDePagamentoMB) && !is_string($cDU_DataDePagamentoMB)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($cDU_DataDePagamentoMB)), __LINE__);
        }
        if (is_null($cDU_DataDePagamentoMB) || (is_array($cDU_DataDePagamentoMB) && empty($cDU_DataDePagamentoMB))) {
            unset($this->CDU_DataDePagamentoMB);
        } else {
            $this->CDU_DataDePagamentoMB = $cDU_DataDePagamentoMB;
        }
        return $this;
    }
    /**
     * Get CDU_DocumentoDestinoMB 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_DocumentoDestinoMB()
    {
        return isset($this->CDU_DocumentoDestinoMB) ? $this->CDU_DocumentoDestinoMB : null;
    }
    /**
     * Set CDU_DocumentoDestinoMB 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_DocumentoDestinoMB
     * @return \StructType\CabecDocERP
     */
    public function setCDU_DocumentoDestinoMB($cDU_DocumentoDestinoMB = null)
    {
        // validation for constraint: string
        if (!is_null($cDU_DocumentoDestinoMB) && !is_string($cDU_DocumentoDestinoMB)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($cDU_DocumentoDestinoMB)), __LINE__);
        }
        if (is_null($cDU_DocumentoDestinoMB) || (is_array($cDU_DocumentoDestinoMB) && empty($cDU_DocumentoDestinoMB))) {
            unset($this->CDU_DocumentoDestinoMB);
        } else {
            $this->CDU_DocumentoDestinoMB = $cDU_DocumentoDestinoMB;
        }
        return $this;
    }
    /**
     * Get CDU_DocumentoPagoMB 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 getCDU_DocumentoPagoMB()
    {
        return isset($this->CDU_DocumentoPagoMB) ? $this->CDU_DocumentoPagoMB : null;
    }
    /**
     * Set CDU_DocumentoPagoMB 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 $cDU_DocumentoPagoMB
     * @return \StructType\CabecDocERP
     */
    public function setCDU_DocumentoPagoMB($cDU_DocumentoPagoMB = null)
    {
        // validation for constraint: boolean
        if (!is_null($cDU_DocumentoPagoMB) && !is_bool($cDU_DocumentoPagoMB)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($cDU_DocumentoPagoMB)), __LINE__);
        }
        if (is_null($cDU_DocumentoPagoMB) || (is_array($cDU_DocumentoPagoMB) && empty($cDU_DocumentoPagoMB))) {
            unset($this->CDU_DocumentoPagoMB);
        } else {
            $this->CDU_DocumentoPagoMB = $cDU_DocumentoPagoMB;
        }
        return $this;
    }
    /**
     * Get CDU_EntidadeMB 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_EntidadeMB()
    {
        return isset($this->CDU_EntidadeMB) ? $this->CDU_EntidadeMB : null;
    }
    /**
     * Set CDU_EntidadeMB 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_EntidadeMB
     * @return \StructType\CabecDocERP
     */
    public function setCDU_EntidadeMB($cDU_EntidadeMB = null)
    {
        // validation for constraint: string
        if (!is_null($cDU_EntidadeMB) && !is_string($cDU_EntidadeMB)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($cDU_EntidadeMB)), __LINE__);
        }
        if (is_null($cDU_EntidadeMB) || (is_array($cDU_EntidadeMB) && empty($cDU_EntidadeMB))) {
            unset($this->CDU_EntidadeMB);
        } else {
            $this->CDU_EntidadeMB = $cDU_EntidadeMB;
        }
        return $this;
    }
    /**
     * Get CDU_Estabelecimento 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_Estabelecimento()
    {
        return isset($this->CDU_Estabelecimento) ? $this->CDU_Estabelecimento : null;
    }
    /**
     * Set CDU_Estabelecimento 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_Estabelecimento
     * @return \StructType\CabecDocERP
     */
    public function setCDU_Estabelecimento($cDU_Estabelecimento = null)
    {
        // validation for constraint: string
        if (!is_null($cDU_Estabelecimento) && !is_string($cDU_Estabelecimento)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($cDU_Estabelecimento)), __LINE__);
        }
        if (is_null($cDU_Estabelecimento) || (is_array($cDU_Estabelecimento) && empty($cDU_Estabelecimento))) {
            unset($this->CDU_Estabelecimento);
        } else {
            $this->CDU_Estabelecimento = $cDU_Estabelecimento;
        }
        return $this;
    }
    /**
     * Get CDU_ReferenciaMB 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_ReferenciaMB()
    {
        return isset($this->CDU_ReferenciaMB) ? $this->CDU_ReferenciaMB : null;
    }
    /**
     * Set CDU_ReferenciaMB 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_ReferenciaMB
     * @return \StructType\CabecDocERP
     */
    public function setCDU_ReferenciaMB($cDU_ReferenciaMB = null)
    {
        // validation for constraint: string
        if (!is_null($cDU_ReferenciaMB) && !is_string($cDU_ReferenciaMB)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($cDU_ReferenciaMB)), __LINE__);
        }
        if (is_null($cDU_ReferenciaMB) || (is_array($cDU_ReferenciaMB) && empty($cDU_ReferenciaMB))) {
            unset($this->CDU_ReferenciaMB);
        } else {
            $this->CDU_ReferenciaMB = $cDU_ReferenciaMB;
        }
        return $this;
    }
    /**
     * Get CDU_UtilizadorDePagamentoMB 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_UtilizadorDePagamentoMB()
    {
        return isset($this->CDU_UtilizadorDePagamentoMB) ? $this->CDU_UtilizadorDePagamentoMB : null;
    }
    /**
     * Set CDU_UtilizadorDePagamentoMB 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_UtilizadorDePagamentoMB
     * @return \StructType\CabecDocERP
     */
    public function setCDU_UtilizadorDePagamentoMB($cDU_UtilizadorDePagamentoMB = null)
    {
        // validation for constraint: string
        if (!is_null($cDU_UtilizadorDePagamentoMB) && !is_string($cDU_UtilizadorDePagamentoMB)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($cDU_UtilizadorDePagamentoMB)), __LINE__);
        }
        if (is_null($cDU_UtilizadorDePagamentoMB) || (is_array($cDU_UtilizadorDePagamentoMB) && empty($cDU_UtilizadorDePagamentoMB))) {
            unset($this->CDU_UtilizadorDePagamentoMB);
        } else {
            $this->CDU_UtilizadorDePagamentoMB = $cDU_UtilizadorDePagamentoMB;
        }
        return $this;
    }
    /**
     * Get Cambio 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 getCambio()
    {
        return isset($this->Cambio) ? $this->Cambio : null;
    }
    /**
     * Set Cambio 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 $cambio
     * @return \StructType\CabecDocERP
     */
    public function setCambio($cambio = null)
    {
        if (is_null($cambio) || (is_array($cambio) && empty($cambio))) {
            unset($this->Cambio);
        } else {
            $this->Cambio = $cambio;
        }
        return $this;
    }
    /**
     * Get CambioADataDoc value
     * @return bool|null
     */
    public function getCambioADataDoc()
    {
        return $this->CambioADataDoc;
    }
    /**
     * Set CambioADataDoc value
     * @param bool $cambioADataDoc
     * @return \StructType\CabecDocERP
     */
    public function setCambioADataDoc($cambioADataDoc = null)
    {
        // validation for constraint: boolean
        if (!is_null($cambioADataDoc) && !is_bool($cambioADataDoc)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($cambioADataDoc)), __LINE__);
        }
        $this->CambioADataDoc = $cambioADataDoc;
        return $this;
    }
    /**
     * Get CambioMAlt value
     * @return float|null
     */
    public function getCambioMAlt()
    {
        return $this->CambioMAlt;
    }
    /**
     * Set CambioMAlt value
     * @param float $cambioMAlt
     * @return \StructType\CabecDocERP
     */
    public function setCambioMAlt($cambioMAlt = null)
    {
        $this->CambioMAlt = $cambioMAlt;
        return $this;
    }
    /**
     * Get CambioMBase value
     * @return float|null
     */
    public function getCambioMBase()
    {
        return $this->CambioMBase;
    }
    /**
     * Set CambioMBase value
     * @param float $cambioMBase
     * @return \StructType\CabecDocERP
     */
    public function setCambioMBase($cambioMBase = null)
    {
        $this->CambioMBase = $cambioMBase;
        return $this;
    }
    /**
     * Get Certificado 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 getCertificado()
    {
        return isset($this->Certificado) ? $this->Certificado : null;
    }
    /**
     * Set Certificado 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 $certificado
     * @return \StructType\CabecDocERP
     */
    public function setCertificado($certificado = null)
    {
        // validation for constraint: string
        if (!is_null($certificado) && !is_string($certificado)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($certificado)), __LINE__);
        }
        if (is_null($certificado) || (is_array($certificado) && empty($certificado))) {
            unset($this->Certificado);
        } else {
            $this->Certificado = $certificado;
        }
        return $this;
    }
    /**
     * Get CertificadoRecuperacao 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 getCertificadoRecuperacao()
    {
        return isset($this->CertificadoRecuperacao) ? $this->CertificadoRecuperacao : null;
    }
    /**
     * Set CertificadoRecuperacao 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 $certificadoRecuperacao
     * @return \StructType\CabecDocERP
     */
    public function setCertificadoRecuperacao($certificadoRecuperacao = null)
    {
        // validation for constraint: string
        if (!is_null($certificadoRecuperacao) && !is_string($certificadoRecuperacao)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($certificadoRecuperacao)), __LINE__);
        }
        if (is_null($certificadoRecuperacao) || (is_array($certificadoRecuperacao) && empty($certificadoRecuperacao))) {
            unset($this->CertificadoRecuperacao);
        } else {
            $this->CertificadoRecuperacao = $certificadoRecuperacao;
        }
        return $this;
    }
    /**
     * Get CodPostal 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 getCodPostal()
    {
        return isset($this->CodPostal) ? $this->CodPostal : null;
    }
    /**
     * Set CodPostal 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 $codPostal
     * @return \StructType\CabecDocERP
     */
    public function setCodPostal($codPostal = null)
    {
        // validation for constraint: string
        if (!is_null($codPostal) && !is_string($codPostal)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($codPostal)), __LINE__);
        }
        if (is_null($codPostal) || (is_array($codPostal) && empty($codPostal))) {
            unset($this->CodPostal);
        } else {
            $this->CodPostal = $codPostal;
        }
        return $this;
    }
    /**
     * Get CodPostalCarga 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 getCodPostalCarga()
    {
        return isset($this->CodPostalCarga) ? $this->CodPostalCarga : null;
    }
    /**
     * Set CodPostalCarga 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 $codPostalCarga
     * @return \StructType\CabecDocERP
     */
    public function setCodPostalCarga($codPostalCarga = null)
    {
        // validation for constraint: string
        if (!is_null($codPostalCarga) && !is_string($codPostalCarga)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($codPostalCarga)), __LINE__);
        }
        if (is_null($codPostalCarga) || (is_array($codPostalCarga) && empty($codPostalCarga))) {
            unset($this->CodPostalCarga);
        } else {
            $this->CodPostalCarga = $codPostalCarga;
        }
        return $this;
    }
    /**
     * Get CodPostalEntrega 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 getCodPostalEntrega()
    {
        return isset($this->CodPostalEntrega) ? $this->CodPostalEntrega : null;
    }
    /**
     * Set CodPostalEntrega 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 $codPostalEntrega
     * @return \StructType\CabecDocERP
     */
    public function setCodPostalEntrega($codPostalEntrega = null)
    {
        // validation for constraint: string
        if (!is_null($codPostalEntrega) && !is_string($codPostalEntrega)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($codPostalEntrega)), __LINE__);
        }
        if (is_null($codPostalEntrega) || (is_array($codPostalEntrega) && empty($codPostalEntrega))) {
            unset($this->CodPostalEntrega);
        } else {
            $this->CodPostalEntrega = $codPostalEntrega;
        }
        return $this;
    }
    /**
     * Get CodPostalLocalidade 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 getCodPostalLocalidade()
    {
        return isset($this->CodPostalLocalidade) ? $this->CodPostalLocalidade : null;
    }
    /**
     * Set CodPostalLocalidade 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 $codPostalLocalidade
     * @return \StructType\CabecDocERP
     */
    public function setCodPostalLocalidade($codPostalLocalidade = null)
    {
        // validation for constraint: string
        if (!is_null($codPostalLocalidade) && !is_string($codPostalLocalidade)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($codPostalLocalidade)), __LINE__);
        }
        if (is_null($codPostalLocalidade) || (is_array($codPostalLocalidade) && empty($codPostalLocalidade))) {
            unset($this->CodPostalLocalidade);
        } else {
            $this->CodPostalLocalidade = $codPostalLocalidade;
        }
        return $this;
    }
    /**
     * Get CodPostalLocalidadeCarga 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 getCodPostalLocalidadeCarga()
    {
        return isset($this->CodPostalLocalidadeCarga) ? $this->CodPostalLocalidadeCarga : null;
    }
    /**
     * Set CodPostalLocalidadeCarga 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 $codPostalLocalidadeCarga
     * @return \StructType\CabecDocERP
     */
    public function setCodPostalLocalidadeCarga($codPostalLocalidadeCarga = null)
    {
        // validation for constraint: string
        if (!is_null($codPostalLocalidadeCarga) && !is_string($codPostalLocalidadeCarga)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($codPostalLocalidadeCarga)), __LINE__);
        }
        if (is_null($codPostalLocalidadeCarga) || (is_array($codPostalLocalidadeCarga) && empty($codPostalLocalidadeCarga))) {
            unset($this->CodPostalLocalidadeCarga);
        } else {
            $this->CodPostalLocalidadeCarga = $codPostalLocalidadeCarga;
        }
        return $this;
    }
    /**
     * Get CodPostalLocalidadeEntrega 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 getCodPostalLocalidadeEntrega()
    {
        return isset($this->CodPostalLocalidadeEntrega) ? $this->CodPostalLocalidadeEntrega : null;
    }
    /**
     * Set CodPostalLocalidadeEntrega 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 $codPostalLocalidadeEntrega
     * @return \StructType\CabecDocERP
     */
    public function setCodPostalLocalidadeEntrega($codPostalLocalidadeEntrega = null)
    {
        // validation for constraint: string
        if (!is_null($codPostalLocalidadeEntrega) && !is_string($codPostalLocalidadeEntrega)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($codPostalLocalidadeEntrega)), __LINE__);
        }
        if (is_null($codPostalLocalidadeEntrega) || (is_array($codPostalLocalidadeEntrega) && empty($codPostalLocalidadeEntrega))) {
            unset($this->CodPostalLocalidadeEntrega);
        } else {
            $this->CodPostalLocalidadeEntrega = $codPostalLocalidadeEntrega;
        }
        return $this;
    }
    /**
     * Get CodigoPostalFac 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 getCodigoPostalFac()
    {
        return isset($this->CodigoPostalFac) ? $this->CodigoPostalFac : null;
    }
    /**
     * Set CodigoPostalFac 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 $codigoPostalFac
     * @return \StructType\CabecDocERP
     */
    public function setCodigoPostalFac($codigoPostalFac = null)
    {
        // validation for constraint: string
        if (!is_null($codigoPostalFac) && !is_string($codigoPostalFac)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($codigoPostalFac)), __LINE__);
        }
        if (is_null($codigoPostalFac) || (is_array($codigoPostalFac) && empty($codigoPostalFac))) {
            unset($this->CodigoPostalFac);
        } else {
            $this->CodigoPostalFac = $codigoPostalFac;
        }
        return $this;
    }
    /**
     * Get CondPag 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 getCondPag()
    {
        return isset($this->CondPag) ? $this->CondPag : null;
    }
    /**
     * Set CondPag 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 $condPag
     * @return \StructType\CabecDocERP
     */
    public function setCondPag($condPag = null)
    {
        // validation for constraint: string
        if (!is_null($condPag) && !is_string($condPag)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($condPag)), __LINE__);
        }
        if (is_null($condPag) || (is_array($condPag) && empty($condPag))) {
            unset($this->CondPag);
        } else {
            $this->CondPag = $condPag;
        }
        return $this;
    }
    /**
     * Get ContaDomiciliacao 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 getContaDomiciliacao()
    {
        return isset($this->ContaDomiciliacao) ? $this->ContaDomiciliacao : null;
    }
    /**
     * Set ContaDomiciliacao 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 $contaDomiciliacao
     * @return \StructType\CabecDocERP
     */
    public function setContaDomiciliacao($contaDomiciliacao = null)
    {
        // validation for constraint: string
        if (!is_null($contaDomiciliacao) && !is_string($contaDomiciliacao)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($contaDomiciliacao)), __LINE__);
        }
        if (is_null($contaDomiciliacao) || (is_array($contaDomiciliacao) && empty($contaDomiciliacao))) {
            unset($this->ContaDomiciliacao);
        } else {
            $this->ContaDomiciliacao = $contaDomiciliacao;
        }
        return $this;
    }
    /**
     * Get ContratoID 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 getContratoID()
    {
        return isset($this->ContratoID) ? $this->ContratoID : null;
    }
    /**
     * Set ContratoID 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 $contratoID
     * @return \StructType\CabecDocERP
     */
    public function setContratoID($contratoID = null)
    {
        // validation for constraint: pattern
        if (is_scalar($contratoID) && !preg_match('/[\\da-fA-F]{8}-[\\da-fA-F]{4}-[\\da-fA-F]{4}-[\\da-fA-F]{4}-[\\da-fA-F]{12}/', $contratoID)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a scalar value that matches "[\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}", "%s" given', var_export($contratoID, true)), __LINE__);
        }
        // validation for constraint: string
        if (!is_null($contratoID) && !is_string($contratoID)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($contratoID)), __LINE__);
        }
        if (is_null($contratoID) || (is_array($contratoID) && empty($contratoID))) {
            unset($this->ContratoID);
        } else {
            $this->ContratoID = $contratoID;
        }
        return $this;
    }
    /**
     * Get DE_IL 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 getDE_IL()
    {
        return isset($this->DE_IL) ? $this->DE_IL : null;
    }
    /**
     * Set DE_IL 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 $dE_IL
     * @return \StructType\CabecDocERP
     */
    public function setDE_IL($dE_IL = null)
    {
        // validation for constraint: string
        if (!is_null($dE_IL) && !is_string($dE_IL)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($dE_IL)), __LINE__);
        }
        if (is_null($dE_IL) || (is_array($dE_IL) && empty($dE_IL))) {
            unset($this->DE_IL);
        } else {
            $this->DE_IL = $dE_IL;
        }
        return $this;
    }
    /**
     * Get Data 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 getData()
    {
        return isset($this->Data) ? $this->Data : null;
    }
    /**
     * Set Data 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 $data
     * @return \StructType\CabecDocERP
     */
    public function setData($data = null)
    {
        // validation for constraint: string
        if (!is_null($data) && !is_string($data)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($data)), __LINE__);
        }
        if (is_null($data) || (is_array($data) && empty($data))) {
            unset($this->Data);
        } else {
            $this->Data = $data;
        }
        return $this;
    }
    /**
     * Get DataCarga 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 getDataCarga()
    {
        return isset($this->DataCarga) ? $this->DataCarga : null;
    }
    /**
     * Set DataCarga 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 $dataCarga
     * @return \StructType\CabecDocERP
     */
    public function setDataCarga($dataCarga = null)
    {
        // validation for constraint: string
        if (!is_null($dataCarga) && !is_string($dataCarga)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($dataCarga)), __LINE__);
        }
        if (is_null($dataCarga) || (is_array($dataCarga) && empty($dataCarga))) {
            unset($this->DataCarga);
        } else {
            $this->DataCarga = $dataCarga;
        }
        return $this;
    }
    /**
     * Get DataDescarga 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 getDataDescarga()
    {
        return isset($this->DataDescarga) ? $this->DataDescarga : null;
    }
    /**
     * Set DataDescarga 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 $dataDescarga
     * @return \StructType\CabecDocERP
     */
    public function setDataDescarga($dataDescarga = null)
    {
        // validation for constraint: string
        if (!is_null($dataDescarga) && !is_string($dataDescarga)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($dataDescarga)), __LINE__);
        }
        if (is_null($dataDescarga) || (is_array($dataDescarga) && empty($dataDescarga))) {
            unset($this->DataDescarga);
        } else {
            $this->DataDescarga = $dataDescarga;
        }
        return $this;
    }
    /**
     * Get DataGravacao value
     * @return string|null
     */
    public function getDataGravacao()
    {
        return $this->DataGravacao;
    }
    /**
     * Set DataGravacao value
     * @param string $dataGravacao
     * @return \StructType\CabecDocERP
     */
    public function setDataGravacao($dataGravacao = null)
    {
        // validation for constraint: string
        if (!is_null($dataGravacao) && !is_string($dataGravacao)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($dataGravacao)), __LINE__);
        }
        $this->DataGravacao = $dataGravacao;
        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\CabecDocERP
     */
    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 DataVencimento 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 getDataVencimento()
    {
        return isset($this->DataVencimento) ? $this->DataVencimento : null;
    }
    /**
     * Set DataVencimento 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 $dataVencimento
     * @return \StructType\CabecDocERP
     */
    public function setDataVencimento($dataVencimento = null)
    {
        // validation for constraint: string
        if (!is_null($dataVencimento) && !is_string($dataVencimento)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($dataVencimento)), __LINE__);
        }
        if (is_null($dataVencimento) || (is_array($dataVencimento) && empty($dataVencimento))) {
            unset($this->DataVencimento);
        } else {
            $this->DataVencimento = $dataVencimento;
        }
        return $this;
    }
    /**
     * Get DescEntidade 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 getDescEntidade()
    {
        return isset($this->DescEntidade) ? $this->DescEntidade : null;
    }
    /**
     * Set DescEntidade 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 $descEntidade
     * @return \StructType\CabecDocERP
     */
    public function setDescEntidade($descEntidade = null)
    {
        if (is_null($descEntidade) || (is_array($descEntidade) && empty($descEntidade))) {
            unset($this->DescEntidade);
        } else {
            $this->DescEntidade = $descEntidade;
        }
        return $this;
    }
    /**
     * Get DescPag 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 getDescPag()
    {
        return isset($this->DescPag) ? $this->DescPag : null;
    }
    /**
     * Set DescPag 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 $descPag
     * @return \StructType\CabecDocERP
     */
    public function setDescPag($descPag = null)
    {
        if (is_null($descPag) || (is_array($descPag) && empty($descPag))) {
            unset($this->DescPag);
        } else {
            $this->DescPag = $descPag;
        }
        return $this;
    }
    /**
     * Get Diario 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 getDiario()
    {
        return isset($this->Diario) ? $this->Diario : null;
    }
    /**
     * Set Diario 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 $diario
     * @return \StructType\CabecDocERP
     */
    public function setDiario($diario = null)
    {
        // validation for constraint: string
        if (!is_null($diario) && !is_string($diario)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($diario)), __LINE__);
        }
        if (is_null($diario) || (is_array($diario) && empty($diario))) {
            unset($this->Diario);
        } else {
            $this->Diario = $diario;
        }
        return $this;
    }
    /**
     * Get Distrito value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return string|null
     */
    public function getDistrito()
    {
        return isset($this->Distrito) ? $this->Distrito : null;
    }
    /**
     * Set Distrito value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param string $distrito
     * @return \StructType\CabecDocERP
     */
    public function setDistrito($distrito = null)
    {
        // validation for constraint: string
        if (!is_null($distrito) && !is_string($distrito)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($distrito)), __LINE__);
        }
        if (is_null($distrito) || (is_array($distrito) && empty($distrito))) {
            unset($this->Distrito);
        } else {
            $this->Distrito = $distrito;
        }
        return $this;
    }
    /**
     * Get DistritoCarga 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 getDistritoCarga()
    {
        return isset($this->DistritoCarga) ? $this->DistritoCarga : null;
    }
    /**
     * Set DistritoCarga 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 $distritoCarga
     * @return \StructType\CabecDocERP
     */
    public function setDistritoCarga($distritoCarga = null)
    {
        // validation for constraint: string
        if (!is_null($distritoCarga) && !is_string($distritoCarga)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($distritoCarga)), __LINE__);
        }
        if (is_null($distritoCarga) || (is_array($distritoCarga) && empty($distritoCarga))) {
            unset($this->DistritoCarga);
        } else {
            $this->DistritoCarga = $distritoCarga;
        }
        return $this;
    }
    /**
     * Get DistritoEntrega 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 getDistritoEntrega()
    {
        return isset($this->DistritoEntrega) ? $this->DistritoEntrega : null;
    }
    /**
     * Set DistritoEntrega 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 $distritoEntrega
     * @return \StructType\CabecDocERP
     */
    public function setDistritoEntrega($distritoEntrega = null)
    {
        // validation for constraint: string
        if (!is_null($distritoEntrega) && !is_string($distritoEntrega)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($distritoEntrega)), __LINE__);
        }
        if (is_null($distritoEntrega) || (is_array($distritoEntrega) && empty($distritoEntrega))) {
            unset($this->DistritoEntrega);
        } else {
            $this->DistritoEntrega = $distritoEntrega;
        }
        return $this;
    }
    /**
     * Get DistritoFac 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 getDistritoFac()
    {
        return isset($this->DistritoFac) ? $this->DistritoFac : null;
    }
    /**
     * Set DistritoFac 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 $distritoFac
     * @return \StructType\CabecDocERP
     */
    public function setDistritoFac($distritoFac = null)
    {
        // validation for constraint: string
        if (!is_null($distritoFac) && !is_string($distritoFac)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($distritoFac)), __LINE__);
        }
        if (is_null($distritoFac) || (is_array($distritoFac) && empty($distritoFac))) {
            unset($this->DistritoFac);
        } else {
            $this->DistritoFac = $distritoFac;
        }
        return $this;
    }
    /**
     * Get DocsOriginais 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 getDocsOriginais()
    {
        return isset($this->DocsOriginais) ? $this->DocsOriginais : null;
    }
    /**
     * Set DocsOriginais 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 $docsOriginais
     * @return \StructType\CabecDocERP
     */
    public function setDocsOriginais($docsOriginais = null)
    {
        // validation for constraint: string
        if (!is_null($docsOriginais) && !is_string($docsOriginais)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($docsOriginais)), __LINE__);
        }
        if (is_null($docsOriginais) || (is_array($docsOriginais) && empty($docsOriginais))) {
            unset($this->DocsOriginais);
        } else {
            $this->DocsOriginais = $docsOriginais;
        }
        return $this;
    }
    /**
     * Get Documento 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 getDocumento()
    {
        return isset($this->Documento) ? $this->Documento : null;
    }
    /**
     * Set Documento 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 $documento
     * @return \StructType\CabecDocERP
     */
    public function setDocumento($documento = null)
    {
        // validation for constraint: string
        if (!is_null($documento) && !is_string($documento)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($documento)), __LINE__);
        }
        if (is_null($documento) || (is_array($documento) && empty($documento))) {
            unset($this->Documento);
        } else {
            $this->Documento = $documento;
        }
        return $this;
    }
    /**
     * Get Entidade 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 getEntidade()
    {
        return isset($this->Entidade) ? $this->Entidade : null;
    }
    /**
     * Set Entidade 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 $entidade
     * @return \StructType\CabecDocERP
     */
    public function setEntidade($entidade = null)
    {
        // validation for constraint: string
        if (!is_null($entidade) && !is_string($entidade)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($entidade)), __LINE__);
        }
        if (is_null($entidade) || (is_array($entidade) && empty($entidade))) {
            unset($this->Entidade);
        } else {
            $this->Entidade = $entidade;
        }
        return $this;
    }
    /**
     * Get EntidadeDescarga 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 getEntidadeDescarga()
    {
        return isset($this->EntidadeDescarga) ? $this->EntidadeDescarga : null;
    }
    /**
     * Set EntidadeDescarga 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 $entidadeDescarga
     * @return \StructType\CabecDocERP
     */
    public function setEntidadeDescarga($entidadeDescarga = null)
    {
        // validation for constraint: string
        if (!is_null($entidadeDescarga) && !is_string($entidadeDescarga)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($entidadeDescarga)), __LINE__);
        }
        if (is_null($entidadeDescarga) || (is_array($entidadeDescarga) && empty($entidadeDescarga))) {
            unset($this->EntidadeDescarga);
        } else {
            $this->EntidadeDescarga = $entidadeDescarga;
        }
        return $this;
    }
    /**
     * Get EntidadeEntrega 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 getEntidadeEntrega()
    {
        return isset($this->EntidadeEntrega) ? $this->EntidadeEntrega : null;
    }
    /**
     * Set EntidadeEntrega 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 $entidadeEntrega
     * @return \StructType\CabecDocERP
     */
    public function setEntidadeEntrega($entidadeEntrega = null)
    {
        // validation for constraint: string
        if (!is_null($entidadeEntrega) && !is_string($entidadeEntrega)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($entidadeEntrega)), __LINE__);
        }
        if (is_null($entidadeEntrega) || (is_array($entidadeEntrega) && empty($entidadeEntrega))) {
            unset($this->EntidadeEntrega);
        } else {
            $this->EntidadeEntrega = $entidadeEntrega;
        }
        return $this;
    }
    /**
     * Get EntidadeFac 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 getEntidadeFac()
    {
        return isset($this->EntidadeFac) ? $this->EntidadeFac : null;
    }
    /**
     * Set EntidadeFac 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 $entidadeFac
     * @return \StructType\CabecDocERP
     */
    public function setEntidadeFac($entidadeFac = null)
    {
        // validation for constraint: string
        if (!is_null($entidadeFac) && !is_string($entidadeFac)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($entidadeFac)), __LINE__);
        }
        if (is_null($entidadeFac) || (is_array($entidadeFac) && empty($entidadeFac))) {
            unset($this->EntidadeFac);
        } else {
            $this->EntidadeFac = $entidadeFac;
        }
        return $this;
    }
    /**
     * Get EspacoFiscal value
     * @return int|null
     */
    public function getEspacoFiscal()
    {
        return $this->EspacoFiscal;
    }
    /**
     * Set EspacoFiscal value
     * @param int $espacoFiscal
     * @return \StructType\CabecDocERP
     */
    public function setEspacoFiscal($espacoFiscal = null)
    {
        // validation for constraint: int
        if (!is_null($espacoFiscal) && !is_numeric($espacoFiscal)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a numeric value, "%s" given', gettype($espacoFiscal)), __LINE__);
        }
        $this->EspacoFiscal = $espacoFiscal;
        return $this;
    }
    /**
     * Get Estado 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 \StructType\CabecDocStatusERP|null
     */
    public function getEstado()
    {
        return isset($this->Estado) ? $this->Estado : null;
    }
    /**
     * Set Estado 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 \StructType\CabecDocStatusERP $estado
     * @return \StructType\CabecDocERP
     */
    public function setEstado(\StructType\CabecDocStatusERP $estado = null)
    {
        if (is_null($estado) || (is_array($estado) && empty($estado))) {
            unset($this->Estado);
        } else {
            $this->Estado = $estado;
        }
        return $this;
    }
    /**
     * Get Filial 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 getFilial()
    {
        return isset($this->Filial) ? $this->Filial : null;
    }
    /**
     * Set Filial 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 $filial
     * @return \StructType\CabecDocERP
     */
    public function setFilial($filial = null)
    {
        // validation for constraint: string
        if (!is_null($filial) && !is_string($filial)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($filial)), __LINE__);
        }
        if (is_null($filial) || (is_array($filial) && empty($filial))) {
            unset($this->Filial);
        } else {
            $this->Filial = $filial;
        }
        return $this;
    }
    /**
     * Get FluxoDocumental 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 getFluxoDocumental()
    {
        return isset($this->FluxoDocumental) ? $this->FluxoDocumental : null;
    }
    /**
     * Set FluxoDocumental 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 $fluxoDocumental
     * @return \StructType\CabecDocERP
     */
    public function setFluxoDocumental($fluxoDocumental = null)
    {
        // validation for constraint: string
        if (!is_null($fluxoDocumental) && !is_string($fluxoDocumental)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($fluxoDocumental)), __LINE__);
        }
        if (is_null($fluxoDocumental) || (is_array($fluxoDocumental) && empty($fluxoDocumental))) {
            unset($this->FluxoDocumental);
        } else {
            $this->FluxoDocumental = $fluxoDocumental;
        }
        return $this;
    }
    /**
     * Get Grupo 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 getGrupo()
    {
        return isset($this->Grupo) ? $this->Grupo : null;
    }
    /**
     * Set Grupo 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 $grupo
     * @return \StructType\CabecDocERP
     */
    public function setGrupo($grupo = null)
    {
        // validation for constraint: string
        if (!is_null($grupo) && !is_string($grupo)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($grupo)), __LINE__);
        }
        if (is_null($grupo) || (is_array($grupo) && empty($grupo))) {
            unset($this->Grupo);
        } else {
            $this->Grupo = $grupo;
        }
        return $this;
    }
    /**
     * Get HoraCarga 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 getHoraCarga()
    {
        return isset($this->HoraCarga) ? $this->HoraCarga : null;
    }
    /**
     * Set HoraCarga 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 $horaCarga
     * @return \StructType\CabecDocERP
     */
    public function setHoraCarga($horaCarga = null)
    {
        // validation for constraint: string
        if (!is_null($horaCarga) && !is_string($horaCarga)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($horaCarga)), __LINE__);
        }
        if (is_null($horaCarga) || (is_array($horaCarga) && empty($horaCarga))) {
            unset($this->HoraCarga);
        } else {
            $this->HoraCarga = $horaCarga;
        }
        return $this;
    }
    /**
     * Get HoraDescarga 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 getHoraDescarga()
    {
        return isset($this->HoraDescarga) ? $this->HoraDescarga : null;
    }
    /**
     * Set HoraDescarga 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 $horaDescarga
     * @return \StructType\CabecDocERP
     */
    public function setHoraDescarga($horaDescarga = null)
    {
        // validation for constraint: string
        if (!is_null($horaDescarga) && !is_string($horaDescarga)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($horaDescarga)), __LINE__);
        }
        if (is_null($horaDescarga) || (is_array($horaDescarga) && empty($horaDescarga))) {
            unset($this->HoraDescarga);
        } else {
            $this->HoraDescarga = $horaDescarga;
        }
        return $this;
    }
    /**
     * Get IDAvenca 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 getIDAvenca()
    {
        return isset($this->IDAvenca) ? $this->IDAvenca : null;
    }
    /**
     * Set IDAvenca 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 $iDAvenca
     * @return \StructType\CabecDocERP
     */
    public function setIDAvenca($iDAvenca = null)
    {
        // validation for constraint: pattern
        if (is_scalar($iDAvenca) && !preg_match('/[\\da-fA-F]{8}-[\\da-fA-F]{4}-[\\da-fA-F]{4}-[\\da-fA-F]{4}-[\\da-fA-F]{12}/', $iDAvenca)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a scalar value that matches "[\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}", "%s" given', var_export($iDAvenca, true)), __LINE__);
        }
        // validation for constraint: string
        if (!is_null($iDAvenca) && !is_string($iDAvenca)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($iDAvenca)), __LINE__);
        }
        if (is_null($iDAvenca) || (is_array($iDAvenca) && empty($iDAvenca))) {
            unset($this->IDAvenca);
        } else {
            $this->IDAvenca = $iDAvenca;
        }
        return $this;
    }
    /**
     * Get IDDiarioCaixa 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 getIDDiarioCaixa()
    {
        return isset($this->IDDiarioCaixa) ? $this->IDDiarioCaixa : null;
    }
    /**
     * Set IDDiarioCaixa 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 $iDDiarioCaixa
     * @return \StructType\CabecDocERP
     */
    public function setIDDiarioCaixa($iDDiarioCaixa = null)
    {
        // validation for constraint: pattern
        if (is_scalar($iDDiarioCaixa) && !preg_match('/[\\da-fA-F]{8}-[\\da-fA-F]{4}-[\\da-fA-F]{4}-[\\da-fA-F]{4}-[\\da-fA-F]{12}/', $iDDiarioCaixa)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a scalar value that matches "[\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}", "%s" given', var_export($iDDiarioCaixa, true)), __LINE__);
        }
        // validation for constraint: string
        if (!is_null($iDDiarioCaixa) && !is_string($iDDiarioCaixa)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($iDDiarioCaixa)), __LINE__);
        }
        if (is_null($iDDiarioCaixa) || (is_array($iDDiarioCaixa) && empty($iDDiarioCaixa))) {
            unset($this->IDDiarioCaixa);
        } else {
            $this->IDDiarioCaixa = $iDDiarioCaixa;
        }
        return $this;
    }
    /**
     * Get IDRegularizacao 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 getIDRegularizacao()
    {
        return isset($this->IDRegularizacao) ? $this->IDRegularizacao : null;
    }
    /**
     * Set IDRegularizacao 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 $iDRegularizacao
     * @return \StructType\CabecDocERP
     */
    public function setIDRegularizacao($iDRegularizacao = null)
    {
        // validation for constraint: pattern
        if (is_scalar($iDRegularizacao) && !preg_match('/[\\da-fA-F]{8}-[\\da-fA-F]{4}-[\\da-fA-F]{4}-[\\da-fA-F]{4}-[\\da-fA-F]{12}/', $iDRegularizacao)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a scalar value that matches "[\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}", "%s" given', var_export($iDRegularizacao, true)), __LINE__);
        }
        // validation for constraint: string
        if (!is_null($iDRegularizacao) && !is_string($iDRegularizacao)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($iDRegularizacao)), __LINE__);
        }
        if (is_null($iDRegularizacao) || (is_array($iDRegularizacao) && empty($iDRegularizacao))) {
            unset($this->IDRegularizacao);
        } else {
            $this->IDRegularizacao = $iDRegularizacao;
        }
        return $this;
    }
    /**
     * Get Id value
     * @return string|null
     */
    public function getId()
    {
        return $this->Id;
    }
    /**
     * Set Id value
     * @param string $id
     * @return \StructType\CabecDocERP
     */
    public function setId($id = null)
    {
        // validation for constraint: pattern
        if (is_scalar($id) && !preg_match('/[\\da-fA-F]{8}-[\\da-fA-F]{4}-[\\da-fA-F]{4}-[\\da-fA-F]{4}-[\\da-fA-F]{12}/', $id)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a scalar value that matches "[\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}", "%s" given', var_export($id, true)), __LINE__);
        }
        // validation for constraint: string
        if (!is_null($id) && !is_string($id)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($id)), __LINE__);
        }
        $this->Id = $id;
        return $this;
    }
    /**
     * Get IdCabecEstorno 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 getIdCabecEstorno()
    {
        return isset($this->IdCabecEstorno) ? $this->IdCabecEstorno : null;
    }
    /**
     * Set IdCabecEstorno 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 $idCabecEstorno
     * @return \StructType\CabecDocERP
     */
    public function setIdCabecEstorno($idCabecEstorno = null)
    {
        // validation for constraint: pattern
        if (is_scalar($idCabecEstorno) && !preg_match('/[\\da-fA-F]{8}-[\\da-fA-F]{4}-[\\da-fA-F]{4}-[\\da-fA-F]{4}-[\\da-fA-F]{12}/', $idCabecEstorno)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a scalar value that matches "[\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}", "%s" given', var_export($idCabecEstorno, true)), __LINE__);
        }
        // validation for constraint: string
        if (!is_null($idCabecEstorno) && !is_string($idCabecEstorno)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($idCabecEstorno)), __LINE__);
        }
        if (is_null($idCabecEstorno) || (is_array($idCabecEstorno) && empty($idCabecEstorno))) {
            unset($this->IdCabecEstorno);
        } else {
            $this->IdCabecEstorno = $idCabecEstorno;
        }
        return $this;
    }
    /**
     * Get IdCabecMovCbl 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 getIdCabecMovCbl()
    {
        return isset($this->IdCabecMovCbl) ? $this->IdCabecMovCbl : null;
    }
    /**
     * Set IdCabecMovCbl 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 $idCabecMovCbl
     * @return \StructType\CabecDocERP
     */
    public function setIdCabecMovCbl($idCabecMovCbl = null)
    {
        // validation for constraint: pattern
        if (is_scalar($idCabecMovCbl) && !preg_match('/[\\da-fA-F]{8}-[\\da-fA-F]{4}-[\\da-fA-F]{4}-[\\da-fA-F]{4}-[\\da-fA-F]{12}/', $idCabecMovCbl)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a scalar value that matches "[\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}", "%s" given', var_export($idCabecMovCbl, true)), __LINE__);
        }
        // validation for constraint: string
        if (!is_null($idCabecMovCbl) && !is_string($idCabecMovCbl)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($idCabecMovCbl)), __LINE__);
        }
        if (is_null($idCabecMovCbl) || (is_array($idCabecMovCbl) && empty($idCabecMovCbl))) {
            unset($this->IdCabecMovCbl);
        } else {
            $this->IdCabecMovCbl = $idCabecMovCbl;
        }
        return $this;
    }
    /**
     * Get IdCabecTesouraria 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 getIdCabecTesouraria()
    {
        return isset($this->IdCabecTesouraria) ? $this->IdCabecTesouraria : null;
    }
    /**
     * Set IdCabecTesouraria 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 $idCabecTesouraria
     * @return \StructType\CabecDocERP
     */
    public function setIdCabecTesouraria($idCabecTesouraria = null)
    {
        // validation for constraint: pattern
        if (is_scalar($idCabecTesouraria) && !preg_match('/[\\da-fA-F]{8}-[\\da-fA-F]{4}-[\\da-fA-F]{4}-[\\da-fA-F]{4}-[\\da-fA-F]{12}/', $idCabecTesouraria)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a scalar value that matches "[\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}", "%s" given', var_export($idCabecTesouraria, true)), __LINE__);
        }
        // validation for constraint: string
        if (!is_null($idCabecTesouraria) && !is_string($idCabecTesouraria)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($idCabecTesouraria)), __LINE__);
        }
        if (is_null($idCabecTesouraria) || (is_array($idCabecTesouraria) && empty($idCabecTesouraria))) {
            unset($this->IdCabecTesouraria);
        } else {
            $this->IdCabecTesouraria = $idCabecTesouraria;
        }
        return $this;
    }
    /**
     * Get IdDocB2B 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 getIdDocB2B()
    {
        return isset($this->IdDocB2B) ? $this->IdDocB2B : null;
    }
    /**
     * Set IdDocB2B 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 $idDocB2B
     * @return \StructType\CabecDocERP
     */
    public function setIdDocB2B($idDocB2B = null)
    {
        // validation for constraint: pattern
        if (is_scalar($idDocB2B) && !preg_match('/[\\da-fA-F]{8}-[\\da-fA-F]{4}-[\\da-fA-F]{4}-[\\da-fA-F]{4}-[\\da-fA-F]{12}/', $idDocB2B)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a scalar value that matches "[\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}", "%s" given', var_export($idDocB2B, true)), __LINE__);
        }
        // validation for constraint: string
        if (!is_null($idDocB2B) && !is_string($idDocB2B)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($idDocB2B)), __LINE__);
        }
        if (is_null($idDocB2B) || (is_array($idDocB2B) && empty($idDocB2B))) {
            unset($this->IdDocB2B);
        } else {
            $this->IdDocB2B = $idDocB2B;
        }
        return $this;
    }
    /**
     * Get IdDocOrigem 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 getIdDocOrigem()
    {
        return isset($this->IdDocOrigem) ? $this->IdDocOrigem : null;
    }
    /**
     * Set IdDocOrigem 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 $idDocOrigem
     * @return \StructType\CabecDocERP
     */
    public function setIdDocOrigem($idDocOrigem = null)
    {
        // validation for constraint: pattern
        if (is_scalar($idDocOrigem) && !preg_match('/[\\da-fA-F]{8}-[\\da-fA-F]{4}-[\\da-fA-F]{4}-[\\da-fA-F]{4}-[\\da-fA-F]{12}/', $idDocOrigem)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a scalar value that matches "[\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}", "%s" given', var_export($idDocOrigem, true)), __LINE__);
        }
        // validation for constraint: string
        if (!is_null($idDocOrigem) && !is_string($idDocOrigem)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($idDocOrigem)), __LINE__);
        }
        if (is_null($idDocOrigem) || (is_array($idDocOrigem) && empty($idDocOrigem))) {
            unset($this->IdDocOrigem);
        } else {
            $this->IdDocOrigem = $idDocOrigem;
        }
        return $this;
    }
    /**
     * Get IdGDOC 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 getIdGDOC()
    {
        return isset($this->IdGDOC) ? $this->IdGDOC : null;
    }
    /**
     * Set IdGDOC 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 $idGDOC
     * @return \StructType\CabecDocERP
     */
    public function setIdGDOC($idGDOC = null)
    {
        // validation for constraint: pattern
        if (is_scalar($idGDOC) && !preg_match('/[\\da-fA-F]{8}-[\\da-fA-F]{4}-[\\da-fA-F]{4}-[\\da-fA-F]{4}-[\\da-fA-F]{12}/', $idGDOC)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a scalar value that matches "[\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}", "%s" given', var_export($idGDOC, true)), __LINE__);
        }
        // validation for constraint: string
        if (!is_null($idGDOC) && !is_string($idGDOC)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($idGDOC)), __LINE__);
        }
        if (is_null($idGDOC) || (is_array($idGDOC) && empty($idGDOC))) {
            unset($this->IdGDOC);
        } else {
            $this->IdGDOC = $idGDOC;
        }
        return $this;
    }
    /**
     * Get IdOportunidade 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 getIdOportunidade()
    {
        return isset($this->IdOportunidade) ? $this->IdOportunidade : null;
    }
    /**
     * Set IdOportunidade 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 $idOportunidade
     * @return \StructType\CabecDocERP
     */
    public function setIdOportunidade($idOportunidade = null)
    {
        // validation for constraint: pattern
        if (is_scalar($idOportunidade) && !preg_match('/[\\da-fA-F]{8}-[\\da-fA-F]{4}-[\\da-fA-F]{4}-[\\da-fA-F]{4}-[\\da-fA-F]{12}/', $idOportunidade)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a scalar value that matches "[\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}", "%s" given', var_export($idOportunidade, true)), __LINE__);
        }
        // validation for constraint: string
        if (!is_null($idOportunidade) && !is_string($idOportunidade)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($idOportunidade)), __LINE__);
        }
        if (is_null($idOportunidade) || (is_array($idOportunidade) && empty($idOportunidade))) {
            unset($this->IdOportunidade);
        } else {
            $this->IdOportunidade = $idOportunidade;
        }
        return $this;
    }
    /**
     * Get IntrastatCondEnt 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 getIntrastatCondEnt()
    {
        return isset($this->IntrastatCondEnt) ? $this->IntrastatCondEnt : null;
    }
    /**
     * Set IntrastatCondEnt 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 $intrastatCondEnt
     * @return \StructType\CabecDocERP
     */
    public function setIntrastatCondEnt($intrastatCondEnt = null)
    {
        // validation for constraint: string
        if (!is_null($intrastatCondEnt) && !is_string($intrastatCondEnt)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($intrastatCondEnt)), __LINE__);
        }
        if (is_null($intrastatCondEnt) || (is_array($intrastatCondEnt) && empty($intrastatCondEnt))) {
            unset($this->IntrastatCondEnt);
        } else {
            $this->IntrastatCondEnt = $intrastatCondEnt;
        }
        return $this;
    }
    /**
     * Get IntrastatModoTransp 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 getIntrastatModoTransp()
    {
        return isset($this->IntrastatModoTransp) ? $this->IntrastatModoTransp : null;
    }
    /**
     * Set IntrastatModoTransp 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 $intrastatModoTransp
     * @return \StructType\CabecDocERP
     */
    public function setIntrastatModoTransp($intrastatModoTransp = null)
    {
        // validation for constraint: string
        if (!is_null($intrastatModoTransp) && !is_string($intrastatModoTransp)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($intrastatModoTransp)), __LINE__);
        }
        if (is_null($intrastatModoTransp) || (is_array($intrastatModoTransp) && empty($intrastatModoTransp))) {
            unset($this->IntrastatModoTransp);
        } else {
            $this->IntrastatModoTransp = $intrastatModoTransp;
        }
        return $this;
    }
    /**
     * Get IntrastatNatA 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 getIntrastatNatA()
    {
        return isset($this->IntrastatNatA) ? $this->IntrastatNatA : null;
    }
    /**
     * Set IntrastatNatA 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 $intrastatNatA
     * @return \StructType\CabecDocERP
     */
    public function setIntrastatNatA($intrastatNatA = null)
    {
        // validation for constraint: string
        if (!is_null($intrastatNatA) && !is_string($intrastatNatA)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($intrastatNatA)), __LINE__);
        }
        if (is_null($intrastatNatA) || (is_array($intrastatNatA) && empty($intrastatNatA))) {
            unset($this->IntrastatNatA);
        } else {
            $this->IntrastatNatA = $intrastatNatA;
        }
        return $this;
    }
    /**
     * Get IntrastatNatB 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 getIntrastatNatB()
    {
        return isset($this->IntrastatNatB) ? $this->IntrastatNatB : null;
    }
    /**
     * Set IntrastatNatB 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 $intrastatNatB
     * @return \StructType\CabecDocERP
     */
    public function setIntrastatNatB($intrastatNatB = null)
    {
        // validation for constraint: string
        if (!is_null($intrastatNatB) && !is_string($intrastatNatB)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($intrastatNatB)), __LINE__);
        }
        if (is_null($intrastatNatB) || (is_array($intrastatNatB) && empty($intrastatNatB))) {
            unset($this->IntrastatNatB);
        } else {
            $this->IntrastatNatB = $intrastatNatB;
        }
        return $this;
    }
    /**
     * Get IntrastatPorto 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 getIntrastatPorto()
    {
        return isset($this->IntrastatPorto) ? $this->IntrastatPorto : null;
    }
    /**
     * Set IntrastatPorto 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 $intrastatPorto
     * @return \StructType\CabecDocERP
     */
    public function setIntrastatPorto($intrastatPorto = null)
    {
        // validation for constraint: string
        if (!is_null($intrastatPorto) && !is_string($intrastatPorto)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($intrastatPorto)), __LINE__);
        }
        if (is_null($intrastatPorto) || (is_array($intrastatPorto) && empty($intrastatPorto))) {
            unset($this->IntrastatPorto);
        } else {
            $this->IntrastatPorto = $intrastatPorto;
        }
        return $this;
    }
    /**
     * Get IntrastatRegEstatistico 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 getIntrastatRegEstatistico()
    {
        return isset($this->IntrastatRegEstatistico) ? $this->IntrastatRegEstatistico : null;
    }
    /**
     * Set IntrastatRegEstatistico 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 $intrastatRegEstatistico
     * @return \StructType\CabecDocERP
     */
    public function setIntrastatRegEstatistico($intrastatRegEstatistico = null)
    {
        // validation for constraint: string
        if (!is_null($intrastatRegEstatistico) && !is_string($intrastatRegEstatistico)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($intrastatRegEstatistico)), __LINE__);
        }
        if (is_null($intrastatRegEstatistico) || (is_array($intrastatRegEstatistico) && empty($intrastatRegEstatistico))) {
            unset($this->IntrastatRegEstatistico);
        } else {
            $this->IntrastatRegEstatistico = $intrastatRegEstatistico;
        }
        return $this;
    }
    /**
     * Get Linhas 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 \ArrayType\ArrayOfLinhasDocERP|null
     */
    public function getLinhas()
    {
        return isset($this->Linhas) ? $this->Linhas : null;
    }
    /**
     * Set Linhas 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 \ArrayType\ArrayOfLinhasDocERP $linhas
     * @return \StructType\CabecDocERP
     */
    public function setLinhas(\ArrayType\ArrayOfLinhasDocERP $linhas = null)
    {
        if (is_null($linhas) || (is_array($linhas) && empty($linhas))) {
            unset($this->Linhas);
        } else {
            $this->Linhas = $linhas;
        }
        return $this;
    }
    /**
     * Get LocalCarga 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 getLocalCarga()
    {
        return isset($this->LocalCarga) ? $this->LocalCarga : null;
    }
    /**
     * Set LocalCarga 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 $localCarga
     * @return \StructType\CabecDocERP
     */
    public function setLocalCarga($localCarga = null)
    {
        // validation for constraint: string
        if (!is_null($localCarga) && !is_string($localCarga)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($localCarga)), __LINE__);
        }
        if (is_null($localCarga) || (is_array($localCarga) && empty($localCarga))) {
            unset($this->LocalCarga);
        } else {
            $this->LocalCarga = $localCarga;
        }
        return $this;
    }
    /**
     * Get LocalDescarga 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 getLocalDescarga()
    {
        return isset($this->LocalDescarga) ? $this->LocalDescarga : null;
    }
    /**
     * Set LocalDescarga 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 $localDescarga
     * @return \StructType\CabecDocERP
     */
    public function setLocalDescarga($localDescarga = null)
    {
        // validation for constraint: string
        if (!is_null($localDescarga) && !is_string($localDescarga)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($localDescarga)), __LINE__);
        }
        if (is_null($localDescarga) || (is_array($localDescarga) && empty($localDescarga))) {
            unset($this->LocalDescarga);
        } else {
            $this->LocalDescarga = $localDescarga;
        }
        return $this;
    }
    /**
     * Get LocalOperacao 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 getLocalOperacao()
    {
        return isset($this->LocalOperacao) ? $this->LocalOperacao : null;
    }
    /**
     * Set LocalOperacao 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 $localOperacao
     * @return \StructType\CabecDocERP
     */
    public function setLocalOperacao($localOperacao = null)
    {
        // validation for constraint: string
        if (!is_null($localOperacao) && !is_string($localOperacao)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($localOperacao)), __LINE__);
        }
        if (is_null($localOperacao) || (is_array($localOperacao) && empty($localOperacao))) {
            unset($this->LocalOperacao);
        } else {
            $this->LocalOperacao = $localOperacao;
        }
        return $this;
    }
    /**
     * Get Localidade value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return string|null
     */
    public function getLocalidade()
    {
        return isset($this->Localidade) ? $this->Localidade : null;
    }
    /**
     * Set Localidade value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param string $localidade
     * @return \StructType\CabecDocERP
     */
    public function setLocalidade($localidade = null)
    {
        // validation for constraint: string
        if (!is_null($localidade) && !is_string($localidade)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($localidade)), __LINE__);
        }
        if (is_null($localidade) || (is_array($localidade) && empty($localidade))) {
            unset($this->Localidade);
        } else {
            $this->Localidade = $localidade;
        }
        return $this;
    }
    /**
     * Get LocalidadeCarga 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 getLocalidadeCarga()
    {
        return isset($this->LocalidadeCarga) ? $this->LocalidadeCarga : null;
    }
    /**
     * Set LocalidadeCarga 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 $localidadeCarga
     * @return \StructType\CabecDocERP
     */
    public function setLocalidadeCarga($localidadeCarga = null)
    {
        // validation for constraint: string
        if (!is_null($localidadeCarga) && !is_string($localidadeCarga)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($localidadeCarga)), __LINE__);
        }
        if (is_null($localidadeCarga) || (is_array($localidadeCarga) && empty($localidadeCarga))) {
            unset($this->LocalidadeCarga);
        } else {
            $this->LocalidadeCarga = $localidadeCarga;
        }
        return $this;
    }
    /**
     * Get LocalidadeCodigoPostalFac 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 getLocalidadeCodigoPostalFac()
    {
        return isset($this->LocalidadeCodigoPostalFac) ? $this->LocalidadeCodigoPostalFac : null;
    }
    /**
     * Set LocalidadeCodigoPostalFac 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 $localidadeCodigoPostalFac
     * @return \StructType\CabecDocERP
     */
    public function setLocalidadeCodigoPostalFac($localidadeCodigoPostalFac = null)
    {
        // validation for constraint: string
        if (!is_null($localidadeCodigoPostalFac) && !is_string($localidadeCodigoPostalFac)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($localidadeCodigoPostalFac)), __LINE__);
        }
        if (is_null($localidadeCodigoPostalFac) || (is_array($localidadeCodigoPostalFac) && empty($localidadeCodigoPostalFac))) {
            unset($this->LocalidadeCodigoPostalFac);
        } else {
            $this->LocalidadeCodigoPostalFac = $localidadeCodigoPostalFac;
        }
        return $this;
    }
    /**
     * Get LocalidadeEntrega 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 getLocalidadeEntrega()
    {
        return isset($this->LocalidadeEntrega) ? $this->LocalidadeEntrega : null;
    }
    /**
     * Set LocalidadeEntrega 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 $localidadeEntrega
     * @return \StructType\CabecDocERP
     */
    public function setLocalidadeEntrega($localidadeEntrega = null)
    {
        // validation for constraint: string
        if (!is_null($localidadeEntrega) && !is_string($localidadeEntrega)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($localidadeEntrega)), __LINE__);
        }
        if (is_null($localidadeEntrega) || (is_array($localidadeEntrega) && empty($localidadeEntrega))) {
            unset($this->LocalidadeEntrega);
        } else {
            $this->LocalidadeEntrega = $localidadeEntrega;
        }
        return $this;
    }
    /**
     * Get LocalidadeFac 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 getLocalidadeFac()
    {
        return isset($this->LocalidadeFac) ? $this->LocalidadeFac : null;
    }
    /**
     * Set LocalidadeFac 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 $localidadeFac
     * @return \StructType\CabecDocERP
     */
    public function setLocalidadeFac($localidadeFac = null)
    {
        // validation for constraint: string
        if (!is_null($localidadeFac) && !is_string($localidadeFac)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($localidadeFac)), __LINE__);
        }
        if (is_null($localidadeFac) || (is_array($localidadeFac) && empty($localidadeFac))) {
            unset($this->LocalidadeFac);
        } else {
            $this->LocalidadeFac = $localidadeFac;
        }
        return $this;
    }
    /**
     * Get MargemDoc value
     * @return float|null
     */
    public function getMargemDoc()
    {
        return $this->MargemDoc;
    }
    /**
     * Set MargemDoc value
     * @param float $margemDoc
     * @return \StructType\CabecDocERP
     */
    public function setMargemDoc($margemDoc = null)
    {
        $this->MargemDoc = $margemDoc;
        return $this;
    }
    /**
     * Get Matricula 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 getMatricula()
    {
        return isset($this->Matricula) ? $this->Matricula : null;
    }
    /**
     * Set Matricula 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 $matricula
     * @return \StructType\CabecDocERP
     */
    public function setMatricula($matricula = null)
    {
        // validation for constraint: string
        if (!is_null($matricula) && !is_string($matricula)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($matricula)), __LINE__);
        }
        if (is_null($matricula) || (is_array($matricula) && empty($matricula))) {
            unset($this->Matricula);
        } else {
            $this->Matricula = $matricula;
        }
        return $this;
    }
    /**
     * Get ModoExp 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 getModoExp()
    {
        return isset($this->ModoExp) ? $this->ModoExp : null;
    }
    /**
     * Set ModoExp 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 $modoExp
     * @return \StructType\CabecDocERP
     */
    public function setModoExp($modoExp = null)
    {
        // validation for constraint: string
        if (!is_null($modoExp) && !is_string($modoExp)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($modoExp)), __LINE__);
        }
        if (is_null($modoExp) || (is_array($modoExp) && empty($modoExp))) {
            unset($this->ModoExp);
        } else {
            $this->ModoExp = $modoExp;
        }
        return $this;
    }
    /**
     * Get ModoPag 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 getModoPag()
    {
        return isset($this->ModoPag) ? $this->ModoPag : null;
    }
    /**
     * Set ModoPag 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 $modoPag
     * @return \StructType\CabecDocERP
     */
    public function setModoPag($modoPag = null)
    {
        // validation for constraint: string
        if (!is_null($modoPag) && !is_string($modoPag)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($modoPag)), __LINE__);
        }
        if (is_null($modoPag) || (is_array($modoPag) && empty($modoPag))) {
            unset($this->ModoPag);
        } else {
            $this->ModoPag = $modoPag;
        }
        return $this;
    }
    /**
     * Get ModuloOrigem 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 getModuloOrigem()
    {
        return isset($this->ModuloOrigem) ? $this->ModuloOrigem : null;
    }
    /**
     * Set ModuloOrigem 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 $moduloOrigem
     * @return \StructType\CabecDocERP
     */
    public function setModuloOrigem($moduloOrigem = null)
    {
        // validation for constraint: string
        if (!is_null($moduloOrigem) && !is_string($moduloOrigem)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($moduloOrigem)), __LINE__);
        }
        if (is_null($moduloOrigem) || (is_array($moduloOrigem) && empty($moduloOrigem))) {
            unset($this->ModuloOrigem);
        } else {
            $this->ModuloOrigem = $moduloOrigem;
        }
        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\CabecDocERP
     */
    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 MoedaDaUEM 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 getMoedaDaUEM()
    {
        return isset($this->MoedaDaUEM) ? $this->MoedaDaUEM : null;
    }
    /**
     * Set MoedaDaUEM 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 $moedaDaUEM
     * @return \StructType\CabecDocERP
     */
    public function setMoedaDaUEM($moedaDaUEM = null)
    {
        // validation for constraint: boolean
        if (!is_null($moedaDaUEM) && !is_bool($moedaDaUEM)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($moedaDaUEM)), __LINE__);
        }
        if (is_null($moedaDaUEM) || (is_array($moedaDaUEM) && empty($moedaDaUEM))) {
            unset($this->MoedaDaUEM);
        } else {
            $this->MoedaDaUEM = $moedaDaUEM;
        }
        return $this;
    }
    /**
     * Get Morada value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return string|null
     */
    public function getMorada()
    {
        return isset($this->Morada) ? $this->Morada : null;
    }
    /**
     * Set Morada value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param string $morada
     * @return \StructType\CabecDocERP
     */
    public function setMorada($morada = null)
    {
        // validation for constraint: string
        if (!is_null($morada) && !is_string($morada)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($morada)), __LINE__);
        }
        if (is_null($morada) || (is_array($morada) && empty($morada))) {
            unset($this->Morada);
        } else {
            $this->Morada = $morada;
        }
        return $this;
    }
    /**
     * Get Morada2 value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return string|null
     */
    public function getMorada2()
    {
        return isset($this->Morada2) ? $this->Morada2 : null;
    }
    /**
     * Set Morada2 value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param string $morada2
     * @return \StructType\CabecDocERP
     */
    public function setMorada2($morada2 = null)
    {
        // validation for constraint: string
        if (!is_null($morada2) && !is_string($morada2)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($morada2)), __LINE__);
        }
        if (is_null($morada2) || (is_array($morada2) && empty($morada2))) {
            unset($this->Morada2);
        } else {
            $this->Morada2 = $morada2;
        }
        return $this;
    }
    /**
     * Get Morada2Carga 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 getMorada2Carga()
    {
        return isset($this->Morada2Carga) ? $this->Morada2Carga : null;
    }
    /**
     * Set Morada2Carga 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 $morada2Carga
     * @return \StructType\CabecDocERP
     */
    public function setMorada2Carga($morada2Carga = null)
    {
        // validation for constraint: string
        if (!is_null($morada2Carga) && !is_string($morada2Carga)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($morada2Carga)), __LINE__);
        }
        if (is_null($morada2Carga) || (is_array($morada2Carga) && empty($morada2Carga))) {
            unset($this->Morada2Carga);
        } else {
            $this->Morada2Carga = $morada2Carga;
        }
        return $this;
    }
    /**
     * Get Morada2Entrega 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 getMorada2Entrega()
    {
        return isset($this->Morada2Entrega) ? $this->Morada2Entrega : null;
    }
    /**
     * Set Morada2Entrega 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 $morada2Entrega
     * @return \StructType\CabecDocERP
     */
    public function setMorada2Entrega($morada2Entrega = null)
    {
        // validation for constraint: string
        if (!is_null($morada2Entrega) && !is_string($morada2Entrega)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($morada2Entrega)), __LINE__);
        }
        if (is_null($morada2Entrega) || (is_array($morada2Entrega) && empty($morada2Entrega))) {
            unset($this->Morada2Entrega);
        } else {
            $this->Morada2Entrega = $morada2Entrega;
        }
        return $this;
    }
    /**
     * Get Morada2Fac 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 getMorada2Fac()
    {
        return isset($this->Morada2Fac) ? $this->Morada2Fac : null;
    }
    /**
     * Set Morada2Fac 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 $morada2Fac
     * @return \StructType\CabecDocERP
     */
    public function setMorada2Fac($morada2Fac = null)
    {
        // validation for constraint: string
        if (!is_null($morada2Fac) && !is_string($morada2Fac)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($morada2Fac)), __LINE__);
        }
        if (is_null($morada2Fac) || (is_array($morada2Fac) && empty($morada2Fac))) {
            unset($this->Morada2Fac);
        } else {
            $this->Morada2Fac = $morada2Fac;
        }
        return $this;
    }
    /**
     * Get MoradaAltEntrega 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 getMoradaAltEntrega()
    {
        return isset($this->MoradaAltEntrega) ? $this->MoradaAltEntrega : null;
    }
    /**
     * Set MoradaAltEntrega 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 $moradaAltEntrega
     * @return \StructType\CabecDocERP
     */
    public function setMoradaAltEntrega($moradaAltEntrega = null)
    {
        // validation for constraint: string
        if (!is_null($moradaAltEntrega) && !is_string($moradaAltEntrega)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($moradaAltEntrega)), __LINE__);
        }
        if (is_null($moradaAltEntrega) || (is_array($moradaAltEntrega) && empty($moradaAltEntrega))) {
            unset($this->MoradaAltEntrega);
        } else {
            $this->MoradaAltEntrega = $moradaAltEntrega;
        }
        return $this;
    }
    /**
     * Get MoradaCarga 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 getMoradaCarga()
    {
        return isset($this->MoradaCarga) ? $this->MoradaCarga : null;
    }
    /**
     * Set MoradaCarga 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 $moradaCarga
     * @return \StructType\CabecDocERP
     */
    public function setMoradaCarga($moradaCarga = null)
    {
        // validation for constraint: string
        if (!is_null($moradaCarga) && !is_string($moradaCarga)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($moradaCarga)), __LINE__);
        }
        if (is_null($moradaCarga) || (is_array($moradaCarga) && empty($moradaCarga))) {
            unset($this->MoradaCarga);
        } else {
            $this->MoradaCarga = $moradaCarga;
        }
        return $this;
    }
    /**
     * Get MoradaEntrega 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 getMoradaEntrega()
    {
        return isset($this->MoradaEntrega) ? $this->MoradaEntrega : null;
    }
    /**
     * Set MoradaEntrega 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 $moradaEntrega
     * @return \StructType\CabecDocERP
     */
    public function setMoradaEntrega($moradaEntrega = null)
    {
        // validation for constraint: string
        if (!is_null($moradaEntrega) && !is_string($moradaEntrega)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($moradaEntrega)), __LINE__);
        }
        if (is_null($moradaEntrega) || (is_array($moradaEntrega) && empty($moradaEntrega))) {
            unset($this->MoradaEntrega);
        } else {
            $this->MoradaEntrega = $moradaEntrega;
        }
        return $this;
    }
    /**
     * Get MoradaFac 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 getMoradaFac()
    {
        return isset($this->MoradaFac) ? $this->MoradaFac : null;
    }
    /**
     * Set MoradaFac 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 $moradaFac
     * @return \StructType\CabecDocERP
     */
    public function setMoradaFac($moradaFac = null)
    {
        // validation for constraint: string
        if (!is_null($moradaFac) && !is_string($moradaFac)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($moradaFac)), __LINE__);
        }
        if (is_null($moradaFac) || (is_array($moradaFac) && empty($moradaFac))) {
            unset($this->MoradaFac);
        } else {
            $this->MoradaFac = $moradaFac;
        }
        return $this;
    }
    /**
     * Get Nome 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 getNome()
    {
        return isset($this->Nome) ? $this->Nome : null;
    }
    /**
     * Set Nome 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 $nome
     * @return \StructType\CabecDocERP
     */
    public function setNome($nome = null)
    {
        // validation for constraint: string
        if (!is_null($nome) && !is_string($nome)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($nome)), __LINE__);
        }
        if (is_null($nome) || (is_array($nome) && empty($nome))) {
            unset($this->Nome);
        } else {
            $this->Nome = $nome;
        }
        return $this;
    }
    /**
     * Get NomeEntrega 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 getNomeEntrega()
    {
        return isset($this->NomeEntrega) ? $this->NomeEntrega : null;
    }
    /**
     * Set NomeEntrega 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 $nomeEntrega
     * @return \StructType\CabecDocERP
     */
    public function setNomeEntrega($nomeEntrega = null)
    {
        // validation for constraint: string
        if (!is_null($nomeEntrega) && !is_string($nomeEntrega)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($nomeEntrega)), __LINE__);
        }
        if (is_null($nomeEntrega) || (is_array($nomeEntrega) && empty($nomeEntrega))) {
            unset($this->NomeEntrega);
        } else {
            $this->NomeEntrega = $nomeEntrega;
        }
        return $this;
    }
    /**
     * Get NomeFac 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 getNomeFac()
    {
        return isset($this->NomeFac) ? $this->NomeFac : null;
    }
    /**
     * Set NomeFac 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 $nomeFac
     * @return \StructType\CabecDocERP
     */
    public function setNomeFac($nomeFac = null)
    {
        // validation for constraint: string
        if (!is_null($nomeFac) && !is_string($nomeFac)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($nomeFac)), __LINE__);
        }
        if (is_null($nomeFac) || (is_array($nomeFac) && empty($nomeFac))) {
            unset($this->NomeFac);
        } else {
            $this->NomeFac = $nomeFac;
        }
        return $this;
    }
    /**
     * Get NumContribuinte 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 getNumContribuinte()
    {
        return isset($this->NumContribuinte) ? $this->NumContribuinte : null;
    }
    /**
     * Set NumContribuinte 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 $numContribuinte
     * @return \StructType\CabecDocERP
     */
    public function setNumContribuinte($numContribuinte = null)
    {
        // validation for constraint: string
        if (!is_null($numContribuinte) && !is_string($numContribuinte)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($numContribuinte)), __LINE__);
        }
        if (is_null($numContribuinte) || (is_array($numContribuinte) && empty($numContribuinte))) {
            unset($this->NumContribuinte);
        } else {
            $this->NumContribuinte = $numContribuinte;
        }
        return $this;
    }
    /**
     * Get NumContribuinteFac 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 getNumContribuinteFac()
    {
        return isset($this->NumContribuinteFac) ? $this->NumContribuinteFac : null;
    }
    /**
     * Set NumContribuinteFac 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 $numContribuinteFac
     * @return \StructType\CabecDocERP
     */
    public function setNumContribuinteFac($numContribuinteFac = null)
    {
        // validation for constraint: string
        if (!is_null($numContribuinteFac) && !is_string($numContribuinteFac)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($numContribuinteFac)), __LINE__);
        }
        if (is_null($numContribuinteFac) || (is_array($numContribuinteFac) && empty($numContribuinteFac))) {
            unset($this->NumContribuinteFac);
        } else {
            $this->NumContribuinteFac = $numContribuinteFac;
        }
        return $this;
    }
    /**
     * Get NumDiario 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 getNumDiario()
    {
        return isset($this->NumDiario) ? $this->NumDiario : null;
    }
    /**
     * Set NumDiario 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 $numDiario
     * @return \StructType\CabecDocERP
     */
    public function setNumDiario($numDiario = null)
    {
        // validation for constraint: int
        if (!is_null($numDiario) && !is_numeric($numDiario)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a numeric value, "%s" given', gettype($numDiario)), __LINE__);
        }
        if (is_null($numDiario) || (is_array($numDiario) && empty($numDiario))) {
            unset($this->NumDiario);
        } else {
            $this->NumDiario = $numDiario;
        }
        return $this;
    }
    /**
     * Get NumDoc value
     * @return int|null
     */
    public function getNumDoc()
    {
        return $this->NumDoc;
    }
    /**
     * Set NumDoc value
     * @param int $numDoc
     * @return \StructType\CabecDocERP
     */
    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__);
        }
        $this->NumDoc = $numDoc;
        return $this;
    }
    /**
     * Get NumProposta 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 getNumProposta()
    {
        return isset($this->NumProposta) ? $this->NumProposta : null;
    }
    /**
     * Set NumProposta 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 $numProposta
     * @return \StructType\CabecDocERP
     */
    public function setNumProposta($numProposta = null)
    {
        // validation for constraint: int
        if (!is_null($numProposta) && !is_numeric($numProposta)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a numeric value, "%s" given', gettype($numProposta)), __LINE__);
        }
        if (is_null($numProposta) || (is_array($numProposta) && empty($numProposta))) {
            unset($this->NumProposta);
        } else {
            $this->NumProposta = $numProposta;
        }
        return $this;
    }
    /**
     * Get ObraID 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 getObraID()
    {
        return isset($this->ObraID) ? $this->ObraID : null;
    }
    /**
     * Set ObraID 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 $obraID
     * @return \StructType\CabecDocERP
     */
    public function setObraID($obraID = null)
    {
        // validation for constraint: pattern
        if (is_scalar($obraID) && !preg_match('/[\\da-fA-F]{8}-[\\da-fA-F]{4}-[\\da-fA-F]{4}-[\\da-fA-F]{4}-[\\da-fA-F]{12}/', $obraID)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a scalar value that matches "[\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}", "%s" given', var_export($obraID, true)), __LINE__);
        }
        // validation for constraint: string
        if (!is_null($obraID) && !is_string($obraID)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($obraID)), __LINE__);
        }
        if (is_null($obraID) || (is_array($obraID) && empty($obraID))) {
            unset($this->ObraID);
        } else {
            $this->ObraID = $obraID;
        }
        return $this;
    }
    /**
     * Get Observacoes 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 getObservacoes()
    {
        return isset($this->Observacoes) ? $this->Observacoes : null;
    }
    /**
     * Set Observacoes 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 $observacoes
     * @return \StructType\CabecDocERP
     */
    public function setObservacoes($observacoes = null)
    {
        // validation for constraint: string
        if (!is_null($observacoes) && !is_string($observacoes)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($observacoes)), __LINE__);
        }
        if (is_null($observacoes) || (is_array($observacoes) && empty($observacoes))) {
            unset($this->Observacoes);
        } else {
            $this->Observacoes = $observacoes;
        }
        return $this;
    }
    /**
     * Get Origem 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 getOrigem()
    {
        return isset($this->Origem) ? $this->Origem : null;
    }
    /**
     * Set Origem 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 $origem
     * @return \StructType\CabecDocERP
     */
    public function setOrigem($origem = null)
    {
        // validation for constraint: string
        if (!is_null($origem) && !is_string($origem)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($origem)), __LINE__);
        }
        if (is_null($origem) || (is_array($origem) && empty($origem))) {
            unset($this->Origem);
        } else {
            $this->Origem = $origem;
        }
        return $this;
    }
    /**
     * Get OrigemPOS value
     * @return bool|null
     */
    public function getOrigemPOS()
    {
        return $this->OrigemPOS;
    }
    /**
     * Set OrigemPOS value
     * @param bool $origemPOS
     * @return \StructType\CabecDocERP
     */
    public function setOrigemPOS($origemPOS = null)
    {
        // validation for constraint: boolean
        if (!is_null($origemPOS) && !is_bool($origemPOS)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($origemPOS)), __LINE__);
        }
        $this->OrigemPOS = $origemPOS;
        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\CabecDocERP
     */
    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 PaisCarga 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 getPaisCarga()
    {
        return isset($this->PaisCarga) ? $this->PaisCarga : null;
    }
    /**
     * Set PaisCarga 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 $paisCarga
     * @return \StructType\CabecDocERP
     */
    public function setPaisCarga($paisCarga = null)
    {
        // validation for constraint: string
        if (!is_null($paisCarga) && !is_string($paisCarga)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($paisCarga)), __LINE__);
        }
        if (is_null($paisCarga) || (is_array($paisCarga) && empty($paisCarga))) {
            unset($this->PaisCarga);
        } else {
            $this->PaisCarga = $paisCarga;
        }
        return $this;
    }
    /**
     * Get PaisEntrega 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 getPaisEntrega()
    {
        return isset($this->PaisEntrega) ? $this->PaisEntrega : null;
    }
    /**
     * Set PaisEntrega 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 $paisEntrega
     * @return \StructType\CabecDocERP
     */
    public function setPaisEntrega($paisEntrega = null)
    {
        // validation for constraint: string
        if (!is_null($paisEntrega) && !is_string($paisEntrega)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($paisEntrega)), __LINE__);
        }
        if (is_null($paisEntrega) || (is_array($paisEntrega) && empty($paisEntrega))) {
            unset($this->PaisEntrega);
        } else {
            $this->PaisEntrega = $paisEntrega;
        }
        return $this;
    }
    /**
     * Get PaisFac 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 getPaisFac()
    {
        return isset($this->PaisFac) ? $this->PaisFac : null;
    }
    /**
     * Set PaisFac 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 $paisFac
     * @return \StructType\CabecDocERP
     */
    public function setPaisFac($paisFac = null)
    {
        // validation for constraint: string
        if (!is_null($paisFac) && !is_string($paisFac)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($paisFac)), __LINE__);
        }
        if (is_null($paisFac) || (is_array($paisFac) && empty($paisFac))) {
            unset($this->PaisFac);
        } else {
            $this->PaisFac = $paisFac;
        }
        return $this;
    }
    /**
     * Get PendentePorLinha value
     * @return bool|null
     */
    public function getPendentePorLinha()
    {
        return $this->PendentePorLinha;
    }
    /**
     * Set PendentePorLinha value
     * @param bool $pendentePorLinha
     * @return \StructType\CabecDocERP
     */
    public function setPendentePorLinha($pendentePorLinha = null)
    {
        // validation for constraint: boolean
        if (!is_null($pendentePorLinha) && !is_bool($pendentePorLinha)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($pendentePorLinha)), __LINE__);
        }
        $this->PendentePorLinha = $pendentePorLinha;
        return $this;
    }
    /**
     * Get PercentagemRetencao 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 getPercentagemRetencao()
    {
        return isset($this->PercentagemRetencao) ? $this->PercentagemRetencao : null;
    }
    /**
     * Set PercentagemRetencao 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 $percentagemRetencao
     * @return \StructType\CabecDocERP
     */
    public function setPercentagemRetencao($percentagemRetencao = null)
    {
        if (is_null($percentagemRetencao) || (is_array($percentagemRetencao) && empty($percentagemRetencao))) {
            unset($this->PercentagemRetencao);
        } else {
            $this->PercentagemRetencao = $percentagemRetencao;
        }
        return $this;
    }
    /**
     * Get Posto 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 getPosto()
    {
        return isset($this->Posto) ? $this->Posto : null;
    }
    /**
     * Set Posto 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 $posto
     * @return \StructType\CabecDocERP
     */
    public function setPosto($posto = null)
    {
        // validation for constraint: string
        if (!is_null($posto) && !is_string($posto)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($posto)), __LINE__);
        }
        if (is_null($posto) || (is_array($posto) && empty($posto))) {
            unset($this->Posto);
        } else {
            $this->Posto = $posto;
        }
        return $this;
    }
    /**
     * Get Protegida value
     * @return bool|null
     */
    public function getProtegida()
    {
        return $this->Protegida;
    }
    /**
     * Set Protegida value
     * @param bool $protegida
     * @return \StructType\CabecDocERP
     */
    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 RefDocOrig 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 getRefDocOrig()
    {
        return isset($this->RefDocOrig) ? $this->RefDocOrig : null;
    }
    /**
     * Set RefDocOrig 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 $refDocOrig
     * @return \StructType\CabecDocERP
     */
    public function setRefDocOrig($refDocOrig = null)
    {
        // validation for constraint: string
        if (!is_null($refDocOrig) && !is_string($refDocOrig)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($refDocOrig)), __LINE__);
        }
        if (is_null($refDocOrig) || (is_array($refDocOrig) && empty($refDocOrig))) {
            unset($this->RefDocOrig);
        } else {
            $this->RefDocOrig = $refDocOrig;
        }
        return $this;
    }
    /**
     * Get RefSerieDocOrig 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 getRefSerieDocOrig()
    {
        return isset($this->RefSerieDocOrig) ? $this->RefSerieDocOrig : null;
    }
    /**
     * Set RefSerieDocOrig 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 $refSerieDocOrig
     * @return \StructType\CabecDocERP
     */
    public function setRefSerieDocOrig($refSerieDocOrig = null)
    {
        // validation for constraint: string
        if (!is_null($refSerieDocOrig) && !is_string($refSerieDocOrig)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($refSerieDocOrig)), __LINE__);
        }
        if (is_null($refSerieDocOrig) || (is_array($refSerieDocOrig) && empty($refSerieDocOrig))) {
            unset($this->RefSerieDocOrig);
        } else {
            $this->RefSerieDocOrig = $refSerieDocOrig;
        }
        return $this;
    }
    /**
     * Get RefTipoDocOrig 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 getRefTipoDocOrig()
    {
        return isset($this->RefTipoDocOrig) ? $this->RefTipoDocOrig : null;
    }
    /**
     * Set RefTipoDocOrig 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 $refTipoDocOrig
     * @return \StructType\CabecDocERP
     */
    public function setRefTipoDocOrig($refTipoDocOrig = null)
    {
        // validation for constraint: string
        if (!is_null($refTipoDocOrig) && !is_string($refTipoDocOrig)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($refTipoDocOrig)), __LINE__);
        }
        if (is_null($refTipoDocOrig) || (is_array($refTipoDocOrig) && empty($refTipoDocOrig))) {
            unset($this->RefTipoDocOrig);
        } else {
            $this->RefTipoDocOrig = $refTipoDocOrig;
        }
        return $this;
    }
    /**
     * Get Referencia 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 getReferencia()
    {
        return isset($this->Referencia) ? $this->Referencia : null;
    }
    /**
     * Set Referencia 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 $referencia
     * @return \StructType\CabecDocERP
     */
    public function setReferencia($referencia = null)
    {
        // validation for constraint: string
        if (!is_null($referencia) && !is_string($referencia)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($referencia)), __LINE__);
        }
        if (is_null($referencia) || (is_array($referencia) && empty($referencia))) {
            unset($this->Referencia);
        } else {
            $this->Referencia = $referencia;
        }
        return $this;
    }
    /**
     * Get RegimeIva 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 getRegimeIva()
    {
        return isset($this->RegimeIva) ? $this->RegimeIva : null;
    }
    /**
     * Set RegimeIva 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 $regimeIva
     * @return \StructType\CabecDocERP
     */
    public function setRegimeIva($regimeIva = null)
    {
        // validation for constraint: string
        if (!is_null($regimeIva) && !is_string($regimeIva)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($regimeIva)), __LINE__);
        }
        if (is_null($regimeIva) || (is_array($regimeIva) && empty($regimeIva))) {
            unset($this->RegimeIva);
        } else {
            $this->RegimeIva = $regimeIva;
        }
        return $this;
    }
    /**
     * Get RegimeIvaReembolsos value
     * @return int|null
     */
    public function getRegimeIvaReembolsos()
    {
        return $this->RegimeIvaReembolsos;
    }
    /**
     * Set RegimeIvaReembolsos value
     * @param int $regimeIvaReembolsos
     * @return \StructType\CabecDocERP
     */
    public function setRegimeIvaReembolsos($regimeIvaReembolsos = null)
    {
        // validation for constraint: int
        if (!is_null($regimeIvaReembolsos) && !is_numeric($regimeIvaReembolsos)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a numeric value, "%s" given', gettype($regimeIvaReembolsos)), __LINE__);
        }
        $this->RegimeIvaReembolsos = $regimeIvaReembolsos;
        return $this;
    }
    /**
     * Get Requisicao 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 getRequisicao()
    {
        return isset($this->Requisicao) ? $this->Requisicao : null;
    }
    /**
     * Set Requisicao 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 $requisicao
     * @return \StructType\CabecDocERP
     */
    public function setRequisicao($requisicao = null)
    {
        // validation for constraint: string
        if (!is_null($requisicao) && !is_string($requisicao)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($requisicao)), __LINE__);
        }
        if (is_null($requisicao) || (is_array($requisicao) && empty($requisicao))) {
            unset($this->Requisicao);
        } else {
            $this->Requisicao = $requisicao;
        }
        return $this;
    }
    /**
     * Get RespCobranca 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 getRespCobranca()
    {
        return isset($this->RespCobranca) ? $this->RespCobranca : null;
    }
    /**
     * Set RespCobranca 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 $respCobranca
     * @return \StructType\CabecDocERP
     */
    public function setRespCobranca($respCobranca = null)
    {
        // validation for constraint: string
        if (!is_null($respCobranca) && !is_string($respCobranca)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($respCobranca)), __LINE__);
        }
        if (is_null($respCobranca) || (is_array($respCobranca) && empty($respCobranca))) {
            unset($this->RespCobranca);
        } else {
            $this->RespCobranca = $respCobranca;
        }
        return $this;
    }
    /**
     * Get Responsavel 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 getResponsavel()
    {
        return isset($this->Responsavel) ? $this->Responsavel : null;
    }
    /**
     * Set Responsavel 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 $responsavel
     * @return \StructType\CabecDocERP
     */
    public function setResponsavel($responsavel = null)
    {
        // validation for constraint: string
        if (!is_null($responsavel) && !is_string($responsavel)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($responsavel)), __LINE__);
        }
        if (is_null($responsavel) || (is_array($responsavel) && empty($responsavel))) {
            unset($this->Responsavel);
        } else {
            $this->Responsavel = $responsavel;
        }
        return $this;
    }
    /**
     * Get Resumo 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 getResumo()
    {
        return isset($this->Resumo) ? $this->Resumo : null;
    }
    /**
     * Set Resumo 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 $resumo
     * @return \StructType\CabecDocERP
     */
    public function setResumo($resumo = null)
    {
        // validation for constraint: boolean
        if (!is_null($resumo) && !is_bool($resumo)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($resumo)), __LINE__);
        }
        if (is_null($resumo) || (is_array($resumo) && empty($resumo))) {
            unset($this->Resumo);
        } else {
            $this->Resumo = $resumo;
        }
        return $this;
    }
    /**
     * Get Seccao 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 getSeccao()
    {
        return isset($this->Seccao) ? $this->Seccao : null;
    }
    /**
     * Set Seccao 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 $seccao
     * @return \StructType\CabecDocERP
     */
    public function setSeccao($seccao = null)
    {
        // validation for constraint: string
        if (!is_null($seccao) && !is_string($seccao)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($seccao)), __LINE__);
        }
        if (is_null($seccao) || (is_array($seccao) && empty($seccao))) {
            unset($this->Seccao);
        } else {
            $this->Seccao = $seccao;
        }
        return $this;
    }
    /**
     * Get Serie 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 getSerie()
    {
        return isset($this->Serie) ? $this->Serie : null;
    }
    /**
     * Set Serie 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 $serie
     * @return \StructType\CabecDocERP
     */
    public function setSerie($serie = null)
    {
        // validation for constraint: string
        if (!is_null($serie) && !is_string($serie)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($serie)), __LINE__);
        }
        if (is_null($serie) || (is_array($serie) && empty($serie))) {
            unset($this->Serie);
        } else {
            $this->Serie = $serie;
        }
        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\CabecDocERP
     */
    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 TipoEntidade 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 getTipoEntidade()
    {
        return isset($this->TipoEntidade) ? $this->TipoEntidade : null;
    }
    /**
     * Set TipoEntidade 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 $tipoEntidade
     * @return \StructType\CabecDocERP
     */
    public function setTipoEntidade($tipoEntidade = null)
    {
        // validation for constraint: string
        if (!is_null($tipoEntidade) && !is_string($tipoEntidade)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($tipoEntidade)), __LINE__);
        }
        if (is_null($tipoEntidade) || (is_array($tipoEntidade) && empty($tipoEntidade))) {
            unset($this->TipoEntidade);
        } else {
            $this->TipoEntidade = $tipoEntidade;
        }
        return $this;
    }
    /**
     * Get TipoEntidadeEntrega 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 getTipoEntidadeEntrega()
    {
        return isset($this->TipoEntidadeEntrega) ? $this->TipoEntidadeEntrega : null;
    }
    /**
     * Set TipoEntidadeEntrega 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 $tipoEntidadeEntrega
     * @return \StructType\CabecDocERP
     */
    public function setTipoEntidadeEntrega($tipoEntidadeEntrega = null)
    {
        // validation for constraint: string
        if (!is_null($tipoEntidadeEntrega) && !is_string($tipoEntidadeEntrega)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($tipoEntidadeEntrega)), __LINE__);
        }
        if (is_null($tipoEntidadeEntrega) || (is_array($tipoEntidadeEntrega) && empty($tipoEntidadeEntrega))) {
            unset($this->TipoEntidadeEntrega);
        } else {
            $this->TipoEntidadeEntrega = $tipoEntidadeEntrega;
        }
        return $this;
    }
    /**
     * Get TipoEntidadeFac 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 getTipoEntidadeFac()
    {
        return isset($this->TipoEntidadeFac) ? $this->TipoEntidadeFac : null;
    }
    /**
     * Set TipoEntidadeFac 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 $tipoEntidadeFac
     * @return \StructType\CabecDocERP
     */
    public function setTipoEntidadeFac($tipoEntidadeFac = null)
    {
        // validation for constraint: string
        if (!is_null($tipoEntidadeFac) && !is_string($tipoEntidadeFac)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($tipoEntidadeFac)), __LINE__);
        }
        if (is_null($tipoEntidadeFac) || (is_array($tipoEntidadeFac) && empty($tipoEntidadeFac))) {
            unset($this->TipoEntidadeFac);
        } else {
            $this->TipoEntidadeFac = $tipoEntidadeFac;
        }
        return $this;
    }
    /**
     * Get TipoFiscal 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 getTipoFiscal()
    {
        return isset($this->TipoFiscal) ? $this->TipoFiscal : null;
    }
    /**
     * Set TipoFiscal 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 $tipoFiscal
     * @return \StructType\CabecDocERP
     */
    public function setTipoFiscal($tipoFiscal = null)
    {
        // validation for constraint: string
        if (!is_null($tipoFiscal) && !is_string($tipoFiscal)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($tipoFiscal)), __LINE__);
        }
        if (is_null($tipoFiscal) || (is_array($tipoFiscal) && empty($tipoFiscal))) {
            unset($this->TipoFiscal);
        } else {
            $this->TipoFiscal = $tipoFiscal;
        }
        return $this;
    }
    /**
     * Get TipoLancamento 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 getTipoLancamento()
    {
        return isset($this->TipoLancamento) ? $this->TipoLancamento : null;
    }
    /**
     * Set TipoLancamento 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 $tipoLancamento
     * @return \StructType\CabecDocERP
     */
    public function setTipoLancamento($tipoLancamento = null)
    {
        // validation for constraint: string
        if (!is_null($tipoLancamento) && !is_string($tipoLancamento)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($tipoLancamento)), __LINE__);
        }
        if (is_null($tipoLancamento) || (is_array($tipoLancamento) && empty($tipoLancamento))) {
            unset($this->TipoLancamento);
        } else {
            $this->TipoLancamento = $tipoLancamento;
        }
        return $this;
    }
    /**
     * Get TipoOperacao 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 getTipoOperacao()
    {
        return isset($this->TipoOperacao) ? $this->TipoOperacao : null;
    }
    /**
     * Set TipoOperacao 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 $tipoOperacao
     * @return \StructType\CabecDocERP
     */
    public function setTipoOperacao($tipoOperacao = null)
    {
        // validation for constraint: string
        if (!is_null($tipoOperacao) && !is_string($tipoOperacao)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($tipoOperacao)), __LINE__);
        }
        if (is_null($tipoOperacao) || (is_array($tipoOperacao) && empty($tipoOperacao))) {
            unset($this->TipoOperacao);
        } else {
            $this->TipoOperacao = $tipoOperacao;
        }
        return $this;
    }
    /**
     * Get TotalDesc 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 getTotalDesc()
    {
        return isset($this->TotalDesc) ? $this->TotalDesc : null;
    }
    /**
     * Set TotalDesc 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 $totalDesc
     * @return \StructType\CabecDocERP
     */
    public function setTotalDesc($totalDesc = null)
    {
        if (is_null($totalDesc) || (is_array($totalDesc) && empty($totalDesc))) {
            unset($this->TotalDesc);
        } else {
            $this->TotalDesc = $totalDesc;
        }
        return $this;
    }
    /**
     * Get TotalDocumento value
     * @return float|null
     */
    public function getTotalDocumento()
    {
        return $this->TotalDocumento;
    }
    /**
     * Set TotalDocumento value
     * @param float $totalDocumento
     * @return \StructType\CabecDocERP
     */
    public function setTotalDocumento($totalDocumento = null)
    {
        $this->TotalDocumento = $totalDocumento;
        return $this;
    }
    /**
     * Get TotalEcotaxa value
     * @return float|null
     */
    public function getTotalEcotaxa()
    {
        return $this->TotalEcotaxa;
    }
    /**
     * Set TotalEcotaxa value
     * @param float $totalEcotaxa
     * @return \StructType\CabecDocERP
     */
    public function setTotalEcotaxa($totalEcotaxa = null)
    {
        $this->TotalEcotaxa = $totalEcotaxa;
        return $this;
    }
    /**
     * Get TotalIEC 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 getTotalIEC()
    {
        return isset($this->TotalIEC) ? $this->TotalIEC : null;
    }
    /**
     * Set TotalIEC 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 $totalIEC
     * @return \StructType\CabecDocERP
     */
    public function setTotalIEC($totalIEC = null)
    {
        if (is_null($totalIEC) || (is_array($totalIEC) && empty($totalIEC))) {
            unset($this->TotalIEC);
        } else {
            $this->TotalIEC = $totalIEC;
        }
        return $this;
    }
    /**
     * Get TotalIS value
     * @return float|null
     */
    public function getTotalIS()
    {
        return $this->TotalIS;
    }
    /**
     * Set TotalIS value
     * @param float $totalIS
     * @return \StructType\CabecDocERP
     */
    public function setTotalIS($totalIS = null)
    {
        $this->TotalIS = $totalIS;
        return $this;
    }
    /**
     * Get TotalIva 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 getTotalIva()
    {
        return isset($this->TotalIva) ? $this->TotalIva : null;
    }
    /**
     * Set TotalIva 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 $totalIva
     * @return \StructType\CabecDocERP
     */
    public function setTotalIva($totalIva = null)
    {
        if (is_null($totalIva) || (is_array($totalIva) && empty($totalIva))) {
            unset($this->TotalIva);
        } else {
            $this->TotalIva = $totalIva;
        }
        return $this;
    }
    /**
     * Get TotalMerc 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 getTotalMerc()
    {
        return isset($this->TotalMerc) ? $this->TotalMerc : null;
    }
    /**
     * Set TotalMerc 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 $totalMerc
     * @return \StructType\CabecDocERP
     */
    public function setTotalMerc($totalMerc = null)
    {
        if (is_null($totalMerc) || (is_array($totalMerc) && empty($totalMerc))) {
            unset($this->TotalMerc);
        } else {
            $this->TotalMerc = $totalMerc;
        }
        return $this;
    }
    /**
     * Get TotalOutros 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 getTotalOutros()
    {
        return isset($this->TotalOutros) ? $this->TotalOutros : null;
    }
    /**
     * Set TotalOutros 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 $totalOutros
     * @return \StructType\CabecDocERP
     */
    public function setTotalOutros($totalOutros = null)
    {
        if (is_null($totalOutros) || (is_array($totalOutros) && empty($totalOutros))) {
            unset($this->TotalOutros);
        } else {
            $this->TotalOutros = $totalOutros;
        }
        return $this;
    }
    /**
     * Get TotalRecargo 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 getTotalRecargo()
    {
        return isset($this->TotalRecargo) ? $this->TotalRecargo : null;
    }
    /**
     * Set TotalRecargo 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 $totalRecargo
     * @return \StructType\CabecDocERP
     */
    public function setTotalRecargo($totalRecargo = null)
    {
        if (is_null($totalRecargo) || (is_array($totalRecargo) && empty($totalRecargo))) {
            unset($this->TotalRecargo);
        } else {
            $this->TotalRecargo = $totalRecargo;
        }
        return $this;
    }
    /**
     * Get TotalRetencao 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 getTotalRetencao()
    {
        return isset($this->TotalRetencao) ? $this->TotalRetencao : null;
    }
    /**
     * Set TotalRetencao 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 $totalRetencao
     * @return \StructType\CabecDocERP
     */
    public function setTotalRetencao($totalRetencao = null)
    {
        if (is_null($totalRetencao) || (is_array($totalRetencao) && empty($totalRetencao))) {
            unset($this->TotalRetencao);
        } else {
            $this->TotalRetencao = $totalRetencao;
        }
        return $this;
    }
    /**
     * Get TotalRetencaoGarantia 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 getTotalRetencaoGarantia()
    {
        return isset($this->TotalRetencaoGarantia) ? $this->TotalRetencaoGarantia : null;
    }
    /**
     * Set TotalRetencaoGarantia 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 $totalRetencaoGarantia
     * @return \StructType\CabecDocERP
     */
    public function setTotalRetencaoGarantia($totalRetencaoGarantia = null)
    {
        if (is_null($totalRetencaoGarantia) || (is_array($totalRetencaoGarantia) && empty($totalRetencaoGarantia))) {
            unset($this->TotalRetencaoGarantia);
        } else {
            $this->TotalRetencaoGarantia = $totalRetencaoGarantia;
        }
        return $this;
    }
    /**
     * Get TrataIvaCaixa value
     * @return bool|null
     */
    public function getTrataIvaCaixa()
    {
        return $this->TrataIvaCaixa;
    }
    /**
     * Set TrataIvaCaixa value
     * @param bool $trataIvaCaixa
     * @return \StructType\CabecDocERP
     */
    public function setTrataIvaCaixa($trataIvaCaixa = null)
    {
        // validation for constraint: boolean
        if (!is_null($trataIvaCaixa) && !is_bool($trataIvaCaixa)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($trataIvaCaixa)), __LINE__);
        }
        $this->TrataIvaCaixa = $trataIvaCaixa;
        return $this;
    }
    /**
     * Get UtilizaMoradaAltEntrega 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 getUtilizaMoradaAltEntrega()
    {
        return isset($this->UtilizaMoradaAltEntrega) ? $this->UtilizaMoradaAltEntrega : null;
    }
    /**
     * Set UtilizaMoradaAltEntrega 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 $utilizaMoradaAltEntrega
     * @return \StructType\CabecDocERP
     */
    public function setUtilizaMoradaAltEntrega($utilizaMoradaAltEntrega = null)
    {
        // validation for constraint: boolean
        if (!is_null($utilizaMoradaAltEntrega) && !is_bool($utilizaMoradaAltEntrega)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($utilizaMoradaAltEntrega)), __LINE__);
        }
        if (is_null($utilizaMoradaAltEntrega) || (is_array($utilizaMoradaAltEntrega) && empty($utilizaMoradaAltEntrega))) {
            unset($this->UtilizaMoradaAltEntrega);
        } else {
            $this->UtilizaMoradaAltEntrega = $utilizaMoradaAltEntrega;
        }
        return $this;
    }
    /**
     * Get Utilizador 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 getUtilizador()
    {
        return isset($this->Utilizador) ? $this->Utilizador : null;
    }
    /**
     * Set Utilizador 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 $utilizador
     * @return \StructType\CabecDocERP
     */
    public function setUtilizador($utilizador = null)
    {
        // validation for constraint: string
        if (!is_null($utilizador) && !is_string($utilizador)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($utilizador)), __LINE__);
        }
        if (is_null($utilizador) || (is_array($utilizador) && empty($utilizador))) {
            unset($this->Utilizador);
        } else {
            $this->Utilizador = $utilizador;
        }
        return $this;
    }
    /**
     * Get Versao 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 getVersao()
    {
        return isset($this->Versao) ? $this->Versao : null;
    }
    /**
     * Set Versao 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 $versao
     * @return \StructType\CabecDocERP
     */
    public function setVersao($versao = null)
    {
        // validation for constraint: string
        if (!is_null($versao) && !is_string($versao)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($versao)), __LINE__);
        }
        if (is_null($versao) || (is_array($versao) && empty($versao))) {
            unset($this->Versao);
        } else {
            $this->Versao = $versao;
        }
        return $this;
    }
    /**
     * Get VersaoAssinatura 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 getVersaoAssinatura()
    {
        return isset($this->VersaoAssinatura) ? $this->VersaoAssinatura : null;
    }
    /**
     * Set VersaoAssinatura 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 $versaoAssinatura
     * @return \StructType\CabecDocERP
     */
    public function setVersaoAssinatura($versaoAssinatura = null)
    {
        // validation for constraint: string
        if (!is_null($versaoAssinatura) && !is_string($versaoAssinatura)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($versaoAssinatura)), __LINE__);
        }
        if (is_null($versaoAssinatura) || (is_array($versaoAssinatura) && empty($versaoAssinatura))) {
            unset($this->VersaoAssinatura);
        } else {
            $this->VersaoAssinatura = $versaoAssinatura;
        }
        return $this;
    }
    /**
     * Get VersaoUltAct value
     * @return string|null
     */
    public function getVersaoUltAct()
    {
        return $this->VersaoUltAct;
    }
    /**
     * Set VersaoUltAct value
     * @param string $versaoUltAct
     * @return \StructType\CabecDocERP
     */
    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 WBSItem 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 getWBSItem()
    {
        return isset($this->WBSItem) ? $this->WBSItem : null;
    }
    /**
     * Set WBSItem 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 $wBSItem
     * @return \StructType\CabecDocERP
     */
    public function setWBSItem($wBSItem = null)
    {
        // validation for constraint: string
        if (!is_null($wBSItem) && !is_string($wBSItem)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($wBSItem)), __LINE__);
        }
        if (is_null($wBSItem) || (is_array($wBSItem) && empty($wBSItem))) {
            unset($this->WBSItem);
        } else {
            $this->WBSItem = $wBSItem;
        }
        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\CabecDocERP
     */
    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\CabecDocERP
     */
    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__;
    }
}
