Francisco Correias Postado 19 de Agosto de 2013 Tópicos Que Criei: 2 Tópicos/Dia: 0.00 Meu Conteúdo: 3 Conteúdo/Dia: 0.00 Reputação: 0 Pontos/Conquistas: 35 Conteúdo Resolvido: 0 Dias Ganho: 0 Status: Offline Denunciar Compartilhar Postado 19 de Agosto de 2013 Bom dia!! Os dias das Faltas aquisitivas dos funcionários está sendo calculado errado, devido que Seg a Qui trabalhamos 9 horas e de sexta 8. Para resolver o problema elaborei duas formulas para colocar na parametrização das férias, que são “Números de dias de direito de férias” e “Dias de Férias X Faltas”. Onde a primeira formula retorna os dias totais de férias que o funcionário tem direito sem descontar as faltas. E a segunda formula mostra os dias de férias que o funcionário tem direito. As duas formulas estão funcionando quando são testadas na desenvolvedor de formulas, porem quando é colocado na parametrização e é verificada no modulo de férias aparecem valores incompressíveis. Estou na versão 11.52.57. Obrigado desde já! Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Luciano DP Postado 19 de Agosto de 2013 Tópicos Que Criei: 21 Tópicos/Dia: 0.00 Meu Conteúdo: 269 Conteúdo/Dia: 0.05 Reputação: 15 Pontos/Conquistas: 1.574 Conteúdo Resolvido: 0 Dias Ganho: 12 Status: Offline Idade: 41 Dispositivo: Windows Denunciar Compartilhar Postado 19 de Agosto de 2013 Francisco, bom dia! Fica mais fácil te ajudar se vc disponibilizar as fórmulas criadas. Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Francisco Correias Postado 19 de Agosto de 2013 Tópicos Que Criei: 2 Tópicos/Dia: 0.00 Meu Conteúdo: 3 Conteúdo/Dia: 0.00 Reputação: 0 Pontos/Conquistas: 35 Conteúdo Resolvido: 0 Dias Ganho: 0 Status: Offline Autor Denunciar Compartilhar Postado 19 de Agosto de 2013 (editado) Ok, Segue as formulas e as consultas SQL. Formula: 1 - NÚMEROS DE DIAS DE DIREITO DE FÉRIAS SE EXECSQL('99.02') = 1 ENTAO SE RESULTSQL('99.02','CHAPA') <> CHAPA ENTAO REPITA PROXREGSQL('99.02') ATE RESULTSQL('99.02','CHAPA') = CHAPA FIMSE FIMSE; SE RESULTSQL('99.02','MES') = 2 ENTAO SE RESULTSQL('99.02','ANO')%4 = 0 ENTAO SE RESULTSQL('99.02','DIA') > 15 ENTAO ARRED(RESULTSQL('99.02','RESUL') - 2.5) SENAO ARRED(RESULTSQL('99.02','RESUL')) FIMSE SENAO SE RESULTSQL('99.02','DIA') > 14 ENTAO ARRED(RESULTSQL('99.02','RESUL') - 2.5) SENAO ARRED(RESULTSQL('99.02','RESUL')) FIMSE FIMSE FIMSE; SE RESULTSQL('99.02','MES') = 4 OU RESULTSQL('99.02','MES') = 6 OU RESULTSQL('99.02','MES') = 9 OU RESULTSQL('99.02','MES') = 11 ENTAO SE RESULTSQL('99.02','DIA') > 16 ENTAO ARRED(RESULTSQL('99.02','RESUL') - 2.5) SENAO ARRED(RESULTSQL('99.02','RESUL')) FIMSE SENAO SE RESULTSQL('99.02','DIA') > 17 ENTAO ARRED(RESULTSQL('99.02','RESUL') - 2.5) SENAO ARRED(RESULTSQL('99.02','RESUL')) FIMSE FIMSE SQL: 99.02 - Dias total de férias SELECT CHAPA, DATEPART ( DAY , DTINIPERAQUIS ) AS DIA, DATEPART ( MONTH , DTINIPERAQUIS ) AS MES, DATEPART ( YEAR , DTINIPERAQUIS ) AS ANO, DATEDIFF(MONTH,DTINIPERAQUIS,GETDATE())* 2.5 AS RESUL FROM PFHSTFER WHERE DTINIGOZO IS NULL Formula: 4 - DIAS DE FÉRIAS X FALTAS SE FOR ('0.0.03') <= 5 ENTAO FOR ('0.0.01') SENAO SE FOR ('0.0.03') >= 6 E FOR ('0.0.03') <= 14 ENTAO FOR ('0.0.01') - 6 SENAO SE FOR ('0.0.03') >= 15 E FOR ('0.0.03') <= 23 ENTAO FOR ('0.0.01') - 12 SENAO SE FOR ('0.0.03') >= 24 E FOR ('0.0.03') <= 32 ENTAO FOR ('0.0.01') - 18 SENAO SE FOR ('0.0.03') > 32 ENTAO CHR (48) FIMSE FIMSE FIMSE FIMSE FIMSE Formula: 3 – Números de Falta DECL CT; DECL CT1; SETVAR(CT, 0); SETVAR(CT1, 0); SE FOR ('0.0.02')%9 = 0 ENTAO FOR ('0.0.02')/9 SENAO REPITA SETVAR(CT,CT+8); SETVAR(CT1,CT1+1) ATE (FOR ('0.0.02')-CT)%9=0; ((FOR ('0.0.02')-CT)/9)+CT1 FIMSE Formula: 2 - Qtde de horas faltadas SE EXECSQL('99.01') = 1 ENTAO SE RESULTSQL('99.01','CHAPA') = CHAPA ENTAO RESULTSQL('99.01','HORAS') SENAO REPITA PROXREGSQL('99.01') ATE RESULTSQL('99.01','CHAPA') = CHAPA; RESULTSQL('99.01','HORAS') FIMSE FIMSE SQL: 99.01 - Horas de Faltas durante o periodo de férias ;WITH UNIAO AS ( SELECT DISTINCT CHAPA FROM PFHSTFER UNION SELECT DISTINCT CHAPA FROM PFUNC), CHAFUNC AS (SELECT PFUNC.CHAPA FROM PFUNC), CHAPHOR AS ( SELECT PFFINANC.CHAPA, TOTAL = SUM(REF) FROM PEVENTO INNER JOIN PFFINANC ON PEVENTO.CODIGO = PFFINANC.CODEVENTO INNER JOIN PFHSTFER ON PFFINANC.CHAPA = PFHSTFER.CHAPA WHERE (PEVENTO.CODIGOCALCULO = '8') AND (PFFINANC.CODCOLIGADA = '1') AND (PFHSTFER.DTINIGOZO IS NULL) AND (PFHSTFER.DTFIMGOZO IS NULL) AND (PFFINANC.DTPAGTO BETWEEN DATEADD(MONTH,1,PFHSTFER.DTINIPERAQUIS) AND DATEADD(MONTH,1,PFHSTFER.DTFIMPERAQUIS)) GROUP BY PFFINANC.CHAPA ) SELECT A.CHAPA, ISNULL(C.TOTAL,0) AS HORAS FROM UNIAO A LEFT JOIN CHAFUNC B ON (A.CHAPA = B.CHAPA) LEFT JOIN CHAPHOR C ON (A.CHAPA = C.CHAPA) Considerações: Formulas: - NÚMEROS DE DIAS DE DIREITO DE FÉRIAS: Mostra quantos dias o funcionário tem direito as férias, se no mês de admissão o funcionário tiver trabalhado mais que 15 dias, ele tem direito as férias no mês que entrou caso contrário não, a formula também calcula o anos bixesto. - Qtde de horas faltadas: Pega a quantidade de horas faltadas através da consulta SQL 99.01 - Números de Falta: Acha o número de faltas para uma carga horaria de seg a qui 9 horas trabalhadas e de sexta 8h. - DIAS DE FÉRIAS X FALTAS: Pega a quantidade de dias que faltou e tira do direito das férias. SQL: 99.01 - Horas de Faltas durante o período de férias: Retorna quantas horas o funcionário faltou, caso o funcionário não teve faltas retorna 0. 99.02 - Dias total de férias: Retorna os dias totais de férias. Editado 19 de Agosto de 2013 por Francisco Correias Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Posts Recomendados
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.