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-116


02. SITUAÇÃO/REQUISITO

A necessidade é garantir a correta aplicação dos descontos patrocinados pela loja (merchant) nos itens de um pedido importado da plataforma iFood.

O grupo benefits no payload identifica os descontos existentes no pedido. Conforme a documentação oficial do iFood e testes realizados, apenas os descontos cujos grupos contenham o campo Benefits.Sponsorships.Liability com valor "PARTNER" ou "CHAIN" devem ser considerados como desconto e aplicados no preço dos itens.

Descontos com liability igual a 'OWN' ou 'EXTERNAL' devem ser tratados como tipo de pagamento, pois o iFood fará o repasse ou subsídio desses valores para a loja.

Descontos aplicados na taxa de entrega (DELIVERY_FEE) não serão considerados nesta entrega, devido à falta de clareza sobre como tratá-los.

03. SOLUÇÃO

Foi implementada a lógica de identificação e aplicação dos descontos patrocinados pelo parceiro (PARTNER ou CHAIN) nos itens do pedido importado, garantindo que o preço de venda final (PVENDA) registrado no Winthor reflita o valor líquido do desconto.

Os seguintes tipos de targets de desconto foram implementados:

  1. Desconto no Item (target = ITEM ou target = PROGRESSIVE_DISCOUNT_ITEM):
  2. Desconto de Rodapé (target = CART):

O JSON final enviado para a API B2C deve conter o preço unitário já líquido do desconto aplicado.



Pré-requisitos e Atualizações

Para utilizar a funcionalidade, é necessário garantir que as seguintes rotinas e dependências estejam atualizadas:

Tipo

Nome

Versão Mínima

Objeto

winthor-venda

0.38.13.3 ou superior

Objeto

winthor-pedido-venda

1.38.3.5 ou superior

Serviço

WSH

1.38.3.2 ou superior

Layout

Layout iFood

1.38.0.20 ou superior no WSH

Rotina

Rotina 2670

É necessário cadastrar uma Integração

Pré-condições Adicionais:

  • Acesso à API do iFood.
  • Produtos precificados corretamente, com estoque no Winthor e cadastrados na plataforma iFood via API Ingestion - Send Items.
  • É necessário ter ao menos uma promoção de cada tipo (Desconto no Item, Desconto no Pedido, Leve X Pague Y) cadastrada na plataforma iFood e ativada.

A aplicação dos descontos ocorre durante o processo de recepção do pedido do iFood, refletindo-se nos registros de venda do Winthor (e.g., Rotina 336).

Para homologação do comportamento:

  1. Autenticação na API iFood: Realize a autenticação seguindo os passos descritos:
    • Execute o endpoint {{baseUrl}}/oauth/userCode para obter o userCode e o authorizationCodeVerifier.
    • Copie a URL completa (verificationUrlComplete), abra no navegador, faça login com a conta iFood de desenvolvedor e autorize/dê permissão para a loja.
    • Execute o endpoint {{baseUrl}}/oauth/token preenchendo o authorizationCode (código retornado após autorização) e o authorizationCodeVerifier (valor gerado no primeiro passo).
    • Obtenha o accessToken retornado com Status 200.
  2. Cadastro de Promoções: Certifique-se de que as promoções patrocinadas pela loja (Liability = PARTNER ou CHAIN) estejam cadastradas e ativas no portal iFood (https://portal.ifood.com.br/promotions/all).
    • Existem três tipos principais de cadastro: Leve X Pague Y, Desconto no pedido (cupons), e Desconto no Item.
  3. Criação e Envio do Pedido no iFood:
    • Crie um pedido que contenha itens elegíveis para o desconto desejado (Item ou Carrinho).
    • Para testes, podem ser usados os cupons VOUCHER_REST (emula descontos patrocinados pela loja) e VOUCHER_IFOOD (emula descontos patrocinados pelo iFood).
  4. Verificação do Desconto no Virtual Bag:
  5. Importação e Verificação no Winthor:
    • Após a importação do pedido para o Winthor, acesse, por exemplo, a Rotina 336 - Alterar Pedido de Venda.
    • Valide o preço de venda (PVENDA) dos itens e o valor total na linha do item.

Exemplo de Validação (Desconto de Rodapé - target = CART)

Rateio é aplicado proporcionalmente de forma que os produtos de maior valor tenham um desconto maior em relação aos demais, conforme a lógica abaixo:

Produto

Vl. unitário (Bruto)

% sobre o total

Desconto Rateado (R$ 10,00 total)

Vl. unitário Líquido

A (3 un)

9,99

83,38%

R$ 8,34 (total)

R$ 7,21

B (2 un)

2,99

16,62%

R$ 1,66 (total)

R$ 2,16

Com isso, o valor do pedido deve refletir o somatório dos totais líquidos dos itens - R$ 25,95 (não adicionando a taxa de entrega).


04. DEMAIS INFORMAÇÕES

Cálculo e Filtro de Benefícios:

Para saber o valor do item com desconto, deve-se obter o valor de targetId do benefício para correlacionar com o item (bag.items com uniqueId de mesmo valor). O valor no item (prices.grossValue.value) está sem desconto, e o valor do desconto (sponsorships.amount.value do benefício) deve ser subtraído.

É necessário filtrar os benefícios em que o target seja ITEM e que possuam somente 1 elemento em sponsorships, e que este possua liability como PARTNER ou CHAIN.

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