← Back to list

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…

Vanessa Ruama in TOTVS Developers · 2024-05-14 16:56 · 3 claps · 4.0 min read
#smartview #protheus #tlpp
Open on Medium ↗

Protheus x Smart View — Novidades na Integração

Tela Inicial do Smart View

Tela Inicial do Smart View

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:

Tela do objeto de negócio com os parâmetros

Tela do objeto de negócio com os parâmetros

Consulta de Fornecedores

Consulta de Fornecedores

Resultado dos dados com parametrização

Resultado dos dados com parametrização

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:

Api’s da Configuração Inicial serão abonadas:

Api do provedor de segurança

Api do provedor de segurança

Api do Conector Nativo

Api do Conector Nativo

Todas as execuções dentro do Protheus serão abonadas:

Executando um relatório no Protheus

Executando um relatório no Protheus

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:


메타데이터
post_id
9bda176de01a
slug
protheus-x-smart-view-novidades-na-integração-9bda176de01a
url
https://medium.com/totvsdevelopers/protheus-x-smart-view-novidades-na-integra%C3%A7%C3%A3o-9bda176de01a
canonical_url
https://medium.com/totvsdevelopers/protheus-x-smart-view-novidades-na-integra%C3%A7%C3%A3o-9bda176de01a
author_url
https://medium.com/@vanessa.ruama
status
ok
fetched_at
2026-06-28 10:39:35