Ir para o conteúdo principal

Imprimir relatório através de link HTML (com filtro preenchido)

Neste tópico, você verá como gerar um relatório a partir de um formulário do tipo HTML (com link) em uma atividade de processo preenchendo seus filtros automaticamente com informações/variáveis do processo.

Além de uma solução diferente para imprimir relatório na atividade, possibilita múltiplos protocolos/relatórios para impressão na mesma atividade.

Para baixar o BPM deste exemplo, clique aqui.

  • Crie um processo BPM simples.
  • Uma atividade manual.
  • Dois formulários de bloco HTML com apenas um título.

image-1652191270536.png

 Na aba "Eventos" iremos incluir um evento PEX ao entrar na atividade. Este evento PEX estará responsável por carregar nos blocos HTML os link's para a impressão do relatório. 

image-1652191368614.png

const
     csLinkProtocolo1 = '1'; // codigo do formulario HTML
     csLinkProtocolo2 = '2'; // codigo do formulario HTML
var
   lsFiltro, lsHash, lsTemplate, lsRelatorio, lsJson, lsLink, lsUrlPortal : String;
   loCDS : TLibCDS; // declaracao das variaveis
begin
     loCDS := of_CriaCDSporSQL('SELECT valor URL FROM ini where secao = ''CRM'' and chave = ''DOXPORTAL_LINK_PORTAL''');
     try
        lsUrlPortal := loCDS.GetStr(['URL']);
     finally
       loCDS.Free;
     end;
     
     lsFiltro := TSO.Encode64String('{"IDPROCESSO":"'+aoVariaveis.GetStr('/*IDPROCESSO*/')+'"}'); 
     lsHash   := TSO.Encode64String(aoVariaveis.GetStr('/*HASHSESSAO*/'));
     
     //Relatório 1
     lsRelatorio := '398'; //alterar valor pelo código do relatório desejado
     lsTemplate := '434'; //alterar valor pelo código do template do relatório desejado
     
     lsJson   := TSO.Encode64String('{"IDRELTEMPLATE":"' + lsTemplate + '","IDRELATORIO":"' + lsRelatorio + '"}');
     
     lsLink := '<a style="font-family: Roboto, sans-serif; font-size: 0.8rem;" href="' + lsUrlPortal +
               '/api/downloadrelatoriocadastrado?aoJson=' + lsJson + '&aoFiltrosJson=' + LsFiltro +
               '&asHash=' + lsHash + '" target="_blank">IMPRIMIR RELATÓRIO</a>';
     
     aoFormularios.GetJSON(csLinkProtocolo1).SetStr('TEXTO', lsLink);
     
     //Relatório 2
     lsRelatorio := '399'; //alterar valor pelo código do relatório desejado
     lsTemplate := '435'; //alterar valor pelo código do template do relatório desejado
     
     lsJson   := TSO.Encode64String('{"IDRELTEMPLATE":"'+lsTemplate+'","IDRELATORIO":"'+lsRelatorio+'"}');
     
     lsLink := '<a style="font-family: Roboto, sans-serif; font-size: 0.8rem;" href="' + lsUrlPortal +
               '/api/downloadrelatoriocadastrado?aoJson=' + lsJson + '&aoFiltrosJson=' + LsFiltro +
               '&asHash=' + lsHash + '" target="_blank">IMPRIMIR RELATÓRIO</a>';
     
     aoFormularios.GetJSON(csLinkProtocolo2).SetStr('TEXTO', lsLink);
end;

Alterar os valores atribuídos às variáveis "lsRelatorio" e "lsTemplate" de acordo com os relatórios cadastrados que deseja imprimir. Caso tenha dificuldade para entender qual o template ou idrelatório especifico acessar: 

  • Dox estúdio
  • Módulo de inteligência
  • Relatórios

image-1652191559753.png

Ou pesquisar pelo banco de dados: 

SELECT * 
  FROM RELATORIOGERADOR

Exemplo do processo no portal: 

image-1652191726594.gif