Histórico da Página
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:
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 | ||||
---|---|---|---|---|
| ||||
#------------------------------# 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 | ||||
---|---|---|---|---|
| ||||
#------------------# 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.
...