Ir para conteúdo
Anúncios Publicitários
Entre para seguir isso  
cajordao

Saldo de férias

Recommended Posts

Boa tarde,

Por gentileza, será que tem algum iluminado que tenha um relatório ou SQL que apresente o saldo atualizado de férias?

Obrigadooo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite,

Uso esta consulta em um cubo.  Trata-se de um caso particular que leva em conta as férias coletivas da empresa (mostra o saldo das férias coletivas e o saldo acumulado), que ocorrem todo ano, mas já serve como base.  Não tenho espaço para colocar o cubo anexo.

No cubo tem umas funções, tipo:

-  Saldo: min(Iif([BASESLD] > 0,  [BASESLD] ,0 ),30)

- Saldo acumulado: [BASESALDOACUM]

Consulta: 

SELECT PFUFERIAS.CODCOLIGADA,
       PFUFERIAS.CHAPA,
       PFUNC.NOME,
       PFUNC.DATAADMISSAO,
       PFUFERIAS.INICIOPERAQUIS,
       PFUFERIAS.FIMPERAQUIS,
       SUM(PFUFERIASPER.NRODIASFERIAS)                                                                                               AS FERIAS,
       PFUFERIASPER.DATAINICIO,
       ( PFUFERIAS.FIMPERAQUIS ) + 364                                                                                               AS LIMITE,
       ( ( ( ( DATEDIFF(DD, PFUFERIAS.INICIOPERAQUIS, GETDATE()) ) * 30 ) / 365 )  - ISNULL(SUM(PFUFERIASPER.NRODIASFERIAS), 0) ) AS BASESALDOACUM,
       ( CASE
           WHEN PFUFERIAS.FIMPERAQUIS >= GETDATE() THEN ( ( ( DATEDIFF(DD, PFUFERIAS.INICIOPERAQUIS, GETDATE()) ) * 30 ) / 365 ) 
           ELSE ( ( DATEDIFF(DD, PFUFERIAS.INICIOPERAQUIS, PFUFERIAS.FIMPERAQUIS+1) * 30 ) / 365 ) 
         END )                                                                                                                       AS DIAS,
       ( CASE
           WHEN PFUFERIAS.FIMPERAQUIS >= GETDATE() THEN ( ( ( ( DATEDIFF(DD, PFUFERIAS.INICIOPERAQUIS, GETDATE()) ) * 30 ) / 365 )  - ISNULL(SUM(PFUFERIASPER.NRODIASFERIAS), 0) )
           ELSE ( ( ( DATEDIFF(DD, PFUFERIAS.INICIOPERAQUIS, PFUFERIAS.FIMPERAQUIS+1) * 30 ) / 365 ) - ISNULL(SUM(PFUFERIASPER.NRODIASFERIAS), 0))
         END )                                                                                                                       AS BASESLD
FROM   PFUNC(NOLOCK)
       LEFT OUTER JOIN PFUFERIAS(NOLOCK)
         ON PFUFERIAS.CODCOLIGADA = PFUNC.CODCOLIGADA
            AND PFUFERIAS.CHAPA = PFUNC.CHAPA
            AND PFUFERIAS.PERIODOABERTO = 1
       LEFT OUTER JOIN PFUFERIASPER(NOLOCK)
         ON PFUFERIAS.CODCOLIGADA = PFUFERIASPER.CODCOLIGADA
            AND PFUFERIAS.CHAPA = PFUFERIASPER.CHAPA
            AND PFUFERIAS.FIMPERAQUIS = PFUFERIASPER.FIMPERAQUIS
            AND DATEPART(YYYY, PFUFERIASPER.DATAINICIO) >= :ANOFERIASCOLETIVA
            AND DATEPART(MM, PFUFERIASPER.DATAINICIO) >= :MESFERIASCOLETIVA
WHERE  ( PFUNC.CODSITUACAO = 'A'
          OR PFUNC.CODSITUACAO = 'F' )
       AND ( PFUNC.CODTIPO = 'N'
              OR PFUNC.CODTIPO = 'Z' )
GROUP  BY PFUFERIAS.CODCOLIGADA,
          PFUFERIAS.CHAPA,
          PFUNC.NOME,
          PFUNC.DATAADMISSAO,
          PFUFERIAS.INICIOPERAQUIS,
          PFUFERIAS.FIMPERAQUIS,
          PFUFERIASPER.DATAINICIO

 

IMPORTANTE:  Não leva em conta as faltas !!!!

 

Editado por omar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Omar, muito obrigado pela resposta!

 

Tentei cadastrar a SQL e me apresentou o erro abaixo.

Pode me ajudar por gentileza?

image.png.688640239abfe3229b7fcce8ef82a5b8.png

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vc usa MS SQL ou ORACLE ?  Esta função que identifica o mês é do MS SQL.  Talvez vc tenha de buscar o equivalente ou remover do where.   Só utilizo para segregar o saldo de férias coletivas.   O departamento pessoal daqui pede o saldo acumulado e o saldo das últimas férias coletivas.

Editado por omar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
Entre para seguir isso  

×

Important Information

Usando este site, você concorda com nossos Termos de Uso.