Cria uma promoção
POST/sku/promotion
Cria uma promoção do tipo informado em IDTypeSkuPromotion. Os campos exigidos e ignorados variam por tipo — o body abaixo descreve o conjunto completo, mas o backend só usa o que faz sentido para o tipo escolhido e zera o resto.
Regras por tipo
Tipo 1 — Regular
Desconto em % ou R$ aplicado a todos os produtos ou apenas aos que casam com as restrições (StockKeepingUnitPromotionCategories, StockKeepingUnitPromotionBrands, StockKeepingUnitPromotionProducts, StockKeepingUnitPromotionSkus).
- Use um entre
PercentualDiscountValue(fração0–1, ex.:0.10= 10%) ouNominalDiscountValue(R$). MinOrderValue/MaxOrderValue(opcionais): só vale quando o total do pedido cai nesse intervalo.- Para cada restrição há um flag de inclusão/exclusão (
BrandsIncluded,CategoriesIncluded,ProductsIncluded,SkusIncluded— default1= iguais a;0= diferentes de). Quando a lista correspondente é vazia, a restrição não filtra.
Tipo 2 — Compre e Ganhe
Cliente compra MinimumQuantityBuyTogether unidades dos itens em StockKeepingUnitPromotionSkus e ganha (grátis, valor zero) os itens listados em StockKeepingUnitPromotionSkusBuyTogether.
StockKeepingUnitPromotionSkusobrigatório (itens que devem ser comprados).StockKeepingUnitPromotionSkusBuyTogetherobrigatório (itens de brinde).MinimumQuantityBuyTogetherobrigatório e > 0.- Campos de desconto/range/restrição são ignorados.
Tipo 3 — Desconto Progressivo
Quanto mais unidades, maior o desconto. Cada faixa em StockKeepingUnitPromotionProgressive tem Quantity (a partir de quantas unidades vale) e DiscountPercent OU FixedPrice (preço unitário fixo).
- Itens elegíveis:
StockKeepingUnitPromotionSkus(SKUs) OUStockKeepingUnitPromotionProducts(produtos pai). Quantityprecisa ser único entre as faixas (não pode ter duas faixas com mesma quantidade).- Combine com
ExactlyQuantity=1(no cabeçalho) para aplicar a faixa apenas quando a quantidade for múltipla exata (4, 8, 12... para faixa de 4).
Tipo 4 — Compre Junto
Duas listas com descontos separados. Compre MinimumQuantityBuyTogether unidades da lista principal (StockKeepingUnitPromotionSkus) com desconto PercentualDiscountValue; ao adicionar itens da lista complementar (StockKeepingUnitPromotionSkusBuyTogether), eles recebem PercentualDiscountValueBuyTogether.
- Todos os 4 campos são obrigatórios.
PercentualDiscountValueePercentualDiscountValueBuyTogetherem fração0–1.
Flags do cabeçalho (todos os tipos)
Cumulative— quando1, pode acumular com outras promoções de tipos diferentes no mesmo item (regra de prioridade depois do desempate por maior desconto).CumulativeManualPrice— quando1, aplica o desconto mesmo se o item já tem um preço manual (preço de venda diferente do preço de lista). Quando0, a promoção é descartada se houver desconto manual.AllowDifferentItemQuantitySum— quando1, aMinimumQuantityBuyTogether(Compre e Ganhe / Compre Junto) ou aQuantityda faixa (Progressivo) considera a soma de quantidades de SKUs diferentes que entram na promoção. Quando0, só conta o mesmo SKU.ExactlyQuantity— quando1(Progressivo), aplica a faixa só quando a quantidade for múltiplo exato; quando0, aplica assim que a quantidade atinge a faixa (com lógica greedy decrescente).OnlyRegisteredConsumer— quando1, a promoção só é aplicada se o pedido temIDConsumerinformado (cliente cadastrado).DateFrom/DateTo— vigência. Para promoção "para sempre", envieDateFrom = "1900-01-01"eDateTo = "4000-01-01".
Vínculos opcionais
StockKeepingUnitPromotionTypeOrders— lista de tipos de pedido (TypeOrder.Status=1) em que a promoção vale. Vazio = vale para todos.StockKeepingUnitPromotionSalesPolicies— lista de políticas comerciais aceitas. Vazio = vale para todas.
Side-effects
- Cache Redis
StockKeepingUnitPromotion:<IDCompany>é regravado com todas as promoções não excluídas/inativas da empresa, ordenadas por tipo → maior % → maior R$. - Cache Redis
StockKeepingUnitPromotion:<IDCompany>:<id>é regravado com o detalhe (TTL 7 dias). - O nome (
StockKeepingUnitPromotionName) é gravado sem acentos (normalização NFD).
A resposta é o detalhe completo da promoção criada (mesmo formato de GET /sku/promotion/{id}).
Request
Responses
- 200
- 400
- 500
Promoção criada. Retorna o detalhe (array com 1 item).
Erros de validação (prefixo [BadRequest]):
Empresa não existeTipo de promoção não existePromoção sem regra de cadastro(tipo diferente de 1/2/3/4)Data de precisa ser maior que data atéTipo pedido(s) não localizada(s): <ids>Politica(s) comercial não localizada(s): <ids>Marca(s)/Categoria(s)/Produtos(s)/Sku(s) não localizada(s): <ids>(valida que pertencem à empresa e estão com status ativo)Quantidade mínima é obrigatória na promoção compre e ganheQuantidade mínima é obrigatória na promoção compre juntoPercentual desconto lista um é obrigatória(Compre Junto)Percentual desconto lista dois é obrigatória(Compre Junto)Obrigatório informar itens/Obrigatório informar itens brinde/Obrigatório informar itens lista doisObrigatório informar quantidade e % desconto(Progressivo sem faixas)Campo quantidade precisa ser único(Progressivo com faixas duplicadas)Erro ao criar promoção
Erro interno (prefixo Error:).