PS PrestaShop Intermédio

Aluguer de Produtos: guia completo

Instalar, configurar e explorar o aluguer de produtos: calendário de disponibilidade, caução, tarifa decrescente ou em percentagem, pedido de reserva sem pagamento, packs e API REST, com acompanhamento das reservas para PrestaShop 8 e 9.

Atualizado Versão do módulo 1.5.7

Apresentação

O módulo Aluguer de Produtos (dfproductrental) acrescenta um modo de aluguer ativável produto a produto na sua loja PrestaShop. Na ficha de um produto alugável, o cliente escolhe um intervalo de datas num calendário que acinzenta automaticamente os dias já reservados, e o preço é calculado ao dia segundo uma tarifa decrescente por escalões, em montantes fixos ou em percentagem do preço de venda. O módulo gere uma caução por produto, enquadra a duração com um mínimo e um máximo de dias, aceita pedidos de reserva sem pagamento, sincroniza a disponibilidade dos packs e dos seus componentes, expõe uma API REST para os seus programas de gestão, e acompanha cada reserva a partir de um back-office dedicado, do carrinho até à devolução do artigo.

Ideal para material, mobiliário, equipamento para eventos, instrumentos, veículos ou ferramentas: qualquer artigo que se alugue em vez de se vender de uma vez por todas. O modo de aluguer ativa-se apenas nos produtos que designar, sem desvirtuar o resto do seu catálogo.

Compatibilidade

  • PrestaShop 8.0 a 9.x
  • PHP 7.4 a 8.3
  • Monoloja e multiloja
  • 5 idiomas: FR, EN, ES, DE, IT (o português traduz-se em Internacional > Traduções; os modelos de e-mail de pedido existem nesses cinco idiomas, acrescente uma pasta mails/pt/)
  • Tema Classic e temas personalizados
  • Nenhuma dependência: sem Composer, autoloader PSR-4 manual, calendário flatpickr incorporado localmente

Instalação

  1. No back-office, abra Módulos > Gestor de módulos.
  2. Clique em Instalar um módulo e selecione o ficheiro dfproductrental.zip.
  3. Depois de instalado, clique em Configurar.

Na instalação, o módulo cria as suas três tabelas (df_rental_product, df_rental_tier, df_rental_booking), regista os seus hooks, inicializa as suas definições por defeito e acrescenta duas entradas sob o menu Catálogo: Aluguer – Produtos e Aluguer – Reservas. A atualização a partir de uma versão 1.2.0 ou 1.3.0 é suportada por scripts de upgrade tolerantes: instale simplesmente o novo ZIP por cima.

Definições gerais

A página de configuração do módulo reúne as opções globais aplicadas por defeito a todos os produtos alugáveis.

  • Prazo de intervalo (dias): número de dias bloqueados depois de cada devolução, para preparar, limpar ou controlar o artigo antes do aluguer seguinte. Valor global, sobreposto ao nível de cada produto.
  • Horizonte de reserva (dias): limita até que data no futuro um cliente pode reservar (365 dias por defeito).
  • Expiração dos carrinhos pendentes (minutos): duração após a qual uma reserva não confirmada liberta as suas datas (60 minutos por defeito).
  • Integrar a caução na linha do carrinho: quando está ativa, a caução é acrescentada ao preço da linha e devolvida por nota de crédito na devolução.
  • Ocultar o botão « Adicionar ao carrinho » nativo: nos produtos em aluguer, oculta o botão de compra clássico a favor do botão de reserva.
  • Caução por defeito: montante proposto por defeito na criação de um novo produto alugável.
  • Sincronização dos packs: ativa ou desativa a repercussão automática das reservas de packs nos seus componentes alugáveis (ativada por defeito).
  • Expiração dos pedidos (horas): para lá deste prazo, um pedido de reserva sem resposta é anulado e as suas datas são libertadas (0 = nunca, valor por defeito).
  • API: interruptor de ativação, token de leitura-escrita e token só de leitura, cada um regenerável num clique. A documentação dos endpoints aparece diretamente sob este painel.

Configurar um produto alugável

Vá a Catálogo > Aluguer – Produtos e depois Adicionar.

  • Produto: selecione o produto do seu catálogo a tornar alugável.
  • Ativo: ativa ou suspende o aluguer neste produto.
  • Modo de tarifação: montantes fixos, ou percentagem do preço de venda do produto (ver mais abaixo).
  • Preço base ao dia: tarifa diária aplicada quando nenhum escalão corresponde à duração escolhida.
  • Caução: montante da caução exigida para este produto.
  • Duração mínima / máxima (dias): enquadra o intervalo de datas que o cliente pode selecionar.
  • Unidades disponíveis: número de exemplares que possui. Uma data só é bloqueada quando todas as unidades estão alugadas em simultâneo.
  • Prazo de intervalo: deixe o valor global ou defina um intervalo específico para este produto.
  • Autorizar o pedido sem pagamento: mostra um botão de pedido de reserva na ficha de produto, além ou em vez do percurso de encomenda clássico.
  • Os pedidos bloqueiam o stock: determina se os pedidos pendentes deste produto reservam as datas enquanto não decidir.

Escalões de tarifa decrescente

Sob o formulário, acrescente tantos escalões quantos forem necessários. Cada escalão é definido por um dia mínimo, um dia máximo e um preço ao dia.

O módulo aplica o escalão cujo intervalo contém a duração escolhida. Um escalão cujo dia máximo é 0 é considerado ilimitado. Se nenhum escalão corresponder, aplica-se o preço base ao dia.

Exemplo: 39 €/dia de 1 a 3 dias, 32 €/dia de 4 a 7 dias, 26 €/dia a partir de 8 dias (dia máximo a 0).

Modo percentagem

Em modo percentagem, o preço base ao dia, a caução e os escalões deixam de ser montantes em moeda e passam a ser percentagens do preço de venda sem impostos do produto. Um produto vendido a 1000 € com uma caução a 10 exige assim 100 € de caução; uma tarifa diária a 2 dá 20 € por dia. Os montantes seguem automaticamente os preços do seu catálogo: é a forma mais rápida de aplicar uma grelha tarifária uniforme a um grande número de produtos alugáveis.

Utilização do lado da loja

O calendário de disponibilidade

Na ficha de produto aparece um seletor de intervalo de datas. Os dias já reservados são automaticamente acinzentados e não selecionáveis, tal como os dias de intervalo depois de cada devolução. O cliente escolhe uma data de início e uma data de fim dentro dos limites de duração que fixou.

O cálculo do preço

Assim que é selecionado um intervalo válido, um resumo detalha o número de dias, o preço ao dia aplicado (segundo o escalão), o total do aluguer, a caução e o total geral. O cliente sabe exatamente o que paga antes de adicionar ao carrinho.

A reserva

O botão Reservar estas datas adiciona o aluguer ao carrinho. O preço de aluguer é injetado através de um desconto específico ligado ao carrinho: o preço de origem do produto fica intacto no catálogo e para todas as outras vendas. É criada uma reserva no estado pendente que bloqueia as datas escolhidas.

Se a encomenda não for validada dentro do prazo de expiração configurado, o carrinho expira e as datas são automaticamente libertadas para os outros clientes. Na validação da encomenda, a reserva passa a confirmada e associa-se ao cliente e à encomenda.

Pedido de reserva sem pagamento

Nos produtos em que a opção Autorizar o pedido sem pagamento está ativa, a ficha de produto mostra um botão Pedir uma reserva. O cliente escolhe as suas datas e a sua quantidade como numa reserva clássica, e preenche depois os seus contactos: os clientes autenticados são identificados automaticamente, os visitantes introduzem o seu nome, o seu e-mail e, se quiserem, o seu telefone. Um campo de mensagem livre acompanha o pedido.

O pedido aparece em Catálogo > Aluguer – Reservas com o estado Pedido pendente. Estão disponíveis duas ações em cada linha:

  • Aceitar: o módulo volta a verificar a disponibilidade do período (pedidos concorrentes incluídos) e passa a reserva a confirmada. O cliente recebe um e-mail de aceitação.
  • Recusar: a reserva passa a recusada, as suas datas são libertadas e o cliente recebe um e-mail de recusa.

Três e-mails automáticos acompanham o percurso: um aviso de receção ao cliente no momento do pedido, uma notificação ao comerciante com os contactos e a mensagem do cliente, e depois o e-mail de decisão. Os modelos existem nos cinco idiomas do módulo e personalizam-se como qualquer e-mail PrestaShop.

O bloqueio do stock pelos pedidos regula-se com precisão: um valor por defeito por produto (Os pedidos bloqueiam o stock) e um interruptor individual em cada pedido na lista das reservas. Um pedido que não bloqueia o stock deixa as datas reserváveis por outros clientes enquanto não for aceite. Um prazo de expiração configurável (em horas) pode anular automaticamente os pedidos sem resposta e libertar as suas datas.

Packs de produtos

O módulo suporta os packs nativos do PrestaShop. Quando um pack contém componentes eles próprios configurados como alugáveis, a reserva do pack cria automaticamente reservas ligadas em cada um dos seus componentes, tendo em conta as quantidades do pack. Concretamente:

  • Reservar um pack bloqueia a disponibilidade de cada um dos seus componentes alugáveis no mesmo período.
  • Reservar um componente sozinho torna o pack indisponível nessas datas assim que já não restam unidades suficientes.
  • Qualquer modificação da reserva do pack (datas, quantidade, estado, anulação) é repercutida automaticamente nas reservas dos seus componentes.

As reservas de componentes são ocultadas do lado do cliente (o cliente só vê o seu pack) mas visíveis no back-office com um badge Pack #N que aponta para a reserva-mãe. Não são modificáveis diretamente: é a reserva do pack que faz fé. Uma definição global permite desativar toda a mecânica se preferir gerir os packs como produtos independentes.

API REST

A API expõe o aluguer em JSON para os seus programas de gestão de parque, de planeamento ou de faturação. Ative-a na configuração do módulo: são gerados dois tokens, regeneráveis num clique: um token de leitura-escrita e um token só de leitura, aceite unicamente nos endpoints GET. Cada pedido deve apresentar um destes tokens através do cabeçalho X-Api-Key ou Authorization: Bearer.

Endpoints

  • GET ping: verificação da autenticação e da versão.
  • GET products: lista dos produtos alugáveis com a sua configuração (preço, caução, escalões, unidades, modo de tarifação).
  • GET availability: disponibilidades dia a dia de um produto entre duas datas, unidades restantes incluídas.
  • GET bookings: lista das reservas, filtrável por status, id_product, from, to, updated_since e external_reference, paginada por limit e offset.
  • POST bookings: criação de uma reserva em estado requested ou confirmed, com controlo de disponibilidade (contornável por force). O campo external_reference (64 caracteres no máximo) torna a criação idempotente: se uma reserva já tiver essa referência, é atualizada em vez de ser duplicada.
  • POST bookings&id=N: modificação de uma reserva (datas, quantidade, estado), repercutida nos componentes de pack.
  • DELETE bookings&id=N: anulação de uma reserva.

O filtro updated_since permite uma sincronização incremental: o seu programa memoriza a data da última passagem e só recupera as reservas modificadas desde então. A API não envia webhooks de saída: a sincronização faz-se por interrogação periódica. Os URL exatos e exemplos de pedidos são apresentados na página de configuração do módulo.

Acompanhamento das reservas

Em Catálogo > Aluguer – Reservas, encontra todas as reservas com o seu produto, o seu cliente, a sua encomenda, as suas datas e o seu estado, identificado por um badge de cor.

  • Pedido pendente: pedido sem pagamento à espera da sua decisão.
  • Pendente: adicionada ao carrinho, à espera da validação da encomenda.
  • Confirmada: encomenda validada ou pedido aceite, datas reservadas.
  • Em curso: período de aluguer em curso.
  • Devolvida: artigo devolvido.
  • Recusada: pedido recusado, datas libertadas.
  • Anulada: reserva anulada, datas libertadas.

O detalhe de cada aluguer aparece igualmente no carrinho, na página de confirmação de encomenda e na ficha de encomenda do back-office. Do lado do cliente, a página Os meus alugueres da área Minha conta lista todos os seus alugueres com o período, a duração, a caução e o estado.

A devolução da caução é feita por nota de crédito na devolução do artigo, a partir da ficha de encomenda do PrestaShop. É o método mais simples e mais transparente para a contabilidade da maioria das lojas de aluguer.

Opções da versão 1.5

A versão 1.5 alarga a seleção das datas, a tarifação e a gestão da caução. Todas as opções se regulam na configuração do módulo.

Seleção das datas

Dois modos de apresentação: um campo de período único com calendário de dois meses, ou dois campos separados de início e fim. As horas de levantamento e de devolução podem ser ativadas; são registadas na reserva e expostas na API. A localização do bloco de aluguer na ficha de produto é configurável entre sete hooks, com um hook de recurso para os temas sem displayProductAdditionalInfo.

Datas globais no carrinho

Ativadas por defeito, aplicam um único período a todas as linhas da encomenda. As fichas de produto chegam pré-preenchidas com o período do carrinho, e o carrinho propõe um editor para mudar as datas de toda a encomenda, com nova verificação das disponibilidades e recálculo dos preços de cada linha. Uma opção desloca inteiramente a escolha das datas para o carrinho: a ficha de produto só pede a quantidade, e o primeiro período disponível é proposto automaticamente na primeira adição.

Todo o catálogo em aluguer

Para as lojas 100 % de aluguer: cada produto ativo torna-se alugável sem configuração individual. O montante base é retirado do preço de venda, o stock de aluguer segue o stock PrestaShop, e o pedido de reserva pode ser autorizado globalmente.

Coeficientes de duração

Em modo coeficiente, o preço calcula-se como montante base multiplicado por um coeficiente. A grelha por escalões de dias é configurável (por defeito 1 dia: 1, 2 dias: 1,5, 3 dias: 2, 4 a 7 dias: 3, 8 a 14 dias: 5, 15 a 21 dias: 7, 22 a 30 dias: 9). Duas exceções de fim de semana prioritárias são reguláveis: sábado a segunda-feira (coeficiente 1 por defeito) e sexta-feira a segunda-feira (1,5 por defeito). Para lá da duração máxima (30 dias por defeito), o preço passa a tarifa sob consulta: a adição ao carrinho é bloqueada e o pedido de reserva sem pagamento assume o lugar.

Caução

Três modos: por produto (comportamento histórico), global automática ou desativada. Em modo global, é calculada uma única caução para toda a encomenda: montante base com IVA multiplicado por um multiplicador (2 por defeito), com um mínimo (500 por defeito) e um arredondamento ao escalão superior (100 por defeito). É registada na primeira reserva da encomenda e continua modificável no back-office. A faturação é independente: caução faturada no pagamento, ou simplesmente apresentada para uma pré-autorização bancária. As colunas de caução desaparecem dos resumos e da fatura PDF quando nenhuma linha a comporta.

FAQ e resolução de problemas

O preço de aluguer modifica o preço do meu produto?

Não. O preço é injetado através de um desconto específico ligado unicamente ao carrinho em curso. O preço de origem do produto fica inalterado no catálogo e para os outros clientes.

Como funciona a tarifa decrescente?

Define escalões (dia mínimo, dia máximo, preço ao dia). O módulo escolhe o escalão cujo intervalo contém a duração pedida. Um dia máximo a 0 significa « ilimitado ». Sem escalão correspondente, aplica-se o preço base ao dia.

É possível alugar várias unidades do mesmo produto?

Sim. Preencha o número de unidades disponíveis. Uma data só é acinzentada quando todas as unidades já estão alugadas nesse período.

A caução é devolvida automaticamente?

Não. É acrescentada à linha do carrinho no momento do aluguer e devolvida por nota de crédito na devolução, a partir da ficha de encomenda do back-office.

Um pedido aceite cria uma encomenda?

Não. A aceitação confirma a reserva e bloqueia as datas, sem criar uma encomenda PrestaShop. Cobra o pagamento pelo canal da sua escolha (no local, transferência, ligação de pagamento) e acompanha o aluguer a partir do ecrã das reservas.

O calendário não aparece na ficha de produto

Verifique que o produto está configurado e ativo em Aluguer – Produtos. Limpe depois a cache do PrestaShop (Parâmetros avançados > Desempenho) e, durante os seus testes, desative a combinação/compressão dos ficheiros (CCC).

O botão « Adicionar ao carrinho » nativo continua visível

A ocultação assenta em seletores de tema. Ative a opção Ocultar o botão « Adicionar ao carrinho » nativo nas definições; consoante o seu tema, pode ser necessário um ligeiro ajuste dos seletores.

A API devolve 401

Verifique que a API está ativada na configuração e que o token transmitido corresponde ao token apresentado. Depois de uma regeneração do token, lembre-se de atualizar as suas integrações.

É compatível com o PrestaShop 9?

Sim. O módulo é compatível com PrestaShop 8 e 9, em multiloja e multilingue (FR, EN, ES, DE, IT). A formatação dos preços usa a Locale atual, em conformidade com as práticas do PrestaShop 9.

Esta página foi útil?

Ainda com dúvidas? Contacte o suporte