Ir para o conteúdo
ruiribeiro

SAF-T PT API

Mensagens Recomendadas

ruiribeiro

Boas, comunidade de developers PT

Estou neste momento a trabalhar na exportação de dados para a criação do famigerado ficheiro SAFa-Te :P (SAFT).

Para o efeito, decidi criar uma API que me vai permitir criar um objecto com todos os elementos necessários, abastecê-lo das base de dados e serializa-lo no formato pretendido.

Sendo assim, aproveito para partilhar o diagrama de classses para o caso de alguém que esteja a iniciar este tipo de projectos (não devem ser poucos em virtude das alterações legislativas recentes) :thumbsup:

Este tópico não é propriamente uma questão, mas sim um tópico de discussão do que a comunidade está a fazer em .NET para a produção do ficheiro SAFa-Te...

Agradeço comentários...

Podem visualizar a API em http://snag.gy/T9Jyj.jpg

Podemk visualizar um exemplo do ficheiro gerado pela API em http://pastebin.com/Q0a00QwK

Editado por ruiribeiro
  • Voto 2

Rui Ribeiro

.NET/T-SQL, JAVA, PHP, Javascript Developer

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ruiribeiro

Há mais alguém a trabalhar nisto ????

De que forma estão a fazê-lo ?

Já agora,

quem precisar de criar a persistência para os objectos, poderá utilizar a seguinte base de dados...

Abraço...

USE [master]
GO
/****** Object:  Database [sAFTDB]    Script Date: 12-01-2013 15:32:25 ******/
CREATE DATABASE [sAFTDB]
GO
ALTER DATABASE [sAFTDB] SET COMPATIBILITY_LEVEL = 100
GO
IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled'))
begin
EXEC [sAFTDB].[dbo].[sp_fulltext_database] @action = 'enable'
end
GO
ALTER DATABASE [sAFTDB] SET ANSI_NULL_DEFAULT OFF
GO
ALTER DATABASE [sAFTDB] SET ANSI_NULLS OFF
GO
ALTER DATABASE [sAFTDB] SET ANSI_PADDING OFF
GO
ALTER DATABASE [sAFTDB] SET ANSI_WARNINGS OFF
GO
ALTER DATABASE [sAFTDB] SET ARITHABORT OFF
GO
ALTER DATABASE [sAFTDB] SET AUTO_CLOSE OFF
GO
ALTER DATABASE [sAFTDB] SET AUTO_CREATE_STATISTICS ON
GO
ALTER DATABASE [sAFTDB] SET AUTO_SHRINK OFF
GO
ALTER DATABASE [sAFTDB] SET AUTO_UPDATE_STATISTICS ON
GO
ALTER DATABASE [sAFTDB] SET CURSOR_CLOSE_ON_COMMIT OFF
GO
ALTER DATABASE [sAFTDB] SET CURSOR_DEFAULT  GLOBAL
GO
ALTER DATABASE [sAFTDB] SET CONCAT_NULL_YIELDS_NULL OFF
GO
ALTER DATABASE [sAFTDB] SET NUMERIC_ROUNDABORT OFF
GO
ALTER DATABASE [sAFTDB] SET QUOTED_IDENTIFIER OFF
GO
ALTER DATABASE [sAFTDB] SET RECURSIVE_TRIGGERS OFF
GO
ALTER DATABASE [sAFTDB] SET  DISABLE_BROKER
GO
ALTER DATABASE [sAFTDB] SET AUTO_UPDATE_STATISTICS_ASYNC OFF
GO
ALTER DATABASE [sAFTDB] SET DATE_CORRELATION_OPTIMIZATION OFF
GO
ALTER DATABASE [sAFTDB] SET TRUSTWORTHY OFF
GO
ALTER DATABASE [sAFTDB] SET ALLOW_SNAPSHOT_ISOLATION OFF
GO
ALTER DATABASE [sAFTDB] SET PARAMETERIZATION SIMPLE
GO
ALTER DATABASE [sAFTDB] SET READ_COMMITTED_SNAPSHOT OFF
GO
ALTER DATABASE [sAFTDB] SET HONOR_BROKER_PRIORITY OFF
GO
ALTER DATABASE [sAFTDB] SET RECOVERY SIMPLE
GO
ALTER DATABASE [sAFTDB] SET  SINGLE_USER
GO
ALTER DATABASE [sAFTDB] SET PAGE_VERIFY CHECKSUM  
GO
ALTER DATABASE [sAFTDB] SET DB_CHAINING OFF
GO
USE [sAFTDB]
GO
/****** Object:  Table [dbo].[AuditFile]    Script Date: 12-01-2013 15:32:25 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[AuditFile](
   [PrimaryKey] [varchar](255) NULL,
   [xsi] [varchar](255) NULL,
   [xmlns] [varchar](255) NULL
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF
GO
/****** Object:  Table [dbo].[billingAddress]    Script Date: 12-01-2013 15:32:25 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[billingAddress](
   [PrimaryKey] [varchar](255) NULL,
   [AddressDetail] [varchar](255) NULL,
   [City] [varchar](255) NULL,
   [PostalCode] [varchar](255) NULL,
   [Country] [varchar](255) NULL,
   [FK_Customer] [varchar](255) NULL
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF
GO
/****** Object:  Table [dbo].[CompanyAddress]    Script Date: 12-01-2013 15:32:25 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[CompanyAddress](
   [PrimaryKey] [varchar](255) NULL,
   [AddressDetail] [varchar](255) NULL,
   [City] [varchar](255) NULL,
   [PostalCode] [varchar](255) NULL,
   [Region] [varchar](255) NULL,
   [Country] [varchar](255) NULL,
   [FK_Header] [varchar](255) NULL
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF
GO
/****** Object:  Table [dbo].[CreditNote]    Script Date: 12-01-2013 15:32:25 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[CreditNote](
   [PrimaryKey] [varchar](255) NULL,
   [Reference] [varchar](255) NULL,
   [FK_References] [varchar](255) NULL
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF
GO
/****** Object:  Table [dbo].[Customer]    Script Date: 12-01-2013 15:32:25 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Customer](
   [PrimaryKey] [varchar](255) NULL,
   [CustomerID] [varchar](255) NULL,
   [AccountID] [varchar](255) NULL,
   [CustomerTaxID] [varchar](255) NULL,
   [CompanyName] [varchar](255) NULL,
   [selfBillingIndicator] [varchar](255) NULL,
   [FK_MasterFiles] [varchar](255) NULL
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF
GO
/****** Object:  Table [dbo].[DocumentTotals]    Script Date: 12-01-2013 15:32:25 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[DocumentTotals](
   [PrimaryKey] [varchar](255) NULL,
   [TaxPayable] [varchar](255) NULL,
   [NetTotal] [varchar](255) NULL,
   [GrossTotal] [varchar](255) NULL,
   [FK_Invoice] [varchar](255) NULL
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF
GO
/****** Object:  Table [dbo].[Header]    Script Date: 12-01-2013 15:32:25 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Header](
   [PrimaryKey] [varchar](255) NULL,
   [AuditFileVersion] [varchar](255) NULL,
   [CompanyID] [varchar](255) NULL,
   [TaxRegistrationNumber] [varchar](255) NULL,
   [TaxAccountingBasis] [varchar](255) NULL,
   [CompanyName] [varchar](255) NULL,
   [FiscalYear] [varchar](255) NULL,
   [startDate] [varchar](255) NULL,
   [EndDate] [varchar](255) NULL,
   [CurrencyCode] [varchar](255) NULL,
   [DateCreated] [varchar](255) NULL,
   [TaxEntity] [varchar](255) NULL,
   [ProductCompanyTaxID] [varchar](255) NULL,
   [softwareCertificateNumber] [varchar](255) NULL,
   [ProductID] [varchar](255) NULL,
   [ProductVersion] [varchar](255) NULL,
   [Telephone] [varchar](255) NULL,
   [Fax] [varchar](255) NULL,
   [Email] [varchar](255) NULL,
   [Website] [varchar](255) NULL,
   [FK_AuditFile] [varchar](255) NULL
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF
GO
/****** Object:  Table [dbo].[invoice]    Script Date: 12-01-2013 15:32:25 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[invoice](
   [PrimaryKey] [varchar](255) NULL,
   [invoiceNo] [varchar](255) NULL,
   [invoiceStatus] [varchar](255) NULL,
   [Hash] [varchar](255) NULL,
   [HashControl] [varchar](255) NULL,
   [Period] [varchar](255) NULL,
   [invoiceDate] [varchar](255) NULL,
   [invoiceType] [varchar](255) NULL,
   [selfBillingIndicator] [varchar](255) NULL,
   [systemEntryDate] [varchar](255) NULL,
   [CustomerID] [varchar](255) NULL,
   [FK_SalesInvoices] [varchar](255) NULL
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF
GO
/****** Object:  Table [dbo].[Line]    Script Date: 12-01-2013 15:32:25 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Line](
   [PrimaryKey] [varchar](255) NULL,
   [LineNumber] [varchar](255) NULL,
   [ProductCode] [varchar](255) NULL,
   [ProductDescription] [varchar](255) NULL,
   [Quantity] [varchar](255) NULL,
   [unitOfMeasure] [varchar](255) NULL,
   [unitPrice] [varchar](255) NULL,
   [TaxPointDate] [varchar](255) NULL,
   [Description] [varchar](255) NULL,
   [CreditAmount] [varchar](255) NULL,
   [TaxExemptionReason] [varchar](255) NULL,
   [DebitAmount] [varchar](255) NULL,
   [FK_Invoice] [varchar](255) NULL
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF
GO
/****** Object:  Table [dbo].[MasterFiles]    Script Date: 12-01-2013 15:32:25 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[MasterFiles](
   [PrimaryKey] [varchar](255) NULL,
   [FK_AuditFile] [varchar](255) NULL
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF
GO
/****** Object:  Table [dbo].[OrderReferences]    Script Date: 12-01-2013 15:32:25 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[OrderReferences](
   [PrimaryKey] [varchar](255) NULL,
   [OriginatingON] [varchar](255) NULL,
   [FK_Line] [varchar](255) NULL
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF
GO
/****** Object:  Table [dbo].[Product]    Script Date: 12-01-2013 15:32:25 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Product](
   [PrimaryKey] [varchar](255) NULL,
   [ProductType] [varchar](255) NULL,
   [ProductCode] [varchar](255) NULL,
   [ProductGroup] [varchar](255) NULL,
   [ProductDescription] [varchar](255) NULL,
   [ProductNumberCode] [varchar](255) NULL,
   [FK_MasterFiles] [varchar](255) NULL
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF
GO
/****** Object:  Table [dbo].[References]    Script Date: 12-01-2013 15:32:25 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[References](
   [PrimaryKey] [varchar](255) NULL,
   [FK_Line] [varchar](255) NULL
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF
GO
/****** Object:  Table [dbo].[salesInvoices]    Script Date: 12-01-2013 15:32:25 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[salesInvoices](
   [PrimaryKey] [varchar](255) NULL,
   [NumberOfEntries] [varchar](255) NULL,
   [TotalDebit] [varchar](255) NULL,
   [TotalCredit] [varchar](255) NULL,
   [FK_SourceDocuments] [varchar](255) NULL
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF
GO
/****** Object:  Table [dbo].[sourceDocuments]    Script Date: 12-01-2013 15:32:25 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[sourceDocuments](
   [PrimaryKey] [varchar](255) NULL,
   [FK_AuditFile] [varchar](255) NULL
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF
GO
/****** Object:  Table [dbo].[Tax]    Script Date: 12-01-2013 15:32:25 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Tax](
   [PrimaryKey] [varchar](255) NULL,
   [TaxType] [varchar](255) NULL,
   [TaxCountryRegion] [varchar](255) NULL,
   [TaxCode] [varchar](255) NULL,
   [TaxPercentage] [varchar](255) NULL,
   [FK_Line] [varchar](255) NULL
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF
GO
/****** Object:  Table [dbo].[TaxTable]    Script Date: 12-01-2013 15:32:25 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[TaxTable](
   [PrimaryKey] [varchar](255) NULL,
   [FK_MasterFiles] [varchar](255) NULL
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF
GO
/****** Object:  Table [dbo].[TaxTableEntry]    Script Date: 12-01-2013 15:32:25 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[TaxTableEntry](
   [PrimaryKey] [varchar](255) NULL,
   [TaxType] [varchar](255) NULL,
   [TaxCountryRegion] [varchar](255) NULL,
   [TaxCode] [varchar](255) NULL,
   [Description] [varchar](255) NULL,
   [TaxPercentage] [varchar](255) NULL,
   [FK_TaxTable] [varchar](255) NULL
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF
GO
USE [master]
GO
ALTER DATABASE [sAFTDB] SET  READ_WRITE
GO

Editado por thoga31
  • Voto 1

Rui Ribeiro

.NET/T-SQL, JAVA, PHP, Javascript Developer

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
mssacramento

Olá a Todos:

Também tenho trabalhado neste ficheiro .XML do Saft e o que tenho é isto:

Dim saft = _
		 <?xml version="1.0" encoding="windows-1252"?>
		 <AuditFile xmlns="urn:OECD:StandardAuditFile-Tax:PT_1.01_01" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
			 <Header xmlns="urn:OECD:StandardAuditFile-Tax:PT_1.01_01">
				 <AuditFileVersion>1.01_01</AuditFileVersion>
				 <CompanyID><%= numero_contribuinte_empresa %></CompanyID>
				 <TaxRegistrationNumber><%= numero_contribuinte_empresa %></TaxRegistrationNumber>
				 <TaxAccountingBasis>C</TaxAccountingBasis>
				 <CompanyName><%= nome %></CompanyName>
				 <BusinessName><%= nome %></BusinessName>
				 <CompanyAddress>
					 <BuildingNumber>0</BuildingNumber>
					 <AddressDetail><%= morada %></AddressDetail>
					 <City><%= localidade %></City>
					 <PostalCode><%= codpostal %></PostalCode>
					 <Region><%= localidade %></Region>
					 <Country>PT</Country>
				 </CompanyAddress>
				 <FiscalYear><%= anos %></FiscalYear>
				 <StartDate><%= anos %>-01-01</StartDate>
				 <EndDate><%= anos %>-12-31</EndDate>
				 <CurrencyCode>EUR</CurrencyCode>
				 <DateCreated><%= Gravar_data %></DateCreated>
				 <TaxEntity>Sede</TaxEntity>
				 <ProductCompanyTaxID>180794680</ProductCompanyTaxID>
				 <SoftwareCertificateNumber>0</SoftwareCertificateNumber>
				 <ProductID>CONTAWIN/MANUEL SACRAMENTO</ProductID>
				 <ProductVersion>1.0.002</ProductVersion>
				 <Telephone>265238887</Telephone>
			 </Header>
			 <MasterFiles xmlns="urn:OECD:StandardAuditFile-Tax:PT_1.01_01">
				 <%= From stu In Tabelavalor.AsEnumerable() _
					 Select <GeneralLedger xmlns="urn:OECD:StandardAuditFile-Tax:PT_1.01_01">
								 <AccountID><%= stu!numeroconta %></AccountID>
								 <AccountDescription><%= stu!nomeconta %></AccountDescription>
								 <OpeningDebitBalance><%= stu!acumuladosdebito %></OpeningDebitBalance>
								 <OpeningCreditBalance><%= stu!acumuladoscredito %></OpeningCreditBalance>
							 </GeneralLedger> _
				 %>
				 <%= From stu5 In TabelaPlanoContas.AsEnumerable() _
					 Select <Customer xmlns="urn:OECD:StandardAuditFile-Tax:PT_1.01_01">
								 <CustomerID><%= Microsoft.VisualBasic.Right(stu5!numeroconta, 9) %></CustomerID>
								 <AccountID><%= stu5!numeroconta %></AccountID>
								 <CustomerTaxID><%= Microsoft.VisualBasic.Right(stu5!numeroconta, 9) %></CustomerTaxID>
								 <CompanyName><%= stu5!nomeconta %></CompanyName>
								 <BillingAddress>
									 <AddressDetail>Desconhecido</AddressDetail>
									 <City>Desconhecido</City>
									 <PostalCode>Desconhecido</PostalCode>
									 <Country>PT</Country>
								 </BillingAddress>
								 <SelfBillingIndicator>0</SelfBillingIndicator>
							 </Customer> _
				 %>
				 <%= From stu6 In TabelaPlanoContas_fornecedores.AsEnumerable() _
					 Select <Supplier xmlns="urn:OECD:StandardAuditFile-Tax:PT_1.01_01">
								 <SupplierID><%= Microsoft.VisualBasic.Right(stu6!numeroconta, 9) %></SupplierID>
								 <AccountID><%= stu6!numeroconta %></AccountID>
								 <SupplierTaxID><%= Microsoft.VisualBasic.Right(stu6!numeroconta, 9) %></SupplierTaxID>
								 <CompanyName><%= stu6!nomeconta %></CompanyName>
								 <BillingAddress>
									 <AddressDetail>Desconhecido</AddressDetail>
									 <City>Desconhecido</City>
									 <PostalCode>Desconhecido</PostalCode>
									 <Country>PT</Country>
								 </BillingAddress>
								 <SelfBillingIndicator>0</SelfBillingIndicator>
							 </Supplier> _
				 %>
				 <TaxTable xmlns="urn:OECD:StandardAuditFile-Tax:PT_1.01_01">
					 <TaxTableEntry>
						 <TaxType>IVA</TaxType>
						 <TaxCountryRegion>PT</TaxCountryRegion>
						 <TaxCode>RED</TaxCode>
						 <Description>Reduzida</Description>
						 <TaxPercentage>6</TaxPercentage>
					 </TaxTableEntry>
					 <TaxTableEntry>
						 <TaxType>IVA</TaxType>
						 <TaxCountryRegion>PT</TaxCountryRegion>
						 <TaxCode>INT</TaxCode>
						 <Description>Intermedia</Description>
						 <TaxPercentage>13</TaxPercentage>
					 </TaxTableEntry>
					 <TaxTableEntry>
						 <TaxType>IVA</TaxType>
						 <TaxCountryRegion>PT</TaxCountryRegion>
						 <TaxCode>NOR</TaxCode>
						 <Description>Normal</Description>
						 <TaxPercentage>23</TaxPercentage>
					 </TaxTableEntry>
				 </TaxTable>
			 </MasterFiles>
			 <GeneralLedgerEntries xmlns="urn:OECD:StandardAuditFile-Tax:PT_1.01_01">
				 <NumberOfEntries><%= contarregisto %></NumberOfEntries>
				 <TotalDebit><%= totaldebito %></TotalDebit>
				 <TotalCredit><%= totalcredito %></TotalCredit>
				 <%= From stu2 In Tabeladiario.AsEnumerable() _
					 Select <Journal xmlns="urn:OECD:StandardAuditFile-Tax:PT_1.01_01">
								 <JournalID><%= stu2!diario %></JournalID>
								 <Description><%= stu2!descricaodiario %></Description>
								 <%= From stu3 In Tabeladocumentos.AsEnumerable() _
									 Where stu3!diario = stu2!diario _
									 And stu3!supplierID <> "0" _
									 Select <Transaction xmlns="urn:OECD:StandardAuditFile-Tax:PT_1.01_01">
												 <TransactionID><%= stu3!dtdoc & " " & stu3!diario & " " & stu3!numerocontab %></TransactionID>
												 <Period><%= stu3!mes %></Period>
												 <TransactionDate><%= stu3!dtdoc %></TransactionDate>
												 <SourceID><%= stu3!sourceID %></SourceID>
												 <Description><%= stu3!textocoddescricao %></Description>
												 <DocArchivalNumber><%= stu3!numerocontab %></DocArchivalNumber>
												 <TransactionType><%= stu3!transactiontype %></TransactionType>
												 <GLPostingDate><%= stu3!dtgravacaolinha %></GLPostingDate>
												 <SupplierID><%= stu3!supplierID %></SupplierID>
												 <%= From stu4 In Tabelalancamentos.AsEnumerable() _
													 Where stu4!numerocontab = stu3!numerocontab _
													 And stu4!valordebito <> "0.00" _
													 And stu4!diario = stu3!diario _
													 Select <Line xmlns="urn:OECD:StandardAuditFile-Tax:PT_1.01_01">
																 <RecordID><%= stu4!ID %></RecordID>
																 <AccountID><%= stu4!contapoc %></AccountID>
																 <SystemEntryDate><%= stu4!dtgravacaodoc %></SystemEntryDate>
																 <Description><%= stu4!textocoddescricao %></Description>
																 <DebitAmount><%= stu4!valordebito %></DebitAmount>
															 </Line> _
												 %>
												 <%= From stu4 In Tabelalancamentos.AsEnumerable() _
													 Where stu4!numerocontab = stu3!numerocontab _
													 And stu4!valorcredito <> "0.00" _
													 And stu4!diario = stu3!diario _
													 Select <Line xmlns="urn:OECD:StandardAuditFile-Tax:PT_1.01_01">
																 <RecordID><%= stu4!ID %></RecordID>
																 <AccountID><%= stu4!contapoc %></AccountID>
																 <SystemEntryDate><%= stu4!dtgravacaodoc %></SystemEntryDate>
																 <Description><%= stu4!textocoddescricao %></Description>
																 <CreditAmount><%= stu4!valorcredito %></CreditAmount>
															 </Line> _
												 %>
											 </Transaction> _
								 %>
								 <%= From stu3 In Tabeladocumentos.AsEnumerable() _
									 Where stu3!diario = stu2!diario _
									 And stu3!customerID <> "0" _
									 Select <Transaction xmlns="urn:OECD:StandardAuditFile-Tax:PT_1.01_01">
												 <TransactionID><%= stu3!dtdoc & " " & stu3!diario & " " & stu3!numerocontab %></TransactionID>
												 <Period><%= stu3!mes %></Period>
												 <TransactionDate><%= stu3!dtdoc %></TransactionDate>
												 <SourceID><%= stu3!sourceID %></SourceID>
												 <Description><%= stu3!textocoddescricao %></Description>
												 <DocArchivalNumber><%= stu3!numerocontab %></DocArchivalNumber>
												 <TransactionType><%= stu3!transactiontype %></TransactionType>
												 <GLPostingDate><%= stu3!dtgravacaolinha %></GLPostingDate>
												 <CustomerID><%= stu3!customerID %></CustomerID>
												 <%= From stu4 In Tabelalancamentos.AsEnumerable() _
													 Where stu4!numerocontab = stu3!numerocontab _
													 And stu4!valordebito <> "0.00" _
													 And stu4!diario = stu3!diario _
													 Select <Line xmlns="urn:OECD:StandardAuditFile-Tax:PT_1.01_01">
																 <RecordID><%= stu4!ID %></RecordID>
																 <AccountID><%= stu4!contapoc %></AccountID>
																 <SystemEntryDate><%= stu4!dtgravacaodoc %></SystemEntryDate>
																 <Description><%= stu4!textocoddescricao %></Description>
																 <DebitAmount><%= stu4!valordebito %></DebitAmount>
															 </Line> _
												 %>
												 <%= From stu4 In Tabelalancamentos.AsEnumerable() _
													 Where stu4!numerocontab = stu3!numerocontab _
													 And stu4!valorcredito <> "0.00" _
													 And stu4!diario = stu3!diario _
													 Select <Line xmlns="urn:OECD:StandardAuditFile-Tax:PT_1.01_01">
																 <RecordID><%= stu4!ID %></RecordID>
																 <AccountID><%= stu4!contapoc %></AccountID>
																 <SystemEntryDate><%= stu4!dtgravacaodoc %></SystemEntryDate>
																 <Description><%= stu4!textocoddescricao %></Description>
																 <CreditAmount><%= stu4!valorcredito %></CreditAmount>
															 </Line> _
												 %>
											 </Transaction> _
								 %>
								 <%= From stu3 In Tabeladocumentos.AsEnumerable() _
									 Where stu3!diario = stu2!diario _
									 And stu3!customerID <> "0" _
									 And stu3!supplierID <> "0" _
									 Select <Transaction xmlns="urn:OECD:StandardAuditFile-Tax:PT_1.01_01">
												 <TransactionID><%= stu3!dtdoc & " " & stu3!diario & " " & stu3!numerocontab %></TransactionID>
												 <Period><%= stu3!mes %></Period>
												 <TransactionDate><%= stu3!dtdoc %></TransactionDate>
												 <SourceID><%= stu3!sourceID %></SourceID>
												 <Description><%= stu3!textocoddescricao %></Description>
												 <DocArchivalNumber><%= stu3!numerocontab %></DocArchivalNumber>
												 <TransactionType><%= stu3!transactiontype %></TransactionType>
												 <GLPostingDate><%= stu3!dtgravacaolinha %></GLPostingDate>
												 <%= From stu4 In Tabelalancamentos.AsEnumerable() _
													 Where stu4!numerocontab = stu3!numerocontab _
													 And stu4!valordebito <> "0.00" _
													 And stu4!diario = stu3!diario _
													 Select <Line xmlns="urn:OECD:StandardAuditFile-Tax:PT_1.01_01">
																 <RecordID><%= stu4!ID %></RecordID>
																 <AccountID><%= stu4!contapoc %></AccountID>
																 <SystemEntryDate><%= stu4!dtgravacaodoc %></SystemEntryDate>
																 <Description><%= stu4!textocoddescricao %></Description>
																 <DebitAmount><%= stu4!valordebito %></DebitAmount>
															 </Line> _
												 %>
												 <%= From stu4 In Tabelalancamentos.AsEnumerable() _
													 Where stu4!numerocontab = stu3!numerocontab _
													 And stu4!valorcredito <> "0.00" _
													 And stu4!diario = stu3!diario _
													 Select <Line xmlns="urn:OECD:StandardAuditFile-Tax:PT_1.01_01">
																 <RecordID><%= stu4!ID %></RecordID>
																 <AccountID><%= stu4!contapoc %></AccountID>
																 <SystemEntryDate><%= stu4!dtgravacaodoc %></SystemEntryDate>
																 <Description><%= stu4!textocoddescricao %></Description>
																 <CreditAmount><%= stu4!valorcredito %></CreditAmount>
															 </Line> _
												 %>
											 </Transaction> _
								 %>
							 </Journal> _
				 %>
			 </GeneralLedgerEntries>
		 </AuditFile>

Na validação deste ficheiro, no validador do portal das finanças, tenho sómente um erro, que pelos vistos, tem a ver com um problema do próprio validador que é relativo ao "-" do encoding....Alguém conseguiu ultrapassar esta situação?

Esta é a mensagem do erro:

Na linha 655:InvalidRegex: Pattern value '([0-9])+|([a-zA-Z0-9-/]+ [0-9]+)' is not a valid regular expression. The reported error was: ''-' is an invalid character range. Write '\-'.' at column '{2}'.

Obrigado

Editado por Caça
GeSHi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ap@planetavirtual.pt

Boa noite a todos!

Sou novo nestas andanças e também estou a trabalhar no cujo dito ficheiro.

Gostava de partilhar convosco um dificuldade que me está a dar a volta ao miolo :-(

Dentro do nó <Header> temos o nó <CompanyAddress> e isso eu consigo sem stress com base no SetParentRow().

O problema é que o nó <CompanyAddress> fica sempre no fim do nó <Header> quando devia ficar entre os elementos <BusinessName> e <FiscalYear> :-(

Alguém teve este problema? Como conseguiu colocar o elemento na posição certa?

Agradeço qualquer comentário.

Cumprientos.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ruiribeiro

Neste momento tenho a aplicação concluída e a funcionar 100%... debita safts como se não houvesse amanha :)

Além da criação (serialização) do ficheiro SAFT, foram incluidas também as seguintes funcionalidades :

- Importador de dados de um ficheiro excel (util para sistemas de faturação manual)

- Validador do saft gerado no XSD da AT

- Desserializador para poder consultar os dados de um ficheiro saft, gerado, ou não por esta aplicação...

Junto algumas imagens do mesmo:

Xow7Y.jpg

dFSVg.jpg

W9sJV.jpg

xTb7k.jpg

Cumprimentos

Boa noite a todos!

Sou novo nestas andanças e também estou a trabalhar no cujo dito ficheiro.

Gostava de partilhar convosco um dificuldade que me está a dar a volta ao miolo :-(

Dentro do nó <Header> temos o nó <CompanyAddress> e isso eu consigo sem stress com base no SetParentRow().

O problema é que o nó <CompanyAddress> fica sempre no fim do nó <Header> quando devia ficar entre os elementos <BusinessName> e <FiscalYear> :-(

Alguém teve este problema? Como conseguiu colocar o elemento na posição certa?

Agradeço qualquer comentário.

Cumprientos.

Como é que tens os objectos definidos... no meu caso, a classe Header está definido como:

Imports System.ComponentModel
Imports System.Xml.Serialization
<TypeConverter(GetType(ExpandableObjectConverter))> _
Public Class Header
Public Property AuditFileVersion As String
Public Property CompanyID As String
Public Property TaxRegistrationNumber As String
Public Property TaxAccountingBasis As String
Public Property BusinessName As String
Public Property CompanyName As String
Private _companyAddress As CompanyAddress
Public Property CompanyAddress() As CompanyAddress
 Get
	 Return _companyAddress
 End Get
 Set(ByVal value As CompanyAddress)
	 _companyAddress = value
 End Set
End Property
Public Property FiscalYear As String
Public Property StartDate As String
Public Property EndDate As String
Public Property CurrencyCode As String
Public Property DateCreated As String
Public Property TaxEntity As String
Public Property ProductCompanyTaxID As String
Public Property SoftwareCertificateNumber As String
Public Property ProductID As String
Public Property ProductVersion As String
Public Property HeaderComment As String
Public Property Telephone As String
Public Property Fax As String
Public Property Email As String
Public Property Website As String
Public Sub New()
 _companyAddress = New CompanyAddress()
End Sub
End Class

Imports System.ComponentModel

<TypeConverter(GetType(ExpandableObjectConverter))> _
Public Class CompanyAddress

Public Property BuildingNumber As String
Public Property StreetName As String
Public Property AddressDetail As String
Public Property City As String
Public Property PostalCode As String
Public Property Region As String
Public Property Country As String

End Class

Ao serializar o objecto, ele fica na mesma ordem com que está definido nesta classe.

Editado por ruiribeiro

Rui Ribeiro

.NET/T-SQL, JAVA, PHP, Javascript Developer

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.