01. DADOS GERAIS

Produto:

Linha de Produto:

Segmento:

Módulo:

Pedido de Venda

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


02. SITUAÇÃO/REQUISITO

A necessidade central é automatizar o fluxo de vendas originadas no iFood, garantindo que os pedidos B2C cheguem ao sistema Winthor sem a necessidade de intervenção manual.
O objetivo é consumir a API Order do iFood e utilizar o payload (o pacote de dados) recebido para alimentar a API interna do Winthor (api/wholesale/v1/orders/), que já é responsável pelo processamento de pedidos B2C.
Esta entrega inicial foca na importação do pedido base. A funcionalidade de aplicação de descontos e taxas não será contemplada nesta fase, sendo planejada para uma história futura

03. SOLUÇÃO

Foi implementado um mecanismo de integração que atua como uma ponte, buscando o pedido no iFood e convertendo os dados para o formato aceito pelo Winthor.

Fluxo de Transformação de Dados

1. Consumo da API: O sistema Winthor consome a API Order do iFood (utilizando a busca desenvolvida na ISSUE DINTVENDAS-46) para buscar o payload do pedido.

2. Mapeamento e Conversão (DE/PARA): O JSON do iFood é transformado para o layout aceito pelo Winthor.

3. Envio ao Winthor: O pedido transformado é enviado para a API de entrada do Winthor (api/wholesale/v1/orders/).

Regras Especiais de Dados

A importação garante que os pedidos sejam processados utilizando parâmetros fixos pré-configurados, independentemente do payload recebido do iFood:

Valores Fixos Configuráveis (PCINTEGRAECOMMERCE_PARAMS): Os parâmetros Código do Cliente, Código do Vendedor (RCA), Código da Cobrança e Código do Plano de Pagamento são sempre utilizados conforme configurados pelo usuário na rotina de integração.

Parâmetros Fixos do HUB (WSH): Campos que não dependem do iFood nem da configuração do usuário, como o Tipo de Venda, são definidos como "1" (fixo) nos Parâmetros WSH. Código da Filial também é um valor fixo definido pelo token.

Preço do Item: O Valor unitário (sellPrice) é tratado por uma regra especial: o valor recebido (em centavos) é dividido por 100 para ser convertido em valor real.

Identificação do Item: Para que o produto seja reconhecido no Winthor, o campo de referência do item (listOfOrderItem.productSKUERPReferenceKey) é montado pela concatenação do Código de Barras (EAN) com o Código do Produto (PLU), separados por hífen (e.x., items.EAN || "-" || items.Product.Plu).

Suporte a Layouts

A solução permite a integração utilizando vários layouts. O Layout 1 trabalha com Tabela de Preços, enqquanto o Layout 2 deve ser utilizado se a empresa trabalhar com Precificação por Embalagem/Caixa (quando os parâmetros 1973 e 2291 na Rotina 132 estão marcados como “Sim”)



Pré-requisitos e Atualizações

Para iniciar a funcionalidade, o ambiente deve estar nas versões mínimas ou superiores:

  • Atualizar o objeto winthor-venda para a versão 0.38.4.1 ou superior.
  • Atualizar o serviço WSH para a versão 1.38.5.2 ou superior.
  • Dependências necessárias: winthor-integracao-config 1.38.3.2 e winthor-integracao-2650 1.38.1.3.
  • O usuário deve possuir Permissões na Rotina 530 para a Rotina 2650.
  • A empresa iFood deve ser configurada como Multifilial no sistema.

Os produtos devem ter sido carregados na plataforma iFood via API Ingestion - send items.

Na Rotina 2650 - Configuração de Integrações, é necessário cadastrar a integração e definir os parâmetros fixos:

  1. Crie a Integração E-commerce informando o código de layout (1 ou 2) e as filiais associadas.
  2. Defina os parâmetros de utilização e requisição, que são os valores fixos (Código de Cliente Padrão, Vendedor Padrão, etc.) que serão utilizados no Winthor.

É necessário obter o accessToken para que o Winthor possa se comunicar com a API do iFood.

  1. Execute o endpoint /oauth/userCode para gerar um userCode e uma URL de verificação completa (verificationUrlComplete).
  2. Copie a URL completa e abra-a no navegador. Faça login na conta de desenvolvedor iFood e autorize o aplicativo para a loja.
  3. O iFood exibirá o código de autorização.
  4. Execute o endpoint /oauth/token, preenchendo o authorizationCode (código obtido no passo anterior) e o authorizationCodeVerifier (valor gerado no primeiro passo).

O retorno deve ser o accessToken, que será utilizado para a busca dos pedidos.

Para que um pedido seja importado, ele precisa passar pelo fluxo de separação do iFood até atingir o status SPE (Separação Finalizada).

  1. O pedido é gerado no iFood (e passa pelos status PLC e CFM).
  2. Utilize o App Separador para iniciar a separação do pedido.
  3. Confirme os itens, geralmente digitando os 6 últimos dígitos do Código de Barras (EAN) do produto.
  4. Ao clicar em Finalizar Separação, o polling do sistema iFood gera o status SPE (SEPARATION_ENDED).
  5. Somente com o status SPE o pedido está pronto para ser consumido e importado para o Winthor.

IMPORTANTE:

É fundamental que os produtos cadastrados na loja iFood DEVAM ter o mesmo Código de Barras (EAN) e Código de Produto (CODPROD/SKU) cadastrados no Winthor. Caso contrário, será gerado um erro de produto não encontrado.

Após o pedido alcançar o status SPE, o sistema Winthor tentará a importação.

Verificação da API (Postman/Virtual Bag)

Ao executar o endpoint virtual-bag com o orderId gerado, o status esperado é 200 OK.

Verificação na Rotina 2650

Na Rotina 2650, ao acessar a opção Detalhes Técnicos, a importação do pedido deve apresentar o Status S (Sucesso).

Verificação no Winthor (Rotina 336)

  • Os pedidos importados são gravados no sistema Winthor com a origem de pedido "R" (Balcão Reserva).
  • Os pedidos podem ser consultados e gerenciados na Rotina 336 - Alterar Pedido de Venda.
  • Se a configuração Multi Filial estiver ativa na Rotina 2650, pedidos originados em uma loja iFood associada à Filial 2, por exemplo, serão recebidos corretamente na Filial 2 no Winthor.


04. DEMAIS INFORMAÇÕES

Outras ações/ações relacionadas 



05. ASSUNTOS RELACIONADOS