Newsgroup: it.comp.programmare
Titolo: Shopping Cart

Come viene solitamente gestito un carrello della spesa?
Il punto che mi interessa sarebbe come gestire le quantita' in magazzino 
rispetto agli articoli inseirti nel carrello.
Potrei decrementare il quantitativo in magazzino per ogni articolo nel 
carrello (magari su una struttura dati o una tabella temporanea), cosě che i 
prossimi acquirenti non mettono nel loro carrello articoli che non ci 
possono essere. Cosě facendo perň c'č il rischio che un utente rompiscatole 
si selezioni un sacco di articoli per poi non comprare niente, bloccando di 
fatto gli acquisti degli altri.
Un soluzione  piu' ottimistica e' quella di validare il carrello solo al 
momento dell'acquisto definitivo. Si evita il problema precedente, perň puo' 
risultare fastidioso per l'utente se succede che degli articoli da lui 
selezionati mancano effettivamente dal magazzino.
Come si fa invece solitamente in un sito di e-commerce? 

Come si fa invece solitamente in un sito di e-commerce? 
La soluzione ottima non c'e'.
In genere il controllo non viene fatto, punto e basta. Le giacenze vengono
valorizzate dal magazzino, e aggiornate in spedizione, non all'ordine. Chi
e' sfortunato vede arrivare l'ordine dieci giorni dopo, i.e. al successivo
riordino.
Per mitigare gli effetti di questa politica (che spesso comunque non e' un
botto di cattiveria... e' che magari, per dire, il sito web e il magazzino
non comunicano perche' il magazzino lavora sul cartaceo, e i dati li mette
dentro un ragazzotto in chiusura; e digitalizzare tutto, magari con codici
a barre e via andando, costa troppo) puoi mostrare la disponibilita' anche
approssimativa: "scarsa", "ampia", "in riordino"...
E poi fai un controllo in fase di finalizzazione ordine... oppure no ]:-D,
del resto se uno ordina qualcosa etichettato "disponibilita' scarsa" penso
si debba aspettare dei rischi...
Considera cosa fare se hai un pezzo solo, ed un tizio lo mette in carrello
alle 16:00, un altro tizio lo vorrebbe mettere nel carrello alle 16:01, e,
magari, il secondo tizio finalizza l'ordine alle 16:02 mentre il primo sta
ancora guardando altre cose. Dato che il tuo scopo e' venderlo, e parecchi
mettono nel carrello ma poi non comprano, tu vuoi rimandare il momento del
conflitto (quando scoprono di essere in due, a volere un unico pezzo) piu'
possibile, sperando che il conflitto svanisca da se' perche' uno dei due a
fine ordine non finalizza. In ogni caso, un pezzo "acquistato" per te vale
piu' di un pezzo "bloccato" nel carrello, anche di uno che e' arrivato per
primo.
E' un discorso forse ingiusto, ma penso che il committente te lo fara' :-)
Leonardo
-- 
Nach doiligh domhsa mo chailin a mholadh
'S ni he amhain mar bhi si or
Bhi si mar gath greine a dhul in eadan na gloinne
Is bhi sceimh mhna na finne le mo cailin or

 Come si fa invece solitamente in un sito di e-commerce?
Come ti hanno detto, una soluzione unica non c'è...io farei in modo da
controllare la disponibilità di ogni articolo nel carrello ad ogni
aggiunta/aggiornamento del carrello stesso, in modo che il cliente sa in
ogni momento se l'articolo è ancora disponibile o no...e bloccarlo solo
al momento dell'ordine effettivo. Ovviamente questo significa che qualcuno
potrebbe vedersi un articolo "sparire sotto il naso", ma d'altronde è
sempre così,anche al supermarket...ovviamente metterei un avviso
"articolo in esaurimento, affrettarsi ad acquistarlo" o giù di lì, e per
gli articoli esauriti una scheda con la previsione di riordino..e cmq la
possibilità di portare comunque al termine l'ordine e magari scomporlo in
2 consegne raggruppando gli articoli già disponibili e quelli in riordino...