igoroliveira 2 Report post Posted January 24, 2019 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? Quote Share this post Link to post Share on other sites
Jair - Fórmula 147 Report post Posted February 12, 2019 Processo complicado esse... a TOTVS faz o cálculo sempre na hora que precisa... Quote Share this post Link to post Share on other sites
Rafaeltluiz 0 Report post Posted February 12, 2019 Boa tarde! Meu sistema RM Labore tem um relatório pronto.. Quote Share this post Link to post Share on other sites
Jair - Fórmula 147 Report post Posted March 26, 2019 Em 12/02/2019 at 12:52, Rafaeltluiz disse: Boa tarde! Meu sistema RM Labore tem um relatório pronto.. Vocês que desenvolveram? Quote Share this post Link to post Share on other sites
ChromusMaster 1 Report post Posted March 27, 2019 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) Quote Share this post Link to post Share on other sites
guiesmeril 0 Report post Posted February 4 Bom dia!! Vocês ainda tem disponível esse relatório? Quote Share this post Link to post Share on other sites
luisgustavogomes 5 Report post Posted February 5 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. 1 Quote Share this post Link to post Share on other sites
luisgustavogomes 5 Report post Posted February 5 Quote Share this post Link to post Share on other sites
luisgustavogomes 5 Report post Posted February 8 @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. Quote Share this post Link to post Share on other sites
guiesmeril 0 Report post Posted February 9 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. Quote Share this post Link to post Share on other sites
luisgustavogomes 5 Report post Posted February 9 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 Quote Share this post Link to post Share on other sites
guiesmeril 0 Report post Posted February 10 Opa, fico no aguardo!! Irei adaptar a query para o meu cenário,! Quote Share this post Link to post Share on other sites