Páginas filhas
  • DDVENDAS-53373 / DDVENDAS-54613 / DDVENDAS-54767 - DT - Winthor-Venda - API de Quebra de Pedido

01. DADOS GERAIS

Produto:

TOTVS Distribuição e Varejo

Linha de Produto:

Linha Winthor

Segmento:

Distribuição

Módulo:8 - FERRAMENTAS DO SISTEMA
Função:801 - AUTORIZAÇÃO DE SERVIÇOS WEB
Requisito/Story/Issue:DDVENDAS-53373
DDVENDAS-54613
DDVENDAS-54767

02. SITUAÇÃO/REQUISITO

Implementar uma API que permita a quebra de um pedido existente em múltiplos pedidos, com base em uma estrutura segregada de itens recebida via JSON. A API deve atualizar o pedido original com um dos grupos enviados e gerar novos pedidos para os demais, replicando dados e respeitando regras já aplicadas na quebra feita pela rotina 336.

Entrada da API

  • JSON contendo:
    • Número do pedido original (NUMPED)
    • Lista de grupos numerados (grupo 1, grupo 2, etc.)
    • Cada grupo contendo:
      • Código do item
      • NUMSEQ
      • Quantidade

Saída esperada

  • Atualização do pedido original com os itens do grupo 1
  • Geração de novos pedidos (NUMPED) para os demais grupos
  • Após a quebra, a API de recálculo de cabeçalho deve ser chamada passando todos os NUMPED gerados (Incluindo o NUMPED original do grupo 1) como parâmetro
  • Retorno em JSON contendo:
    • numped_original
    • Lista de numped_gerados
    • Mensagem de sucesso ou erro

Regras de Negócio

Obrigatoriedade de integridade:

  • Todos os itens do pedido original devem ser contemplados na soma dos grupos.
  • Se houver divergência de quantidade total por item (a mais ou a menos), ou item inexistente, a requisição será rejeitada integralmente.
  • O NUMSEQ serve para identificar exatamente a que linha da PCPEDI aquele registro se refere, para copiar os dados corretos quando houver mais de um item no mesmo pedido.

Divisão de item permitida:

  • Um mesmo item pode ser dividido entre grupos, desde que a soma das quantidades nos grupos seja igual à quantidade do item no pedido original.

Processamento de grupos:

  • O grupo 1 será usado para atualizar o pedido original (NUMPED permanece).
  • Os demais grupos gerarão novos pedidos, com novo NUMPED, via SEQUENCE.
  • As tabelas PCPEDC e PCPEDI devem ser replicadas para os novos pedidos, com os dados originais mantidos, exceto {{NUMPED, }}os itens e suas respectivas quantidades.

Bloqueios:

  • A tabela PCBLOQUEIOSPEDIDO do pedido original deve ser replicada para os novos pedidos, mantendo os mesmos bloqueios.

Regras adicionais da quebra padrão (rotina 336):

  • Não há necessidade de bloquear ou liberar algum pedido automaticamente. Pode mandar a mesma POSICAO do pedido original

Restrições de quebra

  • Caso o Pedido esteja na posição M (montado), a quebra só será realizada caso os pedidos tenham origem B (balcão) ou R (balcão reserva).

Validações de emissão de mapa

  • Por enquanto não vamos configurar permissões para quebrar pedidos com expedição iniciada. Então vamos começar com a regra mais básica, que é NÃO PERMITIR A QUEBRA com o mapa de separação emitido. Já existem validações para esse cenário na 336, através da permissão 12 da 530. Verificar qual campo da PCPEDC é validado na permissão 12 e validar o mesmo nessa API. Se o mapa já tiver sido emitido, a API deve abortar a quebra e devolver uma mensagem, avisando ao usuário que após a emissão do mapa não é possível quebrar o pedido.
  • Além disso caso o do campo DTWMS esteja preenchido, a quebra não é realizada.


Gravar campos de rastreio nos novos pedidos (NUMPEDORIG e demais que a 336 já grava, se tiver mais algum)

No fim da quebra, a API deve chamar a API de recálculo de cabeçalhos para atualizar os dados de cabeçalho de todos os pedidos gerados.

03. SOLUÇÃO

Criado um novo end-point http://<ipWTA>:<portaWTA>/winthor/venda/v0/pedido/quebrarpedido para realizar a quebra de um pedido.


Para utilizar esta API, certifique-se de que o seguinte componente esteja atualizado:

  • Serviço winthor-venda no WTA (Rotina 801). Versão mínima necessária:  0.37.30.31

Exemplo:
 

json de exemplo:

{
   "numped_original":12345,
   "grupos":[
      {
         "grupo":1,
         "itens":[
           

{                "codprod":1001,                "numseq":1,                "quantidade":5             }

,
           

{                "codprod":1002,                "numseq":2,                "quantidade":3             }

         ]
      },
      {
         "grupo":2,
         "itens":[
           

{                "codprod":1001,                "numseq":1,                "quantidade":5             }

,
           

{                "codprod":1003,                "numseq":3,                "quantidade":4             }

         ]
      }
   ]
}


04. DEMAIS INFORMAÇÕES


Importante!

As versões estarão disponíveis para download no CCW. 

https://centraldecontrole.pcinformatica.com.br/


Mantenha suas rotinas sempre atualizadas!