Ir para conteúdo

Relação dos tipos de movimentos e suas naturezas


mamartins25

Posts Recomendados


  • Tópicos Que Criei:  9
  • Tópicos/Dia:  0.01
  • Meu Conteúdo:  22
  • Conteúdo/Dia:  0.03
  • Reputação:   4
  • Pontos/Conquistas:  205
  • Conteúdo Resolvido:  0
  • Dias Ganho:  1
  • Status:  Offline
  • Dispositivo:  Windows

Pessoal, gostaria de saber quais são os Tipos  de MOVIMENTOS e as naturezas associadas a ela.

Alguém tem esse relatório ou query?

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  5
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  470
  • Conteúdo/Dia:  0.21
  • Reputação:   132
  • Pontos/Conquistas:  3.143
  • Conteúdo Resolvido:  0
  • Dias Ganho:  63
  • Status:  Offline
  • Idade:  35
  • Dispositivo:  Windows

@mamartins25, boa noite!

 

Podes verificar as naturezas inclusas no movimento a partir dessa query: 

USE CorporeRM
GO 

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;

SELECT 
	 T.CODCOLIGADA 
	,T.CODTMV
	,D.CODNAT AS 'CODNAT_FORAESTADO'
	,TE.IDNATFORAESTADO
	,D2.CODNAT AS 'CODNAT_FORAESTADO2'
	,TE.IDNATFORAESTADO2
FROM DBO.TTMV T 
JOIN DBO.TTMVEXT TE ON (T.CODCOLIGADA = TE.CODCOLIGADA AND T.CODTMV = TE.CODTMV)
LEFT JOIN DBO.DCFOP D ON (D.CODCOLIGADA = TE.CODCOLIGADA AND D.IDNAT = TE.IDNATFORAESTADO)
LEFT JOIN DBO.DCFOP D2 ON (D.CODCOLIGADA = TE.CODCOLIGADA AND D2.IDNAT = TE.IDNATFORAESTADO2)
WHERE T.CODCOLIGADA = 1 
GO

 

Porém, caso utilize nestes parâmetros naturezas sintéticas, dai teremos que fazer uma query um pouco diferente... criando uma recursividade para resultar todas as naturezas.

Lembrando que nessa tabela TTMVEXT tem a regra do movimento que pode ser mais restringida com a regra da própria natureza.

Espero que ajude.  

Abraços.  

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  9
  • Tópicos/Dia:  0.01
  • Meu Conteúdo:  22
  • Conteúdo/Dia:  0.03
  • Reputação:   4
  • Pontos/Conquistas:  205
  • Conteúdo Resolvido:  0
  • Dias Ganho:  1
  • Status:  Offline
  • Dispositivo:  Windows

@luisgustavogomes Muito obrigado pela resposta. ajudou bastante.

Porém ela não está trazendo todos os movimentos, pois dentro do movimento temos natureza sintética(como vc mesmo cita essa possibilidade) e dentro do item é analítica. Como seria essa query criando uma recursividade para resultar todas as naturezas?

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  5
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  470
  • Conteúdo/Dia:  0.21
  • Reputação:   132
  • Pontos/Conquistas:  3.143
  • Conteúdo Resolvido:  0
  • Dias Ganho:  63
  • Status:  Offline
  • Idade:  35
  • Dispositivo:  Windows

@mamartins25, bom dia! 

Ótimo que conseguiu lhe ajudar um pouco... irei demonstrar na sequência como ficaria essa query, porém fiquei preocupado com sua alegação de não trazer todos os movimento!?

Pois a query verifica a lista de movimento cadastrado e os seus parâmetros da natureza possíveis de utilização. Nos itens (caso assim configure) a aplicação só deixará as analíticas das naturezas do movimento. 

Se essa alegação estiver correta, ou seja, "Quais são as possíveis naturezas analíticas a serem utilizadas por movimento e seus itens" se for criamos a consulta com a recursividade.

No aguardo.

 

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  5
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  470
  • Conteúdo/Dia:  0.21
  • Reputação:   132
  • Pontos/Conquistas:  3.143
  • Conteúdo Resolvido:  0
  • Dias Ganho:  63
  • Status:  Offline
  • Idade:  35
  • Dispositivo:  Windows

@mamartins25, Boa tarde!

 

Segue um possível resultado.

abraços. 

 

USE CorporeRM
GO 

SET NOCOUNT ON;
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;


;WITH TAB_DADOS
AS
(
    SELECT 
         T.CODCOLIGADA 
        ,T.CODTMV
        ,T.IDNAT
        ,D.CODNAT AS 'CODNAT'
        ,TE.IDNATFORAESTADO
        ,DF.CODNAT AS 'CODNAT_FORAESTADO'    
        ,T.IDNAT2
        ,D2.CODNAT AS 'CODNAT2'
        ,TE.IDNATFORAESTADO2
        ,DF2.CODNAT AS 'CODNAT_FORAESTADO2'
    FROM DBO.TTMV T 
    JOIN DBO.TTMVEXT TE ON (T.CODCOLIGADA = TE.CODCOLIGADA AND T.CODTMV = TE.CODTMV)
    LEFT JOIN DBO.DCFOP D ON (D.CODCOLIGADA = TE.CODCOLIGADA AND D.IDNAT = T.IDNAT)
    LEFT JOIN DBO.DCFOP D2 ON (D2.CODCOLIGADA = TE.CODCOLIGADA AND D2.IDNAT = T.IDNAT2)
    LEFT JOIN DBO.DCFOP DF ON (DF.CODCOLIGADA = TE.CODCOLIGADA AND DF.IDNAT = TE.IDNATFORAESTADO)
    LEFT JOIN DBO.DCFOP DF2 ON (DF.CODCOLIGADA = TE.CODCOLIGADA AND DF2.IDNAT = TE.IDNATFORAESTADO2)
    WHERE T.CODCOLIGADA = 1 
)
, TAB_RESULTADO 
AS
(
    SELECT 
         T.CODCOLIGADA
        ,T.CODTMV 
        ,'NATUREZA' AS 'CAMPO'
        ,T.IDNAT AS 'PARAM_IDNAT'
        ,T.CODNAT AS 'PARAM_CODNAT'
        ,COALESCE(T1.IDNAT,  T.IDNAT) AS 'IDNAT'
        ,COALESCE(T1.CODNAT,T.CODNAT,'Não inf.'    ) AS 'CODNAT'
    FROM TAB_DADOS T 
    OUTER APPLY 
    (
        SELECT D1.IDNAT, D1.CODNAT 
        FROM DBO.DCFOP D1
        WHERE D1.CODCOLIGADA = T.CODCOLIGADA 
        AND D1.CODNAT LIKE T.CODNAT + '%'
        AND LEN(D1.CODNAT)=8
        AND LEN(T.CODNAT)<>8
    ) T1 
    
    UNION 
    
    SELECT 
         T.CODCOLIGADA
        ,T.CODTMV 
        ,'NATUREZA FORAESTADO' AS 'CAMPO'
        ,T.IDNATFORAESTADO AS 'PARAM_IDNAT'
        ,T.CODNAT_FORAESTADO AS 'PARAM_CODNAT'
        ,COALESCE(T1.IDNAT,  T.IDNATFORAESTADO ) AS 'IDNAT'
        ,COALESCE(T1.CODNAT, T.CODNAT_FORAESTADO, 'Não inf.'    ) AS 'CODNAT'
    FROM TAB_DADOS T 
    OUTER APPLY 
    (
        SELECT D1.IDNAT, D1.CODNAT  
        FROM DBO.DCFOP D1
        WHERE D1.CODCOLIGADA = T.CODCOLIGADA 
        AND D1.CODNAT LIKE T.CODNAT_FORAESTADO + '%'
        AND LEN(D1.CODNAT)=8
        AND LEN(T.CODNAT_FORAESTADO)<>8
    ) T1 
    
    UNION
    
    SELECT 
         T.CODCOLIGADA
        ,T.CODTMV 
        ,'NATUREZA 2' AS 'CAMPO'
        ,T.IDNAT2 AS 'PARAM_IDNAT'
        ,T.CODNAT2 AS 'PARAM_CODNAT'
        ,COALESCE(T1.IDNAT,  T.IDNAT2 ) AS 'IDNAT'
        ,COALESCE(T1.CODNAT, T.CODNAT2,'Não inf.'    ) AS 'CODNAT'
    FROM TAB_DADOS T 
    OUTER APPLY 
    (
        SELECT D1.IDNAT, D1.CODNAT 
        FROM DBO.DCFOP D1
        WHERE D1.CODCOLIGADA = T.CODCOLIGADA 
        AND D1.CODNAT LIKE T.CODNAT2 + '%'
        AND LEN(D1.CODNAT)=8
        AND LEN(T.CODNAT2)<>8
    ) T1 
    
    UNION 
    
    SELECT 
         T.CODCOLIGADA
        ,T.CODTMV 
        ,'NATUREZA FORAESTADO 2' AS 'CAMPO'
        ,T.IDNATFORAESTADO2 AS 'PARAM_IDNAT'
        ,T.CODNAT_FORAESTADO2 AS 'PARAM_CODNAT'
        ,COALESCE(T1.IDNAT,  T.IDNATFORAESTADO2) AS 'IDNAT'
        ,COALESCE(T1.CODNAT, T.CODNAT_FORAESTADO2,'Não inf.'    ) AS 'CODNAT'
    FROM TAB_DADOS T 
    OUTER APPLY 
    (
        SELECT D1.IDNAT, D1.CODNAT  
        FROM DBO.DCFOP D1
        WHERE D1.CODCOLIGADA = T.CODCOLIGADA 
        AND D1.CODNAT LIKE T.CODNAT_FORAESTADO2 + '%'
        AND LEN(D1.CODNAT)=8
        AND LEN(T.CODNAT_FORAESTADO2)<>8
    ) T1 
)
SELECT 
     R.CODCOLIGADA
    ,R.CODTMV
    ,R.CAMPO
    ,R.PARAM_IDNAT
    ,R.PARAM_CODNAT
    ,R.IDNAT
    ,R.CODNAT
FROM TAB_RESULTADO R

Editado por luisgustavogomes
De CROSS para OUTER APPLY
Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  9
  • Tópicos/Dia:  0.01
  • Meu Conteúdo:  22
  • Conteúdo/Dia:  0.03
  • Reputação:   4
  • Pontos/Conquistas:  205
  • Conteúdo Resolvido:  0
  • Dias Ganho:  1
  • Status:  Offline
  • Dispositivo:  Windows

@luisgustavogomes Nossa Luiz, ficou muito completo. Muito obrigado pela ajuda. Você é fera meu amigo.

  • Like 1
Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  885
  • Tópicos/Dia:  0.13
  • Meu Conteúdo:  8.802
  • Conteúdo/Dia:  1.34
  • Reputação:   291
  • Pontos/Conquistas:  106.268
  • Conteúdo Resolvido:  0
  • Dias Ganho:  185
  • Status:  Offline
  • Idade:  51
  • Dispositivo:  Windows

Luis... se possível, posta uma imagem de como que fica o retorno dessa sentença montado desta forma que sugeriu 😄 Ficaria bem visível a todos. 

  • Like 1
Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  5
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  470
  • Conteúdo/Dia:  0.21
  • Reputação:   132
  • Pontos/Conquistas:  3.143
  • Conteúdo Resolvido:  0
  • Dias Ganho:  63
  • Status:  Offline
  • Idade:  35
  • Dispositivo:  Windows

@Jair - Fórmula, boa tarde!

 

Claro, só fiz uma alteração na query "estava usando CROSS e alterei para OUTER apply"

 

image.png

 

Abraços

  • Like 1
Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  5
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  470
  • Conteúdo/Dia:  0.21
  • Reputação:   132
  • Pontos/Conquistas:  3.143
  • Conteúdo Resolvido:  0
  • Dias Ganho:  63
  • Status:  Offline
  • Idade:  35
  • Dispositivo:  Windows

@mamartins25

Esqueci de comentar que não foi preciso utilizar recursividade, pois a tabela DLAF monta a BTREE SIMPLE na visão conforme o código... diferente, por exemplo DBO.MRECCMP que tem a hierarquia nas tabelas na relação de PAI para FILHO.

Abraços.

  • Like 1
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.