Magento ed il caso dei numeri ordine mancanti.
Se stai utilizzando Magento in una qualsiasi delle ultime release e nel caso il tuo negozio online stia facendo delle vendite prima o poi anche a te capiterà il problema dei numeri ordine mancanti in Magento, o anche fuori sequenza.
Vedrai la tua bella lista ordini, e senza nessun apparente errore apparirà un vuoto, un numero mancante, per cui nella sequenza avrai tipo 100000121 – 100000122 – 100000124 con il 123 che non appare, non c’è, sparito …
Ti premetto subito di non allarmarti e leggere la spiegazione seguente di come Magento CE gestisce i numeri ordine e di perchè questo può accadere.
Ripeto : NON PREOCCUPARTI, non hai perso nessun ordine, non se l’è rubato nessuno, tutti i dati sono corretti anche se manca un numero.
Certo, sempre che l’ordine ovviamente non sia stato cancellato da te o da qualche tuo collaboratore per errore o che non hai evidenza di errori nei log di Magento che segnalino altri problemi magari dovuti a moduli di terze parti, o in caso di problemi di sovracarico sul server che non permettono il corretto salvataggio dei dati, ma queste ipotesi vanno in caso valutate da personale specializzato.
Come dicevo il problema di “buchi” nella numerazione degli ordini non è così raro, infatti anche io la prima volta che ho incontrato questa anomalie sono rimasto perplesso e ho iniziato ad analizzare cosa era sucesso, finchè non mi è tornato in mente di come Magento gestisce gli ordini ed assegna i numeri ordine.
Cosa succede a questi numeri mancanti? Il problema appare quando abbiamo un utente loggato (che ha effettuato l’accesso al sito con i suoi dati) che non completa l’ordine dopo essere arrivato ad un punto “critico” del sistema, e torna indietro, riaccede e decide alla fine di comprare (il tutto anche in momenti differenti).
“L’offerta” o meglio quello che per noi è un ordine in fase di acquisto, un pre ordine, usa un numero che sarà quello poi assegnato all’ordine completato.
Spieghiamo più nel dettaglio.
Il processo degli ordini in magento “un’offerta”, un “pre ordine”, nel momento in cui qualcosa viene aggiunto al carrello.
- Per gli utenti guest, i visitatori, gli ospiti, questo “pre ordine” dura ed è valida finchè la loro sessione non scade, a quel punto esiste ancora nel database ma non è più ripristinabile dal cliente ospite.
- Quanto un utente registrato accede nel nostro sito le offerte abbinate al suo carrello vengono nuovamente assegnate al suo id cliente in modo che l’ultimo carrello che aveva durante la precedente visita non viene svuotato ma viene ripresentato al nostro cliente.
In questo momento il “pre ordine” è ancora un potenziale ordine. Non ha numeri assegnati perchè il cliente non ha dimostrato la volontà di pagare quei prodotti.
Nel momento in cui il cliente clicca sul tasto per procedere verso la pagina della cassa possiamo avere che:
- il cliente era già loggato precedentemente e arriva dal carrello già con le sue credenziali inserite
- se non loggato gli viene chiesto se vuole comprare come utente guest o registrarsi (nel caso di pagine tipo onestepcheckout anche se non viene esplicitamente richiesto al cliente la scelta questa viene operata in base alle impostazioni che abbiamo deciso nel backend di Magento)
Quello che succede dopo è un punto importante: Il cliente che decide di registrarsi viene gestito come un utente ospite finchè l’ordine non è completato e non viene indirizzato alla pagina di successo fine ordine, in quel momento il suo account viene creato e in automatico avviene il login. Il “pre ordine” rimane un “pre ordine” per un ospite con la perdita del contenuto del carrello in caso di timeout della sessione se l’ordine non viene completato con la pagina di successo visualizzata.
Con un ordine pagato con carte di credito o altri processori online succede quanto segue quando clicchiamo sul tasto “invia ordine”.
- I dati di pagamento, dati spedizione, fatturazione, totale ordine e informazioni varie vengono assemblati.
- Un numero ordine è assegnato al “pre ordine” (tabella sales_flat_quote nella colonna reverder_order_id)
- Il pacchetto di dati è inviato al sistema di pagamento scelto (in base ai dati necessari) per l’autorizzazione e conferma della transazione.
- Il sistema di pagamento ci rimanda indietro:
- una autorizzazione di pagamento a buon fine con i dati della transazione da registrare
- il respingimento del pagamento con i dati da registrare per la transazione non avvenuta
- Con un ordine andato a buon fine il “pre ordine” è convertito in un Ordine a cui viene assegnato un numero progressivo e in caso fosse scelta come opzione viene creato l’account cliente.
Se il pagamento viene respinto, e il prossimo cliente fa un ordine corretto completo con pagamento riuscito ci sarà un salto nella sequenza dei Numero Ordine perchè l’ordine con pagamento rifiutato avrà comunque il numero assegnato e riservato della sua vendita.
Per i carrelli degli ospiti che superano il tempo massimo di sessione (ordine come ospite e registrazione utente non avvenuta), il numero ordine riservato sarà perso quando la sessione scade, lasciano anche in questo caso un buco nella sequenza dei numeri ordine.
Per i clienti che invece hanno fatto l’accesso al nostro sito prima di andare alla cassa il “pre ordine” viene assegnato al loro id cliente, così che se dovessero fare un ordine a cui viene respinto il pagamento potranno tornare indietro e trovare il carrello ancora con tutti i prodotti che avevano così da provare nuovamente a completare l’ordine (magari con un metodo di pagamento diverso). Teniamo conto che questo può succedere sia in tempi brevi, dove il cliente riprova subito a fare l’ordine, come anche dopo giorni o settimane.
Il “pre ordine” userà il numero Ordine che gli era stato riservato, causando così un numero ordine fuori dalla normale sequenza.
Come abbiamo appena visto ci sono molti casi in cui possiamo avere dei numeri ordine mancanti in Magento nella sequenza ordini, come anche numeri completamente fuori sequenza, a cui si aggiungono anche come detto all’inizio i casi di errori nella scrittura dei dati nel database magari per eccessivo carico momentaneo, che non comportano la perdita del dato, ma più tentativi in sequenza che possono generare queste anomalie.
L’importante è ricordarsi che il numero ordine nel backend non ha rilevanza ai fini fiscali ne di tenuta contabile essendo solo un numero per la gestione interna, ma qui consiglio di chiedere informazioni più sicure al proprio commercialista.
Commenti
Ancora nessun commento.