Data de entrega estimada: guia completo
Instalar e configurar o módulo Data de entrega estimada: cut-off, prazos de preparação, transportadoras e feriados.
Apresentação
O DataFirefly Delivery Date mostra uma data de entrega estimada na página de produto, no carrinho e no checkout da sua loja PrestaShop 8 ou 9. O cálculo combina quatro fatores: o prazo de preparação próprio de cada produto, o intervalo de entrega da transportadora (mín./máx. dias úteis), os fins de semana e feriados, e a sua hora de cut-off diária. Antes do cut-off, uma contagem decrescente em direto indica ao cliente o tempo restante para uma expedição no próprio dia.
Adaptação para Portugal: o módulo é entregue com o fuso horário Europe/Paris e os 8 feriados nacionais franceses pré-instalados. Numa loja portuguesa, altere o fuso para Europe/Lisbon (ou Atlantic/Azores se expedir a partir dos Açores), desative os feriados franceses e registe os feriados portugueses listados na secção «Feriados» abaixo.
Instalação
- No seu back-office PrestaShop, abra Módulos → Gestor de módulos → Instalar um módulo.
- Carregue o ficheiro
dfdeliverydate.zip. - Clique em Instalar e depois em Configurar.
A instalação cria três tabelas (ps_dfdeliverydate_product, ps_dfdeliverydate_carrier, ps_dfdeliverydate_holiday), regista os hooks necessários, adiciona um separador de administração para os feriados e pré-preenche os 8 feriados nacionais franceses em modo recorrente anual.
Configuração geral
A partir de Módulos → Gestor de módulos → DataFirefly Delivery Date → Configurar, o primeiro painel reúne as definições globais:
- Hora e minuto de cut-off: a hora limite de encomenda para uma expedição no próprio dia (por defeito 14h00).
- Fuso horário de expedição: cadeia de fuso PHP, por defeito
Europe/Paris. Todos os cálculos de datas são feitos neste fuso, independentemente do fuso do servidor. UseEurope/Lisbonpara Portugal continental e Madeira. - Prazo de preparação por defeito: aplicado a todos os produtos para os quais não foi introduzido nenhum prazo específico.
- Mín./máx. de dias da transportadora por defeito: usados quando uma transportadora não tem intervalo próprio.
- Exclusão dos fins de semana: exclui sábado e domingo do cálculo. Se estiver desativada, pode excluir apenas o domingo (opção seguinte) se expedir ao sábado.
- Modo de apresentação: intervalo (entre mín. e máx.), apenas a data mais tardia, ou intervalo acompanhado da data de expedição.
- Zonas de apresentação: três interruptores independentes: página de produto, carrinho, checkout.
- Contagem decrescente em direto: ativa ou desativa o contador HH:MM:SS até ao cut-off.
Prazo de preparação por produto
Cada página de produto do back-office mostra um painel «Delivery date — preparation time». Introduza o número de dias úteis necessários antes de o produto poder ser expedido:
0: produto em stock, expedível imediatamente (elegível para expedição no próprio dia antes do cut-off);2: produto que exige dois dias úteis de preparação;14: produto fabricado ou personalizado por encomenda.
O valor é registado ao guardar o produto. No carrinho, é o produto com o prazo de preparação mais longo que determina a data de expedição da encomenda completa.
Configuração das transportadoras
O segundo painel da página de configuração lista todas as transportadoras ativas. Para cada uma, defina o mínimo e o máximo de dias úteis de entrega. Exemplos correntes em Portugal: CTT Expresso 1–2, CTT correio normal 3–5, ponto de recolha 3–6. Na página de produto e no carrinho, é usado o intervalo da transportadora por defeito da loja; no checkout, o módulo muda para a transportadora realmente selecionada pelo cliente.
Quando o PrestaShop versiona uma transportadora (novo ID criado automaticamente após alteração), o módulo copia a configuração para o novo ID: nenhuma parametrização é perdida.
Feriados
Os feriados são geridos a partir de Melhorar → Entrega → Feriados (Delivery Date). Cada entrada tem uma data, um nome, um indicador recorrente e um estado ativo/inativo:
- Recorrente: só contam o mês e o dia; o feriado é projetado automaticamente no ano corrente e no ano seguinte (ex.: Natal todos os 25 de dezembro).
- Pontual: uma data precisa única, ideal para uma ponte ou um encerramento excecional.
Os 8 feriados nacionais franceses estão pré-instalados em modo recorrente. Numa loja portuguesa, desative-os individualmente e registe os feriados nacionais portugueses: 1 de janeiro, 25 de abril, 1 de maio, 10 de junho, 15 de agosto, 5 de outubro, 1 de novembro, 1 de dezembro, 8 de dezembro e 25 de dezembro em modo recorrente; a Sexta-feira Santa e o Corpo de Deus, de data móvel, devem ser registados como feriados pontuais a cada ano. Acrescente ainda, se for o caso, o feriado municipal da sua cidade e os feriados regionais dos Açores e da Madeira.
Algoritmo de cálculo
O cálculo segue estes passos, todos expressos em dias úteis no fuso configurado:
- A data de expedição começa em hoje. Se a hora atual ultrapassar o cut-off, é adiada para amanhã.
- O prazo de preparação do produto (ou o máximo do carrinho) é adicionado em dias úteis, saltando fins de semana e feriados.
- Se a data de expedição obtida cair num dia não útil, é empurrada para o dia útil seguinte.
- O intervalo de entrega é calculado adicionando o mín. e o máx. da transportadora, sempre em dias úteis.
A menção «expedição hoje» e a contagem decrescente só aparecem se três condições estiverem reunidas: a hora atual é anterior ao cut-off, hoje é um dia útil e o prazo de preparação é zero.
Personalização dos templates
Os três widgets do front-office são renderizados por templates Smarty substituíveis. Copie o ou os ficheiros em causa de modules/dfdeliverydate/views/templates/hook/ para themes/o-seu-tema/modules/dfdeliverydate/views/templates/hook/:
product-delivery-date.tpl: página de produto;cart-delivery-date.tpl: carrinho;checkout-delivery-date.tpl: checkout e confirmação de encomenda.
Cada template recebe um array $dfdd que contém nomeadamente ships_today, min_date_label, max_date_label, ship_date_label, cutoff_ts e display_mode. O CSS está em views/css/front.css (classes com o prefixo dfdd-).
Resolução de problemas
- O widget não aparece na página de produto: verifique que a zona está ativa na configuração e que o seu tema implementa o hook
displayProductAdditionalInfo(é o caso do tema Classic e da maioria dos temas do mercado). - A contagem decrescente mostra 00:00:00: o cut-off do dia foi ultrapassado; o contador só é apresentado enquanto a expedição no próprio dia ainda é possível.
- As datas parecem desfasadas de um dia: verifique o fuso horário configurado no módulo: o cálculo usa esse fuso e não o do servidor nem o do navegador.
- Um feriado não é considerado: verifique que está ativo e, para um feriado pontual, que o seu ano corresponde ao ano em curso.
Desinstalação
A desinstalação elimina as três tabelas do módulo, todas as entradas de configuração (prefixo DFDD_), o separador de administração dos feriados e os registos de hooks. Os prazos de preparação introduzidos produto a produto são portanto definitivamente perdidos: exporte-os previamente se necessário.