PS PrestaShop Intermedio

Noleggio Prodotti — Guida completa

Installare, configurare e gestire il noleggio di prodotti: calendario, planning, unità con numeri di serie, check-in/check-out, stagioni, tariffe fisse, cauzione in riga separata o impronta Stripe, richieste senza pagamento, pacchetti, API REST, webhook ed email di promemoria, per PrestaShop 8 e 9.

Aggiornato Versione del modulo 1.12.0

Presentazione

Il modulo Noleggio Prodotti (dfproductrental) aggiunge una modalità noleggio attivabile prodotto per prodotto sul vostro negozio PrestaShop, e copre poi tutta la gestione del parco. Sulla scheda di un prodotto noleggiabile, il cliente sceglie le date in un calendario che oscura i giorni prenotati, come intervallo, in due campi con orari o come data di inizio più numero di settimane. Il prezzo si calcola al giorno tramite scaglioni decrescenti, una percentuale del prezzo di vendita o coefficienti di durata, modulato da stagioni e tariffe fisse. La cauzione vive su una riga dedicata del carrello, rimborsabile con nota di credito, oppure passa all’impronta bancaria Stripe. In back-office: planning mensile, unità con numeri di serie, check-in e check-out con stato del materiale e trattenuta, statistiche, richieste senza pagamento, pacchetti sincronizzati, API REST, webhook in uscita ed email di promemoria via cron.

Ideale per attrezzature, mobili, materiale per eventi, strumenti, veicoli o utensili: tutto ciò che si noleggia invece di vendersi una volta per tutte. La modalità noleggio si attiva solo sui prodotti che designate.

Compatibilità

  • PrestaShop da 8.0 a 9.x
  • PHP da 7.4 a 8.3
  • Negozio singolo e multinegozio
  • 5 lingue: FR, EN, ES, DE, IT (calendario anche in NL, PT e PL)
  • Tema Classic e temi personalizzati
  • Nessuna dipendenza: niente Composer, autoloader PSR-4 manuale, calendario flatpickr integrato localmente

Installazione

  1. In back-office, aprite Moduli > Gestore dei moduli.
  2. Cliccate Carica un modulo e selezionate il file dfproductrental.zip.
  3. A installazione avvenuta, cliccate Configura.

All’installazione, il modulo crea le sue cinque tabelle (df_rental_product, df_rental_tier, df_rental_booking, df_rental_unit, df_rental_unit_assign), registra i suoi hook, inizializza le impostazioni e aggiunge cinque voci sotto Catalogo > Noleggio: Prodotti a noleggio, Prenotazioni, Planning, Unità e Statistiche. L’aggiornamento da qualsiasi versione precedente è gestito da script tolleranti: caricate semplicemente il nuovo ZIP sopra e svuotate la cache di PrestaShop.

Impostazioni generali

  • Tempo di preparazione (giorni): giorni bloccati dopo ogni riconsegna per preparare l’articolo. Valore globale, sovrascrivibile per prodotto.
  • Orizzonte di prenotazione (giorni): fino a quale data futura un cliente può prenotare (365 per impostazione predefinita).
  • Scadenza dei carrelli in attesa (minuti): oltre il termine, una prenotazione non confermata libera le sue date (60 per impostazione predefinita).
  • Fatturare la cauzione: attiva la riga cauzione del carrello; disattivata, la cauzione è mostrata senza essere incassata (modalità impronta).
  • Fatturare il giorno della riconsegna: sì, conteggio di calendario, il giorno della riconsegna è un giorno di noleggio (dal 14 al 20 = 7 giorni); no, modello rotazione, la riconsegna avviene il giorno successivo al periodo fatturato (dal 14 al 21 = 7 giorni, una settimana va da lunedì a lunedì), quel giorno resta indisponibile per un’altra uscita.
  • Giorni di chiusura settimanali: giorni senza uscita né riconsegna possibile (0 = domenica a 6 = sabato, separati da virgole). Un noleggio può coprire un giorno chiuso.
  • Date di chiusura: una data per riga, AAAA-MM-GG (puntuale) o MM-GG (ricorrente ogni anno, es. 12-25).
  • Stagioni tariffarie: una per riga, inizio|fine|moltiplicatore|etichetta (vedi sotto).
  • Email di promemoria automatiche e giorni di anticipo: promemoria prima dell’inizio e della riconsegna, sollecito di ritardo, attivati dall’URL cron mostrato sotto il modulo.
  • Webhook in uscita e URL del webhook: notificano il vostro software a ogni evento di prenotazione (vedi sotto).
  • Cauzione con impronta Stripe, chiave pubblicabile, chiave segreta, impronta obbligatoria prima dell’uscita e testo di consenso: vedi la sezione Cauzione.
  • Selezione delle date, date globali del carrello, scelta delle date solo nel carrello, orari di ritiro e riconsegna, posizione del blocco, occultamento del pulsante di acquisto nativo.
  • Modalità di cauzione (per prodotto, globale automatica, disattivata), tutto il catalogo a noleggio, griglia dei coefficienti, sincronizzazione dei pacchetti, scadenza delle richieste, API.

Configurare un prodotto noleggiabile

Andate in Catalogo > Noleggio > Prodotti a noleggio, poi Aggiungi: prodotto, attivazione, modalità di tariffazione (importi fissi, percentuale del prezzo di vendita o coefficiente), prezzo base giornaliero, cauzione, durata minima e massima, unità disponibili, tempo di preparazione, richiesta senza pagamento e blocco dello stock dalle richieste.

Scaglioni decrescenti

Ogni scaglione è definito da giorno minimo, giorno massimo e prezzo giornaliero. Il modulo applica lo scaglione il cui intervallo contiene la durata scelta; un giorno massimo a 0 significa illimitato; senza scaglione corrispondente, si applica il prezzo base. Esempio: 39/giorno da 1 a 3 giorni, 32/giorno da 4 a 7 giorni, 26/giorno da 8 giorni.

Tariffe fisse

Sotto gli scaglioni, la zona Tariffe fisse accetta una per riga nel formato giorni|prezzo netto|etichetta, per esempio 7|199|Tariffa settimanale. Quando la durata scelta coincide esattamente, questo prezzo tondo sostituisce tutto il calcolo: niente scaglioni, niente coefficienti, niente stagioni. Combinata con la modalità settimane, rende l’offerta perfettamente leggibile.

Modalità percentuale

Prezzo base giornaliero, cauzione e scaglioni si esprimono come percentuale del prezzo di vendita al netto d’IVA del prodotto. Un prodotto venduto a 1000 con cauzione 10 richiede 100 di cauzione. Gli importi seguono automaticamente i prezzi del catalogo.

Uso lato negozio

Scelta delle date

Tre modalità di selezione, impostate globalmente: un intervallo unico su un calendario di due mesi, due campi di inizio e fine (con orari di ritiro e riconsegna opzionali), o data di inizio più numero di settimane, con data di riconsegna e prezzo totale calcolati automaticamente. I giorni prenotati sono oscurati; i giorni di chiusura non possono essere né uscita né riconsegna. Le date globali del carrello applicano un periodo unico a tutto l’ordine, modificabile dal carrello.

Prezzo e prenotazione

Un riepilogo dettaglia numero di giorni, prezzo giornaliero applicato, totale del noleggio, cauzione e totale generale. Il pulsante di prenotazione aggiunge il noleggio al carrello: il prezzo è iniettato tramite un prezzo specifico legato al carrello, il prezzo di catalogo resta intatto, e l’eventuale cauzione appare sulla propria riga. Una prenotazione in attesa blocca le date; i carrelli non confermati scadono; la convalida dell’ordine conferma la prenotazione.

Cauzione: riga dedicata o impronta Stripe

Cauzione fatturata

Con Fatturare la cauzione attivo, la cauzione appare come riga dedicata del carrello: un prodotto tecnico Cauzione di noleggio, esente IVA, invisibile nel catalogo, porta il totale delle cauzioni dell’ordine. Il prezzo dei prodotti noleggiati contiene solo il noleggio. In fattura, la cauzione è una riga a parte; il suo rimborso alla riconsegna del materiale si risolve con una nota di credito su quella riga, dalla scheda ordine. Se il cliente elimina la riga cauzione dal carrello, viene ricreata automaticamente. L’importo viene dalla modalità scelta: cauzione per prodotto, o globale automatica (importo base IVA inclusa moltiplicato, con minimo e arrotondamento, modificabile in back-office).

Impronta bancaria Stripe

Con Fatturare la cauzione disattivato e Cauzione con impronta Stripe attivato (chiavi pk_ e sk_ compilate), non si incassa nulla. Dopo l’ordine, il cliente è invitato dalla pagina di conferma a registrare la carta su una pagina sicura basata su Stripe Elements: nessun dato carta passa dal negozio, nessun importo viene addebitato o bloccato.

In caso di danni riscontrati alla riconsegna: aprite la prenotazione, inserite la cauzione trattenuta e il motivo, salvate, poi cliccate Addebita la trattenuta via Stripe. L’importo viene addebitato fuori sessione nella valuta dell’ordine e l’identificativo del pagamento è conservato sulla prenotazione. Un rifiuto bancario (3-D Secure) viene mostrato così com’è; la trattenuta resta allora da incassare in altro modo.

Impronta obbligatoria prima dell’uscita

Un’opzione dedicata condiziona la consegna del materiale alla registrazione della carta: una prenotazione pagata senza impronta è contrassegnata In attesa (uscita bloccata) nella lista delle prenotazioni (badge e filtro dedicati), e il pulsante Uscita rifiuta finché la carta non è registrata. Nessun ordine pagato viene annullato automaticamente: il controllo resta a voi. Il cliente è accompagnato: pulsante Registrare la mia carta nella sua pagina I miei noleggi, sollecito quotidiano via email con il link sicuro (tramite l’URL cron, anche con gli altri promemoria disattivati), e link copiabile dalla scheda prenotazione per un rinvio manuale. Un campo multilingue della configurazione permette infine di sostituire il testo di consenso della pagina impronta con la vostra formulazione, adattata alle vostre condizioni di noleggio; il testo predefinito menziona già l’autorizzazione all’addebito fino all’importo della cauzione in caso di danni.

Per un caso concordato con il cliente (B2B, club, garanzia alternativa), l’interruttore Autorizzare l’uscita senza impronta della scheda prenotazione esenta solo quel noleggio: l’uscita è sbloccata, i solleciti si fermano, il pulsante scompare da I miei noleggi e la lista mostra il badge Esenzione. Le altre prenotazioni restano protette.

Perché non una preautorizzazione classica? I circuiti carta fanno scadere le preautorizzazioni dopo 7 giorni: impossibile coprire un noleggio più lungo. La registrazione della carta non scade; è il modello delle piattaforme di noleggio. L’account Stripe usato è indipendente dal modulo di pagamento del negozio.

Unità e numeri di serie

In Catalogo > Noleggio > Unità, create una voce per ogni esemplare fisico: prodotto, riferimento o numero di serie, stato (disponibile o in manutenzione), attivazione, nota interna. Non appena un prodotto ha almeno un’unità, la sua capacità di noleggio diventa il numero di unità attive e disponibili: la quantità configurata non è più usata, e mettere un’unità in manutenzione la toglie dallo stock senza toccare la configurazione.

Su ogni prenotazione, il campo Unità assegnate propone le unità libere nel periodo (tempo di preparazione incluso) più quelle già assegnate: selezionate i numeri di serie consegnati al cliente. Un’unità presa da un’altra prenotazione viene rifiutata con un messaggio. I riferimenti appaiono nella lista delle prenotazioni, nella scheda ordine e nel webhook.

Check-out e check-in

  • Uscita, su una prenotazione confermata: il materiale è consegnato al cliente, il noleggio passa in corso e l’ora di consegna è registrata.
  • Riconsegna, su un noleggio in corso: il materiale è restituito, il noleggio passa riconsegnato e l’ora è registrata. Le date si liberano dopo l’eventuale tempo di preparazione.

La scheda prenotazione accoglie lo stato del materiale all’uscita e alla riconsegna, oltre all’importo di cauzione trattenuta e al motivo in caso di danni, pronti per l’addebito Stripe o una nota di credito parziale.

Planning

Catalogo > Noleggio > Planning mostra l’occupazione del mese, una riga per prodotto e una colonna per giorno: cella bianca libera, gialla parzialmente prenotata con la quantità, rossa completa. Al passaggio del mouse su una cella si elencano le prenotazioni (numero, stato, quantità, cliente, marcatore pacchetto). I giorni di chiusura e il giorno corrente sono evidenziati, la navigazione passa di mese in mese, e il tempo di preparazione di ogni prodotto conta nell’occupazione.

Statistiche

Catalogo > Noleggio > Statistiche analizza il periodo che scegliete (ultimi 12 mesi per impostazione predefinita): per prodotto, numero di prenotazioni, giorni noleggiati moltiplicati per la quantità e limitati al periodo, capacità, tasso di occupazione, fatturato del noleggio al netto d’IVA imputato all’inizio del noleggio, cauzioni trattenute, con una riga di totali. Stati considerati: confermata, in corso, riconsegnata.

Stagioni tariffarie

La griglia di configurazione accetta una stagione per riga: inizio|fine|moltiplicatore|etichetta. Due formati di limiti: date complete 2026-06-15|2026-09-15|1.3|Alta stagione (puntuale) o mese-giorno 12-20|01-05|1.5|Festività (ricorrente ogni anno, cambio d’anno gestito). Ogni giorno di noleggio è fatturato alla tariffa giornaliera moltiplicata per il coefficiente della sua stagione; fuori stagione il coefficiente è 1; in caso di sovrapposizione, vince l’ultima riga. Le tariffe fisse ignorano le stagioni: è il senso di un prezzo tondo.

Email di ciclo di vita (cron)

Tre email automatiche accompagnano ogni noleggio pagato: promemoria prima dell’inizio, promemoria prima della riconsegna (anticipo configurabile, 1 = il giorno prima) e sollecito di ritardo quando il materiale non è restituito alla data prevista. Attivate l’interruttore e chiamate una volta al giorno l’URL cron protetto da token mostrato sotto il modulo di configurazione. Ogni email è inviata una sola volta per prenotazione, nella lingua dell’ordine del cliente, in cinque lingue. La chiamata cron elimina anche le richieste scadute.

Richiesta di prenotazione senza pagamento

Sui prodotti con l’opzione attiva, la scheda mostra un pulsante di richiesta: il cliente sceglie le date, lascia i suoi dati (riconosciuti automaticamente se è connesso) e un messaggio, senza passare in cassa. La richiesta appare nelle prenotazioni con lo stato Richiesta in attesa: Accetta riverifica la disponibilità, conferma e avvisa il cliente; Rifiuta libera le date e avvisa il cliente. Il blocco dello stock si regola per prodotto e richiesta per richiesta, e una scadenza può annullare le richieste senza risposta.

Pacchetti di prodotti

I pacchetti nativi di PrestaShop sono sincronizzati: prenotare un pacchetto blocca la disponibilità di ogni componente noleggiabile sullo stesso periodo (quantità del pacchetto incluse), prenotare un componente da solo rende il pacchetto indisponibile, e ogni modifica alla prenotazione del pacchetto si propaga ai componenti. Le prenotazioni dei componenti sono nascoste al cliente e visibili in back-office con un badge Pacchetto. Un’impostazione globale disattiva il meccanismo.

API REST

Attivate l’API nella configurazione: due token rigenerabili (lettura-scrittura e sola lettura), passati via X-Api-Key o Authorization: Bearer.

  • GET ping: autenticazione e versione.
  • GET products: prodotti noleggiabili e loro configurazione.
  • GET availability: disponibilità giorno per giorno, unità rimanenti incluse.
  • GET bookings: prenotazioni, filtrabili per status, id_product, from, to, updated_since, external_reference.
  • POST bookings: creazione, idempotente via external_reference.
  • POST bookings&id=N: modifica; DELETE bookings&id=N: annullamento.

Webhook in uscita

Attivate i webhook e indicate l’URL del vostro software: a ogni evento riceve un POST JSON con la prenotazione completa (date, quantità, prezzo, stato, cliente, unità assegnate, marche temporali di check-in e check-out, trattenuta). Due header accompagnano ogni chiamata: X-DfRental-Event (nome dell’evento) e X-DfRental-Signature (HMAC-SHA256 del corpo con il segreto mostrato nel pannello dedicato, rigenerabile). Eventi emessi: booking.requested, booking.confirmed, booking.declined, booking.cancelled, booking.active, booking.returned, più booking.created e booking.updated per l’API. L’invio è best effort con timeout breve: un ricevitore fuori uso non blocca mai il negozio.

Webhook e API si completano: i webhook notificano in tempo reale, l’API con updated_since permette di recuperare lo storico dopo un’indisponibilità del ricevitore.

Monitoraggio delle prenotazioni

Catalogo > Noleggio > Prenotazioni elenca tutte le prenotazioni con prodotto, cliente, ordine, date, unità assegnate e stato colorato: richiesta in attesa, in attesa, confermata, in corso, riconsegnata, rifiutata, annullata. Le azioni Accetta, Rifiuta, Uscita e Riconsegna appaiono secondo lo stato. Il dettaglio appare anche nel carrello, nella conferma d’ordine, nella scheda ordine del back-office e nella pagina I miei noleggi dell’account cliente.

FAQ e risoluzione dei problemi

Il prezzo di noleggio modifica il prezzo del mio prodotto?

No. Il prezzo è iniettato tramite un prezzo specifico legato al carrello in corso, e la cauzione vive sulla propria riga. Il prezzo di catalogo non cambia.

La modalità settimane riconsegna di domenica, voglio da lunedì a lunedì

Disattivate Fatturare il giorno della riconsegna: una settimana va allora da lunedì a lunedì, 7 giorni fatturati, con la riconsegna il giorno successivo al periodo fatturato. Quel giorno resta indisponibile per un’altra uscita.

Il cliente non ha registrato la sua impronta Stripe

Finché nessuna carta è registrata, il link è proposto sulla pagina di conferma dell’ordine e un pulsante Registrare la mia carta appare nella pagina I miei noleggi dell’account cliente. Con l’opzione Impronta obbligatoria prima dell’uscita, il cliente riceve inoltre un sollecito quotidiano via email con il link sicuro, e il pulsante Uscita resta bloccato. Il link può anche essere copiato dalla scheda prenotazione per un rinvio manuale; la scheda indica Impronta non registrata finché il percorso non è completato.

L’addebito Stripe viene rifiutato

La banca del cliente può rifiutare un addebito fuori sessione (3-D Secure). Il messaggio di Stripe è mostrato così com’è in back-office. La trattenuta resta da incassare per un altro canale; la prenotazione conserva importo e motivo.

La capacità del mio prodotto non segue più la quantità configurata

È il comportamento atteso non appena esiste un’unità per quel prodotto: la capacità diventa il numero di unità attive e disponibili. Eliminate le unità per tornare alla quantità configurata.

Una richiesta accettata crea un ordine?

No. L’accettazione conferma la prenotazione e blocca le date, senza creare un ordine PrestaShop. Incassate il pagamento con il canale che preferite e seguite il noleggio dalla schermata delle prenotazioni.

Le email di promemoria non partono

Verificate che l’interruttore sia attivo e che l’URL cron venga chiamato ogni giorno: risponde in JSON con il numero di invii. Ogni email è inviata una sola volta per prenotazione, solo per le prenotazioni collegate a un ordine.

Il calendario non appare sulla scheda prodotto

Verificate che il prodotto sia configurato e attivo in Prodotti a noleggio. Svuotate poi la cache di PrestaShop (Parametri avanzati > Prestazioni) e, durante i test, disattivate la combinazione dei file (CCC).

L’API risponde 401

Verificate che l’API sia attivata e che il token inviato corrisponda a quello mostrato. Dopo una rigenerazione, aggiornate le vostre integrazioni. Il token di sola lettura è accettato solo sugli endpoint GET.

È compatibile con PrestaShop 9?

Sì. Il modulo è compatibile con PrestaShop 8 e 9, in multinegozio e multilingua. La formattazione dei prezzi usa il Locale corrente, conforme alle pratiche di PrestaShop 9.

Questa pagina ti è stata utile?

Ancora bloccato? Contatta l'assistenza