Páginas filhas
  • 5. Widget de consulta rápida

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Composition Setup
import.css=/download/attachments/5263564/framework.css

Objetivo

A consulta rápida é responsável por apresentar para o usuário dados de indicadores definidos pelas áreas de negócio para cada um dos ERPs TOTVS. A obtenção destas informações é feita através de serviços REST implementados por cada um dos segmentos.

...

O cadastro do indicador de consulta rápida deve ser realizada através do formulário FRM0015 - Indicadores. Nesta cadastro é necessário preencher com as informações da consulta rápida e informar o sistema Logix responsável pelo indicador. Ao informar o código do sistema, o formulário irá gerar o nome do fonte 4gl que será criado para recuperação das informações da consulta rápida. A nomenclatura deste fonte é composta pelo código do sistema Logix, a letra "i" e a sequencia de identificação do indicador.

Por padrão, os fontes de indicadores devem ser criados na pasta "indicadores" dentro da pasta da área de negócio responsável pelo fonte, conforme o exemplo abaixo:

Image Removed

Desenvolvimento

Após criado o identificador, deve ser desenvolvido um fonte 4gl com as funções padrões para a execução da consulta rápida no Fluig. Atualmente são necessárias três funções para cada indicador, uma função responsável por retornar dados iniciais da consulta rápida, outra para retornar os dados retornados pela consulta e a última para habilitar a funcionalidade de auto-completar do widget no Fluig.

...

Bloco de código
languagenone
linenumberstrue
#------------------------------#
FUNCTION logi1_indicator_start()
#------------------------------#
    DEFINE lr_start RECORD
                        filters   ARRAY[2] OF
                                  RECORD
                                      table_name  LIKE frm_column.table_name,
                                      column_name LIKE frm_column.column_name
                                  END RECORD,
                                  
                        columns   ARRAY[3] OF RECORD
                                  RECORD
                                      table_name  LIKE frm_column.table_name,
                                      column_name LIKE frm_column.column_name,
                                      detail      SMALLINT,       
                                      can_order   SMALLINT
                                  END RECORD,
                                  
                        selection ARRAY[3] OF
                                  RECORD
                                      code        CHAR(03),
                                      label       CHAR(50)
                                  END RECORD,
                                  
                        actions   ARRAY[2] OF
                  
                RECORD
        actions   ARRAY[2] OF
                          code        CHAR(08),RECORD
                                      code label       CHAR(5008),
                                  END RECORD,
   label       CHAR(50)
              
                        autocompl SMALLINTEND RECORD
                    END RECORD
                    
    IF  LOG_initApp("PADRAO") > 0 THEN
        RETURN
    END IF
                           
    #Define as colunas de filtro da consulta rápida
    LET lr_start.filters[1].table_name  = 'log_grupos'
    LET lr_start.filters[1].column_name = 'grupo'
    
    LET lr_start.filters[2].table_name  = 'log_grupos'
    LET lr_start.filters[2].column_name = 'des_grupo'
    
    #Define as colunas da consulta rápida
    LET lr_start.columns[1].table_name  = 'usuarios'
    LET lr_start.columns[1].column_name = 'cod_usuario'
    LET lr_start.columns[1].can_order   = TRUE
    
    LET lr_start.columns[2].table_name  = 'usuarios'
    LET lr_start.columns[2].column_name = 'nom_funcionario'
    LET lr_start.columns[2].can_order   = TRUE
    
    LET lr_start.columns[3].table_name  = 'usuarios'
    LET lr_start.columns[3].column_name = 'ind_admlog'
    LET lr_start.columns[3].can_order   = FALSE
    
    #Define quais valores estarão na seleção de filtros
    LET lr_start.selection[1].code  = '*'
    LET lr_start.selection[1].label = 'Todos os usuários'
    
    LET lr_start.selection[2].code  = 'S'
    LET lr_start.selection[2].label = 'Somente administradores'
    
    LET lr_start.selection[3].code  = 'N'
    LET lr_start.selection[3].label = 'Somente usuários comuns'
    
    #Define quais programas poderão ser chamados pela consulta
    LET lr_start.actions[1].code  = 'log02700'
    LET lr_start.actions[1].label = 'Usuários'
    
    LET lr_start.actions[2].code  = 'log02720'
    LET lr_start.actions[2].label = 'Grupos do usuário'
    
    #Indica se irá existir a funcionalidade de auto-complete
    LET lr_start.autocompl = TRUE.label = 'Grupos do usuário'
    
    RETURN lr_start
END FUNCTION

A execução eexecução da função acima irá permitir a inicialização do widget de consulta rápida e irá criá-lo semelhante a tela abaixo:

...

Bloco de código
languagenone
linenumberstrue
#------------------#
 FUNCTION log02720()
#------------------#
    DEFINE l_usuario LIKE log_usu_grupos.usuario
     

    IF  LOG_initApp("PADRAO") <>> 0 THEN
        RETURN
    END IF


    LET m_form_reference = _ADVPL_create_component(NULL,"LFORMMETADATA",m_container_reference)
    CALL _ADVPL_set_property(m_form_reference,"FORM","log02720",mr_log_usu_grupos,ma_log_usu_grupos)

    
    #Verifica se há um argumento de execução para o programa
    IF  APPLICATION_getNumArgs() > 0 AND THEN
        IF  APPLICATION_getArg(1"action") = "INDICATOR" AND UPSHIFT(APPLICATION_getArg(2"indicator")) = 1"LOGI1" THEN
            LET l_usuario = DOWNSHIFT(APPLICATION_getArg(3"cod_usuario"))
        END IF
    END IF


    IF  l_usuario IS NOT NULL THEN
        CALL _ADVPL_get_property(m_form_reference,"EXECUTE_OPERATION","FIND","a.usuario='"||l_usuario CLIPPED||"'")
    ELSE
        CALL _ADVPL_set_property(m_form_reference,"ACTIVATE",TRUE)
    END IF
END FUNCTION

Quando executado através do widget de consulta rápida do Fluig, a função APPLICATION_getNumArgs sempre irá retornar no mínimo três parâmetros, sendo o primeiro parâmetro a action a palavra "INDICATOR" para identificar que trata-se da ação de um indicador, o segundo parâmetro indicator é o código do indicador cadastrado no FRM0015 e a partir do terceiro os o parâmetro seriam os valores selecionados pelo usuário, estes são enviados na mesma que foi definida na função start.

...