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


Francisco Correias

Posts Recomendados


  • 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

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á!

Link para comentar
Compartilhar em outros sites


  • 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

Francisco, bom dia!

Fica mais fácil te ajudar se vc disponibilizar as fórmulas criadas.

Link para comentar
Compartilhar em outros sites


  • 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

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:

  1. - 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.
  2. - Qtde de horas faltadas: Pega a quantidade de horas faltadas através da consulta SQL 99.01
  3. - 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.
  4. - 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 por Francisco Correias
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.