Cum funcționează wave pricing
Wave pricing (prețuri pe tranșe) permite vânzarea produselor la prețuri diferite în funcție de momentul înregistrării. Fiecare tranșă are un preț și un stoc propriu; când stocul unei tranșe se epuizează, următoarea tranșă devine automat activă, la un preț mai mare.
Sistemul este identic pe toate tipurile de produse: pass-uri, workshop-uri și add-on-uri.
Conceptul de bază
O tranșă (wave) este o etapă de vânzare definită prin trei câmpuri:
| Câmp | Descriere | Exemplu |
|---|---|---|
| Etichetă | Numele tranșei, vizibil și în interfața de înregistrare | „Early Bird" |
| Preț (RON) | Prețul produsului în cadrul acestei tranșe | 350 |
| Cantitate | Numărul de locuri disponibile la acest preț | 50 |
Sub tranșe există un rând fix — prețul standard — care se activează automat când toate tranșele s-au epuizat. Acesta funcționează ca plasă de siguranță: vânzările continuă la acest preț folosind stocul rezidual.
Relația dintre stoc și tranșe
Aceasta este partea cea mai importantă de înțeles.
Stocul total al produsului (câmpul „Stoc" din cardul „Stoc & Wave Pricing") reprezintă numărul curent de locuri disponibile. Suma cantităților tuturor tranșelor nu poate depăși stocul total.
Formula
Stoc rezidual (preț standard) = Stoc total − Suma cantităților tranșelor
Exemplu concret:
| Element | Valoare |
|---|---|
| Stoc total | 200 |
| Early Bird | 50 locuri |
| Standard | 100 locuri |
| Last Minute | 30 locuri |
| Stoc rezidual (preț standard) | 20 locuri |
Cele 20 de locuri rămase sunt vândute automat la prețul standard, fără tranșă.
Cantitățile tranșelor reprezintă stocul curent, nu stocul inițial. Când un participant cumpără un loc din tranșa „Early Bird", cantitatea acelei tranșe scade cu 1. Când ajunge la 0, tranșa se marchează ca epuizată și următoarea devine activă.
Ce se întâmpl ă când suma depășește stocul
Dacă suma cantităților tranșelor depășește stocul total:
- Vizual — apare un mesaj de eroare roșu sub câmpul de stoc: „Suma cantităților tranșelor (X) depășește stocul total (Y). Salvarea nu este permisă."
- Salvare blocată — formularul nu poate fi trimis (butonul de salvare este dezactivat client-side)
- Server-side — chiar dacă se ocolește validarea client, serverul respinge salvarea cu aceeași eroare
Când modifici cantitatea unei tranșe, stocul rezidual din coloana „Cantitate" de pe rândul prețului standard se actualizează instant, fără a fi nevoie să salvezi.
Activarea automată a tranșelor
Tranșele sunt secvențiale — ordinea din tabel determină ordinea de activare:
- Prima tranșă (cea mai de sus) este activă de la început.
- Când stocul primei tranșe ajunge la 0, a doua tranșă devine activă automat.
- Procesul continuă până la ultima tranșă.
- Când toate tranșele s-au epuizat, prețul standard devine activ.
Nu este necesară nicio intervenție manuală — funcția dentisity_get_active_wave_price() determină automat prețul corect la fiecare afișare.
Indicatori vizuali
În tabelul de administrare, fiecare rând indică starea tranșei:
| Indicator | Stare | Descriere |
|---|---|---|
| Bară verde pe stânga | Activ | Tranșa are stoc disponibil |
| Rând estompat | Epuizat | Cantitatea a ajuns la 0 |
| Rând galben (preț standard) | Rezidual | Locurile rămase după epuizarea tuturor tranșelor |

Structura cardului „Stoc & Wave Pricing"
Cardul apare identic în editorul de pass-uri, workshop-uri și add-on-uri:
┌─────────────────────────────────────────┐
│ Stoc & Wave Pricing │
│ Prețuri pe tranșe │
├─────────────────────────────────────────┤
│ │
│ Stoc [pass/workshop/add-on] │
│ ☐ Nelimitat │
│ [___] locuri disponibile acum │
│ │
│ ┌──┬──────────┬ ──────┬─────┬──┐ │
│ │⠿ │ Tranșă │ Preț │ Qty │✕ │ │
│ ├──┼──────────┼──────┼─────┼──┤ │
│ │⠿ │ Early B. │ 350 │ 50 │✕ │ ← activ│
│ │⠿ │ Standard │ 450 │ 100 │✕ │ │
│ ├──┼──────────┼──────┼─────┼──┤ │
│ │🔒│ Preț std │ 550 │ 50 │ │ ← fix │
│ └──┴──────────┴──────┴─────┴──┘ │
│ [+ Adaugă tranșă] │
│ │
└─────────────────────────────────────────┘
Elementele cardului
| Element | Funcție |
|---|---|
| Stoc total | Numărul curent de locuri disponibile. Poate fi setat pe „Nelimitat". |
| Tranșe (rânduri albe) | Fiecare tranșă are etichetă, preț și cantitate. Se pot adăuga, șterge și reordona. |
| Preț standard (rând galben) | Rând fix, nu poate fi șters. Prețul la care se vinde când toate tranșele s-au epuizat. Coloana „Cantitate" arată stocul rezidual calculat automat. |
| Buton „+ Adaugă tranșă" | Adaugă un rând nou gol sub ultima tranșă. |
Configurare pas cu pas
1. Setează stocul total
Deschide editorul produsului (pass, workshop sau add-on) și în cardul Stoc & Wave Pricing:
- Dacă produsul are locuri limitate: introdu numărul în câmpul de stoc (ex.:
200) - Dacă produsul nu are limită: bifează Nelimitat — în acest caz validarea cantitate-vs-stoc este dezactivată
2. Adaugă tranșele
Apasă + Adaugă tranșă pentru fiecare etap ă de preț. Completează:
- Etichetă: un nume clar (ex.: „Early Bird", „Standard", „Last Minute")
- Preț (RON): prețul la care se vinde în această tranșă
- Cantitate: câte locuri sunt disponibile la acest preț
Adaugă tranșele în ordinea în care vrei să se activeze — de obicei de la cel mai ieftin la cel mai scump. Poți reordona oricând prin drag and drop (trage de handlerul ⠿ din stânga).
3. Setează prețul standard
Pe rândul galben (ultimul rând din tabel), introdu prețul la care se vinde produsul după epuizarea tuturor tranșelor.
Coloana „Cantitate" de pe acest rând arată automat câte locuri rămân pentru prețul standard — nu trebuie completată manual.
4. Verifică validarea
Înainte de salvare, verifică:
- Stocul rezidual (pe rândul galben) este un număr pozitiv sau zero
- Nu apare mesajul roșu de eroare sub câmpul de stoc
5. Salvează
Apasă butonul de salvare din bara fixă de jos.
Exemple practice
Configurare tipică — pass de congres
| Tranșă | Preț (RON) | Cantitate |
|---|---|---|
| Early Bird | 350 | 50 |
| Înregistrare standard | 450 | 150 |
| Last Minute | 550 | 50 |
Cu stoc total = 250, stocul rezidual (preț standard) = 0. Toate locurile sunt distribuite în tranșe.
Cronologie automată:
- Primii 50 de participanți plătesc 350 RON
- Următorii 150 plătesc 450 RON
- Ultimii 50 plătesc 550 RON
- Produsul devine indisponibil (stoc epuizat)
Configurare cu stoc rezidual — workshop
| Tranșă | Preț (RON) | Cantitate |
|---|---|---|
| Preînregistrare | 100 | 20 |
Cu stoc total = 50 și preț standard = 150 RON:
- Primii 20 de participanți plătesc 100 RON (tranșa „Preînregistrare")
- Următorii 30 plătesc 150 RON (prețul standard, stoc rezidual = 30)
Configurare fără tranșe — preț fix
Dacă nu adaugi nicio tranșă, toți participanții plătesc prețul standard. Tabelul arată doar rândul galben cu prețul și stocul total.
Simulare interactivă
Componenta de mai jos reproduce fidel tabelul de wave pricing din admin. Modifică valorile pentru a vedea cum se calculează stocul rezidual și cum se comportă validarea:
Stoc & wave pricing
Prețuri pe tranșeCând o tranșă se epuizează, se trece automat la tranșa următoare (mai scumpă), apoi la prețul standard.
| Tranșă | Preț (RON) | Cantitate | ||
|---|---|---|---|---|
| 🔒 | Preț standard | 0 |
Comportament pe stoc nelimitat
Dacă bifezi Nelimitat pe câmpul de stoc:
- Validarea cantitate-vs-stoc este dezactivată
- Rândul prețului standard arată „Nelimitat" în loc de un număr
- Poți configura tranșe cu orice cantitate — nu există limită superioară
- Tranșele funcționează la fel: se epuizează secvențial, apoi prețul standard preia
Întrebări frecvente
Pot modifica o tranșă după ce s-au vândut locuri din ea?
Da, dar cu atenție. Cantitatea reflectă stocul curent (nu cel inițial), deci dacă s-au vândut 30 din 50 de locuri Early Bird, cantitatea arată 20. Dacă reduci cantitatea sub 0, validarea blochează salvarea.
Ce se întâmplă dacă șterg o tranșă activă?
Următoarea tranșă devine activă automat. Dacă nu mai există tranșe, prețul standard preia.
Pot avea tranșe cu preț 0?
Nu. O tranșă fără preț (sau cu preț 0) nu se salvează — este ignorată la salvare.
Ordinea tranșelor contează?
Da. Ordinea din tabel = ordinea de activare. Prima tranșă (cea de sus) este activă prima. Reordonează prin drag and drop dacă vrei să schimbi succesiunea.