Exemplo de geração de relatórios desenvolvidos na plataforma TReports
A classe SysLibTReports tem como principal objetivo permitir a geração de relatórios TReports via API, possibilitando assim, a geração de tais relatórios através de pontos de entrada, user fuctions ou através de web services. Desta forma, contornamos a limitação padrão do Protheus, onde a impressão dos relatórios ocorre apenas por rotinas de menu.
Para utilizar esta classe, é necessário antes, salvar o arquivo config.json no diretório \protheus_data\treports\. O arquivo deverá conter a seguinte estrutura:
{
"treports_url": "http://localhost:7017/api/reports/v1", // URL da api do TReports
"protheus_ws_url": "http://localhost:8073/ws", // URL do webservice REST Protheus
"user_name": "admin", //Usuário com acesso de Administrador no TReports
"password": "123456" //Senha
}
/**
* Teste da classe SysLibTReports para impressão de relatório
*/
user function TstTRep1()
local lOk := .F.
local cReportId := "ea987178-433d-4623-9085-bd919356529e"
local oParams := JsonObject():new()
local oSetup := JsonObject():new()
local oService := SysLibTReports():new()
oParams["filial"] := "01"
oParams["numeroDe"] := "000001"
oParams["numeroAte"] := "000003"
lOk := oService:getReport(cReportId, oParams)
if !lOk
FwAlertError(oService:getErrorMessage())
endIf
return
O método getReport é uma abstração dos métodos de geração e download dos relatórios. É possível utilizá-los individualmente:
/**
* Teste da classe SysLibTReports para geração e download do relatório
*/
user function TstTRep2()
local lOk := .F.
local cGenerationId :=
local cReportId := "ea987178-433d-4623-9085-bd919356529e"
local oParams := JsonObject():new()
local oSetup := JsonObject():new()
local oService := SysLibTReports():new()
oParams["filial"] := "01"
oParams["numeroDe"] := "000001"
oParams["numeroAte"] := "000003"
cGenerationId := oService:generateReport(cReportId, oParams)
if Empty(cGenerationId)
FwAlertError(oService:getErrorMessage())
return .F.
endIf
oSetup["format"] := "docx"
oSetup["folder"] := "C:\temp\"
oSetup["openFile"] := .F.
lOk := oService:downloadReport(cGenerationId, oSetup)
if !lOk
FwAlertError(oService:getErrorMessage())
endIf
return
O envio do objeto Setup é opcional. Caso não utilizado, o relatório será gerado no formato .pdf, será salvo no diterório %temp% do usuário e será aberto automaticamente.