Jump to content
weverton dias

Formula valor evento mês anterior

Recommended Posts

Bom Dia Pessoal!

Estou criando uma formula para pagamento de Cesta Básica, porém preciso verificar na Ficha Financeira se o funcionário teve faltas no mês anterior, não estou conseguindo... Alguém que já desenvolveu poderia ajudar?

 

Se
TABCOMPL('CESTABASICA','S') = '1' 
AND
  C('0008')=0 /*aqui preciso verificar se existiu esse evento no envelope no mês anteior*/
Entao    
'400,00'
Senao    
'0,00'
FimSe

 

 

Share this post


Link to post
Share on other sites

@weverton dias, bom dia!

Existem algumas formas de revolver essa questão, logo segue uma delas.

 

Criar uma consulta SQL, coloquei alguns campos que possam ser usado, caso precise, porém para sua verificação tratei a questão "Existe no mês anterior" na própria query, utilizando a coluna "IS_LASTMONTH" que retornará 0 para não existente e 1 para existente. 

Obs.: Deve ter as fórmulas criadas para os parâmetros da query. 

/***

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;

SET NOCOUNT ON;

 

DECLARE

     @CODCOLIGADA INT

    ,@CHAPA VARCHAR(16)

    ,@ANO INT

    ,@MES INT

    ,@NROPERIODO INT

    ,@CODEVENTO VARCHAR(4)

 

SET @CODCOLIGADA  = :FRM_COLIGADA   /*** FÓRMULA DA COLIGADA                ***/

SET @CHAPA  = :FRM_CHAPA            /*** FÓRMULA DA CHAPA                   ***/

SET @ANO = :FRM_ANO                 /*** FÓRMULA DO ANO DA COMPETÊNCIA      ***/

SET @MES = :FRM_MES                 /*** FÓRMULA DO MES DA COMPETÊNCIA      ***/

SET @NROPERIODO = :FRM_PERIODO      /*** FÓRMULA DO PERIODO ATUAL, OU FIXO  ***/

SET @CODEVENTO = '1002'             /*** DIGITAR EVENTO FIXO      OU A FÓRMULA DE EVENTO CORRENTE          ***/

 

DECLARE @ANOANTERIOR INT = YEAR(EOMONTH(DATEFROMPARTS(@ANO,@MES,1),-1));

DECLARE @MESANTERIOR INT = MONTH(EOMONTH(DATEFROMPARTS(@ANO,@MES,1),-1));

 

SELECT

     P.CODCOLIGADA

    ,P.CHAPA

    ,P.ANOCOMP

    ,P.MESCOMP

    ,P.NROPERIODO

    ,ISNULL(F.VALOR ,0) AS 'VALOR'

    ,ISNULL(F.REF   ,0) AS 'REF'

    ,CASE

        WHEN F.CODCOLIGADA IS NOT NULL

            AND F.VALOR > 0 THEN 1

        ELSE 0

     END AS 'IS_LASTMONTH'

FROM DBO.PFPERFF P

LEFT JOIN DBO.PFFINANC F ON (P.CODCOLIGADA = F.CODCOLIGADA AND P.ANOCOMP = F.ANOCOMP AND P.MESCOMP = F.MESCOMP

                         AND P.NROPERIODO = F.NROPERIODO AND P.CHAPA = F.CHAPA AND F.CODEVENTO = @CODEVENTO)

WHERE P.CODCOLIGADA = @CODCOLIGADA

AND P.CHAPA = @CHAPA

AND P.ANOCOMP = @ANOANTERIOR

AND P.MESCOMP = @MESANTERIOR

AND P.NROPERIODO = @NROPERIODO


 

***/

 

Posteriormente, poderás criar a fórmula para executá-la, e conforme explicado anteriormente o campo para validar é o "IS_LASTMONTH", porém poderás recuperar qualquer outro campo da query. 

 

/*** 

EXECSQL('LUIS_MA');

RESULTSQL('LUIS_MA','IS_LASTMONTH');

***/

 

Infelizmente, a passagem de parâmetro na fórmula para a execução da query não é permitida, por isso a utilização de outras, em relação ao evento FIXO é para melhorar a performance da consulta. 

Espero lhe ajudar, e se alguém tiver outra forma, por favor, teriam como postar? 

Abraços.

 

Share this post


Link to post
Share on other sites

Vc pode usar por fórmula direto também... basta buscar com a função MV, que busca um valor na FF (Você passa o Mes e Ano pra o sistema buscar o valor)... segue um exemplo, que você ajustar ai dentro da sua fórmula. 

DECL MESANT, ANOANT;

Se Mes=1 
    Entao SETVAR(MESANT,12) 
    Senao SETVAR(MESANT, Mes-1) Fimse;
Se MesAnt=12 
    Entao SETVAR(ANOANT, Ano-1) 
    Senao SETVAR(ANOANT, Ano) Fimse;

MV(MESANT, ANOANT,  '0008')

Share this post


Link to post
Share on other sites

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.