Protheus x Smart View — Novidades na Integração

Vanessa Ruama
TOTVS Developers
Published in
4 min readMay 14, 2024
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
Consulta de Fornecedores
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 Conector Nativo

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

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

--

--

Vanessa Ruama
TOTVS Developers

sou Dev na TOTVS, trabalho no framework do ERP Protheus. Busco sempre evoluir na minha área e compartilhar meus conhecimentos.