dfomnibus-woo: conformidade com a diretiva Omnibus no WooCommerce
Instalação, motor de cálculo do preço de referência, captura automática, definições, painel de defesa, planeador de congelamento, importação e resolução de problemas do plugin dfomnibus-woo.
O plugin DataFirefly Omnibus Compliance for WooCommerce coloca a sua loja em conformidade com a diretiva europeia 2019/2161, dita Omnibus, aplicável desde 28 de maio de 2022. Captura o histórico de preços desde a ativação, calcula o preço de referência legal aplicando as regras que quase ninguém implementa, e fornece-lhe o dossiê a entregar em caso de fiscalização.
Compatibilidade: WordPress 6.2 no mínimo, WooCommerce 8.0 no mínimo, PHP 8.0 no mínimo (compatível com 8.1, 8.2 e 8.3). HPOS declarado compatível. Produtos simples e variáveis, multimoeda, WPML e Polylang. Sem dependências externas e sem CDN.
Instalação
- Descarregue o arquivo
dfomnibus-woo-1.0.0.zipa partir da sua área de cliente DataFirefly. - Na administração do WordPress, vá a Plugins, Adicionar plugin, Carregar plugin e depois ative o plugin. O WooCommerce tem de estar ativo.
- A captura arranca de imediato: são criadas três tabelas e é agendado um primeiro instantâneo para os minutos seguintes à ativação.
- Abra WooCommerce, Omnibus Compliance para configurar a apresentação e ativar a sua licença.
Três tabelas criadas: wp_dfwomni_price_history para os registos de preços, wp_dfwomni_display_log para o registo das menções apresentadas, e wp_dfwomni_license_cache para a cache de licença. O prefixo wp_ é automaticamente substituído pelo seu.
O motor de cálculo
O cálculo do preço de referência está isolado num motor sem dependência do WordPress, coberto por testes unitários. As regras são avaliadas por esta ordem.
1. Séries de reduções sucessivas
Quando as promoções se encadeiam sem que o produto regresse ao preço não reduzido, a referência legal continua a ser o preço praticado antes da primeira redução da série. Nunca é recalculada a cada nova promoção. O plugin deteta esses encadeamentos, congela a referência e apresenta a explicação no back-office, por exemplo «referência congelada desde 12 de outubro, promoções sucessivas em curso».
Uma série tem um limite temporal. Acima de 60 dias por predefinição, ajustável entre 30 e 120 dias, considera-se que o preço reduzido passou a ser o preço normal do produto: a regra geral dos 30 dias volta a aplicar-se, e o relatório de conformidade assinala uma promoção permanente.
2. Caso normal, janela ancorada
O preço de referência é o mais baixo praticado no intervalo que vai de 30 dias antes do início da redução até ao início da redução. A janela está ancorada no arranque da promoção: não desliza dia a dia enquanto a promoção decorre, ao contrário de um mínimo deslizante que acabaria por engolir o próprio preço promocional.
3. Produto recentemente colocado à venda
Num produto colocado à venda há menos de 30 dias, a referência é o preço mais baixo desde a colocação à venda, e a menção apresentada na loja indica a duração real de comercialização, como o texto exige.
4. Dados insuficientes
Se o histórico capturado não cobrir a janela legal de um produto que não é recente, não é devolvida qualquer referência e nada é apresentado. Uma referência nunca realmente capturada não deve ser apresentada nem reconstruída à posteriori.
Consequência prática: instale o plugin antes da sua época promocional, e não no próprio dia. O histórico não se reconstrói retroativamente, é a sua prova e só pode ser constituído com antecedência.
Captura automática
Dois mecanismos trabalham em paralelo.
- Instantâneo diário: a tarefa
dfwomni_daily_snapshotpercorre o catálogo e regista o estado dos preços. Se a última passagem tiver mais de 24 horas, é agendada automaticamente uma recuperação pontualdfwomni_catchup_snapshot. - Captura por evento: cada alteração real de preço é registada, venha ela do editor de produto, de uma edição rápida ou em massa, de uma importação CSV, de uma atualização REST ou CRUD, de uma ferramenta de repricing, ou do início e do fim das promoções agendadas.
Uma linha de histórico corresponde a uma alteração de preço real, e os duplicados são descartados. Os preços são guardados em bruto com o respetivo contexto fiscal e a sua moeda, nunca o preço já formatado.
Tornar o cron fiável numa loja de baixo tráfego
O WP-Cron só é executado quando passa um visitante. Numa loja pouco visitada, configure um verdadeiro cron de sistema:
*/15 * * * * wget -q -O /dev/null "https://a-sua-loja.com/wp-cron.php?doing_wp_cron"
O painel mostra um aviso se o último instantâneo tiver mais de 48 horas.
Definições
Separador Definições da página WooCommerce, Omnibus Compliance.
- Apresentar a referência em: apenas produtos em promoção, o que corresponde ao mínimo legal, ou todos os produtos com histórico, modo transparência reservado à licença Pro.
- Posição da linha: logo por baixo do preço, ou depois do bloco de preço no resumo do produto. Escolha a segunda opção se o seu tema reescrever a apresentação do preço.
- Gráfico de 30 dias: propõe a curva de preços na ficha de produto, num canvas nativo de cerca de 3 KB, sem script externo. Funcionalidade Pro.
- Textos personalizados: dois modelos, a linha padrão com o marcador
{price}e a linha de produto recente com{price}e{days}. Deixe vazios para usar os textos traduzidos fornecidos em francês, inglês, alemão, espanhol e italiano. Funcionalidade Pro. - Exclusões: identificadores de produtos e de categorias que nunca apresentam a menção, útil para preços negociados ou B2B.
- Limiares de auditoria: número de dias a partir do qual uma promoção é assinalada como permanente, 60 por predefinição, e idade máxima de uma série de reduções sucessivas, 60 por predefinição.
- Na desinstalação: caixa de seleção para eliminar também o histórico capturado. Desassinalada por predefinição, e isso é propositado.
Painel
O separador Painel reúne três blocos.
Saúde da captura
Número de registos capturados, número de produtos acompanhados e data do último instantâneo diário, com o alerta referido acima se o cron deixar de passar.
Relatório de conformidade
Auditoria calculada em direto sobre os seus dados mais recentes, que lista os produtos cuja apresentação atual poderia ser contestada numa fiscalização. Quatro estados:
- Referência em falta: o produto está em promoção sem referência capturada, e o desconto é apresentado sem preço anterior defensável.
- Promoção permanente: a promoção decorre há demasiado tempo, o preço reduzido passou a ser o preço normal e o desconto anunciado torna-se contestável.
- Produto recente: informação, a apresentação indica corretamente a duração real de comercialização.
- Referência congelada (série): promoções sucessivas em curso, a referência não será recalculada enquanto o produto não regressar a um preço não reduzido.
Exportações com data e hora
Duas exportações CSV geradas em fluxo, com nome que inclui o domínio e a data e hora em UTC:
- Histórico de preços: a totalidade dos registos capturados.
- Registo de apresentação: que referência foi realmente servida, quando, e em que ficha de produto.
O relatório de conformidade, as exportações e o registo de apresentação fazem parte da licença Pro. A captura, essa, nunca é limitada.
Histórico de preços
O separador Histórico de preços mostra os registos produto a produto, com a variação, a moeda, o preço regular, o preço promocional, o preço efetivo e a origem do registo. Quando uma referência está congelada, são indicadas a data e a razão do congelamento.
Planeador de congelamento
A sua primeira promoção bloqueia a referência da seguinte: qualquer preço praticado nos 30 dias que antecedem uma data-chave reduz o desconto que poderá anunciar nesse dia. O planeador raciocina ao contrário.
Escolha uma data comercial na lista fornecida (Black Friday, Cyber Monday, Natal, saldos de inverno e de verão, Dia dos Namorados, Dia da Mãe e Dia do Pai) ou introduza uma data personalizada. O planeador indica-lhe a data-limite em que a sua última promoção tem de terminar para preservar o desconto pretendido, e o período durante o qual cada preço praticado alimenta a janela legal. Um calendário subscritível reúne todos os prazos. Funcionalidade Pro.
Importação de um histórico existente
Se outra extensão já registou os seus preços, esses dados são insubstituíveis. O separador Importação analisa a estrutura das tabelas da sua base de dados, sem se basear no nome da extensão, e identifica as que contêm um identificador de produto, um preço e uma data, com deteção opcional de uma coluna de variação. As tabelas de sistema do WooCommerce e do Action Scheduler são ignoradas.
A tabela mostra cada tabela candidata, as colunas detetadas e o número de linhas. A importação é idempotente: os duplicados e as linhas inutilizáveis são contados em separado e não poluem o seu histórico. Funcionalidade Pro.
Licença
O separador Licença mostra o plano em curso, a chave mascarada e a data da última verificação. Introduza a chave recebida por e-mail após a compra, no formato DFWOM-PRO-XXXX-XXXX-XXXX-XXXX, e clique em Ativar.
Compra única, 12 meses de atualizações, reembolso em 30 dias, código-fonte não cifrado, uma loja por licença. Se o servidor de licenças estiver inacessível, o plugin conserva todas as funcionalidades durante 7 dias e depois regressa ao nível Free, sem nunca estragar a sua loja. A captura do histórico nunca para, seja qual for o plano.
O que a licença Pro desbloqueia
- Apresentação em todos os produtos com histórico, e não apenas nos produtos em promoção
- Textos de menção personalizados
- Gráfico de preços a 30 dias
- Painel de defesa, relatório de conformidade e registo de apresentação
- Exportações CSV com data e hora
- Planeador de congelamento
- Importação de um histórico existente
Mantêm-se sempre ativos, seja qual for a licença: a captura completa do histórico, a apresentação da menção nos produtos em promoção e a consulta do histórico no back-office.
Resolução de problemas
Não aparece qualquer menção
Verifique por esta ordem:
- O produto está mesmo em promoção? Por predefinição, a menção só aparece nos produtos com desconto.
- O histórico capturado cobre a janela exigida? Numa instalação recente, a resposta é muitas vezes não, e é o comportamento pretendido.
- O produto ou a categoria constam das exclusões?
- O painel assinala um instantâneo demasiado antigo? Se sim, torne o cron fiável.
A menção aparece num sítio inesperado
Mude a posição para depois do bloco de preço no resumo do produto. Alguns temas reescrevem a apresentação do preço e absorvem a inserção feita logo por baixo dele.
O último instantâneo tem mais de 48 horas
O WP-Cron depende do tráfego. Configure o cron de sistema indicado acima, ou verifique que a constante DISABLE_WP_CRON não está ativa sem um cron de sistema em substituição.
O gráfico não aparece
O gráfico faz parte da licença Pro e tem de ser ativado nas definições. Verifique também que o histórico do produto contém pontos suficientes nos últimos 30 dias.
A importação não deteta nenhuma tabela
A deteção é estrutural: uma tabela candidata tem de conter uma coluna de identificador de produto, uma coluna de preço decimal e uma coluna de data. As tabelas nativas do WooCommerce e do Action Scheduler são propositadamente afastadas.
FAQ
A referência é recalculada a cada nova promoção?
Não, e é o ponto mais mal compreendido da regra. Enquanto o produto não regressar a um preço não reduzido, a referência continua a ser o preço praticado antes da primeira redução da série.
Os produtos variáveis são suportados?
Sim. A referência é calculada por variação e não ao nível do produto principal, e a menção atualiza-se quando o visitante muda de variação.
O que acontece na desinstalação?
As definições, a cache de licença e a respetiva tabela são eliminadas. O histórico de preços e o registo de apresentação são conservados por predefinição, porque estes dados não podem ser reconstituídos. Assinale explicitamente a opção de limpeza nas definições se quiser apagar tudo.
O plugin torna a loja mais lenta?
Não. A captura escreve uma pequena linha por alteração de preço real, a apresentação lê um intervalo indexado curto com cache, e o gráfico representa cerca de 3 KB de código nativo sem qualquer pedido externo.
O plugin trata o multimoeda?
Sim. Cada registo leva a sua moeda, pelo que o histórico nunca é convertido à posteriori.
Changelog
1.0.0 – 10 de agosto de 2026
- Versão inicial
- Dupla captura: instantâneo diário com recuperação e captura por evento das alterações de preço
- Preço de referência sobre janela de 30 dias ancorada no início da redução
- Regra das reduções sucessivas com congelamento da referência no preço anterior à série
- Menção adaptada aos produtos recentemente colocados à venda, com duração real de comercialização
- Planeador de congelamento e calendário de prazos
- Painel de defesa, relatório de conformidade, exportações com data e hora e registo de apresentação
- Importação estrutural de um histórico de preços existente
- Referência por variação, registos multimoeda
- Traduções FR, EN, DE, ES, IT, compatibilidade com WPML e Polylang, compatibilidade HPOS