Jump to content
Seja Membro VIP - Remova Banners de Propagandas, Tenha Liberado Qualquer Download, Além de Acessos em Áreas Exclusivas!! ×

Recommended Posts


  • Topic Count:  2
  • Topics Per Day:  0.00
  • Content Count:  3
  • Content Per Day:  0.00
  • Reputation:   0
  • Achievement Points:  35
  • Solved Content:  0
  • Days Won:  0
  • Status:  Offline

Posted

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

  • Replies 2
  • Created
  • Last Reply

Top Posters In This Topic

Popular Days

Top Posters In This Topic


  • Topic Count:  21
  • Topics Per Day:  0.00
  • Content Count:  269
  • Content Per Day:  0.05
  • Reputation:   15
  • Achievement Points:  1,574
  • Solved Content:  0
  • Days Won:  12
  • Status:  Offline
  • Age:  43

Posted

Francisco, bom dia!

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


  • Topic Count:  2
  • Topics Per Day:  0.00
  • Content Count:  3
  • Content Per Day:  0.00
  • Reputation:   0
  • Achievement Points:  35
  • Solved Content:  0
  • Days Won:  0
  • Status:  Offline

Posted (edited)

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.

Edited by Francisco Correias

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.