Ir para conteúdo
AVISO AOS MEMBROS:

Fizemos uma atualização em 18/06/2023, e a forma de acesso ao Fórum mudou. Não mais está sendo aceito o login pelo Nome de Exibição cadastrado. Agora, apenas pelo email e pelos integradores de Login do Facebook, Google e Microsoft. O Facebook estava com uma validação pendente e já foi normalizado o acesso, já o Google, ainda estamos verificando o que está ocorrendo que não está funcionando.
Caso precisem de ajuda para o login pelo email acesse o link << Esqueci minha senha de acesso>> ou nos envie um pedido de ajuda pelo email admin@forumrm.com.br

Administração
ForumRM

Script - saldo de férias


igoroliveira

Posts Recomendados


  • Tópicos Que Criei:  13
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  30
  • Conteúdo/Dia:  0.01
  • Reputação:   2
  • Pontos/Conquistas:  283
  • Conteúdo Resolvido:  0
  • Dias Ganho:  1
  • Status:  Offline
  • Idade:  30

Boa tarde pessoal,

 

Algum de vocês possui um script/relatório que retorne o saldo de férias considerando as faltas de um funcionário?

Link para comentar
Compartilhar em outros sites

  • 3 semanas depois...

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

Processo complicado esse... a TOTVS faz o cálculo sempre na hora que precisa... 

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  2
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  8
  • Conteúdo/Dia:  0.00
  • Reputação:   0
  • Pontos/Conquistas:  62
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline
  • Idade:  37

Boa tarde!

Meu  sistema RM Labore tem um relatório pronto..

Link para comentar
Compartilhar em outros sites

  • 1 mês depois...

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

Em 12/02/2019 at 12:52, Rafaeltluiz disse:

Boa tarde!

Meu  sistema RM Labore tem um relatório pronto..

Vocês que desenvolveram? 

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  14
  • Tópicos/Dia:  0.01
  • Meu Conteúdo:  39
  • Conteúdo/Dia:  0.01
  • Reputação:   1
  • Pontos/Conquistas:  330
  • Conteúdo Resolvido:  0
  • Dias Ganho:  1
  • Status:  Offline
  • Idade:  24

Em 12/02/2019 at 12:52, Rafaeltluiz disse:

Boa tarde!

Meu  sistema RM Labore tem um relatório pronto..

Bom dia complementando o comentário do Jair. Se foi relatório desenvolvido, poderia disponibilizar para nós? (claro, removendo o cabeçalho e outros detalhes)

Link para comentar
Compartilhar em outros sites

  • 1 ano depois...

  • Tópicos Que Criei:  9
  • Tópicos/Dia:  0.01
  • Meu Conteúdo:  19
  • Conteúdo/Dia:  0.02
  • Reputação:   0
  • Pontos/Conquistas:  185
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline

Bom dia!!

Vocês ainda tem disponível esse relatório? 

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

Boa tarde!

Em relação ao saldo de férias...

Segue view...

 

USE CORPORERM

GO

 

CREATE VIEW VW_FOP_SALDO_FERIAS

AS

WITH TAB_1

AS

(

        SELECT

                ROW_NUMBER() OVER (PARTITION BY F.CODCOLIGADA, F.CHAPA  ORDER BY F.CODCOLIGADA, F.CHAPA  ) AS SEQ

            ,F.CODCOLIGADA

               ,F.CHAPA

               ,F.NOME

               ,FF.INICIOPERAQUIS

               ,FF.FIMPERAQUIS

               ,((DATEDIFF(DD, INICIOPERAQUIS, CASE WHEN FIMPERAQUIS >= GETDATE() THEN GETDATE() ELSE FIMPERAQUIS END )/30 )* 2.5) - ISNULL( FFF.DD, 0) AS 'DD'

               ,DATEADD(YY,1, DATEADD(YY, DATEDIFF(YY, 0, GETDATE()) + 1, -1)) AS FIM

               ,F.CODSITUACAO

               ,F.CODTIPO

               ,F.CODSECAO

               ,F.CODFUNCAO 

        FROM DBO.PFUNC F (NOLOCK)

        JOIN DBO.PFUFERIAS FF (NOLOCK) ON (F.CODCOLIGADA=FF.CODCOLIGADA AND F.CHAPA=FF.CHAPA AND PERIODOABERTO = 1 )

        CROSS APPLY

        (

               SELECT SUM(ISNULL(NRODIASABONO,0)) + SUM(ISNULL(NRODIASFERIAS,0)) AS DD

                FROM PFUFERIASPER  (NOLOCK)

               WHERE CODCOLIGADA = F.CODCOLIGADA

                 AND CHAPA = F.CHAPA

                 AND FIMPERAQUIS = FF.FIMPERAQUIS

       

        ) FFF

        WHERE F.CODSITUACAO <> 'D'

          AND F.CODTIPO <>'D'

)

, TAB_2

AS

(

        SELECT

                SEQ

               ,CODCOLIGADA

               ,CHAPA

               ,NOME

               ,INICIOPERAQUIS

               ,FIMPERAQUIS

               ,FIM

        FROM TAB_1 T

       

        UNION ALL

       

        SELECT

                SEQ + 1

               ,CODCOLIGADA

               ,CHAPA

               ,NOME

               ,DATEADD(YY , 1 , INICIOPERAQUIS) AS 'INICIOPERAQUIS'

               ,DATEADD(YY , 1 , FIMPERAQUIS) AS 'FIMPERAQUIS'

               ,FIM

        FROM TAB_2

        WHERE DATEPART(YY,FIMPERAQUIS) < DATEPART(YY,FIM)

)

, TAB_3

AS

(

        SELECT

                SEQ

               ,CODCOLIGADA

               ,CHAPA

               ,NOME

               ,INICIOPERAQUIS

               ,FIMPERAQUIS

               ,FIM

               ,DD

            ,(DATEDIFF(DD, INICIOPERAQUIS, CASE WHEN FIMPERAQUIS >= GETDATE() THEN GETDATE() ELSE FIMPERAQUIS END )/ 30 ) * 2.5 AS 'DDD'

               ,CASE WHEN FIMPERAQUIS <= GETDATE() THEN 1 ELSE 0 END AS 'VENCIDO'

        FROM TAB_2 T

        OUTER APPLY

        (

               SELECT DD

              FROM TAB_1

                WHERE CODCOLIGADA=T.CODCOLIGADA

                  AND SEQ=T.SEQ

                  AND CHAPA=T.CHAPA

    ) D

)

, DADOS_FINAL

AS

(

SELECT

         T.SEQ

        ,T.CODCOLIGADA

        ,T.CHAPA

        ,T.NOME

        ,T.INICIOPERAQUIS

        ,T.FIMPERAQUIS

        ,CASE WHEN T.SEQ = 1 THEN T.DD ELSE T.DDD END AS 'DD'

        ,T.VENCIDO

        ,F.CODSECAO

        ,F.CODFUNCAO

        ,CASE WHEN T.SEQ = 1 THEN 1 ELSE 0 END AS 'NRO'

FROM TAB_3 T

CROSS APPLY

(

  SELECT CODSECAO, CODFUNCAO

   FROM TAB_1

  WHERE CODCOLIGADA = T.CODCOLIGADA

        AND CHAPA = T.CHAPA

) F

WHERE CASE WHEN T.SEQ = 1 THEN T.DD ELSE T.DDD END > 0

)

SELECT

         D.SEQ

        ,D.CODCOLIGADA

        ,D.CHAPA

        ,D.NOME

        ,D.INICIOPERAQUIS

        ,D.FIMPERAQUIS

        ,D.DD

        ,D.VENCIDO

        ,D.CODSECAO

        ,D.CODFUNCAO

        ,D.NRO

FROM DADOS_FINAL D

 

Para utilizar execute esse seguinte code...

USE CORPORERM

GO

 

SELECT *

FROM DBO.VW_FOP_SALDO_FERIAS (NOLOCK)

WHERE CODCOLIGADA = 1

AND CHAPA = 'CHAPA PARA TESTE'

Resultado...

Boa tarde!

Em relação ao saldo de férias...

Segue view...

 

USE CORPORERM

GO

 

CREATE VIEW VW_FOP_SALDO_FERIAS

AS

WITH TAB_1

AS

(

        SELECT

                ROW_NUMBER() OVER (PARTITION BY F.CODCOLIGADA, F.CHAPA  ORDER BY F.CODCOLIGADA, F.CHAPA  ) AS SEQ

            ,F.CODCOLIGADA

               ,F.CHAPA

               ,F.NOME

               ,FF.INICIOPERAQUIS

               ,FF.FIMPERAQUIS

               ,((DATEDIFF(DD, INICIOPERAQUIS, CASE WHEN FIMPERAQUIS >= GETDATE() THEN GETDATE() ELSE FIMPERAQUIS END )/30 )* 2.5) - ISNULL( FFF.DD, 0) AS 'DD'

               ,DATEADD(YY,1, DATEADD(YY, DATEDIFF(YY, 0, GETDATE()) + 1, -1)) AS FIM

               ,F.CODSITUACAO

               ,F.CODTIPO

               ,F.CODSECAO

               ,F.CODFUNCAO 

        FROM DBO.PFUNC F (NOLOCK)

        JOIN DBO.PFUFERIAS FF (NOLOCK) ON (F.CODCOLIGADA=FF.CODCOLIGADA AND F.CHAPA=FF.CHAPA AND PERIODOABERTO = 1 )

        CROSS APPLY

        (

               SELECT SUM(ISNULL(NRODIASABONO,0)) + SUM(ISNULL(NRODIASFERIAS,0)) AS DD

                FROM PFUFERIASPER  (NOLOCK)

               WHERE CODCOLIGADA = F.CODCOLIGADA

                 AND CHAPA = F.CHAPA

                 AND FIMPERAQUIS = FF.FIMPERAQUIS

       

        ) FFF

        WHERE F.CODSITUACAO <> 'D'

          AND F.CODTIPO <>'D'

)

, TAB_2

AS

(

        SELECT

                SEQ

               ,CODCOLIGADA

               ,CHAPA

               ,NOME

               ,INICIOPERAQUIS

               ,FIMPERAQUIS

               ,FIM

        FROM TAB_1 T

       

        UNION ALL

       

        SELECT

                SEQ + 1

               ,CODCOLIGADA

               ,CHAPA

               ,NOME

               ,DATEADD(YY , 1 , INICIOPERAQUIS) AS 'INICIOPERAQUIS'

               ,DATEADD(YY , 1 , FIMPERAQUIS) AS 'FIMPERAQUIS'

               ,FIM

        FROM TAB_2

        WHERE DATEPART(YY,FIMPERAQUIS) < DATEPART(YY,FIM)

)

, TAB_3

AS

(

        SELECT

                SEQ

               ,CODCOLIGADA

               ,CHAPA

               ,NOME

               ,INICIOPERAQUIS

               ,FIMPERAQUIS

               ,FIM

               ,DD

            ,(DATEDIFF(DD, INICIOPERAQUIS, CASE WHEN FIMPERAQUIS >= GETDATE() THEN GETDATE() ELSE FIMPERAQUIS END )/ 30 ) * 2.5 AS 'DDD'

               ,CASE WHEN FIMPERAQUIS <= GETDATE() THEN 1 ELSE 0 END AS 'VENCIDO'

        FROM TAB_2 T

        OUTER APPLY

        (

               SELECT DD

              FROM TAB_1

                WHERE CODCOLIGADA=T.CODCOLIGADA

                  AND SEQ=T.SEQ

                  AND CHAPA=T.CHAPA

    ) D

)

, DADOS_FINAL

AS

(

SELECT

         T.SEQ

        ,T.CODCOLIGADA

        ,T.CHAPA

        ,T.NOME

        ,T.INICIOPERAQUIS

        ,T.FIMPERAQUIS

        ,CASE WHEN T.SEQ = 1 THEN T.DD ELSE T.DDD END AS 'DD'

        ,T.VENCIDO

        ,F.CODSECAO

        ,F.CODFUNCAO

        ,CASE WHEN T.SEQ = 1 THEN 1 ELSE 0 END AS 'NRO'

FROM TAB_3 T

CROSS APPLY

(

  SELECT CODSECAO, CODFUNCAO

   FROM TAB_1

  WHERE CODCOLIGADA = T.CODCOLIGADA

        AND CHAPA = T.CHAPA

) F

WHERE CASE WHEN T.SEQ = 1 THEN T.DD ELSE T.DDD END > 0

)

SELECT

         D.SEQ

        ,D.CODCOLIGADA

        ,D.CHAPA

        ,D.NOME

        ,D.INICIOPERAQUIS

        ,D.FIMPERAQUIS

        ,D.DD

        ,D.VENCIDO

        ,D.CODSECAO

        ,D.CODFUNCAO

        ,D.NRO

FROM DADOS_FINAL D

 

Para utilizar execute esse seguinte code...

USE CORPORERM

GO

 

SELECT *

FROM DBO.VW_FOP_SALDO_FERIAS (NOLOCK)

WHERE CODCOLIGADA = 1

AND CHAPA = 'CHAPA PARA TESTE'

Resultado...

 

A coluna [DD] apresenta a quantidade de dias, conforme vide avos de férias que não estão computadas na DBO.PFUFERIAS...

Agora em relação as faltas, terias como me explicar a regra ? 

 

Obs.: Caso não queiras criar a view, podes utilizar diretamente a query, porém terás que incluir o ";" no inicio da instrução WITH... essa query é uma CTE e tem uma recursividade... pode der um problema no volume de laços de iterações, se tiver esse erro é só avisar!

 

Espero lhe ajudar nessa questão.

 

Abraços.

 

 

A coluna [DD] apresenta a quantidade de dias, conforme vide avos de férias que não estão computadas na DBO.PFUFERIAS...

Agora em relação as faltas, terias como me explicar a regra ? 

 

Obs.: Caso não queiras criar a view, podes utilizar diretamente a query, porém terás que incluir o ";" no inicio da instrução WITH... essa query é uma CTE e tem uma recursividade... pode der um problema no volume de laços de iterações, se tiver esse erro é só avisar!

 

Espero lhe ajudar nessa questão.

 

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

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

@guiesmeril, boa tarde!

 

Um amigo, leu o post e me encaminhou uma tabela que mostra a relação de dias faltas que deduzem das férias... pois bem, verifiquei como a rotina do código de calculo 38 efetua a conversão de Horas para dias... e sendo assim é possível efetuar esse cálculo via T-SQL de forma correta para resgatar essa conversão dentro desse período, mas é importante salientar que a query terá um alto custo para processa-la... basicamente, teremos que selecionar o período entre Inicio e fim, verificar os eventos, verificar histórico de jornadas e efetuar o cálculo... 

Diante desses questões relatadas acima, ainda queres saber dessa informação...

Fico no seu aguardo, abraços.

  • Like 1
Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  9
  • Tópicos/Dia:  0.01
  • Meu Conteúdo:  19
  • Conteúdo/Dia:  0.02
  • Reputação:   0
  • Pontos/Conquistas:  185
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline

Luis, View eu não consigo criar por conta que não tenho permissão de criação de view, acredito que a query seria a melhor opção para atender minha necessidade.

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

Boa tarde!

 

Segue... a primeira parte (Saldo) na query... foi desenvolver o saldo de faltas e anexar na mesma query, quando conseguir desenvolver eu post aqui... abraços.

TSQL_SaldoFerias.txt

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  9
  • Tópicos/Dia:  0.01
  • Meu Conteúdo:  19
  • Conteúdo/Dia:  0.02
  • Reputação:   0
  • Pontos/Conquistas:  185
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline

Opa, fico no aguardo!!

Irei adaptar a query  para o meu cenário,! 

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.