<?xml version="1.0" encoding="utf-8" ?>
<xs:schema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
	<!--
Proprietário: UNILEO
Projeto: S3CP
Versão: 1.6.1
Data da versão:2019/06/03
Observações: Ficheiro referente ao Tipo de dados utilizado nos vários ficheiros contabilísticos. 
-->

	<!--   ********************************* TIPO DE DADOS DE BASE INTEIRO ************************************************  -->

	<xs:simpleType name="InteiroMaiorQueZero">
		<!-- Valor inteiro (obrigatório) com o máximo de 14 digitos  -->
		<xs:restriction base="xs:integer">
			<xs:totalDigits value="14" />
			<xs:pattern value="^[1-9][0-9]*$" />
		</xs:restriction>
	</xs:simpleType>

	<!--   ********************************* TIPO DE DADOS DE BASE DECIMAL ************************************************  -->

	<xs:simpleType name="DecimalS3CP">
		<!-- Valor, positivo ou negativo, decimal com o máximo de 12 valores inteiros e 2 casas decimais obrigatórias  -->
		<xs:restriction base="xs:decimal">
			<xs:totalDigits value="14" />
			<xs:fractionDigits value="2" />
			<xs:pattern value="\-?\d+\.\d{2}" />
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="DecimalS3CPPositivo">
		<!-- Valor decimal positivo com o máximo de 14 valores inteiros e 2 casas decimais obrigatórias -->
		<xs:restriction base="xs:decimal">
			<xs:totalDigits value="14" />
			<xs:minInclusive value="0" />
			<xs:fractionDigits value="2" />
			<xs:pattern value="\d+\.\d{2}" />
		</xs:restriction>
	</xs:simpleType>

	<!--   ********************************* TIPO DE DADOS DE BASE STRING ************************************************  -->

	<xs:simpleType name="StringContaLocal">
		<!-- Codigo da conta local. Exemplo 21.3.1  -->
		<xs:restriction base="xs:string">
			<xs:pattern value="[0-9]{2}(\.[0-9]+)*" />
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="StringContaCentral">
		<!-- Codigo da conta local. Exemplo 21.3.1  -->
		<xs:restriction base="xs:string">
			<xs:pattern value="[0-9]{2}(\.[0-9]+)*" />
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="StringNum3">
		<!-- String numérica com 3 digitos (000,123,...,999)  -->
		<xs:restriction base="xs:string">
			<xs:pattern value="([0-9]{3})?" />
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="StringNum5">
		<!-- String numérica com 5 digitos (00000,12345,...,99999)  -->
		<xs:restriction base="xs:string">
			<xs:pattern value="([0-9]{5})?" />
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="StringAlfaNum3">
		<!-- String alfanumérica (admite maiusculas) com 3 caractéres  -->
		<xs:restriction base="xs:string">
			<xs:pattern value="([A-Z0-9]{3})?" />
		</xs:restriction>
	</xs:simpleType>  

	<xs:simpleType name="StringAlfaNum5">
		<!-- String alfanumérica (admite maiusculas) com 5 caractéres  -->
		<xs:restriction base="xs:string">
			<xs:pattern value="([A-Z0-9]{5})?" />
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="StringAlfaNum10">
		<!-- String alfanumérica (admite maiusculas) com 10 caractéres  -->
		<xs:restriction base="xs:string">
			<xs:pattern value="([A-Z0-9]{10})?" />
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="Ano">
		<!-- Valor inteiro em que os valores admissíveis são entre 2015 e 2050  -->
		<xs:restriction base="xs:integer">
			<xs:minInclusive value="2015" />
			<xs:maxInclusive value="2050" />
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="StringMaiusculas1">
		<!-- String com 1 caracter maiúsculo (D,S,...,M)  -->
		<xs:restriction base="xs:string">
			<xs:pattern value="([A-Z]{1})?" />
		</xs:restriction>
	</xs:simpleType>


	<xs:simpleType name="StringNaoVazia">
		<!-- String de conteúdo obrigatório  --> 
		<xs:restriction base="xs:string">
			<xs:pattern value="^(?!\s*$).+" /> 
		<!-- =".*[^\s].*"
           Depois de uma análise verificou-se que esta alteração simplifica a aplicação do pretendido		--> 			
		</xs:restriction>
	</xs:simpleType>  

	<xs:simpleType name="StringNIF">
		<!-- String numerica de conteúdo obrigatório  --> 
		<xs:restriction base="xs:string">
			<xs:pattern value="^(\d{9})$" /> 
		</xs:restriction>
	</xs:simpleType> 


	<!--   ********************************* Data ************************************************  -->


	<xs:simpleType name="Data">
		<!-- A data deve estar preenchida com o formato AAAA-MM-DD-->
		<xs:restriction base="xs:date">
			<xs:pattern value="^(19[5-9]|20[0-9])\d{1}-([0|1])\d-([0-3])\d$" /> 
		</xs:restriction>
	</xs:simpleType> 

	<xs:simpleType name="DataHora">
		<!-- A data deve estar preenchida com o formato AAAA-MM-DDThh:mm:ss-->
		<xs:restriction base="xs:dateTime">
			<xs:pattern value="^(20[1-9]\d{1}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T\d{2}:\d{2}:\d{2})$" /> 		
		</xs:restriction>
	</xs:simpleType> 
	
	<!--   ********************************* LISTA DE VALORES ************************************************  -->


	<xs:simpleType name="ValoresParaFFinancNoFichEC">
		<!-- Lista de valores possíveis para o campo FonteFinanciamento do Ficheiro EC (RP - Receitas próprias;RG - Receitas gerais;UE - Financiamento da UE;EMPR - Contração de empréstimos   --> 
		<xs:restriction base="xs:string">
			<xs:pattern value="(RP|RG|UE|EMPR){1}" /> 
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="ValoresParaTipoMovimento">
		<!-- Lista de valores possíveis para o campo TipoMovimento do Ficheiro BA  --> 
		<xs:restriction base="xs:string">
			<xs:pattern value="(Oportunamente, será disponibilizada a lista de valores possíveis.|NA){1}" /> 
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="ValoresParaPlanoContasLocal">
		<!-- Lista de valores possíveis para o campo PlanoContasLocal  --> 
		<xs:restriction base="xs:string">
			<xs:pattern value="(SNC-AP|IAS/IFRS){1}" /> 
		</xs:restriction>
	</xs:simpleType>	
	
	<xs:simpleType name="ValoresParaTipoOrcamento">
		<!-- Lista de valores possíveis para o campo TipoOrcamento doS FicheiroS BA;DODES;DOREC; (
                     E – Orçamento de Exploração; 
                     I – Orçamento de Investimento
                     NA - Não Aplicável
                     ) --> 
		<xs:restriction base="xs:string">
			<xs:pattern value="(E|I|NA){1}" /> 
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="ValoresParaFaseDeExecucao">
		<!--v Lista de valores possíveis para o campo TipoOrcamento doS Ficheiro DPPI) 
                0 - Não iniciada
                1 - Com projeto técnico
                2 - Adjudicada
                3 - Execução física até 25%
                4 - Execução física até 50%
                5 - Execução física até 75%
                6 - Execução física superior a 75%
                9 - Não Aplicável			
--> 
		<xs:restriction base="xs:string">
			<xs:pattern value="(0|1|2|3|4|5|6|9){1}" /> 
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="ValoresParaFormaDeRealizacao">
		<!-- Lista de valores possíveis para o campo TipoOrcamento doS Ficheiro DPPI) 
            A - Administração direta
            E - Para empreitada
            O - Para fornecimentos e outras
			NA - Não Aplicável	
--> 
		<xs:restriction base="xs:string">
			<xs:pattern value="(A|E|O|NA){1}" /> 
		</xs:restriction>
	</xs:simpleType>


	<!--   ********************************* PERIODICIDADES ************************************************  -->		


	<xs:simpleType name="PeriodicidadeAFT">
		<xs:restriction base="xs:normalizedString">
			<xs:enumeration value="T"/>
		</xs:restriction>
	</xs:simpleType>	

	<xs:simpleType name="PeriodicidadeAI">
		<xs:restriction base="xs:normalizedString">
			<xs:enumeration value="T"/>
		</xs:restriction>
	</xs:simpleType>	

	<xs:simpleType name="PeriodicidadeBA">
		<xs:restriction base="xs:normalizedString">
			<xs:enumeration value="M"/>
			<xs:enumeration value="S"/>
		</xs:restriction>
	</xs:simpleType>	

	<xs:simpleType name="PeriodicidadeBLC">
		<xs:restriction base="xs:normalizedString">
			<xs:enumeration value="M"/>
		</xs:restriction>
	</xs:simpleType>	

	<xs:simpleType name="PeriodicidadeCPLC">
		<xs:restriction base="xs:normalizedString">
			<xs:enumeration value="A"/>
		</xs:restriction>
	</xs:simpleType>	

	<xs:simpleType name="PeriodicidadeDAPL">
		<xs:restriction base="xs:normalizedString">
			<xs:enumeration value="M"/>
		</xs:restriction>
	</xs:simpleType>	

	<xs:simpleType name="PeriodicidadeDDORC">
		<xs:restriction base="xs:normalizedString">
			<xs:enumeration value="S"/>
			<xs:enumeration value="M"/>
		</xs:restriction>
	</xs:simpleType>	

	<xs:simpleType name="PeriodicidadeDFC">
		<xs:restriction base="xs:normalizedString">
			<xs:enumeration value="M"/>
		</xs:restriction>
	</xs:simpleType>	

	<xs:simpleType name="PeriodicidadeDODES">
		<xs:restriction base="xs:normalizedString">
			<xs:enumeration value="M"/>
			<xs:enumeration value="S"/>
		</xs:restriction>
	</xs:simpleType>	

	<xs:simpleType name="PeriodicidadeDOREC">
		<xs:restriction base="xs:normalizedString">
			<xs:enumeration value="S"/>
			<xs:enumeration value="M"/>
		</xs:restriction>
	</xs:simpleType>	

	<xs:simpleType name="PeriodicidadeDPPI">
		<xs:restriction base="xs:normalizedString">
			<xs:enumeration value="M"/>
		</xs:restriction>
	</xs:simpleType>	

	<xs:simpleType name="PeriodicidadeDR">
		<xs:restriction base="xs:normalizedString">
			<xs:enumeration value="M"/>
		</xs:restriction>
	</xs:simpleType>	

	<xs:simpleType name="PeriodicidadeDTAS">
		<xs:restriction base="xs:normalizedString">
			<xs:enumeration value="M"/>
		</xs:restriction>
	</xs:simpleType>	

	<xs:simpleType name="PeriodicidadeEC">
		<xs:restriction base="xs:normalizedString">
			<xs:enumeration value="M"/>
		</xs:restriction>
	</xs:simpleType>	

	<xs:simpleType name="PeriodicidadePI">
		<xs:restriction base="xs:normalizedString">
			<xs:enumeration value="T"/>
		</xs:restriction>
	</xs:simpleType>



</xs:schema>