Administração do sistema
Ações customizadas disparadas a partir de blocos de interface
RT.FAQ-107582
Caso seja necessário incluir ações customizadas a partir das interfaces do sistema, pode-se proceder da seguinte forma:
Criar uma operação customizada
Usar a interface Operações customizadas para cadastrar a rotina que será executada quando a ação for disparada.
Para obter os valores do formulário de onde a ação foi disparada será necessário pegar pela variável de contexto ctx
.
Exemplo Groovy:
String sid = ctx.getParameter("A_ID");
Exemplo TSL:
set sid ${ctx.getParameter("A_ID")};
Criar um event-listener
Criar um listener com o nome global da operação onde o botão deve ser incluído seguido de .ON_ACTION.
Exemplo:
CIDADE.CAD_CIDADES.VIEW.ON_ACTION : ROTINA_CUSTOM
Este listener irá incluir um botão na tela VIEW da interface CAD_CIDADES.
O título do botão será igual ao título da operação customizada.
Direitos de acesso
Apenas usuários com direito de acesso à operação terão acesso a esta ação. O botão não será apresentado para outros usuários.
Tecla de atalho
Se quiser incluir uma tecla de atalho, deve-se criar uma preferência:
ROTINA_CUSTOM.ACTION_HOTKEY=F4
Mensagem de confirmação
Se quiser que o sistema abra um diálogo para confirmar a execução da rotina, deve-se criar uma preferência da seguinte forma:
ROTINA_CUSTOM.ACTION_CONFIRMATION_MESSAGE=Tem certeza que deseja executar?
Executar rotina em uma nova janela
Se quiser que a ação abra uma nova janela/aba do navegador, incluir a seguinte preferência:
ROTINA_CUSTOM.ACTION_TARGET=_blank
Exemplo
Para incluir uma ação que abra o PDF diretamente a partir da tela de consulta do pedido, pode-se proceder da seguinte forma:
Cadastrar uma operação custom:
- Operação: IMPRIMIR_PDF
- Título: Imprimir PDF
- Tipo de implementação: Groovy Scripting Engine
- Implementação:
import br.com.telescope.t2.Redirector;
String id = ctx.getParameter("A_ID");
new Redirector()
.block("PRO_IMPRIMIR_PEDIDO")
.action("IMPRIMIR_PDF:SUBMIT")
.newTab()
.parameter("P_PEDIDO_ID", id)
.parameter("A_ID", id)
.run();
ctx.getEvent().getObject().doView();
Cadastrar preferência:
- Preferência: IMPRIMIR_PDF.EVENT_LISTENER
- Valor: PEDVEN06.CAD_PEDIDOS_06.VIEW.ON_ACTION : IMPRIMIR_PDF
- Descrição: Incluir ação da consulta do pedido
- Domínio: ADSRT.TEXT_LONG
Alternativa 2
Outra forma de fazer algo semelhante é criar uma rotina que irá incluir a ação que deverá ser executada.
Esta forma permitirá alguns outros recursos como fazer a ação abrir em uma janela estilo pop-up e capturar informações sendo digitadas:
- Criar ação que fará a inclusão. Exemplo: Ver a implementação do método PROD.INTERESSES_PRODUTOS.INCLUIR_ACAO_SUGERIR_COMPRA.
- Criar um listener para injetar esta botão nas telas desejadas. Exemplo:
: PROD.INTERESSES_PRODUTOS.INCLUIR_ACAO_SUGERIR_COMPRA
PROD.CAD_PRODUTOS.VIEW.PRE_RECORD
ORCAME06.CAD_ORCAMENTO_06_ITENS.INSERT.PRE_RECORD
ORCAME06.CAD_ORCAMENTO_06_ITENS.UPDATE.PRE_RECORD
PEDVEN06.CAD_PEDIDOS_06_ITENS.INSERT.PRE_RECORD
PEDVEN06.CAD_PEDIDOS_06_ITENS.UPDATE.PRE_RECORD
OS_VEICULOS.CAD_ORDENS_SERVICO_VEICULOS_ITENS.INSERT.PRE_RECORD
OS_VEICULOS.CAD_ORDENS_SERVICO_VEICULOS_ITENS.UPDATE.PRE_RECORD
ORCAME.CAD_ITENS_ORCAMENTO.INSERT.PRE_RECORD
ORCAME.CAD_ITENS_ORCAMENTO.UPDATE.PRE_RECORD
Ver também: