Forum
See question

Obter Rastreabilidade a partir de uma query SQL para Documentos de Vendas   

59 views
0
0

Como posso consultar a rastreabilidade do workflow de documento de Vendas a partir de uma query SQL?

O objectivo é mostrar todos os documentos que foram convertidos desde a Fatura pro-forma até a fatura final.

 

Obrigado.

Faça login para poder traduzir
Database
General
Marked as spam
Created 1 year and 2 months ago pedrobaptista
p
pedrobaptista Iniciante
1 answers
0
Private answer

Boa tarde,

Existe a função VND_RastreioLinha que ao passar como parâmetro o ID da linha, devolve todas as linhas anteriores que deram origem a essa linha por transformação.

Criei a função VND_RastreioLinhaReverse (código abaixo) que faz o oposto, ou seja, devolve todas as linhas posteriores que tiveram como base a linha passada como parâmetro.

Para seguir o sentido FA para FP utilizar a função VND_RastreioLinha (do fim do processo para o inicio)
Para seguir o sentido FP para FA utilizar a função VND_RastreioLinhaReverse (do inicio do processo para o fim)

O resultado destas funções pode ser utilizado como uma tabela ligada á tabela LinhasDoc e CabecDoc (exemplo abaixo)

FUNCAO VND_RastreioLinhaReverse

CREATE FUNCTION [dbo].[VND_RastreioLinhaReverse]
(
@IdLinha uniqueidentifier = NULL
)
RETURNS @tblLinhasTransf TABLE
(
[IdLinha] uniqueidentifier
)
AS
BEGIN

DECLARE @IdLinhasDocDestino uniqueidentifier

INSERT @tblLinhasTransf ([IdLinha]) VALUES (@IdLinha)

WHILE EXISTS(SELECT IdLinhasDoc FROM LinhasDocTrans (NOLOCK) WHERE IdLinhasDocOrigem = @IdLinha)
BEGIN
SELECT @IdLinhasDocDestino = IdLinhasDoc FROM LinhasDocTrans (NOLOCK) WHERE IdLinhasDocOrigem = @IdLinha
INSERT @tblLinhasTransf ([IdLinha]) VALUES (@IdLinhasDocDestino)
SET @IdLinha = @IdLinhasDocDestino
END

RETURN

END

 

 

EXEMPLO DE VIEW COM RASTREABILIDADE

SELECT dbo.CabecDoc.Serie, VND_RastreioLinhaReverse_1.IdLinha, dbo.LinhasDoc.NumLinha, dbo.LinhasDoc.Artigo, dbo.CabecDoc.TipoDoc, dbo.CabecDoc.NumDoc, dbo.CabecDoc.Data, dbo.CabecDoc.Entidade
FROM dbo.CabecDoc INNER JOIN
dbo.LinhasDoc ON dbo.CabecDoc.Id = dbo.LinhasDoc.IdCabecDoc INNER JOIN
dbo.VND_RastreioLinhaReverse('758C74DA-9256-11ED-99F9-F8633FD11027') AS VND_RastreioLinhaReverse_1 ON dbo.LinhasDoc.Id = VND_RastreioLinhaReverse_1.IdLinha

 

Faça login para poder traduzir
Marked as spam
Created 1 year and 2 months ago vitorhugosilva
vitorhugosilva Responsiveness Member