Archiviare gli ordini vecchi in PrestaShop: un back office veloce senza perdere fatture
Con gli anni le tabelle degli ordini crescono e il back office si trascina. Cancellare non è un'opzione, archiviare sì. Spieghiamo cosa si sposta, cosa va conservato e quali precauzioni evitano di rompere la numerazione.
Apri «Ordini» nel back office e ci mette un po'. Filtri per cliente e ci mette ancora di più. Il negozio vende da anni, e ogni ordine ha lasciato righe in una ventina di tabelle: righe d'ordine, storico degli stati, pagamenti, fatture, spedizioni, messaggi, il carrello da cui è nato. Nessuna di queste righe se ne va da sola.
La tentazione è cancellare gli ordini vecchi. Non farlo: hai obblighi di conservazione, e un ordine cancellato a mano in PrestaShop lascia righe orfane in altre tabelle. Quello che puoi fare è archiviare.
Perché diventa lento
L'elenco degli ordini di PrestaShop non interroga una sola tabella. Per disegnare ogni riga unisce l'ordine con il cliente, l'indirizzo, il paese, lo stato attuale e la valuta, e per filtrare e ordinare deve scorrere molte righe. Con decine o centinaia di migliaia di ordini, ogni ricerca lavora su tutto lo storico anche se tu vuoi vedere solo quelli di questa settimana.
Ne risentono anche altre schermate: la scheda del cliente, le statistiche, alcuni moduli che calcolano dati sullo storico degli ordini e le esportazioni.
Archiviare non è cancellare
Archiviare significa togliere gli ordini vecchi dalle tabelle attive e conservarli completi in altre tabelle, da cui si possono consultare e, se serve, ripristinare. La differenza rispetto a cancellare è totale:
- L'ordine continua a esistere con tutti i suoi dati: righe, importi, imposte, fatture, note di credito, pagamenti e messaggi.
- Puoi cercarlo e vederlo quando lo chiedono un cliente o il tuo commercialista.
- Puoi ripristinarlo con lo stesso numero se torna a servire nell'operatività quotidiana.
La normativa commerciale e quella fiscale ti obbligano a conservare fatture e documentazione per anni. Archiviare è compatibile con questo; cancellare no.
Cosa deve viaggiare con ogni ordine
Un ordine in PrestaShop non è una riga. Se sposti solo la tabella degli ordini, il resto resta appeso. Come minimo devono andare insieme:
- L'ordine e le sue righe.
- Lo storico degli stati.
- Fatture, documenti di trasporto, pagamenti e note di credito.
- I resi e le loro righe.
- Corriere e tracciamento.
- Il carrello da cui è nato e i suoi prodotti.
- I messaggi dell'ordine.
E deve avvenire come una transazione: o si sposta l'ordine intero, o non si sposta nulla. Un'archiviazione che fallisce a metà e lascia mezzo ordine da ogni parte è peggio che non archiviare.
Le trappole della numerazione
Questo è il dettaglio che dà più problemi. PrestaShop calcola il numero successivo di ordine, di fattura e di documento di trasporto a partire da quelli presenti nelle tabelle. Se archivi proprio l'ordine che ha l'ultimo numero di fattura, PrestaShop può «non vederlo» e ripetere il numero nella fattura successiva. Una fattura duplicata è un problema fiscale serio.
Regole prudenti:
- Non archiviare mai l'ordine che ha l'ultimo numero di ordine, di fattura o di documento di trasporto.
- Impedire che un ordine nuovo riceva il numero di uno archiviato.
- Se usi serie o numerazioni proprie con un altro modulo, verifica su una copia come calcola il numero successivo prima di archiviare.
Quali ordini archiviare
Il criterio abituale è l'anzianità, ma conviene affinarlo:
- Anzianità minima. Sei mesi o un anno sono un punto di partenza ragionevole; dipende dal tuo termine per i resi e dalla garanzia.
- Stati. Solo ordini chiusi: consegnati, annullati, rimborsati. Un ordine in attesa di pagamento o in fase di reso non si archivia.
- Movimenti recenti. Se un ordine vecchio ha avuto da poco un cambio di stato (una nota di credito tardiva, una garanzia), meglio aspettare.
- Ordini divisi. Se un carrello ha generato più ordini, si archiviano tutti insieme o nessuno.
Cosa cambia per te e per il cliente
Un ordine archiviato esce dalle tabelle del core, quindi:
- Smette di contare nelle statistiche del core di PrestaShop.
- Non compare nello storico di «Il mio account» del cliente finché non lo ripristini; conviene avvisarlo con un testo che i suoi ordini vecchi sono archiviati e che può richiederli.
- I moduli che calcolano dati sullo storico (fidelizzazione, segmenti, raccomandazioni) smetteranno di vederlo. Controlla quali usi.
Come farlo con criterio
- Backup completo del database prima della prima archiviazione.
- Simulazione: conta i candidati e le righe che verrebbero spostate, senza spostare nulla.
- Lotti piccoli all'inizio, e verifica l'elenco dell'archivio e un ripristino.
- Automatizza con un'attività pianificata e un report via email di ogni esecuzione.
- Lascia bloccata la cancellazione definitiva. Se un giorno si cancella qualcosa dall'archivio, che richieda di sbloccarla di proposito e un permesso specifico.
Una nota sulle versioni: se il tuo negozio è ancora su una 1.7 delle prime o su una 1.6, l'archiviazione alleggerisce il back office, ma non sostituisce l'aggiornamento. PrestaShop 8 e 9 con un PHP attuale rendono meglio anche sulle stesse query. Se devi migrare, archiviare prima riduce il volume di dati da trasferire e da provare.
Domande frequenti
Posso ancora emettere una nota di credito su un ordine archiviato? Non direttamente: prima lo ripristini, emetti la nota di credito normalmente e, se vuoi, torna nell'archivio al passaggio successivo. Per questo conviene che l'anzianità minima superi il tuo termine per i resi e la garanzia.
Archiviare libera spazio su disco? Sposta righe da alcune tabelle ad altre, quindi la dimensione totale del database non cala. Quello che migliora è la velocità delle query sulle tabelle attive. Ottimizzare le tabelle dopo ogni esecuzione aiuta a recuperare parte dello spazio lasciato dai vuoti.
E il mio commercialista può ancora chiedere fatture vecchie? Sì. Le fatture restano conservate con l'ordine archiviato e si possono consultare o ripristinare quando servono.
Come risolverlo in PrestaShop
RKR Order Archive toglie gli ordini vecchi dalle tabelle attive e li conserva completi, con le loro 20 tabelle (righe, storico, fatture, pagamenti, resi, note di credito, carrello e messaggi), in un archivio con elenco, ricerca e filtri. Scegli anzianità, stati, negozio, importo minimo e dimensione di ogni passaggio, e puoi escludere gli ordini con movimenti recenti. Include modalità simulazione, cron con token proprio, report via email e ripristino esatto con lo stesso numero. Ogni operazione è una transazione, non archivia l'ordine con l'ultimo numero di fattura, documento di trasporto od ordine, aspetta che gli ordini divisi si possano archiviare insieme e tiene bloccata per impostazione predefinita la cancellazione definitiva.