# Storico delle condizioni di vendita e prova di accettazione: documentazione

> Installazione Installa il modulo da Moduli > Gestione moduli > Carica un modulo inviando il file ZIP, oppure copia la cartella dftermsversion nella directory /modules/ del negozio e clicca su…

- Pagina: <https://www.datafirefly.com/it/documentation/dftermsversion/>
- Lingua: it
- Aggiornato il: 2026-09-30
- Altre lingue: [fr](https://www.datafirefly.com/documentation/dftermsversion/index.md), [en](https://www.datafirefly.com/en/documentation/dftermsversion/index.md), [es](https://www.datafirefly.com/es/documentation/dftermsversion/index.md), [de](https://www.datafirefly.com/de/documentation/dftermsversion/index.md), [pl](https://www.datafirefly.com/pl/documentation/dftermsversion/index.md), [nl](https://www.datafirefly.com/nl/documentation/dftermsversion/index.md), [pt](https://www.datafirefly.com/pt/documentation/dftermsversion/index.md)
- Indice: <https://www.datafirefly.com/it/documentation/llms.txt>

## Installazione

Installa il modulo da **Moduli > Gestione moduli > Carica un modulo** inviando il file ZIP, oppure copia la cartella `dftermsversion` nella directory `/modules/` del negozio e clicca su Installa.

All'installazione il modulo crea le sue tabelle, aggiunge due schede nel menu **Ordini** (**Versioni delle condizioni** e **Registro delle accettazioni**) e importa il contenuto della pagina CMS delle condizioni come bozza. I clienti non vedono ancora nulla: nessuna versione è in vigore finché non ne pubblichi una.

Verifica che la casella delle condizioni generali sia attiva in **Parametri negozio > Impostazioni ordini**. Senza di essa i clienti non spuntano nulla prima di pagare e la prova è più debole. La pagina di configurazione del modulo te lo segnala se è disattivata.

## Pubblicare la prima versione

Apri **Ordini > Versioni delle condizioni**. La bozza importata compare con lo stato Bozza. Cliccala per rileggerla in ogni lingua, poi clicca su **Modifica** se necessario.

### I campi di una versione

- **Numero di versione**: l'etichetta mostrata ai clienti, ad esempio 2026-10 o 4.2. Deve essere univoca.
- **Titolo e testo**: per lingua. Una lingua lasciata vuota riprende il testo della lingua predefinita alla pubblicazione.
- **In vigore dal**: lascia vuoto per applicare la versione appena pubblicata. Una data futura programma il cambiamento. Una data passata aggiunge una versione precedente allo storico (vedi sotto).
- **Riepilogo delle modifiche**: mostrato nello storico pubblico.

Clicca poi su **Pubblica**. La versione viene bloccata: testo, impronta SHA-256 e PDF, generati in ogni lingua, non possono più cambiare. Se la marcatura temporale è attiva, il modulo chiede subito una marca temporale all'autorità configurata.

Una versione pubblicata non si può più modificare né eliminare. È questo che le dà valore di prova. Rileggi la bozza prima di pubblicare.

## Modificare le condizioni

Da una versione pubblicata, clicca su **Crea una nuova versione a partire da questa**. Viene creata una bozza con lo stesso testo. Modificala, compila il riepilogo delle modifiche, scegli la data di entrata in vigore e pubblicala.

### Confrontare due versioni

Nella vista di una versione, il blocco **Confronta** propone per impostazione predefinita la versione precedente, o quella in vigore se sei su una bozza. Clicca su **Mostra le modifiche**: i paragrafi modificati, aggiunti ed eliminati sono evidenziati, parola per parola per quelli modificati, e i paragrafi invariati vengono ripiegati. Cambia lingua con i pulsanti in alto a destra.

### Programmare un cambiamento

Una versione pubblicata con una data futura ha lo stato Programmata. Diventa automaticamente la versione in vigore a quella data, senza attività cron. La pagina di configurazione mostra la prossima versione programmata.

## Cosa vede il cliente

- **Al pagamento**: sopra i metodi di pagamento, un avviso indica la versione in vigore, la sua data e un link al PDF, oltre a un link alle versioni precedenti se lo storico pubblico è attivo.
- **Nell'email di conferma**: il PDF della versione accettata è allegato all'email `order_conf`.
- **Nel suo account**: il dettaglio di ogni ordine ricorda la versione accettata con un link di download.
- **In fattura**: una dicitura con la versione e la sua impronta, se l'opzione è attiva.

## Cosa registra il modulo su ogni ordine

Quando viene mostrata la fase di pagamento, il modulo annota la versione mostrata al cliente con il suo indirizzo IP, il browser e l'ora. Alla convalida dell'ordine registra la versione mostrata, l'impronta SHA-256 del testo nella lingua del cliente e queste informazioni di visualizzazione.

Se non è stata tracciata alcuna visualizzazione, ad esempio con un checkout che non richiama l'hook `displayPaymentTop`, il modulo registra la versione in vigore alla data dell'ordine con la modalità «Convalida dell'ordine». Un ordine creato dal back office viene registrato con la modalità «Back office».

## Consultare la prova di un ordine

Nella pagina dell'ordine del back office, la scheda **Condizioni di vendita accettate** mostra la versione, le date, l'IP, la modalità di registrazione, il controllo di integrità del testo e la posizione dell'ordine nel registro. Tre pulsanti:

- **Fascicolo di prova (ZIP)**: il file da inviare in caso di contestazione (dettagli sotto).
- **Attestato di accettazione (PDF)**: un documento con tutti i dati registrati, seguito dal testo integrale accettato.
- **Condizioni accettate (PDF)**: il PDF della versione, come allegato all'email.

### Contenuto del fascicolo di prova

- `01-acceptance-certificate.pdf`: l'attestato di accettazione.
- `02-...pdf`: il PDF della versione accettata.
- `03-accepted-text.txt`: il testo sorgente esatto. Il suo SHA-256 è uguale all'impronta registrata con l'ordine.
- `04-version-timestamp/`: il manifesto della versione e il suo token di marcatura `.tsr`.
- `05-register/`: la voce dell'ordine nel registro, un estratto della catena (solo identificativi e impronte, nessun dato di altri clienti) e il sigillo che la copre.
- `README.txt`: la spiegazione di ogni file e i comandi di verifica, nella lingua del dipendente.

## Il registro sigillato

Ogni accettazione contiene l'impronta del suo contenuto e quella dell'accettazione precedente. Modificare, inserire o eliminare una voce a posteriori interrompe questa catena. In **Ordini > Registro delle accettazioni**, il pulsante **Verifica il registro** ricalcola tutta la catena e indica l'eventuale prima voce alterata.

### Sigilli

Un sigillo fa marcare dall'autorità l'impronta dell'ultima voce del registro. Prova che tutto il registro fino a quella voce esisteva a quella data e rileva anche l'eliminazione delle ultime voci. Clicca su **Sigilla ora** oppure richiama una volta al giorno, con un'attività cron, l'URL mostrato nel blocco **Sigillo automatico**:

```
0 3 * * * curl -s "https://il-tuo-negozio.it/module/dftermsversion/cron?token=..." > /dev/null
```

L'URL sigilla il registro solo se sono state registrate nuove voci dall'ultimo sigillo.

## Marcatura temporale di terzi

La marcatura temporale RFC 3161 fa firmare un'impronta da un'autorità indipendente insieme alla data. Il modulo la usa per ogni versione pubblicata (su un manifesto con l'impronta del testo in ogni lingua) e per i sigilli del registro.

Per impostazione predefinita il modulo usa `http://timestamp.digicert.com`, gratuito e senza account. Nella configurazione puoi indicare un'altra autorità, ad esempio `https://freetsa.org/tsr` o un'autorità qualificata eIDAS. Il server del negozio deve poter raggiungere l'autorità.

Se l'autorità non risponde alla pubblicazione, la versione viene comunque pubblicata. L'errore compare nella vista della versione, con un pulsante **Marca ora** per riprovare.

## Negozio esistente: storico e ordini passati

Per coprire gli ordini effettuati prima dell'installazione:

1. Pubblica prima la versione attuale delle condizioni.
2. Crea una versione per ogni vecchia versione delle condizioni, con la sua vera data di entrata in vigore nel passato, e pubblicala. Il modulo rifiuta una data passata solo se ordini già collegati a un'altra versione rientrano in quel periodo.
3. In **Ordini > Registro delle accettazioni**, il blocco **Ordini precedenti** indica quanti ordini non sono collegati ad alcuna versione. Clicca su **Collega questi ordini**: l'elaborazione avviene a lotti con una barra di avanzamento.

Questi ordini ricevono la versione in vigore alla loro data e sono segnati come **Collegata a posteriori**, senza IP né traccia di visualizzazione. Il modulo non afferma ciò che non ha constatato: questi collegamenti indicano la versione applicabile, non provano una visualizzazione.

## Impostazioni del modulo

- **Allega il PDF alle email** e **Modelli email**: `order_conf` per impostazione predefinita, puoi aggiungere ad esempio `payment` o `bankwire`.
- **Mostra la versione al pagamento**: l'avviso sopra i metodi di pagamento. Anche se disattivato, il modulo traccia la versione mostrata.
- **Dicitura sulle fatture**.
- **Storico pubblico delle versioni**: una pagina con le versioni pubblicate e i loro PDF.
- **Aggiorna automaticamente la pagina CMS**: quando una versione entra in vigore, il suo testo sostituisce quello della pagina CMS scelta, così la casella del checkout rimanda sempre alla versione giusta. Il pulsante **Aggiorna ora la pagina CMS** forza la sincronizzazione.
- **Anonimizza gli indirizzi IP**: conserva solo la parte di rete dell'IP.
- **Marcatura temporale di terzi** e **Autorità di marcatura temporale**.
- **Richieste di cancellazione GDPR**: vedi sotto.
- **Elimina tutti i dati alla disinstallazione**: disattivato per impostazione predefinita. Lascialo disattivato, versioni e registro sono le tue prove.

## GDPR

Il modulo si collega al modulo GDPR ufficiale di PrestaShop (psgdpr). Le accettazioni di un cliente sono incluse nell'esportazione dei suoi dati. Per le richieste di cancellazione ci sono due scelte:

- **Conserva la prova** (predefinito): le registrazioni vengono mantenute, come consente l'articolo 17.3.e del GDPR per accertare, esercitare o difendere un diritto in sede giudiziaria. Indicalo nella tua informativa privacy.
- **Cancella indirizzo IP e browser**: questi campi vengono svuotati. Il registro resta verificabile e un'impronta calcolata alla cancellazione protegge i campi restanti, ma la prova è più debole per quel cliente.

## Risoluzione dei problemi

### L'avviso non compare al pagamento

Verifica che ci sia una versione in vigore e che l'opzione di visualizzazione sia attiva. Se il tema o il modulo di checkout non richiama l'hook `displayPaymentTop`, gli ordini vengono registrati con la versione in vigore alla data dell'ordine.

### Il PDF non è allegato all'email

Verifica l'opzione **Allega il PDF alle email** e il nome esatto del modello. Alcuni moduli di pagamento inviano una propria email di conferma con un altro nome di modello: aggiungilo all'elenco.

### La marcatura temporale non riesce

Il messaggio di errore indica la causa. Di solito l'hosting blocca le connessioni in uscita. Prova un'altra autorità o chiedi al tuo hosting di aprire l'accesso all'indirizzo dell'autorità. È consigliata l'estensione PHP cURL.

### La verifica del registro segnala un'alterazione

Il messaggio indica la voce interessata e il tipo di problema: contenuto modificato, voce inserita o eliminata prima di essa, oppure voce sigillata scomparsa. Ripristina la tabella `dftv_acceptance` da un backup precedente all'alterazione e rilancia la verifica.

## Compatibilità

- PrestaShop da 8.0 a 9.x, lo stesso ZIP copre entrambi i rami.
- Multinegozio e multilingua.
- PDF generati con il TCPDF integrato in PrestaShop, estensione PHP zip necessaria per il fascicolo di prova.
- Architettura ModuleAdminController, senza dipendenze Composer.
- Interfaccia disponibile in italiano, inglese, francese, spagnolo, tedesco, olandese, polacco e portoghese.
