7 Replies Latest reply: Apr 20, 2018 11:16 AM by Bruno Aquino RSS

    Calcular IFs e AGGR no Script

    Pamela Silva

      Pessoal, boa tarde!

       

      Tenho uma aplicação com N regras de negócio e por conta disso tive que acabar criando vários IFs e AGGR na camada de aplicação, pois muitos deles usam o valor inserido pelo usuário para o cálculo. Porém, com estas expressões complexas e volumetria, minha app está praticamente "inavegável" de tão lenta, zero de performance.

      Gostaria de realizar algumas expressões no script mas estou com certa dificuldade.

       

      Variantes da aplicação: os valore são calculados considerando o mês/ano selecionado pelo usuário e os valores inseridos por ele

       

      Exemplo de um IF:

      if(
      (Date(addmonths(Max(TEMPO_MES_ANO), -0)) - Date(min(DTPRIMENTRADA))) < Date(addmonths(Max(TEMPO_MES_ANO), -0)) - Date(addmonths(Max(TEMPO_MES_ANO), -3)) and (Date(addmonths(Max(TEMPO_MES_ANO), -0)) - Date(min(DTPRIMENTRADA))) > 0,
      Date(addmonths(Max(TEMPO_MES_ANO), -0)) - Date(min(DTPRIMENTRADA)),
      
      if((Date(addmonths(Max(TEMPO_MES_ANO), -0)) - Date(min(DTPRIMENTRADA))) < 0,
      0
      ,
      
      if((Date(addmonths(Max(TEMPO_MES_ANO), -0)) - Date(min(DTPRIMENTRADA))) > Date(addmonths(Max(TEMPO_MES_ANO), -0)) - Date(addmonths(Max(TEMPO_MES_ANO), -3)),
      Date(addmonths(Max(TEMPO_MES_ANO), -0)) - Date(addmonths(Max(TEMPO_MES_ANO), -3))
      )
      )
      )
      
      

       

      Exemplo de um AGGR (que tbm tem IF dentro dele):

      =sum(
      aggr(
      ((AVG(AGGR(SUM({<PRODUTO_STATUS-={'Descontinuado', 'Desativado'},FILIAL_NOME-={},PRODUTO_NOME-={}, TEMPO_MES_ANO={">=$(=Date(addmonths(Max(TEMPO_MES_ANO), -3))) <$(=Date(addmonths(Max(TEMPO_MES_ANO), -0)))"}>}DIAS_RUPTURA), FILIAL_NOME, PRODUTO_NOME)))
      *
      (
      $(vVenda3MesesExcetoDesativadoDescontinuado)
      /
      (
      (Date(addmonths(Max(TEMPO_MES_ANO), -0)) - Date(addmonths(Max(TEMPO_MES_ANO), -3)))
      -
      (AVG(AGGR(SUM({<PRODUTO_STATUS-={'Descontinuado', 'Desativado'},FILIAL_NOME-={},PRODUTO_NOME-={}, TEMPO_MES_ANO={">=$(=Date(addmonths(Max(TEMPO_MES_ANO), -3))) <$(=Date(addmonths(Max(TEMPO_MES_ANO), -0)))"}>}DIAS_RUPTURA), FILIAL_NOME, PRODUTO_NOME)))
      )
      )
      *
      avg({<TEMPO_MES_ANO=, FILIAL_NOME=>}VALOR_VENDA))
      
      , PRODUTO_NOME, FILIAL_NOME)
      )
      
      

       

      Poderiam me ajudar a otimizar essa aplicação?

      Segue app em anexo com todas as minhas expressões

       

       

      Obrigada!!