PUBLICAÇÃO WEB SERVICE REST DO LANÇAMENTO DE CONTAMINANTES PARA FARDÃO
Características do Requisito
Linha de Produto: | Microsiga Protheus | ||||
Segmento: | Supply Chain - Agroindústria | ||||
Módulo: | SIGAAGR | ||||
Rotinas: |
| ||||
País: | Brasil | ||||
Bancos de Dados: | Todos | ||||
Tabelas Utilizadas: | NPX | ||||
Sistemas Operacionais: | Todos |
Pré-requisito
No que diz respeito ao sistema, a funcionalidade de integração está funcional. Porém, é necessário configurar o AppServer para que o Protheus disponibilize a URL de acesso ao serviço de Web Service REST do sistema. Uma vez configurado o serviço, a integração está pronta para ser utilizada.
Para isso, segue link para consulta: 1. Configuração do REST do Protheus
Descrição
Para os usuários que possuem algum aplicativo customizado, e que precisam efetuar o lançamento de contaminantes para um fardão no produto Gestão Agroindústria (SIGAAGR), foi disponibilizado o método Web Service REST.
Fonte | UBAW050 |
|---|
Para realizar testes, pode-se utilizar qualquer programa de sua preferência, que teste API Web Service REST. O SoapUI e a extensão Postman do Navegador Chrome são exemplos de bons programas para isso.
OBSERVAÇÃO: PARA O EXEMPLO A SEGUIR, FAREMOS O LANÇAMENTO DE CONTAMINANTE PARA UM FARDÃO. PARTIMOS DO PRINCÍPIO QUE O FARDÃO JÁ FOI INCLUÍDO NO PROTHEUS. O CADASTRO DE FARDÃO TAMBÉM POSSUI CONEXÃO WEB SERVICE DISPONÍVEL: Publicação do Cadastro de Fardão WS REST
Abaixo, uma persistência de dados, pelo método Post, na tabela NPX (Lançamento de contaminantes).

A tabela para lançamento de contaminantes é exclusiva. Por isso, deve-se indicar no Headers, no campo tenantId, o grupo de empresas e a filial que deseja localizar as informações. Abaixo um exemplo utilizando o programa Postman. |

Abaixo, uma consulta dos dados da tabela DXL através do método GET.

Caso se deseje filtrar os resultados que serão trazidos, basta colocar as regras nos params.

Existem várias possibilidades de se restringir quais dados o GET irá retornar. Segue link da documentação relativa a este assunto: http://tdn.totvs.com.br/pages/viewpage.action?pageId=271671548
Segue, para consulta, a estrutura JSON que foi utilizada como exemplo para a confecção deste documento.
{
"id": "UBAW010",
"operation": 3,
"models": [
{
"id": "RESTNPX",
"modeltype": "FIELDS",
"fields": [
{
"id": "NPX_CODPRO",
"order": 3,
"value": "00001"
},
{
"id": "NPX_LOTE",
"order": 4,
"value": "DXL91"
},
{
"id": "NPX_CODTA",
"order": 4,
"value": "00004"
},
{
"id": "NPX_SEQ",
"order": 5,
"value": "1"
},
{
"id": "NPX_DESVA",
"order": 7,
"value": "00004"
},
{
"id": "NPX_TIPOVA",
"order": 8,
"value": "1"
},
{
"id": "NPX_RESNUM",
"order": 10,
"value": "5.66"
},
{
"id": "NPX_ATIVO",
"order": 13,
"value": "1"
},
{
"id": "NPX_DTATU",
"order": 14,
"value": "20171128"
},
{
"id": "NPX_USUATU",
"order": 15,
"value": "Administrador"
},
{
"id": "NPX_CODSAF",
"order": 16,
"value": "2017"
},
{
"id": "NPX_FARDAO",
"order": 24,
"value": "000238"
},
{
"id": "NPX_PRDTOR",
"order": 27,
"value": "000001"
},
{
"id": "NPX_LJPRO",
"order": 28,
"value": "01"
},
{
"id": "NPX_FAZ",
"order": 26,
"value": "01"
}
] } ] }
Dados técnicos
"operation": 3,
"models": [
O ID refere-se ao nome do programa que está sendo chamado no Protheus. Por padrão, os programas no Protheus que possuem disponibilização de web service são publicados com o nome do fonte.
Operation refere-se a qual operação (operações padrões do MVC do ADVPL) será efetuada. Isso está diretamente ligado com a operação de REST que será efetuada, no exemplo acima a operação 3 se refere a uma inserção, então a operação REST que será efetuada é um POST. Como a operação é um POST, a inserção indifere da informada, contudo, ela precisa ser informada.
Models refere-se a quais modelos, existentes na rotina publicada, serão manipulados.
Essa definição ocorre logo na segunda parte.
"modeltype": "FIELDS",
"fields": [
Aqui, o ID se refere ao nome do Modelo que está contido na rotina que está sendo manipulada. Neste caso, RESTNPX é o único modelo do UBAW050.
Modeltype se refere ao tipo do modelo no Protheus: Field ou Grid.
No caso em questão, o modelo é um Field, então os campos a serem preenchidos devem ser informados logo abaixo, na terceira parte da estrutura.
Nesta etapa, ID refere-se ao nome do campo na tabela referente à rotina.
Order indica a ordem deste campo definido no dicionário de dados.
Value é o valor que será inserido neste campo.
Vale ressaltar que todas as validações do modelo são feitas automaticamente pelo Protheus, ou seja, caso algum dado esteja errado ou incoerente, o sistema envia uma mensagem de erro, em formato JSON, e a operação não é concluída.
Campo: NPX_CODPRO, Tipo: Caracter, Tamanho: 15, Descrição: Código do Produto;
Campo: NPX_LOTE, Tipo: Caracter, Tamanho: 10, Descrição: Lote;
Campo: NPX_CODTA, Tipo: Caracter, Tamanho: 6, Descrição: Código do Tipo da Análise;
Campo: NPX_SEQ, Tipo: Caracter, Tamanho: 5, Descrição: Sequência;
Campo:NPX_DESVA, Tipo:Caracter, Tamanho:40, Descrição: Descrição da Variável de Análise;
Campo:NPX_TIPOVA, Tipo:Caracter, Tamanho:1, Descrição: Tipo de Variável;
Campo:NPX_RESNUM, Tipo:Número, Tamanho:10, Descrição: Valor/Resultado;
Campo:NPX_ATIVO, Tipo:Caracter, Tamanho:1, Descrição: Ativo;
Campo:NPX_DTATU, Tipo:Data, Tamanho:8, Descrição: Data de Atualização;
Campo:NPX_USUATU, Tipo:Caracter, Tamanho:50, Descrição: Usuário de Atualização;
Campo:NPX_CODSAF, Tipo:Caracter, Tamanho:15, Descrição: Código da Safra;
Campo:NPX_FARDAO, Tipo:Caracter, Tamanho:6, Descrição: Código do Fardão;
Campo:NPX_PRDTOR, Tipo:Caracter, Tamanho:6, Descrição: Código da Entidade;
Campo:NPX_LJPRO, Tipo:Caracter, Tamanho:2, Descrição: Loja da Entidade;
Campo:NPX_FAZ, Tipo:Caracter, Tamanho:2, Descrição: Fazenda da Entidade;