Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

Âncora
início
início

Image ModifiedImage Modified

Datasul x Smart View

Página centralizadora da integração entre o produto Datasul e Smart View

Image Modified


Aviso
titleAviso

O uso do Smart View integrado ao Datasul pode exigir um custo adicional de infraestrutura. Para mais informações dos requisitos de hardware do Smart View, acesse o link

  ↑ Integração com o Smart View
Painel
titleColor#FFFFFF
titleBGColor#0897E9
titleDatasul x Smart View
  1. Conceito/Arquitetura Smart View
  2. Instalação do Smart View
  3. Configuração integração Smart View X Datasul
  4. Uso de relatório expedido para o Smart View
  5. Edição de um layout de relatório
  6. Criação de um objeto de negócio


Âncora
1.Conceito
1.Conceito

Aqui será descrito a arquitetura

Painel
borderColor#FF9900
titleColorwhite
titleBGColor#FF9900
title1. Conceito/Arquitetura Smart View
Âncora
2.Instalação2.Instalação


A arquitetura do Smart View integra ao Datasul por meio de comunicação mútua e compartilhamento de informações, onde o Smart View irá consumir os dados do ERP Datasul e fornecer para que o usuário monte, de acordo com as necessidades da área, os relatórios com estas informações.


Image Added


Âncora
2.Instalação
2.Instalação
  ↑ Integração com o Smart View

Painel
borderColor#FF9900
Painel
borderColor#FF9900
titleColor#FFFFFF
titleBGColor#FF9900
title2. Instalação do Smart View

O SmartView Smart View precisa estar instalado em um servidor de sua preferência para a criação dos dos layouts, que posteriormente serão utilizados na geração dos relatórios, bem como integrações dos objetos de negócio, retorno de dados e validações de segurança com o ERP Datasul.


Painel
borderColor#363636
titleColorwhite
titleBGColor#363636
titleInstalação
Deck of Cards
idInstall
Card
defaulttrue
idwindows
labelWindows
  1. Faça download do Instalador do Smart View Agent clicando neste link;
  2. Extrair todo o conteúdo do arquivo zip e execute o arquivo 
    Estado
    subtletrue
    titleSmartView.AgentInstaller.exe
     ;
  3. Selecione o diretório de instalação e prossiga para a próxima etapa. Recomendamos que a instalação seja feita no diretório

    Estado
    subtletrue
    titleC:\TOTVS
    ;

  4. O instalador irá realizar a instalação na pasta
    Estado
    subtletrue
    titlesmart-view
    , criada automaticamente no diretório selecionado;
  5. Caso o diretório
    Estado
    subtletrue
    titlesmart-view
    já exista, o instalador perguntará se deseja sobrescrever a instalação anterior, caso não queira, um novo diretório deverá ser informado; 
  6. Após conclusão, o Smart View já se encontra disponível em seu ambiente e já pode ser configurado via navegador no endereço

    Estado
    subtletrue
    colourBlue
    titlehttp://localhost:7019
     (ver Configurações do Smart View).

    Informações
    titleDownloads

    Baixe aqui a versão para instalação Simplificada

Card
idlinux
labelLinux
Aviso

Para todas as operações será necessário que o usuário tenha privilégios de Administrador.

  1. Copie o arquivo zip de instalação para a pasta 

    Bloco de código
    languagetext
    themeRDark
    /usr/sbin/smart-view

    Obs.: Pode ser necessário utilizar o comando, chmod 

  2. Realize a extração do conteúdo do arquivo na raiz desta pasta
  3. Crie o arquivo do serviço na rota e com o nome abaixo:

    Bloco de código
    languagetext
    themeRDark
     /etc/systemd/system/smart-view-agent.service
  4. Abra o arquivo criado e adicione as configurações abaixo:

    Bloco de código
    languagetext
    themeRDark
    [Unit]
    Description=smart-view-agent
    
    [Service]
    Type=notify
    Environment="DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1"
    WorkingDirectory=/usr/sbin/smart-view
    ExecStart=/usr/sbin/smart-view/TReports.Agent --urls http://*:7019
    
    [Install]
    WantedBy=multi-user.target
    
    
  5. Atualize a lista de serviços do SO com o comando

    Bloco de código
    languagetext
    themeRDark
    sudo systemctl daemon-reload
  6. Inicie o serviço criado

    Bloco de código
    languagetext
    themeRDark
    sudo systemctl start smart-view-agent
  7. Execute o comando para conferir o status

    Bloco de código
    languagetext
    themeRDark
    sudo systemctl status smart-view-agent
  8. Pronto! O Smart View já se encontra disponível em seu ambiente e já pode ser configurado via navegador no endereço
    Estado
    subtletrue
    colourBlue
    titlehttp://localhost:7019
    (ver Configurações do Smart View).


    Informações
    titleDownload

    Baixe aqui esta versão para instalação

Nota

Maiores detalhes podem ser encontrados em: Smart View - Instalação do Sistema

Âncora
3.Integração
3.Integração
  ↑ Integração com o Smart View

Painel
borderColor#FF9900
titleColorwhite
titleBGColor#FF9900
title3. Configurando a integração Datasul x Smart View

É necessário realizar as três etapas a seguir para configurar a integração Datasul x SmartView Smart View.


Painel
borderColor#363636
titleColorwhite
titleBGColor#363636
titleConfigurações

1.2 - Servidor de licença

Informar os dados do servidor de licença para que o consumo seja realizado corretamente.

Image Removed

Deck of Cards
idConf
tabLocationleft
Card
defaulttrue
idsv
labelSmart View

1 - Tela inicial

         Após efetuada  Após a instalação, é necessário efetuar as configurações do Smart View. Para isto, basta entrar no endereço: http://[SERVIDOR]:7019/startup

Image Modified















1.1 - Provedor

de Segurança

O provedor de segurança efetuará comunicações com o ERP Datasul para que a segurança de acesso seja de responsabilidade do próprio ERP.

Sendo assim, é possível efetuar o login no servidor do Smart View com o mesmo usuário e senha do ERP Datasul, bem como facilitação no compartilhamento de layouts.

Image Removed

  

de Dados

Base de dados local que conterá informações pertinentes ao Smart View.

Image Added

1.2 Configurações de Integração

Aqui você poderá inserir os dados de conexão com o ERP responsável por gerenciar a segurança do Smart View e realizar configurações avançadas. Nenhum dos seus dados de acesso será armazenado.

Image Added

Image Added


CampoDescrição
Nome
do
provedor
Informação exibida no login do Smart View.
Nome do provedor de preenchimento manual. Exemplo: Datasul.
Endpoint de descoberta
Endereço de criação do token
Endereço do ERP Datasul responsável por
efetuar a geração do token.
retornar as informações de provedor de segurança. O endpoint de descoberta do Datasul é o http://[
SERVIDOR
servidor]:[
PORTA
porta]/totvs-login
-oauth2
/
oauth2/token
Endereço Jwks

Endereço do ERP Datasul onde estarão as chaves públicas de decodificação do token.

http://[SERVIDOR]:[PORTA]/totvs-login-oauth2/oauth2/jwks

Endereço base Api

Endereço base para a comunicação das Api(s) entre o SmartView e o ERP Datasul.

http://[SERVIDOR]:[PORTA]/datasul-rest/

Emissor

Nome do usuário administrador

Nome do emissor

Usuário responsável por ser o administrador do Smart View, somente com ele é permitido efetuar configurações dos provedores, sendo necessário informar o usuário e senha (do ERP Datasul).

Caso as informações estejam válidas, uma mensagem de sucesso é exibida em tela e os campos do Emissor são preenchidos automaticamente.

CampoDescrição
IP do servidor

Informe o IP do servidor utilizado no License Server.

Porta

Informe a porta cadastrada no seu License Server.

CNPJ

Informe o CNPJ da sua empresa.

* Após preencher as informações, verificar a disponibilidade.
sv/.well-known
Botão Conectar ao ERPAo clicar neste botão, será aberta uma tela para inserção do usuário e senha do ERP. O código do usuário no campo nome do usuário será preenchido automaticamente.
Botão Configurações AvançadasAbre as configurações avançadas para cadastro das informações de comunicação SSL e License Server.
Aviso
titleImportante

A URL de descoberta do endpoint do ERP deve estar exatamente com a mesma informação de audiência entre ERP e Smart View. Por exemplo, se no Smart View foi cadastrado: http://localhost:[porta]/totvs-login/sv/.well-known, o ERP deverá ser acessado com esta mesma informação: http://localhost:[porta]/totvs-menu. Em caso de acesso externo, será necessário cadastrar nas Propriedades de Sistema - card Propriedades JWT - aba Datasul - Identificador servidor. Sem essas informações corretas e cadastradas, a integração pode ter seu funcionamento comprometido devido controle de segurança de acesso.


1.2.1 Configurações Avançadas

Nas configurações avançadas é possível definir portas e habilitar SSL.

Image Added

CampoDescrição
PortaPorta SSL.
Caminho CertificadoCaminho onde encontra-se o certificado SSL.
Caminho Chave PrivadaCaminho onde encontra-se a chave privada do certificado.
Senha Senha do certificado.

Image Added


CampoDescrição
IP servidorIP do servidor License Server.
PortaPorta do servidor License Server.
CNPJCNPJ empresa.
Botão Verificar Disponibilidade

Ao acionar este botão, ele verifica se o License Server configurado está disponível.

Caso o LS não seja configurado, o Smart View terá acesso limitado.

1.3 - Fim da configuração

Após as configurações citadas acima, será apresentada

1.3 - Provedor de Dados

Base de dados local que conterá informações pertinentes ao Smart View.

Image Removed

1.4 - Fim da configuração

Após configurar o Provedor de Dados, será apresentado a tela final de configuração.

Ao efetuar um clique clicar em Abrir o Smart View, será aberto aberta a tela para o desenvolvimento de layouts.Image Removed

Image Added


Próximo passo ➝

Card
idconectores
labelConectores

Âncora
conectores
conectores

2 - Login no Smart View

Efetue o login no Smart View com o mesmo usuário e senha definidos na etapa do Emissor.

Image Removed

Image Added

2.1 - Conectores

Clique no botão Conectores para efetuar a parametrização dos endpoints endpoints necessários para a comunicação entre o SmartView Smart View e o ERP Datasul quando o relatório for gerado. 

Image Removed

Image Added

2.2 - Tipo de conector

Escolha a opção opção Provedor Nativo.

Image Removed

Image Added

2.3 - Provedor Nativo

Image Removed

Image Added


CampoDescrição
NomeInforme um nome ao conector, o mesmo será utilizado na etapa dos layouts.
Endereço

O ERP Datasul disponibiliza um endereço para que seja retornado os dados e objetos de negócio para a construção do relatório.

http://[SERVIDOR]:[PORTA]/api/trep/v1/provider/.well-known/treports/connector/







Próximo passo ➝

Card
iddts
labelDatasul

Âncora
dts
dts

3 - Login Datasul

Efetue o login no ERP Datasul com um usuário que possua permissão de acesso a tela de propriedades.

Image Modified


3.1 - Propriedades Smart View

Habilite a integração e informe um usuário administrador e a URL onde o SmartView Smart View foi instalado (porta padrão 7017).

SmartView.pngImage Removed

Image Added


PropriedadeDescrição
Habilitar IntegraçãoHabilita a integração com o Smart View
Usuário Administrador

Código do usuário (ERP Datasul) que será responsável pela administração dos recursos na integração entre o

SmartView

Smart View e o ERP Datasul.

Exemplo: Importação

de 

de layouts.

URL Smart View

URL base do servidor onde foi instalado o Smart View

Observação:

 Por

 Por padrão, este servidor é instalado na porta 7017

TESTE

Campos para validação da integração com o Smart View

(não são persistidos no banco de dados)

Usuário (opcional)Código do usuário (ERP Datasul) que possui acesso ao layout 
Senha (opcional)Senha do usuário (ERP Datasul)
Nome Exibição Layout (opcional)

Nome de Exibição do Layout cadastrado no Smart View

(

Observação

)

: Apesar da ferramenta permitir a duplicidade da informação, este nome deve ser único

Tipo Arquivo (opcional)

Extensão do tipo de arquivo a ser gerado

(Caso não seja selecionado, o padrão é o formato .pdf)

Teste Integração Layout (opcional)Efetua a geração e download do relatório integrado com o Smart View, no tipo de arquivo desejado

Âncora
4.Relatório
4.Relatório
  ↑ Integração com o Smart View

Ao clicar no botão ... é exibida as ações:

Image Removed

Abre uma janela Pop Up para selecionar os grupos que poderão visualizar o
Painel
borderColor#FF9900
titleColorwhite
titleBGColor#FF9900
title4. Uso de relatório expedido para o Smart View
Informações

Somente o Usuário Administrador do Smart View, configurado em Propriedades → Integrações TOTVS possui a permissão para efetuar a importação, compartilhamento e exclusão dos layouts.

Caso o usuário não seja administrador, somente as funcionalidades de pesquisa são liberadas.

Lista de Layouts

Image Removed

Image Added


Funcionalidade

Descrição

Configuração
Busca Avançada

Abre uma

tela

janela Pop Up para informar

a senha do usuário logado, necessário para efetuar a comunicação com o servidor do SmartView.

os dados do filtro:

Image Added

Ação (...)

Ao clicar no botão ... são exibidas as ações:

  • Layout em situação "Não importado": 
    • Image Added
  • Layout em situação "Importado":
    • Image Added 

Ação

Descrição

Importar/Atualizar

Image Removed

Importar

Efetua a abertura da tela para importar

os layouts 

os layouts previamente exportados no

SmartView

Smart View.

Para mais informações quanto a exportação, consulte o link: Exportação/Importação de Relatórios

Busca Avançada
Compartilhar

Abre uma janela Pop Up para

informar os dados do filtro:

Image Removed

Ação (...)

Ação

Descrição

Compartilhar

selecionar os grupos que poderão visualizar o layout

Mais informações consulte o link: Compartilhamento do Layout.

Remover

Efetua a remoção do layout entre o ERP Datasul e o

SmartView

Smart View

Importação

Cadastro de Layout

Image Removed

Para novos layouts, é necessário efetuar o cadastro no programa "bas_prog_dtsul", conforme os exemplos abaixo:

Image Added


Campo

Descrição
Nome externoLocal onde está armazenado o layout do recurso que será importado.
Nome verbalizadoNome que será apresentado no menu, caso seja habilitada a opção "Visualiza Menu"

Image Added

Campo

Descrição

TemplateDetermina o tipo de recurso relacionado ao layout. (Smart View Relatório, Smart View Visão de Dados ou Smart View Tabela Dinâmica).
TipoPara layouts, preencher como "Relatório".

Importação de Layout

Image Added

      

Campos

Descrição

Selecionar arquivoAo clicar neste botão, é aberta a seleção do arquivo que conterá os layouts
Importar

Efetua a importação do layout para o portal do Smart View.

Informações
titleInformação

A ação de importação. além de importar os layouts, possui algumas caracteristicas:

  • Como a importação do Smart View possui a "...Durante a importação todos os recursos encontrados serão importados como sendo novos recursos considerando a versão do resolver no qual foram exportados..." , o UID do Smart View pode ser alterado, porém a referência do nome layout deve permanecer o mesmo;
  • Caso o layout já tenha sido importado nesta tela e o mesmo possuir compartilhamentos, estes vínculos são atualizados automaticamente para o Smart View após sua importação;
  • A referencia do layout entre o ERP Datasul e o Smart View será sempre com base no último layout importado;
  • O layout anterior será automaticamente removido

Campos

Descrição

Layout Padrão

Indica que todos os layouts importados no arquivo são padrões.

Caso necessário, é permitido alterar o valor para Não.

Selecionar arquivoAo clicar neste botão, é aberta a seleção do arquivo que conterá os layoutsImportar

Efetua a importação do layout para o portal do SmartView.

Informação

A ação de importação. além de importar os layouts, possui algumas caracteristicas:

  • Como a importação do SmartView possui a "...Durante a importação todos os recursos encontrados serão importados como sendo novos recursos considerando a versão do resolver no qual foram exportados..." , o UID do SmartView pode ser alterado, porém a referência do nome layout deve permanecer o mesmo;
  • Caso o layout já tenha sido importado nesta tela e o mesmo possuir compartilhamentos, estes vínculos são atualizados automaticamente para o SmartView após sua importação;
  • A referencia do layout entre o ERP Datasul e o SmartView será sempre com base no último layout importado;
  • O layout anterior será automaticamente removido
    • (caso exista) após a importação (somente caso os layouts foram previamente importados pelo ERP Datasul);
    • A importação ocorrerá de acordo com o layout e arquivo selecionado. Caso o arquivo e o layout selecionado para importação não forem o mesmo, apresentará erro na execução de importação. 

    Compartilhamento do Layout

    Image Removed

    Image Added


    Campo

    Descrição

    Grupos

    Grupos do ERP Datasul para o compartilhamento do layout.

    Image Modified


    Dica
    titleDica

    Somente o usuário que efetuou a importação do layout possuirá sempre o acesso ao mesmo.

    Utilize as regras de relacionamento entre

    o 

    usuário x grupo de

    segurança 

    segurança (ERP Datasul) para conceder ou limitar o acesso a um determinado layout (e consequentemente o relatório)

    Âncora
    5.Layout
    5.Layout
      ↑ Integração com o Smart View

    Painel
    borderColor#FF9900
    titleColorwhite
    titleBGColor#FF9900
    title5. Edição de um layout de relatório
    anchor
    Informações
    6.Objeto6.Objeto  ↑ Integração com o Smart View
    titleInformação

    O intuito desta sessão não se trata de um treinamento de como desenvolver um layout. Acesse o link: https://tdn.totvs.com/pages/releaseview.action?pageId=633542507 para mais informações da ferramenta.

    Os layouts são desenvolvidos na página do SmartView, acesse a página http://[SERVIDOR]:7017/ e clique no botão RelatóriosCriar novo:

    Image Added

    Após definir os nomes adequados, selecione o objeto de negócio que será integrado ao layout conforme padrões da RFC.

    Image Added

    Ao clicar no botão Escolher objeto de negócio, é aberta uma janela pop-up com os endpoints cadastrados na etapa 3 agrupados automaticamente pelo filtro de área de nome Datasul.  Selecione qual o objeto de negócio que será relacionado ao layout em desenvolvimento.

    Image Added

    Após desenvolver o Design e avançar, é apresentada a sessão de compartilhamento. Recomendamos que não seja utilizada pois o gerenciamento desta área deve ser realizada com telas do ERP Datasul.

    Image Added

    Âncora
    6.Objeto
    6.Objeto
      ↑ Integração com o Smart View

    Painel
    borderColor#FF9900
    titleColorwhite
    titleBGColor#FF9900
    title6. Criação de um objeto de negócio

    Para uso com o smartview devem ser implementados os métodos:

    GET objectschema

    Retorna o schema, que é um descrição de campos e tipos de dados.

    POST data

    Dados do relatório.

    Foi criado um conjunto de ferramentas que facilitam a geração do endpoint na include utp/ut-sv-utils.i.

    Utilize as mesmas ferramentas que usa para construir um endpoint comum, acrescentando anossa include de ferramentas.

    Abaixo destaco, na arquitetura normal de um endpoint o que deve ser feito a mais na construção do endpoint para que ele seja utilizado no Smart View.

    Image Added

    Constantes:

    Algumas constantes mudam o comportamento da geração dos dados, são elas

    SV-PAGE-SIZE

    Número de linhas da página de dados, seu valor dafault é 5000, essa constante é muito importante para ajustar a performance do relatório, reduza esse número caso cada registro de dado tenha muita informação ou aumente caso tenha pouca informação.

    SV-PRNAME

    Nome do prefixo do campo calculado, seu valor default é calc

    Cada campo calculado deve ter  um procedure para seu calculo essa procedure deve ter o nome dessa constane mais o nome do campo calculado.

    SV-MODO

    O modo como são gerados os nomes para envio ao Smart View, seu default é TBATR, que significa que se enviar a tabela impressora e o campo des_impressora será enviada uma composição entre o nome da tabela e do atributo.

    Os valores possíveis são:

    DBTBATR → banco tabela atributo

    TBATR → tabela atributo

    ATR → atributo

    SV-SEP

    Caractere separador na concatenação dos campos o default é _ (Underline) e pode ser usado ? para não usar nenhum separador.

    Dica
    titleAviso

    As constantes são opcionais, caso omitidas, é usado o valor default.

    Âncora
    generateSchema
    generateSchema

    Procedure generateSchema

    Nessa procedure deve detalhar o schema de seu endpoint.

    A declaração dessa procedure é obrigatória e caso ele não exista o retorno será uma mensagem de erro de código 52611.

    Nela se inclui:

          • Atributos do schema seja eles relacionados a tabelas físicas ou temporárias
          • Campos calculados
          • Parâmetros do relatório

    Foram criadas diversas formas de inclusão de atributos visando facilitar seu uso, abaixo imagem de um exemplo de implementação:

    Image Added


    Dica
    titleAviso

    Ao final do documento é possível fazer o download do exemplo completo.

    clearSchema

    Limpa a definição de Schema


    addSchemaItemHandle

    Adiciona um item ao schema, recebe como parâmetro:

    Handle buffer-field do atributo - handle

    Se o atributo permite filtro - logical

    Se o atributo é obrigatório - logical

    A url de filtro (opcional) - character


    addSchemaItemHandleAtrNAme

    Adiciona um item ao schema já atribuindo um nome para envio ao Smart View, recebe como parâmetro:

    svAtrName - nome do atributo

    Handle buffer-field do atributo - handle

    Se o atributo permite filtro - logical

    Se o atributo é obrigatório - logical

    A url de filtro (opcional) - character


    addSchemaTable

    Adiciona todos os atributos de uma tabela, recebe como parâmetro:

    Handle buffer da tabela - handle


    addSchemaTableWithExceptions

    Adiciona todos os atributos de uma tabela, com exceção dos enviados como parâmetro, recebe como parâmetro:

    Handle buffer da tabela - handle

    Lista de exceção separada por vírgula - character


    delSchemaItem

    Elimina um item do schema, recebe como parâmetro:

    Atributo smartView - character


    addSchemaItem

    Adiciona manualmente um item ao Schema.

    schemaItem - objeto

    O objeto deve ser construido com o parâmetro add Ex.: mySchema = NEW schemaItem("add").


    updSchemaItem

    Altera um item ao Schema.

    schemaItem - objeto

    O objeto deve ser construido com o parâmetro add Ex.: mySchema = NEW schemaItem("upd").

    Atribua somente as propriedades que deseja alterar e svAtrName é obrigatório pois é chave.


    addSchemaParameter

    Adiciona um parâmetro ao relatório, os parÂmetros são solitados quando o relatório e executado a partir do Smart View.

    schemaParameter - objeto


    Objeto schemaItem

    As procedures de inclusão e alteração de itens recebem um objeto do tipo schemaItem que usam como referÊncia para essa operação, abaixo a lista de seus atributos

    svAtrName - nome do atributo afetado é usando como chave para a operação

    svDatabase - nome do banco

    svTable - nome da tabela

    svExt - numero do extent, use um número maior que 0 (zero) para campos extent

    svField - nome do atributo ou da procedure, caso seja um campo calculado

    svDisplayName - nome de display

    svDescription - descrição

    svAtrType - tipo de dado, usar os tipos de progress (character, logical, date ...)

    svFiltered - Se o atributo permite filtro

    svRequired Se o atributo é obrigatório

    svType - o tipo do atributo  1-tabela 2-temp-table 3 - campo calculado

    svOptionsUrl - A url de filtro (opcional) - character - Pode ser incluído um endpoint no qual é utilizado para a obtenção de valores do OptionsUrl e/ou Dropdown (Mais detalhes na sessão endpoint optionsdatakeylabel)


    Objeto schemaParameter

    svName - código do parâmetro

    svDisplayName - nome de display

    svType - tipo de dado, usar os tipos de progress (character, logical, date ...)

    svMultiValue - Se o valor é multivalorado ou não

    svLookupUrl - URL de lookup para permitir buscas no parâmetro (Ex.: "/btb/api/v1/meuObjetodeNegocio/lookup")


    Procedure pLookup

    Para habilitar o uso do lookup, realize o vinculo de uma tabela (temporária ou não) a procedure pLookup, conforme exemplo abaixo, onde o índice da tabela determina o campo em que será realizado a busca.

    Image Added

















    Após realizar o vinculo da tabela é necessário executar a função LookupParameter, na seguinte estrutura (BUFFER DA TABELA, cFilter, OUTPUT oJsonOutput), para que seja retornado o JSON no formato aceito pelo Smart View.

    Procedure GetPagenr

    Nessa procedure é realizado o retorno dos números responsáveis pela paginação.

    Campo calculado

    É possível criar um campo calculado como no exemplo abaixo:

    Image Added






























    Dica
    titleAviso

    Ao final do documento é possível fazer o download do exemplo completo.

    Como nome do banco e tabela deve informar o banco que deseja receber o buffer para os cálculos e o nome do atributo é o nome da procedure do cálculo com o prefixo da constante SV-PRNAME.

    Essa procedure recebe o handle do buffer da tabela indicada e devolve o valor do cálculo no tipo do item adicionado.

    Dica
    titleAviso

    Evite colocar cálculos demorados nessa procedure, ela será executada a cada registro de sua query e pode afetar a performance.

    O endpoint objectschema

    O endpoint retorna o schema baseado nas definições da procedure generateSchema.

    Image Added


























    Dica
    titleAviso

    Ao final do documento é possível fazer o download do exemplo completo.

    A procedure generateProperties é a responsável por criar o schema baseado na procedure generateSchema:

    generateProperties

    Gera json com o SChema, recebe como parâmetro:

    DisplayName - character

    Name - character

    Description - character

    DataUrl -  character

    Retorna:

    Json Schema - jsonObject

    O parâmetro DataUrl é importante e deve ter o endereço no endpoint e é usada para montar algumas URLs durante o retorno de dados.

    O catch no código serve para capturar um eventual erro 

    O createJsonResponse cria o json de resposta no padrão

    Endpoint data

    Retorna os dados do relatório, respeitando o filtro e parâmetros recebidos do SmartView.

    Foram criados facilitadores para tratar os parâmetros (processParameters e processParameterMultiple)  e filtros (generateFilter) que irão compor a clausula where que fará o retorno dos dados.

    O procedure generateData é responsável pela montagem do Json de saída, fazendo o controle de paginação.

    Image Added

    Dica
    titleAviso

    Ao final do documento é possível fazer o download do exemplo completo.

    Abaixo a lista de facilitadores e seus parâmetros:

    processParameters

    Tem por função retornar os parâmetros recebidos no json de entrada em uma string que representa uma porção da clausula where.

    oJsonInput - jsonObject

    string entrada - character

    retorna:

    string saida - character

    Na string de entrada informe o nome do parâmetro precedido por &, no retorno esse valor será substituido pelo parâmetro recebido.

    processParametersMultiple

    Tem por função retornar um parâmetro multiplo recebido no json de entrada em uma string que representa uma porção da clausula where.

    oJsonInput - jsonObject

    parâmetro pesquisado - string

    string de ligação - string

    string entrada - character

    retorna:

    string saida - character

    Diferente da processParameters a processParametersMultiple duplica a string de entrada a cada ocorrência de um parâmetro.

    Informe o nome do parâmetro multiplo que deseja no parâmetro pesquisado e na string de entrada o mesmo parâmetro precedido por &, no retorno esse valor será substituido pelo parâmetro recebido, a string de ligação é a string que será usada entre um valor múltiplo e outro, usualmente um AND ou OR, mas pode se usar um caractere delimitador para usar em um options, por exemplo.


    generateFilter

    Transforma o json de filtro em uma string de filtro com sintaxe do Progress, recebe o parâmetro:

    oJsonInput - jsonObject

    Retorna:

    filtro - character

    generateData

    handle de tabela ou handle de query - handle

    cURI - character

    cFilter - character

    Retorna:

    Json Data - jsonObject


    O primeiro parâmetro pode ser o handle de uma query ou o handle de uma tabela

    cURI - é a URL da requisição, usada na paginação

    cFilter - só é valido quando recebe o handle de uma tabela, e ignorado quando é o handle de uma query.


    Para o uso de temp-table como repositório de dados, é necessário realizar a definição da temp-table e após utilizar o facilitador abaixo:

    generateDataTT

    handle de tabela ou handle de query - handle

    cURI - character

    cFilter - character

    QUERY-OFF-END - handle

    Retorna:

    Json Data - jsonObject


    Confira o exemplo abaixo:

    Image Added




















    Âncora
    lookupdatakeylabel
    lookupdatakeylabel

    O endpoint optionsdatakeylabel 

    Retorna um JsonObject no padrão key-value para a utilização na obtenção de dados para os componentes Options e Dropdown (no SmartView).

    Por padrão, o nome do endpoint deve ser optionsdatakeylabel, porém caso desejar, pode ser implementado um endpoint com outro nome para o retorno exclusivo de dados (Ambos configurados em Integração com o Smart View).

    Image Added

















    Dica
    titleAviso

    Ao final do documento é possível fazer o download do exemplo completo.

    clearOptions

    Limpa a definição dos objetos de Options

    addOptionsItem

    Adiciona um item ao objeto de Options, recebe como parâmetros:

    Chave - character

    Valor - character

    generateOptionsData

    Transforma os dados enviados em um JsonObject no formato key-value (utilizados no SmartView).

     Exemplos de Json

    Exemplo de resultado do endpoint objectschema

    Expandir

    {
        "dataUrl": "http://localhost:8080/api/btb/v1/svUsuarDetail/data",
        "displayName": "Detalhes do usuário",
        "name": "UsuarDetail",
        "description": "Listagem dos detalhes",
        "areas": [
            "Datasul"
        ],
        "Properties": [
            {
                "filter": {
                    "isRequired": false
                },
                "displayName": "Nome",
                "name": "usuar_mestre_nom_usuario",
                "description": "Nome",
                "type": "string"
            },
            {
                "filter": {
                    "isRequired": false
                },
                "displayName": "Usuário",
                "name": "usuar_mestre_cod_usuario",
                "description": "Usuário",
                "type": "string"
            },
            {
                "filter": null,
                "displayName": "E-Mail Local",
                "name": "usuar_mestre_cod_e_mail_local",
                "description": "E-Mail Local",
                "type": "string"
            },
            {
                "filter": null,
                "displayName": "Tipo Usuário",
                "name": "usuar_mestre_ind_tip_usuar",
                "description": "Tipo Usuário",
                "type": "string"
            },
            {
                "filter": null,
                "displayName": "Favoritos do usuário",
                "name": "Favoritos",
                "description": "Lista de Favoritos do usuário",
                "type": "array",
                "Properties": [
                    {
                        "filter": null,
                        "displayName": "Chave Função",
                        "name": "usuar_fav_cod_function",
                        "description": "Chave Função",
                        "type": "string"
                    },
                    {
                        "filter": null,
                        "displayName": "Nome programa favorito",
                        "name": "nome_do_favorito",
                        "description": "Nome do programa favorito",
                        "type": "string"
                    },
                    {
                        "filter": null,
                        "displayName": "Nome modulo",
                        "name": "nome_do_modulo_favorito",
                        "description": "Nome do modulo",
                        "type": "string"
                    }
                ]
            },
            {
                "filter": null,
                "displayName": "Grupos do usuário",
                "name": "Grupos",
                "description": "Lista de grupos do usuário",
                "type": "array",
                "Properties": [
                    {
                        "filter": null,
                        "displayName": "Grupo",
                        "name": "grp_usuar_cod_grp_usuar",
                        "description": "Grupo Usuários",
                        "type": "string"
                    },
                    {
                        "filter": null,
                        "displayName": "Descrição",
                        "name": "grp_usuar_des_grp_usuar",
                        "description": "Descrição",
                        "type": "string"
                    }
                ]
            },
            {
                "filter": null,
                "displayName": "Impressoras do usuário",
                "name": "impressoras",
                "description": "Lista de impressoras do usuário",
                "type": "array",
                "Properties": [
                    {
                        "filter": null,
                        "displayName": "Impressora",
                        "name": "impressora_nom_impressora",
                        "description": "Impressora",
                        "type": "string"
                    },
                    {
                        "filter": null,
                        "displayName": "Descrição",
                        "name": "impressora_des_impressora",
                        "description": "Descrição",
                        "type": "string"
                    },
                    {
                        "filter": null,
                        "displayName": "Tipo Impressora",
                        "name": "impressora_cod_tip_imprsor",
                        "description": "Tipo Impressora",
                        "type": "string"
                    },
                    {
                        "filter": null,
                        "displayName": "Layout de impressora",
                        "name": "layout",
                        "description": "Lista de layouts de impressora",
                        "type": "array",
                        "Properties": [
                            {
                                "filter": null,
                                "displayName": "Layout Impressão",
                                "name": "layout_impres_cod_layout_impres",
                                "description": "Layout Impressão",
                                "type": "string"
                            },
                            {
                                "filter": null,
                                "displayName": "Tipo Impressora",
                                "name": "layout_impres_cod_tip_imprsor",
                                "description": "Tipo Impressora",
                                "type": "string"
                            },
                            {
                                "filter": null,
                                "displayName": "Número Layout",
                                "name": "layout_impres_num_id_layout_impres",
                                "description": "Número Layout",
                                "type": "number"
                            }
                        ]
                    }
                ]
            },
            {
                "filter": null,
                "displayName": "Estatiticas do usuário",
                "name": "Estatisticas",
                "description": "Lista de Estatiticas do usuário",
                "type": "array",
                "Properties": [
                    {
                        "filter": {
                            "isRequired": false
                        },
                        "displayName": "Data do ultimo acesso",
                        "name": "tt-estat_dat_ultimo_acesso",
                        "description": "Data do ultimo acesso",
                        "type": "date"
                    },
                    {
                        "filter": {
                            "isRequired": false
                        },
                        "displayName": "Ultimo acesso bloqueado",
                        "name": "tt-estat_dat_ultimo_acesso_bloqueado",
                        "description": "Ultimo acesso bloqueado",
                        "type": "date"
                    },
                    {
                        "filter": {
                            "isRequired": false
                        },
                        "displayName": "Ultimo acesso bloqueado",
                        "name": "tt-estat_qtd_acesso_bloqueado",
                        "description": "Ultimo acesso bloqueado",
                        "type": "number"
                    }
                ]
            }
        ],
        "parameters": [
            {
                "displayName": "Usuário inicial",
                "name": "usuarIni",
                "type": "string",
                "MultiValue": false
            },
            {
                "displayName": "Usuário final",
                "name": "usuarFim",
                "type": "string",
                "MultiValue": false
            },
            {
                "displayName": "Lista Usuário que não possua grupo",
                "name": "listUsarSemGrupo",
                "type": "boolean",
                "MultiValue": false
            },
            {
                "displayName": "Lista somente Impressora principal",
                "name": "listSomentePrincipal",
                "type": "boolean",
                "MultiValue": false
            }
        ],
        "schemaUrl": "http://localhost:8080/api/btb/v1/svUsuarDetail/objectschema"
    }

    Exemplo de resultado do endpoint data

    Expandir

    {
        "data": [
            {
                "impressoras": [
                    {
                        "layout": [
                            {
                                "layout_impres_num_id_layout_impres": 1,
                                "layout_impres_cod_layout_impres": "Padrão_080",
                                "layout_impres_cod_tip_imprsor": "DatasulGDI"
                            },
                            {
                                "layout_impres_num_id_layout_impres": 2,
                                "layout_impres_cod_layout_impres": "Padrão_132",
                                "layout_impres_cod_tip_imprsor": "DatasulGDI"
                            },
                            {
                                "layout_impres_num_id_layout_impres": 3,
                                "layout_impres_cod_layout_impres": "Padrão_132_compr",
                                "layout_impres_cod_tip_imprsor": "DatasulGDI"
                            },
                            {
                                "layout_impres_num_id_layout_impres": 4,
                                "layout_impres_cod_layout_impres": "Padrão_172",
                                "layout_impres_cod_tip_imprsor": "DatasulGDI"
                            },
                            {
                                "layout_impres_num_id_layout_impres": 5,
                                "layout_impres_cod_layout_impres": "Padrão_172_P",
                                "layout_impres_cod_tip_imprsor": "DatasulGDI"
                            },
                            {
                                "layout_impres_num_id_layout_impres": 6,
                                "layout_impres_cod_layout_impres": "Padrão_215_P",
                                "layout_impres_cod_tip_imprsor": "DatasulGDI"
                            },
                            {
                                "layout_impres_num_id_layout_impres": 7,
                                "layout_impres_cod_layout_impres": "Padrão_255_P",
                                "layout_impres_cod_tip_imprsor": "DatasulGDI"
                            }
                        ],
                        "impressora_nom_impressora": "xxx",
                        "impressora_des_impressora": "xxx",
                        "impressora_cod_tip_imprsor": "DatasulGDI"
                    }
                ],
                "Favoritos": [
                    {
                        "nome_do_modulo_favorito": "Menu",
                        "nome_do_favorito": "Programa Produto Datasul",
                        "usuar_fav_cod_function": "bas_prog_dtsul"
                    },
                    {
                        "nome_do_modulo_favorito": "Custos",
                        "nome_do_favorito": "Atualização Preços Itens",
                        "usuar_fav_cod_function": "cs0303"
                    },
                    {
                        "nome_do_modulo_favorito": "Bancos Históricos",
                        "nome_do_favorito": "Tarefas Retorno Históricos ADM",
                        "usuar_fav_cod_function": "fnc_transfer_bcos_historicos_retorno"
                    },
                    {
                        "nome_do_modulo_favorito": "Configurações",
                        "nome_do_favorito": "Propriedades OAuth2",
                        "usuar_fav_cod_function": "propriedades-oauth2"
                    },
                    {
                        "nome_do_modulo_favorito": "Chão de Fábrica",
                        "nome_do_favorito": "Consulta Item Controle",
                        "usuar_fav_cod_function": "sf0507"
                    },
                    {
                        "nome_do_modulo_favorito": "Chão de Fábrica",
                        "nome_do_favorito": "Acompanhamento Medição",
                        "usuar_fav_cod_function": "sf7220"
                    },
                    {
                        "nome_do_modulo_favorito": "Básico (NPS)",
                        "nome_do_favorito": "Relatorio Teste 02 do tReports",
                        "usuar_fav_cod_function": "tReport.teste02"
                    }
                ],
                "Estatisticas": [
                    {
                        "tt-estat_qtd_acesso_bloqueado": 1287,
                        "tt-estat_dat_ultimo_acesso_bloqueado": "2023-11-23T00:00:00.000-03:00",
                        "tt-estat_dat_ultimo_acesso": "2023-12-04T00:00:00.000-03:00"
                    }
                ],
                "usuar_mestre_nom_usuario": "Super Usuário",
                "usuar_mestre_cod_usuario": "super",
                "usuar_mestre_ind_tip_usuar": "Super",
                "usuar_mestre_cod_e_mail_local": "adm@totvs.com.br",
                "Grupos": [
                    {
                        "grp_usuar_cod_grp_usuar": "*",
                        "grp_usuar_des_grp_usuar": "Todos os Usuários"
                    },
                    {
                        "grp_usuar_cod_grp_usuar": "sop",
                        "grp_usuar_des_grp_usuar": "Customizador"
                    },
                    {
                        "grp_usuar_cod_grp_usuar": "sup",
                        "grp_usuar_des_grp_usuar": "sup"
                    }
                ]
            }
        ]
    }

    Exemplo de resultado do endpoint LookupData

    Expandir

    {
        "data": [
            {
                "label": "Admin",
                "key": "Admin"
            },
            {
                "label": "Comun",
                "key": "Comun"
            },
            {
                "label": "Super",
                "key": "Super"
            },
            {
                "label": "Supervisor",
                "key": "Supervisor"
            }
        ]
    }


    Anexo (Endpoint exemplo)

    svUsuarImpressora.p

    svUsuarDetail.p  Exemplo aninhado

            

    HTML
    <style>
    
    .custom-button {
    	position: absolute;
        top: 50px;
        right: 35px;
    }
    
    .page-metadata div {
    	float: none !important;
    	margin: 4px 0 0 0 !important;
    }
    
    <!********TIRA O MENU LATERAL*********-->
    div.theme-default .ia-splitter #main {
        margin-left: 0px;
    }
    .ia-fixed-sidebar, .ia-splitter-left {
        display: none;
    }
    #main {
        padding-left: 10px;
        padding-right: 10px;
        overflow-x: hidden;
    }
    
    .aui-header-primary .aui-nav,  .aui-page-panel {
        margin-left: 0px !important;
    }
    .aui-header-primary .aui-nav {
        margin-left: 0px !important;
    }
    
    .aui-tabs.horizontal-tabs>.tabs-menu>.menu-item.active-tab a::after { 
    	background: #FF9900; !important 
    }
    
    .menu-item.active-tab { 
    	border-bottom: none !important; 
    }
    <!****************************-->
    
    </style>
    
    6. Criação de um objeto de negócio
    Painel
    borderColor#FF9900
    titleColorwhite
    titleBGColor#FF9900
    title