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:
- 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.
- 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
- Execute o endpoint {{baseUrl}}/oauth/userCode.
- Copie a URL completa (verificationUrlComplete) retornada e abra-a no navegador.
- 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.
- 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.
- 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
- Na plataforma iFood, crie um pedido incluindo um produto com peso variável (Exemplo: 500g e com valor de R$4,00)
- Na separação, informe uma quantidade pesada (Caso seja diferente do peso cadastrado, o sistema deverá alertar sobre a "Quantidade diferente da solicitada").
- Quando a API enviar o JSON, o campo product.isVariableWeight deve retornar com valor True.
- 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.
- Valide no corpo da resposta que product.isVariableWeight é true.
- 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).
- Acesse a Rotina 336 - Alterar Pedido de Venda.
- Consulte o pedido integrado
- 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
- DINTVENDAS-1 - DT - API para autenticação IFOOD
- DINTVENDAS-52 - DT - Importação de Pedidos do iFood para o Winthor.