01. DADOS GERAIS
Linha de Produto: | Virtual Age |
---|
Segmento: | Moda |
---|
Módulo: | Integração |
---|
Função: | GravaCotaPrdPeriodo |
---|
Requisito/Story/Issue (informe o requisito relacionado) : | DVAITG-2029 |
---|
02. SITUAÇÃO/REQUISITO
Criar a web API GravaCotaPrdPeriodo no projeto wsApp(ou WebApiStoreage) para gravar informações de cota de produto de pedido de venda.
03. SOLUÇÃO
Foi criada a web API POST api/GravaCotaPrdPeriodo no projeto wsApp(ou WebApiStoreage) para receber uma lista de informações de cota de produto para pedido de venda e grava-lá no ambiente.
Criada a web API POST api/GravaCotaPrdPeriodo no projeto wsApp(ou WebApiStoreage) e disponibilizada em https://www.bhan.com.br:1443/ e https://www5.bhan.com.br:1443/ .
Esta permite a um sistema de terceiro incluir dados de movimentação diária da cota de um produto numa determinada empresa/período.
Para inclusão de registro(s) pode ser enviado xml ou json contendo uma lista de cota de produtos a serem gravadas.
A gravação dessas informações ocorrem na tabela PED_COTAPRDDIA do sistema ERP VirtualAge/TOTVS-Cianorte e são listadas em PEDFM224(este é acessado pelo botão "Cota por dia..." do componente PEDFM044).
...Implementação - Validação...
é verificado se o json ou xml informado está conforme esperado, caso negativo é apresentado mensagem:
Exemplo de entrada esperada: JSON | XML | { "CotaPrdPeriodo":[ { "CdEmpresa": 1, "NrCiclo": 2019, "CdProduto": 16, "QtMovimento": 1, "DtMovimento": "2019-02-01" }, { "CdEmpresa": 1, "NrCiclo": 2019, "CdProduto": 16000, "QtMovimento": 10, "DtMovimento": "2019-02-28" }, { "CdEmpresa": 1, "NrCiclo": 2019, "CdProduto": 16, "QtMovimento": 21, "DtMovimento": "2019-02-01" } ] } | <?xml version="1.0" encoding="UTF-8"?> <ListaCotaPrdPeriodo> <CotaPrdPeriodo> <CdEmpresa>1</CdEmpresa> <CdProduto>16</CdProduto> <DtMovimento>2019-02-01</DtMovimento> <NrCiclo>201900</NrCiclo> <QtMovimento>1</QtMovimento> </CotaPrdPeriodo> <CotaPrdPeriodo> <CdEmpresa>1</CdEmpresa> <CdProduto>16</CdProduto> <DtMovimento>2019-02-28</DtMovimento> <NrCiclo>2019</NrCiclo> <QtMovimento>10</QtMovimento> </CotaPrdPeriodo> <CotaPrdPeriodo> <CdEmpresa>1</CdEmpresa> <CdProduto>16</CdProduto> <DtMovimento>2019-02-01</DtMovimento> <NrCiclo>2019</NrCiclo> <QtMovimento>21</QtMovimento> </CotaPrdPeriodo> </ListaCotaPrdPeriodo> | |
Possíveis mensagens tratadas caso entrada de dados inválida: Necessário informar conteúdo conforme layout de entrada de dados da API! Necessário informar CdEmpresa, Nrciclo, DtMovimento(aaaa-mm-dd), CdProduto e QtMovimento para gravação de cota de produto! Necessário informar DtMovimento no formato aaaa-mm-dd! |
Antes de realizar a gravação é verificado se existe período para cada empresa/ciclo/data/produto informado.
...Implementação - Gravação...
Caso encontrado informações na validação mencionada anteriormente, então é realizada a gravação das informações de cota de produto dia.
CAMPO | VALOR |
CD_EMPRESA NR_CICLO NR_PERIODO CD_PRODUTO NR_SEQUENCIA CD_OPERADOR DT_CADASTRO TP_SITUACAO QT_MOVIMENTO DT_MOVIMENTO DT_BAIXA CD_OPERADORINC DT_INCLUSAO | Empresa informada na API Ciclo informado na API Período encontrado no select de validação anterior Produto informado na API Obter a maior sequencia da tabela para empresa/ciclo/período/produto e adicional 1 Operador webservice virtual, fixo 999990 Data/Hora corrente Fixo 1 1-Solicitada 2-Baixada 3-Cancelada Quantidade informada na API Data informada na API Fixo null Operador webservice virtual, fixo 999990 Data/Hora corrente |
...Consumo - Descritivo...
Enviar conteúdo json/xml, conforme esperado, para um dos endereços a seguir:
Necessário também informar em headers(cabeçalhos):
KEY | VALUE |
Usuario obrigatório | informar usuário webservice virtual |
Senha obrigatório | informar senha do usuário webservice virtual |
Content-Type | informar o tipo de conteúdo de entrada, exemplos: text/json, text/xml, application/json, ... |
Accept | informar o tipo de conteúdo de saída, exemplos: text/json, text/xml, application/json, ... |
Imagem de exemplo de headers em POSTMAN:
Após realizar o envio do conteúdo, se não encontrado invalidade dos dados de entrada, ocorrerá o retorno conforme exemplo a seguir:
Exemplo de retorno: JSON | XML | [ { "CdEmpresa": 1, "NrCiclo": 2019, "DtMovimento": "2019-02-01", "CdProduto": 16, "CdStatus": "OK", "DsStatus": "Incluído" }, { "CdEmpresa": 1, "NrCiclo": 2019, "DtMovimento": "2019-02-28", "CdProduto": 16000, "CdStatus": "NOK", "DsStatus": "Cota não encontrada" }, { "CdEmpresa": 1, "NrCiclo": 2019, "DtMovimento": "2019-02-01", "CdProduto": 16, "CdStatus": "OK", "DsStatus": "Incluído" } ] | <RetornoListaCotaPrdPeriodo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <RetornoCotaPrdPeriodo> <CdEmpresa>1</CdEmpresa> <NrCiclo>2019</NrCiclo> <DtMovimento>2019-02-01</DtMovimento> <CdProduto>16</CdProduto> <CdStatus>OK</CdStatus> <DsStatus>Incluído</DsStatus> </RetornoCotaPrdPeriodo> <RetornoCotaPrdPeriodo> <CdEmpresa>1</CdEmpresa> <NrCiclo>2019</NrCiclo> <DtMovimento>2019-02-28</DtMovimento> <CdProduto>16000</CdProduto> <CdStatus>NOK</CdStatus> <DsStatus>Cota não encontrada</DsStatus> </RetornoCotaPrdPeriodo> <RetornoCotaPrdPeriodo> <CdEmpresa>1</CdEmpresa> <NrCiclo>2019</NrCiclo> <DtMovimento>2019-02-01</DtMovimento> <CdProduto>16</CdProduto> <CdStatus>OK</CdStatus> <DsStatus>Incluído</DsStatus> </RetornoCotaPrdPeriodo> </RetornoListaCotaPrdPeriodo> | |
Imagem de exemplo de consumo enviando e retornando informações no formato JSON através do programa POSTMAN:
Imagem de exemplo de consumo enviando e retornando informações no formato XML através do programa POSTMAN:
As inclusões de cota de produto podem ser verificadas através do componente PEDFM004, acessar o botão "Cota por dia..." e em seguida é apresentado PEDFM224. Ao focar no código reduzido em questão observa-se os registros incluídos: