Jump to content
João Lemos

Informação Limite Inicio De Gozo De Férias

Recommended Posts

Ótima dica Luciano

E pessoal

Fiz essa query para uma planilha onde irão controlar exatamente as ferias do pessoal.

Pode ser que ajude vocês também.

Você só precisarão informar as sessões e tipos de funcionários desejarão listar.

PS.: Se a melhorarem lembre-se do amigo aqui e compartilhe as melhorias também

:victory:

 
SELECT
 PSECAO.DESCRICAO AS 'DEPARTAMENTO',
 PPESSOA.NOME,
 PFUNC.DATAADMISSAO AS 'ADMISSAO',
 PFUNC.DTVENCFERIAS AS 'VECTOFERIAS',
 PFUNC.INICPROGFERIAS1 AS 'INICIOFERIAS',
 PFUNC.FIMPROGFERIAS1 AS 'TERMINOFERIAS',
 CASE WHEN HFERIAS.DTULTIMAFER > GETDATE() THEN 0 ELSE DATEDIFF(MONTH,GETDATE(),DATEADD(YEAR,1,HFERIAS.DTULTIMAFER)) END AS 'INTERVALOMES',
 CASE
  WHEN PFUNC.INICPROGFERIAS1 IS NULL AND GETDATE() >= DATEADD(MONTH,-3,DATEADD(YEAR,1,HFERIAS.DTULTIMAFER)) THEN 'ATENÇÃO'
  WHEN PFUNC.INICPROGFERIAS1 IS NULL AND GETDATE() >= DATEADD(MONTH,-2,DATEADD(YEAR,1,HFERIAS.DTULTIMAFER)) THEN 'PERIGO'
  WHEN PFUNC.INICPROGFERIAS1 IS NULL AND GETDATE() >= DATEADD(MONTH,-1,DATEADD(YEAR,1,HFERIAS.DTULTIMAFER)) THEN 'ESGOTADO'
  WHEN PFUNC.INICPROGFERIAS1 IS NULL AND GETDATE() >= DATEADD(MONTH,-1,DATEADD(YEAR,1,HFERIAS.DTULTIMAFER)) THEN 'FERIAS EM DOBRO'
  WHEN PFUNC.INICPROGFERIAS1 >= DATEADD(MONTH,-1,DATEADD(YEAR,1,HFERIAS.DTULTIMAFER)) THEN 'FERIAS EM DOBRO'
 END AS 'ALARME'

FROM
 PFUNC
 INNER JOIN PPESSOA
  ON
  PFUNC.CODPESSOA = PPESSOA.CODIGO

 LEFT JOIN PSECAO
  ON
  PFUNC.CODCOLIGADA = PSECAO.CODCOLIGADA AND
  PFUNC.CODSECAO = PSECAO.CODIGO

 LEFT JOIN PFUNCAO
  ON
  PFUNC.CODCOLIGADA = PFUNCAO.CODCOLIGADA AND
  PFUNC.CODFUNCAO = PFUNCAO.CODIGO

 LEFT JOIN VFAIXASALARIAL
  ON
  PFUNC.CODCOLIGADA = VFAIXASALARIAL.CODCOLIGADA AND
  PFUNC.GRUPOSALARIAL = VFAIXASALARIAL.CODFAIXA
 
  OUTER APPLY (SELECT MAX(PFHSTFER.DTFIMPERAQUIS) AS 'DTULTIMAFER' FROM PFHSTFER WHERE PFHSTFER.CODCOLIGADA = PFUNC.CODCOLIGADA AND PFHSTFER.CHAPA = PFUNC.CHAPA) HFERIAS

WHERE
 PFUNC.CODCOLIGADA IN (1,2,3) AND
 PFUNC.CODTIPO IN ('N','Z','T','U') AND
 CODSITUACAO <> 'D' AND
 (PFUNC.CODSECAO LIKE '1.01.01.%' OR PFUNC.CODSECAO LIKE '1.02.01.%')

ORDER BY
 PSECAO.DESCRICAO,
 PPESSOA.NOME
 
 
  • Thanks 1

Share this post


Link to post
Share on other sites

Ótima dica Luciano

E pessoal

Fiz essa query para uma planilha onde irão controlar exatamente as ferias do pessoal.

Pode ser que ajude vocês também.

Você só precisarão informar as sessões e tipos de funcionários desejarão listar.

PS.: Se a melhorarem lembre-se do amigo aqui e compartilhe as melhorias também

:victory:

 
SELECT
 PSECAO.DESCRICAO AS 'DEPARTAMENTO',
 PPESSOA.NOME,
 PFUNC.DATAADMISSAO AS 'ADMISSAO',
 PFUNC.DTVENCFERIAS AS 'VECTOFERIAS',
 PFUNC.INICPROGFERIAS1 AS 'INICIOFERIAS',
 PFUNC.FIMPROGFERIAS1 AS 'TERMINOFERIAS',
 CASE WHEN HFERIAS.DTULTIMAFER > GETDATE() THEN 0 ELSE DATEDIFF(MONTH,GETDATE(),DATEADD(YEAR,1,HFERIAS.DTULTIMAFER)) END AS 'INTERVALOMES',
 CASE
  WHEN PFUNC.INICPROGFERIAS1 IS NULL AND GETDATE() >= DATEADD(MONTH,-3,DATEADD(YEAR,1,HFERIAS.DTULTIMAFER)) THEN 'ATENÇÃO'
  WHEN PFUNC.INICPROGFERIAS1 IS NULL AND GETDATE() >= DATEADD(MONTH,-2,DATEADD(YEAR,1,HFERIAS.DTULTIMAFER)) THEN 'PERIGO'
  WHEN PFUNC.INICPROGFERIAS1 IS NULL AND GETDATE() >= DATEADD(MONTH,-1,DATEADD(YEAR,1,HFERIAS.DTULTIMAFER)) THEN 'ESGOTADO'
  WHEN PFUNC.INICPROGFERIAS1 IS NULL AND GETDATE() >= DATEADD(MONTH,-1,DATEADD(YEAR,1,HFERIAS.DTULTIMAFER)) THEN 'FERIAS EM DOBRO'
  WHEN PFUNC.INICPROGFERIAS1 >= DATEADD(MONTH,-1,DATEADD(YEAR,1,HFERIAS.DTULTIMAFER)) THEN 'FERIAS EM DOBRO'
 END AS 'ALARME'

FROM
 PFUNC
 INNER JOIN PPESSOA
  ON
  PFUNC.CODPESSOA = PPESSOA.CODIGO

 LEFT JOIN PSECAO
  ON
  PFUNC.CODCOLIGADA = PSECAO.CODCOLIGADA AND
  PFUNC.CODSECAO = PSECAO.CODIGO

 LEFT JOIN PFUNCAO
  ON
  PFUNC.CODCOLIGADA = PFUNCAO.CODCOLIGADA AND
  PFUNC.CODFUNCAO = PFUNCAO.CODIGO

 LEFT JOIN VFAIXASALARIAL
  ON
  PFUNC.CODCOLIGADA = VFAIXASALARIAL.CODCOLIGADA AND
  PFUNC.GRUPOSALARIAL = VFAIXASALARIAL.CODFAIXA
 
  OUTER APPLY (SELECT MAX(PFHSTFER.DTFIMPERAQUIS) AS 'DTULTIMAFER' FROM PFHSTFER WHERE PFHSTFER.CODCOLIGADA = PFUNC.CODCOLIGADA AND PFHSTFER.CHAPA = PFUNC.CHAPA) HFERIAS

WHERE
 PFUNC.CODCOLIGADA IN (1,2,3) AND
 PFUNC.CODTIPO IN ('N','Z','T','U') AND
 CODSITUACAO <> 'D' AND
 (PFUNC.CODSECAO LIKE '1.01.01.%' OR PFUNC.CODSECAO LIKE '1.02.01.%')

ORDER BY
 PSECAO.DESCRICAO,
 PPESSOA.NOME
 
 

Show.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

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


×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.