Annullamento Automatico degli Ordini Non Pagati
Sposta automaticamente gli ordini non pagati nello stato Annullato dopo un periodo di tolleranza configurabile, ripristinando le scorte riservate senza alcun intervento manuale.
Disponibile dalla v1.0.3
Panoramica
Quando un cliente effettua un ordine e sceglie un metodo di pagamento offline — bonifico bancario, trasferimento wire o qualsiasi altro metodo configurato — le scorte vengono bloccate ma il pagamento non è ancora arrivato. Se il cliente non paga mai, quegli articoli rimangono non disponibili per altri acquirenti e i dati di inventario diventano imprecisi.
La funzione di annullamento automatico risolve questo problema assegnando una scadenza a ogni ordine non pagato. Una volta scaduto il termine, il cron job cambia lo stato dell'ordine in Annullato, attivando la pipeline di annullamento standard di PrestaShop: le quantità a scorta vengono ripristinate, la cronologia dell'ordine viene aggiornata e il cliente riceve l'email di conferma dell'annullamento standard di PrestaShop.
Esistono due modi indipendenti per attivare un annullamento, che possono coesistere:
- Scadenza globale — un singolo numero di giorni applicato a tutti gli ordini non pagati per qualsiasi metodo di pagamento. Ogni ordine che supera questo limite viene annullato automaticamente, indipendentemente dai messaggi di promemoria configurati.
- Annullamento per messaggio — un messaggio di promemoria specifico può essere contrassegnato come "avviso finale". Quando il cron invia quel messaggio, annulla l'ordine immediatamente dopo l'invio dell'email. Questo approccio offre un controllo preciso sul momento esatto in cui un ordine viene annullato e consente di inviare prima un avviso finale personalizzato.
È possibile utilizzare entrambi i metodi contemporaneamente. Se l'annullamento per messaggio scatta prima che venga raggiunta la scadenza globale, l'ordine viene annullato in quel momento e la scadenza globale non si applica più.
Configurazione
Passaggio 1: Attivare la funzione di annullamento globale
- Vai in Moduli > Gestore moduli, trova Order Payment Reminders Pro e clicca su Configura.
- Clicca sulla scheda Impostazioni globali.
- Imposta Attiva annullamento ordini su Sì.
- Inserisci un numero nel campo Annulla ordine dopo (in giorni). Ad esempio, inserisci
10per annullare qualsiasi ordine non pagato da più di 10 giorni. - Clicca su Salva.
Se il tuo negozio utilizza il modulo Bonifico bancario di PrestaShop, la descrizione del campo mostra il valore consigliato dall'impostazione Periodo di prenotazione di quel modulo, così puoi mantenere i due valori sincronizzati.
Campi della scheda Impostazioni globali:
| Campo | Valori | Predefinito | Descrizione |
|---|---|---|---|
| Attiva annullamento ordini | Sì / No | No | Interruttore principale per il sistema di annullamento automatico. Nessun annullamento avviene quando è disattivato, anche se i flag di annullamento per messaggio sono abilitati. |
| Annulla ordine dopo | Numero (giorni) | 0 | Quanti giorni dopo la creazione dell'ordine prima che venga annullato. Un valore di 0 disabilita la scadenza globale anche quando la funzione è attivata. |
Passaggio 2: (Facoltativo) Contrassegnare un messaggio di promemoria come trigger di annullamento
Se vuoi inviare un'email personalizzata di "ultima possibilità" al momento dell'annullamento, al posto della scadenza globale o in aggiunta a essa:
- Nella scheda Messaggi di promemoria, clicca su Modifica sul messaggio che vuoi impostare come avviso finale, oppure crea un nuovo messaggio con la pianificazione appropriata (ad esempio, 9 giorni dopo la creazione dell'ordine).
- Scorri fino alla sezione Opzioni avanzate nel form del messaggio.
- Imposta Annulla l'ordine dopo questo messaggio su Sì.
- Salva il messaggio.
Quando il cron elabora un ordine che ha raggiunto il tempo pianificato di questo messaggio, invia l'email e poi annulla immediatamente l'ordine. Il conto alla rovescia della scadenza globale continua a scorrere in parallelo — la prima soglia raggiunta ha effetto.
Form messaggio di promemoria — Opzioni avanzate:
| Campo | Valori | Predefinito | Descrizione |
|---|---|---|---|
| Annulla l'ordine dopo questo messaggio | Sì / No | No | Se impostato su Sì, il cron annulla l'ordine immediatamente dopo l'invio di questo promemoria. Lo stato dell'ordine cambia in Annullato e le scorte vengono ripristinate. |
Passaggio 3: Verificare che il cron job sia attivo
La logica di annullamento automatico si avvia solo quando viene chiamato l'endpoint cron. Se il cron non è configurato, non avvengono annullamenti indipendentemente dalle impostazioni.
- Vai alla scheda Configurazione cron nel modulo.
- Copia l'URL cron mostrato lì (contiene il tuo token sicuro).
- Aggiungi un cron job giornaliero sul server che chiami quell'URL, ad esempio a mezzanotte.
Consulta la guida Configurazione cron per istruzioni dettagliate.
Passaggio 4: Testare prima di andare in produzione
Prima di attivare l'annullamento automatico su un negozio in produzione:
- Vai in Impostazioni globali e attiva la Modalità test.
- Inserisci un indirizzo email di test.
- Avvia manualmente l'URL cron nel browser.
- Il modulo mostra un riepilogo di ciò che farebbe — gli ordini che verrebbero annullati appaiono come "Direct Cancel Order [id]" senza modificarne effettivamente lo stato.
- Una volta soddisfatto dell'output, disattiva la Modalità test.
Come Funziona
La scadenza globale
Ogni volta che il cron viene eseguito, il modulo recupera tutti gli ordini non pagati per i metodi di pagamento per cui hai configurato messaggi. Per ogni ordine calcola quante ore sono trascorse dalla sua creazione.
Se Annulla ordine dopo è impostato su un valore maggiore di 0, il modulo converte quel valore in ore (giorni × 24). Qualsiasi ordine più vecchio di quella soglia viene annullato immediatamente — questa procedura non invia un'email prima e non è necessario che esista un messaggio di promemoria affinché l'annullamento avvenga.
Il flusso di annullamento:
- L'oggetto
OrderHistorydi PrestaShop sposta l'ordine nello stato Annullato. - La pipeline di annullamento standard di PrestaShop viene eseguita, ripristinando le quantità a scorta dei prodotti e, se lo stato dell'ordine è configurato per inviare un'email, inviando al cliente l'email di annullamento predefinita di PrestaShop.
- La voce nella cronologia dell'ordine viene aggiunta senza dipendente associato — il modulo agisce in modo automatico.
- Se la pipeline di annullamento di PrestaShop fallisce per qualsiasi motivo (ad esempio, un problema di compatibilità in alcuni ambienti PS 8), il modulo ricorre a un aggiornamento diretto dello stato via SQL, in modo che l'ordine venga comunque contrassegnato come annullato anche se le email di ripristino scorte non possono essere attivate.
Annullamento per messaggio
Quando il cron elabora un ordine che ha raggiunto il tempo pianificato di un messaggio e quel messaggio ha Annulla l'ordine dopo questo messaggio impostato su Sì:
- Il modulo invia prima l'email di promemoria al cliente.
- Dopo l'invio (o il tentativo di invio) dell'email, annulla l'ordine utilizzando la stessa pipeline descritta sopra.
In questo modo il cliente riceve un'ultima email che spiega la situazione prima che l'annullamento abbia effetto.
Interazione con la modalità test
Quando la Modalità test è attivata:
- Gli ordini che verrebbero annullati tramite la scadenza globale appaiono come "Direct Cancel Order [id] (reference)" nell'output del cron — non vengono effettivamente annullati.
- Gli ordini che verrebbero annullati tramite un trigger per messaggio appaiono come "Cancel Order [id] (reference)" — anch'essi non annullati.
Nessun annullamento reale avviene mentre la modalità test è attiva, quindi è possibile simulare in sicurezza un'esecuzione completa del cron su un negozio in produzione.
Interazione con l'email digest per l'amministratore
Se hai abilitato l'Email digest per l'amministratore nelle Impostazioni globali, il digest viene eseguito all'inizio di ogni esecuzione del cron, prima che vengano elaborati annullamenti o promemoria. Esamina lo stesso elenco di ordini non pagati e segnala quelli che si trovano entro la finestra di allerta configurata rispetto alla scadenza di annullamento. Questo ti fornisce un avviso giornaliero per intervenire manualmente se necessario.
Ad esempio, se la scadenza globale è 10 giorni e l'allerta digest è 24 ore, ricevi ogni giorno un'email con l'elenco degli ordini non pagati da 9 o più giorni — dandoti un'ultima opportunità di contattare il cliente prima che il sistema annulli automaticamente.
Consulta Email digest per l'amministratore per i dettagli di configurazione.
Esempi d'Uso
Esempio: Scadenza semplice di 14 giorni
Accetti pagamenti tramite bonifico bancario e vuoi annullare qualsiasi ordine non pagato entro 14 giorni per rispettare il periodo di prenotazione della tua banca.
- Imposta Attiva annullamento ordini su Sì.
- Imposta Annulla ordine dopo su
14. - Nessun annullamento per messaggio necessario.
Ogni giorno, quando il cron viene eseguito, annulla tutti gli ordini non pagati da più di 14 giorni. Le scorte vengono ripristinate automaticamente.
Esempio: Promemoria progressivi con email di annullamento finale
Vuoi inviare tre promemoria (giorno 3, giorno 7, giorno 10) e poi annullare al giorno 10 con un'email finale personalizzata.
- Crea tre messaggi di promemoria: a 72 ore, 168 ore e 240 ore.
- Sul messaggio del giorno 10 (240 ore), imposta Annulla l'ordine dopo questo messaggio su Sì.
- Lascia Annulla ordine dopo impostato su
0(disabilitato), oppure impostalo su un valore superiore a 10 come rete di sicurezza.
Quando il cron viene eseguito al giorno 10 per un ordine non pagato, invia la tua email finale personalizzata e poi annulla l'ordine. Se il cron non viene chiamato per diversi giorni e l'ordine supera il giorno 10, la scadenza globale funge da rete di sicurezza.
Esempio: Scadenze diverse per metodo di pagamento
Gli ordini con bonifico bancario devono essere annullati dopo 7 giorni; un metodo offline più lento dopo 14 giorni. Poiché la scadenza globale è un valore unico, usa l'annullamento per messaggio per ottenere questo risultato:
- Crea un messaggio per il bonifico bancario a 168 ore (7 giorni) con Annulla l'ordine dopo questo messaggio impostato su Sì.
- Crea un messaggio per l'altro metodo di pagamento a 336 ore (14 giorni) con Annulla l'ordine dopo questo messaggio impostato su Sì.
- Imposta Annulla ordine dopo su
0(disabilitato globalmente).
Ogni metodo di pagamento segue la propria tempistica.
Note Importanti
- La funzione di annullamento automatico riguarda solo gli ordini ancora non pagati. Gli ordini che sono stati pagati — anche parzialmente — non vengono toccati.
- Gli ordini già nello stato Annullato vengono ignorati; il modulo verifica lo stato corrente prima di applicare un secondo annullamento.
- Il modulo non invia una propria email di annullamento. L'email di annullamento standard di PrestaShop (configurata in Ordini > Stati per lo stato Annullato) è quella che riceve il cliente, se quello stato è configurato per inviarne una.
- Quando si utilizza l'annullamento per messaggio su un negozio multilingua, l'email di promemoria viene inviata nella lingua del cliente prima che avvenga l'annullamento.
- In una configurazione multi-negozio, Annulla ordine dopo (
wr_cancel_days) e il toggle di annullamento ordini (wr_cancel_orders) sono valori globali che si applicano a tutti i negozi. I flag di annullamento per messaggio sono memorizzati per messaggio e possono essere limitati a un modulo di pagamento specifico. - Il valore di Annulla ordine dopo viene interpretato solo in giorni interi. Non è possibile impostare una scadenza di, ad esempio, 7,5 giorni.
- Non esiste un'operazione di annullamento per un annullamento automatico. Se un ordine viene annullato per errore, è necessario ripristinarlo manualmente nel Back Office.
Risoluzione dei Problemi
| Problema | Soluzione |
|---|---|
| Gli ordini non vengono annullati anche se la scadenza è passata | Verifica che Attiva annullamento ordini sia impostato su Sì e che Annulla ordine dopo sia maggiore di 0. Quindi conferma che il cron job sia in esecuzione — apri direttamente l'URL cron nel browser e controlla l'output per i messaggi di annullamento. |
| Gli ordini vengono annullati troppo presto | L'età viene calcolata dalla data di creazione dell'ordine, non dall'ultimo promemoria inviato. Se il cron viene eseguito a intervalli irregolari, un ordine creato vicino alla mezzanotte potrebbe risultare più vecchio del previsto. Verifica l'orario di creazione dell'ordine nel Back Office. |
| Le scorte non vengono ripristinate dopo l'annullamento | Il ripristino delle scorte è gestito dalla pipeline di annullamento di PrestaShop, non da questo modulo. Verifica che lo stato dell'ordine Annullato sia configurato in Ordini > Stati con le impostazioni di ripristino scorte abilitate. In alcune versioni precedenti di PS, il ripristino delle scorte dipende dalla validazione dell'ordine. |
| Il cliente non ha ricevuto un'email di annullamento | Il modulo non invia una propria email di annullamento. L'email viene inviata da PrestaShop solo se lo stato dell'ordine Annullato ha Invia email al cliente abilitato in Ordini > Stati. Verifica quella impostazione. |
| L'annullamento per messaggio si attiva ma l'ordine non viene annullato | Se la modalità test è attiva, gli annullamenti sono solo simulati. Disattiva la modalità test e riesegui il cron. Se il problema persiste, controlla i log di PrestaShop in Parametri avanzati > Log per le voci WireTransferReminder che descrivono un annullamento fallito. |
| L'output del cron mostra "Direct Cancel Order" ma non cambia nulla | Questo è l'output della modalità test. Significa che l'ordine verrebbe annullato ma la modalità test lo impedisce. Disattiva la modalità test nelle Impostazioni globali. |
| L'annullamento SQL di fallback è stato eseguito ma le scorte non sono state ripristinate | Il fallback SQL diretto aggiorna solo la riga dello stato dell'ordine — non esegue la pipeline di annullamento completa di PrestaShop. Si tratta di un percorso di ultima risorsa. Per attivare il corretto ripristino delle scorte, modifica manualmente lo stato dell'ordine nel Back Office, che avvia la pipeline completa. |
Domande Frequenti
L'annullamento di un ordine tramite questo modulo attiva l'email di annullamento standard di PrestaShop al cliente?
Sì, se lo stato dell'ordine Annullato è configurato per inviare un'email in Ordini > Stati. Il modulo utilizza la pipeline della cronologia ordini di PrestaShop, che rispetta quella impostazione esattamente come farebbe un annullamento manuale.
Posso impostare scadenze di annullamento diverse per metodi di pagamento diversi?
La scadenza globale si applica a tutti i metodi di pagamento contemporaneamente. Per ottenere scadenze per metodo di pagamento, disabilita la scadenza globale (impostala su 0) e utilizza invece l'opzione di annullamento per messaggio su un messaggio legato a quel metodo di pagamento specifico, con la pianificazione che rappresenta la tua scadenza.
Cosa succede se il cron non viene eseguito per diversi giorni e molti ordini superano la scadenza contemporaneamente?
Tutti gli ordini idonei vengono annullati alla prossima esecuzione del cron. Non c'è un limite di batch, quindi se 50 ordini hanno superato la scadenza, tutti e 50 vengono annullati in quell'unica esecuzione.
L'annullamento automatico funziona con ordini effettuati con metodi di pagamento diversi dal bonifico bancario?
Sì. Dalla versione 1.2.0, il modulo supporta qualsiasi metodo di pagamento offline. Il cron recupera gli ordini non pagati in base ai moduli di pagamento per cui hai creato messaggi di promemoria. Se hai un messaggio configurato per un determinato modulo di pagamento, i suoi ordini sono inclusi nel controllo di annullamento.
Se uso sia la scadenza globale che un flag di annullamento per messaggio, quale scatta per primo?
Qualunque soglia venga raggiunta prima dall'ordine. Se la pianificazione per messaggio (ad esempio, giorno 9) precede la scadenza globale (giorno 14), il messaggio viene inviato e l'ordine viene annullato al giorno 9. La scadenza globale non scatta per quell'ordine perché è già annullato. Se la pianificazione per messaggio non viene mai raggiunta (ad esempio, il messaggio è stato eliminato), la scadenza globale funge da rete di sicurezza.
Posso vedere quanti ordini sono stati annullati automaticamente nella dashboard?
La dashboard Statistiche di recupero mostra un conteggio «Totale annullati» per gli ordini con promemoria finiti nello stato Annullato. Include sia gli ordini annullati automaticamente che quelli annullati manualmente, purché abbiano ricevuto almeno un promemoria.
La modalità test protegge gli ordini in produzione da annullamenti accidentali?
Sì. Quando la modalità test è attiva, nessun ordine viene modificato. L'output del cron descrive ciò che accadrebbe — puoi esaminarlo in sicurezza senza influenzare alcun ordine.
È possibile escludere ordini specifici dall'annullamento automatico?
Non tramite l'interfaccia del modulo. Se hai bisogno di preservare un ordine specifico, elaboralo manualmente (contrassegnalo come in attesa di pagamento o contatta direttamente il cliente) oppure disabilita temporaneamente la funzione, gestisci l'ordine, quindi riattivala.
Funzionalità Correlate
- Messaggi di promemoria — crea il trigger di annullamento per messaggio e configura l'email di avviso finale.
- Configurazione cron — la funzione di annullamento automatico si avvia solo quando il cron è attivo.
- Email digest per l'amministratore — ricevi un avviso giornaliero prima che gli annullamenti si attivino, così puoi intervenire manualmente.
- Configurazione globale — panoramica di tutte le impostazioni globali, inclusa la modalità test.