Child pages
  • DT GravaCotaPrdPeriodo


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.

04. DEMAIS INFORMAÇÕES

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: