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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.