Protheus x Smart View — Novidades na Integração
Olá pessoal!! Estou de volta para contar algumas novidades sobre a integração do Protheus com o Smart View, que estão na LIB Label 20240226…
Para quem ainda não viu os artigos anteriores, pode acessar aqui!!
Adicionando parâmetros nativos ao objeto de negócio
Ainda utilizando o mesmo objeto de negócio dos artigos anteriores, iremos adicionar alguns recursos, o primeiro deles é o parâmetro nativo, mas ai vocês me perguntam ‘Vanessa o que seria esse parâmetro nativo?’, pois eu respondo aqui pra vocês…
Diferente de um parâmetro criado através do Smart View (na parte de Filtros/Design), o parâmetro nativo ficará vinculado ao objeto de negócio, a diferença é que qualquer recurso que seja utilizado com esse objeto de negócio trará esses parâmetros, diferente daquele que é criado no SV e fica vinculado apenas ao recurso que ele foi criado.
Bora pra a prática…
GetSchema
method getSchema() as object class ProdFornTReportsBusinessObject
Local nX as numeric
for nX := 1 To Len(self:aStruct)
self:addProperty(self:aStruct[nX][1], self:aStruct[nX][2], self:aStruct[nX][3], self:aStruct[nX][4], self:aStruct[nX][5])
Next nX
self:addParameter("01" , "Fornecedor de", "string", .F.)
self:addParameter("02" , "Fornecedor até", "string", .F.)
self:setCustomURL("01", "api/framework/v1/genericLookupService/smartview/SA2", 2)
self:setCustomURL("02", "api/framework/v1/genericLookupService/smartview/SA2", 2)
return self:oSchema
Aqui nesse trecho de código, foram adicionados 2 parâmetros através do método addParameter, com isso nosso objeto de negócio que foi criado nos artigos anteriores agora possui parâmetros nativos.
Além disso, com os novos recursos disponíveis conseguimos adicionar uma consulta para os parâmetros adicionados, através do método setCustomURL
GetData
method getData(nPage as numeric, oFilter as object) as object class ProdFornTReportsBusinessObject
local cQuery as character
local cAlias as character
local nSkip as numeric
local nCount as numeric
local nX as numeric
local jItems as json
local aPDFields as array
local lUseParams as logical
nCount := 0
cQuery := "SELECT A5_FILIAL,A5_PRODUTO,A5_NOMPROD,A5_FORNECE,A5_NOMEFOR,A5_LOJA,A5_CODPRF FROM " + RetSQLName("SA5") + " WHERE D_E_L_E_T_ = ' '"
lUseParams := .T.
//Os filtros serão setados na interface do novo TReports
if oFilter:hasFilter()
cQuery += " AND " + oFilter:getSQLExpression()
endif
jParams := oFilter:getParameters() //metodo para retorno do json dos parâmetros
if ValType(jParams["01"]) <> "A" .and. ValType(jParams["02"]) <> "A"
lUseParams := .F.
endif
if lUseParams .and. !empty(jParams["01"][1]) .and. !empty(jParams["02"][1])
cQuery += "AND A5_FORNECE BETWEEN " + jParams['01'][1] + " AND " + jParams['02'][1]
endif
cAlias := MPSysOpenQuery(cQuery)
(...)
No GetData ajustamos a query para receber os valores enviados via parâmetro.
Essa não é a única forma de adicionar parâmetros nativos, também é possível puxar diretamente do SX1, também existe uma documentação completa sobre a api utilizada na consulta do campo, para mais detalhes acesse as documentações abaixo:
O que muda na prática?
Ao acessarmos o Smart View e selecionar esse objeto teremos o seguinte resultado:
Consumo do recurso no Protheus
Deixarei aqui algumas documentações sobre o consumo dos recurso no Protheus, onde é possível até executar um relatório em job sem precisar pedir os parâmetros para o usuário.
Consumo através do Menu: https://tdn.totvs.com/pages/viewpage.action?pageId=662892048
Consumo através da Classe: https://tdn.totvs.com/pages/viewpage.action?pageId=821179480
Nas documentações da classe vocês encontram exemplos completos de como consumir esses recursos.
Consumo de Licenças
A licença TOTVS I é consumida quando é executada as consultas de GetSchema e GetData direto no Smart View:
Em quais situações acontecem o abono de Licenças:
- É necessário configurar o Consumo de Licença por demanda no REST do Protheus
Api’s da Configuração Inicial serão abonadas:
Todas as execuções dentro do Protheus serão abonadas:
Documentação completa sobre o consumo de Licenças:
https://tdn.totvs.com/pages/viewpage.action?pageId=832650916
Privilégios no Objeto de Negócio
Com a chegada da Release 12.1.2310 no ano passado (out/23) também vieram diversos objetos de negócio nativos criados para a integração com o Smart View, com isso teve a necessidade de criar um controle de privilégios para essa finalidade, algo já conhecido pelos usuários do Protheus, então na rotina padrão de privilégios já temos opções para conceder/negar acesso aos objetos disponíveis, deixarei aqui a documentação completa sobre esse recurso: Controle de Privilégios nos Objetos de Negócio Nativos
Esse foi um breve resumo das novidades que temos sobre a integração, atualizei o github com as alterações feitas no objeto de negócio, além de um exemplo de como consumir o recurso em job através da classe: https://github.com/vanessaruama/ArtefatosTReportsxProtheus
Documentações:
- Protheus x Smart View Parte 1 — Como iniciar a integração
- Protheus x Smart View Parte 2 — Criando um Objeto de Negócio
- Protheus x Smart View Parte 3 — Criando um relatório
- Smart View — Seleção de novos recursos
- Classe para execução dos recursos no Protheus
- Smart View — Lookup e Combo nos parâmetros nativos
- Consumo de Licenças na integração