FAQ - domande frequenti

{description

Domanda

Il commercio elettronico che abbiamo fatto funziona benone, ma vorrei capire meglio come funziona davvero e come i dati vengono registrati nel database. La mia domanda ha uno scopo preciso. Ho bisogno di capire come si cancellano carrelli di prova lato mySQL prima di consegnare il sito a chi lo manterrà.

Risposta

Premettiamo che questa spiegazione molto tecnica confonderà completamente chi non ha mai visto il retrobottega di un sito dotato di commercio elettronico. Per chi invece ci lavora quotidianamente potrebbe accendersi qualche lampadina. È un po' come dire che se non non siete mai saliti su un'auto, una spiegazione del funzionamento del motore non vi serve proprio a niente.

Gli ordini sono in sarelcheckout.
Le righe d'ordine sono in sarelcart
La relazione tra ordini e righe loro figlie è:
sarelcart.closedcartid=sarelcheckout,cartId
Esiste poi la registrazione degli eventi di ecommerce dentro sarelecomlog
Usando PayPal Instant payment Notification, le conferme di pagamento avvenuto sono nella sezione paypal_transaction.

Per capirci bene: paypal_transaction e sarelcart sono visibili nel menu Pagine.
sarelcheckout è visibile nel menu Ecommerce, voce Carrelli Acquistati
sarelecomlog è visibile nel menu Ecommerce, voce Status Sistema

Inoltre
sarelcart.closedCart vale
N : nel carrello aperto
R : nel carrello di un utente che ha detto che si registrava per pagare ma non ha pagato
B: nel carrello di un utente che ho mandato a PayPal a pagare ma non ha pagato
Y: carrello pagato

Nota che possiamo avere un record in sarelcheckout con zero righe d'ordine in sarelcart. Questo accade per esempio con questa sequenza di eventi
a. Il cliente con enne prodotti nel carrello va a pagare su PayPal; Sar-At marca le righe d'ordine con B dentro sarelcart.closedCart, assegna un numero d'ordine al carrello e crea una voce in sarelcheckout
b. Il cliente NON paga e torna sul nostro sito
c. Sar-At gli mostra ancora le merci, nella speranza che lui si decida ad andare di nuovo su PayPal e pagare
d. Il cliente toglie tutte le righe d'ordine (i prodotti) dal carrello

Quindi, finite le prove e prima di consegnare un ecommerce al cliente, possiamo tranquillamente fare piazza pulita così:
TRUNCATE sarelecomlog;
DELETE FROM sarelcart WHERE closedCart<>'Y';
DELETE FROM sarelcheckout LEFT JOIN sarelcart ON sarelcart.closedcartid=sarelcheckout,cartId WHERE sarelcart.id IS NULL;
Resteranno vivi e visibili solo gli ordini effettivamente pagati, che il cliente può guardare come esempio di quel che succede quando tutto va bene