Vendita di biglietti per "grandi stadi"


10

Voglio (necessità) implementare una vendita di biglietti per lo stadio.
L'idea è di lasciare che il cliente scelga il suo numero di biglietti (un limite potrebbe essere necessario ma questo non è un grosso problema. Penso di poterlo raggiungere attraverso la quantità massima consentita nel carrello). Successivamente il cliente deve scegliere i suoi posti da una mappa dei posti. Dopodiché il processo di checkout dovrebbe procedere come al solito.
Qualcuno conosce un'estensione per questo? Ne ho cercato uno ma non ne ho trovato uno adatto alle mie esigenze. O forse le mie abilità su Google hanno bisogno di miglioramenti.
Se non ci sono estensioni, alcuni suggerimenti su come farlo sarebbero grandi.
La mia idea finora è quella di creare un prodotto chiamato 'Ticket' con alcune opzioni personalizzate (settore, fila, numero di posto e forse altri).
La pagina di visualizzazione verrà personalizzata, quindi le opzioni personalizzate non verranno visualizzate. La selezione del biglietto avverrà in un popup o overlay e, in base alla selezione, simulerò le opzioni personalizzate durante l'aggiunta al carrello.
La mappa dei posti verrà conservata in un tavolo in modo da poter contrassegnare i posti prenotati. Lo stadio è sempre lo stesso, quindi una mappa dovrebbe essere sufficiente.
Fin qui è tutto. Qualcosa sembra mancare. Qualsiasi suggerimento sarebbe grandioso.
[MODIFICA]
Esiste la possibilità di creare un prodotto configurabile con 3 attributi (settore, numero di fila e numero di posto, ogni combinazione in qtà disponibile di 1, quindi non saranno disponibili una volta acquistati), ma ciò significherebbe 30k + prodotti (per evento). Davvero non voglio andare lì. Lo sto conservando come ultima risorsa disperata.. (Questa non è più un'opzione perché si tradurrà in un problema di prestazioni huuuuge)

Risposte:


10

Ho fatto qualcosa del genere, e questo è un esempio inventato e troppo semplificato per vedere se la considereresti una soluzione praticabile:

È simile alla definizione di una griglia di sudoku ma le aree aperte della griglia di sudoku sono posti aperti:

$section1 = <<<SECTION

A,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,
B,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-
C,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-
D,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-
E,-,-,-,-,-,-,-,-,-,-,-,-

SECTION;

Quella mappa dei posti (griglia del sudoku) è memorizzata per prodotto. Ogni evento è un nuovo prodotto. La griglia viene aggiornata quando qualcuno aggiunge al carrello (o acquisti, a seconda delle regole aziendali):

$section1 = <<<SECTION

A,-,-,x,-,-,-,-,-,x,-,-,x,x,x,x,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,
B,-,-,-,-,-,-,-,-,-,-,-,-,-,x,-,-,-,-,-,-,-,-,-,-,-,-,-
C,-,-,-,-,-,x,x,x,-,x,-,x,-,-,-,-,-,-,-,-,-
D,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-
E,-,-,-,-,-,x,-,x,-,x,-,x

SECTION;

Per dividere la disponibilità dei posti nel tuo modello di backend è semplice explode:

$chart = array();

$section = trim(explode('\n', $product->getSeatingChart()));

foreach($section as $row){
    $seats = explode(',',$row);
    $rownum = array_shift($seats);
    $chart[$rownum] = $seats;
}

Possiamo trasformarci $chartin booleani:

array_walk($chart,function(&$s){
    $s = $s == "-" ? true : false;
});

Controlla se A14 è disponibile (0 indicizzato, ricorda):

function checkAvailability($row,$seatnum){

    return $chart[$row][$seatnum-1] == true;

}

upside:

L'implementazione è semplicissima: l'attributo di disponibilità dei posti è analizzato da un modello di back-end. È essenzialmente un attributo EAV personalizzato. Puoi anche impostare i prezzi in base alle sezioni. Ogni sezione è una nuova SKU con un nuovo prezzo. Puoi bloccare i posti in alcuni eventi e non in altri. Inoltre, non è necessario trasportare un inventario reale, impostare solo la quantità sull'articolo dell'ordine di vendita durante il checkout per i prezzi.

Anche i livelli funzioneranno, in modo da ottenere sconti per acquisti all'ingrosso gratuiti; che potrebbe essere stato un problema con le opzioni personalizzate.

Svantaggio:

La prenotazione del posto sarà il tuo più grande mal di testa perché non hai un inventario reale; ecco dove questo metodo cade a pezzi. Le regole aziendali determineranno come bloccare / trattenere i posti durante il checkout.


1
+1 Woah. Se qualcuno scrive mai "The Art of Magento Programming", è meglio che ci sia un esempio.
Kalenjordan,

Prima di tutto voglio dire che mi sento un idiota. Ovviamente il prezzo dovrebbe essere su sezioni. Penso che il prezzo fosse su ogni posto. D'oh !. Per quanto riguarda il Donwside, non vedo nessuno. Posso avere una semplice tabella tenendo i posti riservati / comprato per ogni evento con colonne event_id, sector, row, seat, status. Lo stato può essere "riservato", "acquistato", "non disponibile". In questo modo è facile verificare che qualcuno abbia prenotato un posto 2 secondi prima di te. Sto anche pensando di creare un nuovo tipo di prodotto (ticket evento), quindi sarò sicuro che non ci siano problemi nella configurazione del prodotto. Grazie per i dettagli
Marius

Le tue risposte sembrano cucire insieme i pezzi del puzzle nella mia mente. Sono ancora preoccupato per il problema delle prestazioni, perché vendere 30.000 biglietti in 4-5 giorni può stressare molto i server, ma questo è un problema diverso. Cercherò di rendere questa estensione disponibile per la comunità una volta terminata e se ottengo il "via libera" dal cliente.
Marius

30.000 biglietti - è uno stadio NASCAR? :) Penso che avere un singolo prodotto ticket per sezione, per evento (gli eventi siano configurazioni) ridurrà significativamente le dimensioni del tuo catalogo. L'ingombro del db più piccolo quindi si adatta perfettamente alla memoria ...
Philwinkle,

1
@philwinkle Ti ho inviato un'e-mail perché vivo nel XX secolo e non ho un account Twitter.
Marius

2

Sono d'accordo sul fatto che i prodotti configurabili non sono una grande idea che un posto sia davvero solo un indicatore se è disponibile o venduto e rappresentarlo con un prodotto Magento sembra eccessivo.

Suggerirei un modulo personalizzato che includerebbe una tabella di record per ogni Evento, i biglietti sarebbero quindi per questo Evento e al momento della creazione di un Evento sarebbe stato creato un semplice prodotto per rappresentarlo nel negozio. È possibile utilizzare un attributo del prodotto per contenere il riferimento all'evento e le opzioni personalizzate popolate dalla pagina della vista front-end che si menziona per memorizzare quale posto è stato acquistato.


Grazie. +1. La tua risposta combinata con quella di Philwinkle dovrebbe almeno farmi iniziare nella giusta direzione.
Marius
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.