Páginas filhas
  • DINTVENDAS-115 - DT - Tratar itens de peso variável na recepção de pedidos


01. DADOS GERAIS

Produto:

TOTVS Distribuição e Varejo

Linha de Produto:

Linha Winthor

Segmento:

Distribuição

Módulo:

Vendas

Função:Integração
País:Brasil
Requisito/Story/Issue (informe o requisito relacionado) :DINTVENDAS-115


02. SITUAÇÃO/REQUISITO

Tratar corretamente os itens de peso variável na recepção de pedidos. Isso é necessário para que as quantidades e preços sejam interpretados corretamente e integrados ao ERP, uma vez que os formatos de dados retornados pela API do iFood (em gramas e centavos) diferem dos formatos utilizados pelo ERP (quilogramas e reais).

03. SOLUÇÃO

Foi implementada uma melhoria na recepção de pedidos via API Order para tratar corretamente itens de peso variável.

Quando a tag Bag.Items[].Product.IsVariableWeight na API Order/virtualbag for True:

  1. A quantidade deve ser carregada a partir do campo Weight.Value, e este valor deve ser dividido por 1000. Isso é necessário porque o peso é retornado pelo iFood em gramas, mas o ERP trabalha com quilogramas.
  2. O preço unitário deve ser carregado a partir do campo SalePriceKg.Value, e este valor deve ser dividido por 100. Isso é necessário porque o preço é retornado pelo iFood em centavos.

Caso IsVariableWeight seja False, o comportamento atual da integração deve ser mantido.


Rotinas e Dependências Para a correta execução da funcionalidade, é necessário atualizar as seguintes dependências:

  • Objeto winthor-venda - Versão 0.38.13.3 ou superior.
  • Objeto winthor-pedido-venda - Versão mínima 1.38.3.5.
  • Serviço WSH - Versão 1.38.3.2 ou superior.
  • Layout iFood no WSH - Versão a partir de 1.38.0.20.
  • É necessário cadastrar uma Integração na Rotina 2670.

Pré-Condições Adicionais

  • Acesso à API do iFood.
  • Produtos devem estar precificados corretamente, com estoque no Winthor e cadastrados na plataforma iFood via API Ingestion - Send Items.
  • É necessário ter pelo menos um produto com peso variável cadastrado e ativo na plataforma.

1. Autenticação e Configuração da API

  1. Execute o endpoint {{baseUrl}}/oauth/userCode.
  2. Copie a URL completa (verificationUrlComplete) retornada e abra-a no navegador.
  3. Faça login com a conta cadastrada na plataforma de desenvolvedores do iFood e autorize/dê permissão para a loja. Um código será exibido.
  4. Execute o endpoint {{baseUrl}}/oauth/token. Preencha o campo authorizationCode com o código do aplicativo autorizado e o campo authorizationCodeVerifier com o valor gerado no endpoint {{baseUrl}}/oauth/userCode.
  5. Valide que o status 200 OK é retornado e o accessToken é exibido, que será usado nas chamadas subsequentes.

2. Criação do Pedido e Validação da Recepção

  1. Na plataforma iFood, crie um pedido incluindo um produto com peso variável (Exemplo: 500g e com valor de R$4,00)
  2. Na separação, informe uma quantidade pesada (Caso seja diferente do peso cadastrado, o sistema deverá alertar sobre a "Quantidade diferente da solicitada").
  3. Quando a API enviar o JSON, o campo product.isVariableWeight deve retornar com valor True.
  4. Execute o endpoint Order - virtual bag (https://merchant-api.ifood.com.br/order/v1.0/orders/:orderId/virtual-bag), passando o orderId como parâmetro. O status 200 OK deve ser retornado.
  5. Valide no corpo da resposta que product.isVariableWeight é true.
  6. Valide que o grupo bag.items.prices.value traz o valor do item de acordo com a nova pesagem (Exemplo: unitValue 480 centavos, ou R$ 4,80, para uma pesagem de 600g e preço de R$ 8,00/Kg).
  7. Acesse a Rotina 336 - Alterar Pedido de Venda.
  8. Consulte o pedido integrado 
  9. Valide no detalhe do item que a Qt.Qtde está gravada em quilogramas (Ex: 0,600000) e o Vl. Total reflete o valor recalculado (Ex: 4,80).


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!



05. ASSUNTOS RELACIONADOS