01. DADOS GERAIS
| Produto: | |
|---|
| Linha de Produto: | |
|---|
| Segmento: | |
|---|
| Módulo: | |
|---|
| 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:
- Desconto no Item (target = ITEM ou target = PROGRESSIVE_DISCOUNT_ITEM):
- O campo targetId identifica o item específico.
- O valor do desconto informado no JSON corresponde ao total para a linha, devendo ser dividido pela quantidade do item para obter o desconto unitário.
- O desconto unitário é aplicado diretamente ao preço de venda.
- Desconto de Rodapé (target = CART):
- O valor total do desconto deve ser rateado proporcionalmente ao valor total dos itens do pedido.
- Após o rateio (cálculo proporcional), o desconto unitário resultante deve ser aplicado em cada item antes do envio do preço de venda para a API B2C.
- Exemplo de Cálculo de Rateio Proporcional: Se o Item A é 60% do total bruto e o desconto total é R$ 20,00, o Item A recebe R$ 12,00 (60% de R$ 20,00) de desconto.
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çõesPara 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: - 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.
- 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.
- 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).
- Verificação do Desconto no Virtual Bag:
- 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) Verifique se o rateio proporcional foi aplicado corretamente, garantindo que o valor unitário líquido reflita o desconto rateado, conforme a lógica: 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.
05. ASSUNTOS RELACIONADOS
