Ir para conteúdo
Seja Membro VIP - Remova Banners de Propagandas, Tenha Liberado Qualquer Download, Além de Acessos em Áreas Exclusivas!! ×
Quer acesso a todas as Áreas do Fórum, até aquelas só para membros VIPs? Também quer poder baixar qualquer ARQUIVO? ×

Recursividade/Rastreamento nos Recebimentos Parciais


Jamensson

Posts Recomendados


  • Tópicos Que Criei:  23
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  140
  • Conteúdo/Dia:  0.02
  • Reputação:   3
  • Pontos/Conquistas:  983
  • Conteúdo Resolvido:  0
  • Dias Ganho:  3
  • Status:  Offline
  • Idade:  41

Pessoal,

Estive quebrando a cabeça para encontrar uma solução para rastrear os lançamentos pagos parcialmente e gostaria de compartilhar a solução que encontrei. Acredito que possa ser usado não só para o Fluxus mas também para outros sistemas como o Nucleus.

SELECT   L.IDLAN AS REF
		, L.DATAVENCIMENTO AS VENCIMENTO
		, L.DATABAIXA AS DATA_BAIXA	  

FROM FLAN L
LEFT OUTER JOIN FTDO D ON (D.CODCOLIGADA = L.CODCOLIGADA AND D.CODTDO = L.CODTDO)
WHERE L.IDLAN IN (SELECT TO_NUMBER(SUBSTR(SCBP,1,INSTR(SCBP,'.')-1)) B
  FROM (SELECT R1.IDLAN,LTRIM(SYS_CONNECT_BY_PATH(R1.IDLANREL,'.'),'.') ||'.' SCBP
	   FROM FRELLAN R1
	   WHERE R1.CODCOLIGADA = :ESPELHO#3 
			 AND R1.TIPOREL = 11		
	CONNECT BY PRIOR R1.IDLAN = R1.IDLANREL )
 WHERE IDLAN = :ESPELHO#2)
 AND L.CODCOLIGADA = :ESPELHO#3
 AND L.STATUSLAN <> 2  
 AND D.EDEVOLUCAO NOT IN (1,2,3,4) --Adiantamentos
 ORDER BY L.IDLAN, L.NUMERODOCUMENTO 

--Melhorei um pouco a query

A principal mudança está no campo R1.TIPOREL da tabela FRELLAN, cada código é um tipo de relacionamento. Segue tabela com os códigos.

===================================

1 - IRRF

2 - Adiantamento (1 Lançamento a N Adiantamentos)

22 - Adiantamento (N Lançamentos a 1 Adiantamento)

4 - Devolução

5 - INSS

6 - INSS Empregador

9 - Tributo

10 - Geração Tributo

11 - Baixa Parcial

26 - SEST/SENAT

===================================

Essa tabela também pode ser encontrada no link: Variáveis Internas do Corpore

Essa solução é para quem usa Oracle.

Qualquer dúvida é só postar!

Abraço.

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  65
  • Tópicos/Dia:  0.01
  • Meu Conteúdo:  654
  • Conteúdo/Dia:  0.11
  • Reputação:   1
  • Pontos/Conquistas:  3.926
  • Conteúdo Resolvido:  0
  • Dias Ganho:  1
  • Status:  Offline
  • Idade:  44
  • Dispositivo:  Windows

Jamensson, boa tarde!

Esse rastreamento é uma boa, infelizmente não trabalho com Oracle. Poderia descrecer a lógica usada para eu tentar repassar para SQL?

Obrigado

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  23
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  140
  • Conteúdo/Dia:  0.02
  • Reputação:   3
  • Pontos/Conquistas:  983
  • Conteúdo Resolvido:  0
  • Dias Ganho:  3
  • Status:  Offline
  • Idade:  41

Já faz algum tempo que não utilizo Sql Server.

Encontrei um artigo que pode te ajudar nesse problema e em outros.

http://worldofbit.com/wob/index.php?option...5:sql&Itemid=58

Espero que te ajude.

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  15
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  548
  • Conteúdo/Dia:  0.09
  • Reputação:   1
  • Pontos/Conquistas:  2.891
  • Conteúdo Resolvido:  0
  • Dias Ganho:  1
  • Status:  Offline
  • Idade:  44

caramba..... muito legal esse negócio...

Obrigado Jamensson...

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  65
  • Tópicos/Dia:  0.01
  • Meu Conteúdo:  654
  • Conteúdo/Dia:  0.11
  • Reputação:   1
  • Pontos/Conquistas:  3.926
  • Conteúdo Resolvido:  0
  • Dias Ganho:  1
  • Status:  Offline
  • Idade:  44
  • Dispositivo:  Windows

Realmente, muito bom!

Obrigado :Valeu:

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  900
  • Tópicos/Dia:  0.14
  • Meu Conteúdo:  8.845
  • Conteúdo/Dia:  1.34
  • Reputação:   310
  • Pontos/Conquistas:  106.599
  • Conteúdo Resolvido:  0
  • Dias Ganho:  195
  • Status:  Offline
  • Idade:  52
  • Dispositivo:  Windows

Já faz algum tempo que não utilizo Sql Server.

Encontrei um artigo que pode te ajudar nesse problema e em outros.

http://worldofbit.com/wob/index.php?option...5:sql&Itemid=58

Espero que te ajude.

Muito bom isso heim !!! Jamersson, bem interessante. Pena que apenas no SQL 2005 (pra os que ainda não o tem), mas já é algo.

Estou postando aqui o texto como está no link que vc mandou, assim, fica mais fácil, pra quem não quer acessar lá pra consultar o esquema como funciona. Claro que vou testar depois, pois, será muito útil isso.

Abraco.

---------------------

Recursividade no SQL Server 2005

Sáb, 27 de Setembro de 2008 01:09 Renato Tarantelli

Aqueles que tem problemas em relacionar dados em um banco de dados onde há uma amarração por meio de árvore, segue uma boa dica de como utilizar querys recursivas no SQL Server.

Antes de mais nada vamos preparar a tabela que utilizaremos em nosso exemplo:

CREATE TABLE Hierarquia (
IdHierarquia INT PRIMARY KEY,
IdHierarquiaPai INT
)

INSERT INTO Hierarquia VALUES (1,NULL);

INSERT INTO Hierarquia VALUES (2,4);

INSERT INTO Hierarquia VALUES (3,1);

INSERT INTO Hierarquia VALUES (4,1);

INSERT INTO Hierarquia VALUES (5,2);

INSERT INTO Hierarquia VALUES (6,4);

INSERT INTO Hierarquia VALUES (7,3);

INSERT INTO Hierarquia VALUES (8,1);

INSERT INTO Hierarquia VALUES (9,2);

INSERT INTO Hierarquia VALUES (10,1);

INSERT INTO Hierarquia VALUES (11,4);

INSERT INTO Hierarquia VALUES (12,2);

INSERT INTO Hierarquia VALUES (13,3);

INSERT INTO Hierarquia VALUES (14,1);

INSERT INTO Hierarquia VALUES (15,4);

INSERT INTO Hierarquia VALUES (16,3);

INSERT INTO Hierarquia VALUES (17,2);

INSERT INTO Hierarquia VALUES (18,2);

INSERT INTO Hierarquia VALUES (19,1);

INSERT INTO Hierarquia VALUES (20,1);

Criada a tabela e inserida seu elementos vamos a nossa query de recursividade:

WITH Filhos(IdHierarquia, IdHierarquiaPai, nivel, coluna)
AS
(
-- Membro Ancora
SELECT
	IdHierarquia,
	IdHierarquiaPai,
	0,
	CAST(IdHierarquia AS BINARY(900))
FROM Hierarquia

UNION ALL

-- Membros Recursivos
SELECT
	H.IdHierarquia,
	H.IdHierarquiaPai,
	F.nivel + 1,
	CAST(coluna + CAST(H.IdHierarquia AS BINARY(10)) AS BINARY(900))
FROM Hierarquia H
	INNER JOIN Filhos F ON H.IdHierarquiaPai = F.IdHierarquia
)
-- Query com Resultado
SELECT
IdHierarquiaPai,
IdHierarquia,
REPLICATE('|		 ' , nivel)
	+ (CAST(IdHierarquia AS VARCHAR(20))) AS [Arvore de Hierarquia]
FROM Filhos
ORDER BY coluna

Vamos entender oque foi feito.

1º A utlização do WITH vem de um dos novos recursos atribuídos ao SQL Server 2005, onde é utilizado para criação de views temporárias, válida somente dentro do seu batch atual. Esse recurso é denomindado de Common Table Expressions(CTE).

Sintaxe:

	WITH [name] AS (

	 [instrução SELECT]

)

2º A utilização de UNION ALL separando as querys a serem utilizadas, sendo que a primeira é a própria view criada a partir do primeiro elemento de comparação, no nosso caso:

		   -- Membro Ancora
		SELECT
			IdHierarquia,
			IdHierarquiaPai,
			0,
			CAST(IdHierarquia AS BINARY(900))
		FROM Hierarquia

O primeiro SELECT é denominado de membro âncora, definindo o ponto de entrada da hirarquia.

O segundo SELECT é denominado de membros recursivos onde é incluído o CTE criado em JOIN com a tabela a ser buscado os elementos:

			-- Membros Recursivos
		SELECT
			H.IdHierarquia,
			H.IdHierarquiaPai,
			F.nivel + 1,
			CAST(coluna + CAST(H.IdHierarquia AS BINARY(10)) AS BINARY(900))
		FROM Hierarquia H
			INNER JOIN Filhos F ON H.IdHierarquiaPai = F.IdHierarquia

Acho que valeu a dica.

Bom Divertimento!

referências:

Linha de Código

MSDN

Link para comentar
Compartilhar em outros sites

Participe da conversa

Você pode postar agora, e se registrar mais tarde. Se você tiver uma conta, faça o login agora para postar com sua conta.

Visitante
Responder esse tópico

×   Você colou conteúdo com formatação.   Remover formatação

  Only 75 emoji are allowed.

×   Seu link foi automaticamente inserido no corpo do post.   Exibir como um link

×   Seu conteúdo anterior foi restaurado.   Limpar conteúdo do editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Criar Novo...

Informação Importante

Usando este site, você concorda com nossos Termos de Uso e nossa Política de Privacidade.