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

Formula valor evento mês anterior


Posts Recomendados


  • Tópicos Que Criei:  30
  • Tópicos/Dia:  0.01
  • Meu Conteúdo:  152
  • Conteúdo/Dia:  0.03
  • Reputação:   3
  • Pontos/Conquistas:  1.193
  • Conteúdo Resolvido:  0
  • Dias Ganho:  5
  • Status:  Offline
  • Idade:  36
  • Dispositivo:  iPhone

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

 

 

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  5
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  470
  • Conteúdo/Dia:  0.21
  • Reputação:   132
  • Pontos/Conquistas:  3.143
  • Conteúdo Resolvido:  0
  • Dias Ganho:  63
  • Status:  Offline
  • Idade:  35
  • Dispositivo:  Android

@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.

 

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  885
  • Tópicos/Dia:  0.13
  • Meu Conteúdo:  8.802
  • Conteúdo/Dia:  1.34
  • Reputação:   291
  • Pontos/Conquistas:  106.268
  • Conteúdo Resolvido:  0
  • Dias Ganho:  185
  • Status:  Offline
  • Idade:  51
  • Dispositivo:  Windows

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')

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.