Smart Offers: documentação completa
Configurar e gerir as Ofertas combinadas no PrestaShop 1.7.8, 8 e 9: compre X receba Y, ofertas por conjunto, ofertas à escolha e lotes, aplicadas de forma automática e segura no carrinho.
As Ofertas combinadas permitem-lhe lançar no PrestaShop as quatro promoções combinadas mais comuns: compre X e receba Y do mesmo produto, uma oferta por produtos comprados em conjunto, ofertas à escolha numa seleção e lotes. O módulo adiciona os artigos de recompensa ao carrinho, aplica o desconto e mostra a oferta na página de produto e no carrinho, no PrestaShop 1.7.8, 8 e 9.
Compatibilidade
| Elemento | Suportado |
|---|---|
| PrestaShop | 1.7.8, 8.0 a 8.2, 9.0 e posteriores (um único ZIP) |
| PHP | 7.2 ou superior (aplica-se a versão exigida pelo seu PrestaShop) |
| Temas | Classic, Hummingbird e respetivos temas-filho |
| Multiloja, várias moedas, combinações | Sim |
| Idiomas | inglês, francês, espanhol, alemão, italiano, polaco, neerlandês, português |
Instalação e atualização
- No back office, abra Módulos → Gestor de módulos e clique em Carregar um módulo.
- Largue o ficheiro
dfoffers-3.0.0.zip. - O módulo aparece em Catálogo → Descontos → Ofertas combinadas, junto às regras de carrinho.
Atualização a partir da 2.x: carregue o novo ZIP por cima do anterior. As suas ofertas, produtos, traduções e lojas são mantidos. O script de atualização adiciona as novas opções, move a entrada do menu e protege as regras de carrinho já criadas pela 2.x (deixa de ser possível gerar um vale com o valor restante).
O painel
A página Ofertas mostra as ofertas em curso, as encomendas válidas dos últimos 30 dias que usaram uma oferta, a sua receita e o desconto concedido. Cada oferta mostra a sua regra em linguagem simples, o estado (em curso, agendada, terminada, desativada), as datas, as encomendas e o desconto. Pode pesquisar, filtrar por estado, ativar ou desativar com um clique, duplicar, eliminar e aplicar ações em massa.

Os quatro tipos de oferta
- Compre X, receba Y do mesmo produto: o clássico 1+1 ou 2+1. Cada produto da lista tem a sua própria oferta; deixe «qualquer combinação» para contar todas as variantes em conjunto.
- Compre produtos em conjunto, receba uma oferta: todos os produtos ativadores têm de estar no carrinho; os produtos de recompensa ficam então grátis ou com desconto.
- À escolha numa seleção: o cliente escolhe N artigos entre produtos ou combinações e os mais baratos ficam grátis ou com desconto (por exemplo, 3 por 2 em todas as canecas).
- Lote: por cada lote de X unidades de um produto, o cliente recebe Y unidades de outro produto.
Criar uma oferta
Clique em Nova oferta ou escolha um dos quatro modelos quando ainda não existe nenhuma oferta. O editor tem cinco passos e, à direita, uma pré-visualização em direto do banner de produto e um resumo da regra em linguagem simples.
- Tipo de oferta: um dos quatro cartões. Só são mostrados os campos úteis.
- Produtos e quantidades: adicione os produtos com a janela de pesquisa, por nome, referência ou ID. Um produto com combinações pode ser adicionado para todas as combinações ou para uma ou várias.
- Recompensa: grátis (100%) ou percentagem (50 para «o segundo a metade do preço»), adição automática ao carrinho ou não, repetição em cada lote completo, máximo por carrinho.
- Apresentação: nome, texto do selo e texto adicional em cada idioma, cor da oferta. A cor do texto do selo é escolhida automaticamente para continuar legível.
- Disponibilidade: estado, datas de início e fim, prioridade, grupos de clientes e lojas.


Quando os artigos de recompensa não são adicionados automaticamente, o cliente adiciona-os e o desconto aplica-se assim que estão no carrinho; o carrinho lembra-o então da recompensa à espera.

O banner da página de produto
Em cada produto abrangido, um banner explica a oferta com os produtos a comprar e a recompensa, o preço habitual riscado junto aos artigos grátis ou com desconto, a data de fim da oferta e o estado «Aplicada no seu carrinho» assim que o cliente a obtém. Adapta-se a colunas estreitas e ao telemóvel.




O carrinho
Por baixo das linhas do carrinho, o cliente vê as ofertas aplicadas com o valor poupado e os artigos recebidos. Um selo («Grátis ×1», «1 a -50%») assinala as linhas com unidades com desconto, no carrinho e no resumo da encomenda. O bloco atualiza-se após cada alteração de quantidade, tanto no Classic como no Hummingbird.

Está quase indica o que falta para desbloquear uma oferta («Adicione 1 × T-shirt») e Tem uma recompensa à sua espera lembra o cliente de adicionar uma recompensa que não é adicionada automaticamente.

Se o cliente remover uma oferta, ela não volta a ser imposta: a promoção fica de parte e aparece um botão Voltar a adicionar. Num «compre X, receba Y» do mesmo produto, as unidades removidas são primeiro as grátis: o cliente nunca perde uma unidade paga.

Definições
- Posição do banner: por baixo do botão Adicionar ao carrinho (recomendado), logo abaixo do preço, por baixo das imagens, no bloco de garantias ou em largura total por baixo da descrição.
- Banner compacto, preços no banner e data de fim.
- Carrinho: mostrar o que falta para desbloquear uma oferta, selo nas linhas do carrinho.
- Registo de depuração: escreve cada cálculo do carrinho em Parâmetros avançados → Registos; deixe desativado em produção.
- Manutenção: número de regras de carrinho criadas pelo módulo e limpeza das de carrinhos abandonados.

Como funciona o motor
- Em cada alteração do carrinho (e ao abrir o carrinho ou o checkout), o módulo lê o carrinho e distingue as unidades pagas pelo cliente das que ele próprio adicionou.
- As ofertas são avaliadas por prioridade (1 primeiro). Uma unidade usada por uma oferta não é reutilizada por outra: o mesmo artigo nunca tem desconto duas vezes.
- Para cada oferta aplicável, as recompensas em falta são adicionadas (se o escolheu) e é criada ou atualizada uma regra de carrinho por produto com desconto (código
DFOFFER_…). - As ofertas que deixam de se aplicar são retiradas: unidades adicionadas retiradas, regras de carrinho eliminadas.
Segurança e impostos
- Tudo é calculado no servidor a partir do carrinho e das suas ofertas; nada do que o navegador envia entra num preço.
- Cada regra de carrinho está limitada ao produto com desconto: nunca pode exceder o que o cliente tem desse produto no carrinho, e ao desconto aplica-se a taxa de IVA desse produto, também na fatura.
- As regras nunca geram um vale com o valor restante, não aparecem em «Os meus vales» e um código copiado de outro carrinho é removido antes do pagamento.
- Uma recompensa esgotada ou desativada não tem desconto. Uma encomenda já feita nunca é alterada.
- As ações do back office respeitam as permissões do separador por funcionário (ver, adicionar, editar, eliminar).
As regras de carrinho dos carrinhos abandonados há 30 dias são removidas automaticamente uma vez por dia ao abrir o módulo; as usadas numa encomenda são sempre mantidas para a sua contabilidade.
Ajuda e resolução de problemas
O separador Ajuda do módulo explica o funcionamento e responde às perguntas mais frequentes.
- O banner não aparece: verifique se a oferta está ativada, dentro das datas, disponível para o grupo de clientes e a loja, e se o produto está ativo. Depois experimente outra posição do banner: alguns temas não chamam todos os hooks.
- Um dos seus vales é recusado com uma oferta: um vale definido como «não acumulável com outras regras de carrinho» pode recusar a combinação; ajuste-o em Catálogo → Descontos.
- Falta o selo nas linhas do carrinho: o seu tema tem de incluir
{hook h='displayProductPriceBlock' product=$product type="unit_price"}ou{hook h='displayCartExtraProductActions' product=$product}no template da linha do carrinho.

Detalhes técnicos
- Hooks: displayProductAdditionalInfo (ou a posição escolhida), displayProductPriceBlock, displayAfterProductThumbs, displayReassurance, displayFooterProduct, displayShoppingCartFooter, displayCartExtraProductActions, actionCartSave, actionFrontControllerSetMedia, actionObjectProductDeleteAfter, actionObjectCombinationDeleteAfter.
- Tabelas: ps_dfoffers_offer, _offer_lang, _trigger, _reward, _shop, _cart_auto, _rule, _cart_declined.
- Templates que pode substituir no seu tema:
views/templates/hook/product-banner.tpl,cart-offer.tpl,cart-line-gift.tpl. As classes CSS usam o prefixodfoffers-. - Sem override, sem tarefa cron, sem serviço externo. A desinstalação elimina as ofertas e as regras de carrinho não usadas; as usadas em encomendas são mantidas.