Base de conhecimento
Encontre respostas para suas dúvidas em quatro fontes de conhecimento diferentes ao mesmo tempo, simplificando o processo de pesquisa.

Cross Segmentos - Linha Datasul - MLA - Criação da API para disponibilizar documentos para o APP

time.png Tempo aproximado para leitura: 00:11:20 min

Dúvida
Como realizar a criação da API para disponibilizar documentos para o Aplicativo - APP Minhas Pendências de Aprovação do MLA - Módulo Logístico de Aprovação?

Ambiente
Cross Segmentos - TOTVS Backoffice (Linha Datasul) - Aprovação Processo Logístico (MLA) - Versão 12

Solução
A nomenclatura da API a ser criada deve ser lap/mla-doc-<número doc>.p.
Por exemplo:

  • Para o documento 13 seria lap/mla-doc-13.p.
  • Para o documento 501 seria lap/mla-doc-501.p.

É importante entender que este programa será utilizado para configurar os campos que devem aparecer na listagem e detalhamento das pendências no APP, assim como para preencher os campos com os seus respectivos valores.
Para o cabeçalho segue exemplo, com explicações:

API_1.png

Para documentos específicos não é necessário a parte de versionamento, licenciamento e pontos de entrada.
A include lap/mlaapi021.i1 e lap/cria-tt-layout.i são liberadas para que se possa fazer a compilação dos programas. Na sequência, deve-se implementar as procedures pi-retorna-campos-lista e pi-retorna-campos-detalhe.

  • pi-retorna-campos-lista: Utilizada para retorno dos campos que podem ser configurados para a listagem
  • pi-retorna-campos-detalhe: Utilizada para retorno dos campos que podem ser configurados para o detalhe

As duas procedures possuem a mesma estrutura de parâmetros de entrada e saída.

Entrada/Saída

Nome

Tipo

Nome

Entrada

cUsuario

Character

Usuário para o qual se deseja configurar o layout

Entrada

iDocumento

Integer

Documento para o qual se deseja configurar o layout

Entrada

iInterface

Integer

Interface para a qual se deseja configurar o layout
1 - Lista / 2 - Detalhe

Entrada

lSomenteVisiveis

Logical

Indica que a procedure deve retornar apenas os campos visíveis, se não marcado, deve retornar todos

Saída

tt-layout

temp-table

Temp-table contendo os campos para o layout

Sobre a estrutura da temp-table tt-layout:

tt-layout

Campo

Tipo

Descrição

cdn-docto            

Integer

Código do Documento

cod-usuar            

Character

Código do Usuário

idi-interfac         

Integer

Tipo de Interface

cod-id-campo         

Character

Id do Campo

idi-compon           

Integer

Tipo de Componente

1 – Campo
2 – Lista
3 - Separador

nom-rotu-campo       

Character

Rótulo do componente

des-campo            

Character

Descrição do componente

log-visivel          

Logical

Indicador se o campo está visível

cdn-tam              

Integer

Tamanho do componente

cdn-ord

Integer

Ordem do componente

cod-entid-pai        

Character

ID do componente pai

Para a criação dos campos na temp-table, sugere-se a utilização da include lap/cria-tt-layout.i, pois ela já faz o tratamento para técnica de tradução e também já faz o tratamento para criar na temp-table os campos para retorno conforme visibilidade. Por exemplo, se estiver marcado para retornar somente visíveis, criará apenas os campos visíveis para retorno. Se fizer a criação manualmente, precisará se preocupar com estes detalhes.
Exemplo de utilização abaixo, lembrando que deverá existir uma chamada para cada componente:

{lap/cria-tt-layout.i &cCodIdCampo="'doc-nr-requisicao'"
                               &iIdiCompon="1"
                               &cNomRotuCampo="'Requisição'"
                               &cDesCampo="'Número da Requisição'"
                               &lLogVisivel="TRUE"
                               &iCdnTam="100"}

Se utilizada esta include, a ordenação dos campos, seguirá a ordem em que forem criados.

Para as procedures de retorno de campos para lista e detalhe, caso se deseje retornar também os campos genéricos do MLA, pode-se chamar o programa que os retorna, dentro de cada uma das procedures. Por exemplo, para incluir os campos de informações genéricas do MLA na lista ou detalhe, pode-se utilizar o trecho a seguir.

KCS_1.PNG

Veja que neste exemplo, na chamada na include lap/cria-tt-layout.i, foi fixado para que todos os campos genéricos fiquem como não visíveis - &lLogVisivel=”false” e o tamanho como 100 - &iCdnTam="100", se desejasse que eles tivessem a mesma visibilidade e tamanho que o padrão para os documentos genéricos, poderia utilizar &lLogVisivel="tt-layout-modelo.log-visivel" e &iCdnTam="tt-layout-modelo.cdn-tam".

Para buscar os campos genéricos do MLA para o detalhe, deve-se utilizar a mesma estrutura acima, apenas alterando a procedure para pi-retorna-campos-detalhe.
Caso queira saber quais os campos genéricos do MLA para o APP, consultar o artigo Cross Segmentos - Linha Datasul - MLA - Campos genéricos do MLA no APP Minhas Pendências de Aprovação

Para o retorno da sigla do documento deve-se implementar a procedure pi-retorna-sigla. Com a seguinte estrutura de parâmetros a seguir:

Entrada/Saída

Nome

Tipo

Nome

Entrada

iDocumento

Integer

Código do documento

Saída

cSigla

Character

Sigla, contendo no máximo duas posições.

Exemplo:

API_2.png

É necessário também criar as procedures que irão fazer o preenchimento dos valores para mostrar cada campo nas pendências. Para facilitar as explicações, vamos utilizar um exemplo, de que o programa a ser criado deve contemplar a apresentação do documento abaixo:

KCS_2.PNG

Deve-se então implementar as procedure pi-preenche-lista e pi-preenche-detalhe que são utilizadas para o preenchimento dos campos da listagem e do detalhamento de pendências, respectivamente, com seus valores de negócio. A estrutura de parâmetros destas procedures deve ser a seguinte:

Entrada/Saída

Nome

Tipo

Nome

Entrada

iNrTransacao

Integer

Número da transação da pendências

Entrada/Saída

tt-campo-valor

Temp-table

IDs de componentes com seus respectivos valores.

Observação: A procedure recebe uma lista de IDs de componentes e deve preencher a temp-table com os respectivos valores conforme regras de negócio.


Para a procedure pi-preenche-lista, temos o exemplo de implementação na sequência, com explicação dos códigos:

1. É necessário localizar as tabelas de negócio. Neste caso documento é uma temp-table, com somente um registro para demonstração, por isso o FIND FIRST. Na prática deve-se localizar a tabela de negócio conforme a chave do documento disponibilizada pela leitura da tabela mla-doc-pend-aprov.

Abaixo um exemplo para localização da tabela de negócio com base na chave do documento. Definir a include lap/mlaapi001.i99 no início do programa para ter disponível da temp-table tt-mla-chave, e as três variáveis abaixo:

mceclip0.png

Utilizar a include laphtml/mlacriachave.i para preencher a tt-mla-chave com os campos da chave do documento, neste caso são três. Após isso, utilizar cada posição para localizar o registro de negócio.

API_4.png

2. Preencher os registros da temp-table que vieram com IDs preenchidos com os respectivos valores. A informação deve ser sempre retornada como STRING e formatada como se deseja que apareça no APP.

3. Caso nas procedures de retorno de campos tenha definido para mostrar campos genéricos do MLA é necessário o preenchimento deles.

KCS_3.PNG

Na procedure pi-preenche-lista é importante não eliminar o handle das informações genéricas do MLA - h-mla-prog, pois ela será chamada várias vezes de forma persistente. Então deve-se criar a procedure pi-finaliza eliminando este handle.

KCS_4.PNG

Para a procedure pi-preenche-detalhe, a estrutura inicial é muito semelhante a procedure de lista. A diferença que temos é para os componentes de listas, com a necessidade de definição de 5 variáveis para cada lista, que serão explicadas a utilização mais para frente. O valor do extent deve ser o número de componentes que a lista possui.
Neste caso temos duas listas, de itens e de entregas, cada uma com dois campos, portanto os extents tem o valor 2. É necessário fazer a leitura das tabelas de negócio, assim como explicado na lista.

API_5.png

Para o preenchimento dos campos que não vão em listas, é igual na listagem.
Lembrando que para separadores e o componente de lista não há valor para retornar neles, são apenas para diferenciar o layout ou tratar a estrutura de filhos.

KCS_6.PNG

Já para o preenchimento de campos que vão dentro de listas sugere-se a seguinte estrutura. Preencher as variáveis para indicar:

  • Que há campos na lista – l-existe-campo-xxx;
  • Para criar o campo filho X – l-cria-filho-xxx;
  • Nome do campo filho X – c-campo-filho-xxx;

Lembrando que estas duas variáveis são extent, então para cada campo, deve-se usar uma posição. Por fim, deve-se eliminar o registro da temp-table tt-campo-valor. Isso é necessário, pois teremos que criar um registro deste componente para cada linha filha existente.

API_6.png

O trecho de código a seguir, deve vir depois do FOR EACH da tt-campo-valor.
Neste momento, precisamos preencher os campos das listas, criando um registro para cada linha e componente existente no modelo definido.

  1. Inicializar o contador da lista, que será incrementado a cada linha. Neste caso, a cada item encontrado do documento.
  2. No caso de haver mais um nível de lista dentro desta, é necessário eliminar o registro o componente de lista, pois será necessário criar um por linha de item. Definir o buffer no início do programa: DEFINE BUFFER bf-tt-campo-valor FOR tt-campo-valor.
  3. Realizar a leitura da tabela filha, com base no pai. Passar por todos os campos da lista. Neste caso são dois. Se o campo em questão deve ser retornado, criar um registro na tt-campo-valor, se atentando para o ID do campo, linha e o ID do pai. Preencher o valor do campo conforme regras de negócio.
  4. Trecho será explicado na próxima imagem.

API_7.png

Sobre o preenchimento dos campos para a lista de entregas:

  1. Se houverem campos a serem apresentados para a segunda lista, neste caso, de entregas, deve fazer basicamente o mesmo tratamento que a primeira lista para preencher os campos.
  2. Diferença: Será necessário criar um componente de lista, para cada registro da lista anterior, neste caso, para cada item.
  3. Diferença: Necessário preencher o campo de linha pai, com o número da linha pai. Neste caso, linha do item em questão.

API_8.png

Caso nas procedures de retorno de campos tenha definido para mostrar campos genéricos do MLA é necessário o preenchimento deles.

KCS_10.PNG

Verificando o resultado do programa no Configurador Visual – Lista:

KCS_11.PNG

KCS_12.PNG

Verificando o resultado do programa no Configurador Visual – Detalhe:

KCS_13.PNG

KCS_14.PNG

KCS_15.PNG

Verificando o resultado do programa no APP – Lista:

KCS_16.PNG

Verificando o resultado do programa no APP – Detalhe:

KCS_17.PNG

KCS_18.PNG

KCS_19.PNG


Saiba mais

Para os documentos padrões é importante que em cada procedure citada, seja incluso os pontos de EPC - External Program Call padronizados, para que seja possível customizar o documento. Para verificar quais pontos devem ser disponibilizados verificar a documentação Cross Segmentos - Linha Datasul - MLA - Customização de documento padrão disponibilizado no APP

Anexo
Para conferir um exemplo completo da API, veja o anexo abaixo.

Esse artigo foi útil?
Usuários que acharam isso útil: 1 de 1

0 Comentários

Por favor, entre para comentar.
X Fechar

Olá ,

Há pendência referente a um de seus produtos contratados para a empresa ().

Entre em contato com o Centro de Serviços TOTVS para tratativa.

Ligue! 4003-0015 opção 4 e 9 ou registre uma solicitação para CST – Cobrança – Verificação de pendências financeiras . clique aqui.

TOTVS

X Fechar

Olá ,

Seu contato não está cadastrado no Portal do Cliente como um perfil autorizado a solicitar consultoria telefônica.

Por gentileza, acione o administrador do Portal de sua empresa para: (1)configurar o seu acesso ou (2)buscar um perfil autorizado para registro desse atendimento.

Em caso de dúvidas sobre a identificação do contato administrador do Portal, ligue (11) 4003-0015, opção 7 e, em seguida, opção 4 para buscar o suporte com o time de Assessoria ao Portal do Cliente. . clique aqui.

TOTVS

X Fechar

Olá ,

Para o atendimento de "Consultoria Telefônica" você deverá estar de acordo com o Faturamento.

TOTVS

X Fechar

Olá,

Algo inesperado ocorreu, e o usuario nao foi reconhecido ou você nao se encontra logado

Por favor realize um novo login

Em caso de dúvidas, entre em contato com o administrador do Portal de Clientes de sua empresa para verificação do seu usuário, ou Centro de Serviços TOTVS.

Ligue! 4003-0015 opção 4 e 9 ou registre uma solicitação para CST – Cadastros . clique aqui.

TOTVS

Chat _

Preencha os campos abaixo para iniciar o atendimento:

Chat _