Skip to main content

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âmpDescriereExemplu
EtichetăNumele tranșei, vizibil și în interfața de înregistrare„Early Bird"
Preț (RON)Prețul produsului în cadrul acestei tranșe350
CantitateNumă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:

ElementValoare
Stoc total200
Early Bird50 locuri
Standard100 locuri
Last Minute30 locuri
Stoc rezidual (preț standard)20 locuri

Cele 20 de locuri rămase sunt vândute automat la prețul standard, fără tranșă.

Stocul scade la plată, nu la comandă

Cantitățile tranșelor reprezintă stocul curent, nu stocul inițial. Cantitatea unei tranșe scade cu 1 când o comandă este finalizată — adică plătită — nu când este plasată.

Între plasare și plată, locul este totuși rezervat: vezi Locuri rezervate de comenzi neplătite mai jos.

Ce se întâmplă când suma depășește stocul​

Dacă suma cantităților tranșelor depășește stocul total:

  1. 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ă."
  2. Salvare blocată — formularul nu poate fi trimis (butonul de salvare este dezactivat client-side)
  3. Server-side — chiar dacă se ocolește validarea client, serverul respinge salvarea cu aceeași eroare
Ajustare automată

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:

  1. Prima tranșă (cea mai de sus) este activă de la început.
  2. Când stocul primei tranșe ajunge la 0, a doua tranșă devine activă automat.
  3. Procesul continuă până la ultima tranșă.
  4. 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.

Locuri rezervate de comenzi neplătite​

Cantitatea unei tranșe scade abia la plată. O comandă plasată și neplătită nu a scăzut încă nimic — dar locul ei nu mai este liber.

Fără această regulă, o tranșă de 25 de locuri putea fi vândută la nesfârșit: 50 de persoane plasau comenzi cât timp cantitatea arăta încă 25, toate primeau prețul ieftin, și toate îl plăteau. WooCommerce nu recalculează niciodată o comandă deja plasată, deci prețul rămânea înghețat pe fiecare linie.

De aceea tranșa activă se calculează scăzând și locurile ținute de comenzile deschise (în așteptare, în procesare sau în așteptarea plății):

SituațieCantitate în tabelLocuri ținuteCe vede următorul cumpărător
Nicio comandă deschisă250Prețul tranșei, 25 locuri
10 comenzi neplătite2510Prețul tranșei, 15 locuri
25 comenzi neplătite2525Prețul tranșei următoare

Rezervarea se desface singură: dacă o comandă este anulată sau expiră, locul redevine disponibil imediat, fără nicio acțiune. Nu există niciun contor de întreținut și nicio restituire care să poată eșua.

Locurile ținute se impută tranșelor de la cea mai ieftină în sus, în aceeași ordine în care le consumă o vânzare plătită. Fiecare tranșă își vede în raport propriile locuri ținute, nu doar cea activă.

Un workshop plătit cu un credit rezervă un loc doar când setarea „sursa stocului pentru workshopurile gratuite" este tranșa curentă. Pe standard tranșa nu este atinsă deloc (WooCommerce scade _stock), iar pe ultima tranșă plătește alta — în ambele cazuri o rezervare pe tranșa activă ar împinge cumpărătorii plătitori pe tranșa următoare pentru un loc care nu s-ar fi luat niciodată de acolo.

Comenzile deja plasate își păstrează prețul

Regula închide scurgerea pentru comenzile noi. O comandă plasată deja la prețul ieftin rămâne la acel preț — a fost cotată corect în momentul acela. Expunerea este astfel mărginită exact la dimensiunea tranșei.

Coloana „Rezervat" din raportul de vânzări și indicatorul „+N rez." din statistici arată aceste locuri, ca să vezi suprapunerea înainte să coste ceva.

Indicatori vizuali​

În tabelul de administrare, fiecare rând indică starea tranșei:

IndicatorStareDescriere
Bară verde pe stângaActivTranșa are stoc disponibil
Rând estompatEpuizatCantitatea a ajuns la 0
Rând galben (preț standard)RezidualLocurile rămase după epuizarea tuturor tranșelor
Tabelul wave cu o tranșă activă (bară verde), una epuizată (estompat) și rândul de preț standard (galben)

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​

ElementFuncție
Stoc totalNumă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ț
Ordinea contează

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 Bird35050
Înregistrare standard450150
Last Minute55050

Cu stoc total = 250, stocul rezidual (preț standard) = 0. Toate locurile sunt distribuite în tranșe.

Cronologie automată:

  1. Primii 50 de participanți plătesc 350 RON
  2. Următorii 150 plătesc 450 RON
  3. Ultimii 50 plătesc 550 RON
  4. Produsul devine indisponibil (stoc epuizat)

Configurare cu stoc rezidual — workshop​

TranșăPreț (RON)Cantitate
Preînregistrare10020

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șe

Când o tranșă se epuizează, se trece automat la tranșa următoare (mai scumpă), apoi la prețul standard.

Stoc totallocuri disponibile acum
TranșăPreț (RON)Cantitate
🔒Preț standard0
Val activ Epuizat Preț standard

Cât s-a vândut la fiecare preț​

Fiecare produs cu tranșe are un raport „Vândut pe fiecare preț", vizibil în două locuri:

  • în Statistici, ca modul propriu, pentru toate produsele deodată;
  • în cardul de editare al pass-ului, workshop-ului sau add-on-ului — chiar lângă tabelul de tranșe, ca să vezi ce s-a vândut deja înainte să schimbi o cantitate.
ColoanăCe arată
Preț / tranșăPrețul facturat, adnotat cu eticheta tranșei actuale care are acel preț
VândutNumărul de locuri vândute la acel preț, pe toate comenzile trecute prin finalizare
ÎncasatSuma efectiv încasată pe acele linii
RezervatLocuri ținute de comenzi plasate și neplătite
RămasCantitatea de acum la acel preț, minus rezervările

Fiecare treaptă de preț apare, nu doar cele active​

Raportul acoperă întreaga scară de prețuri a produsului:

TreaptăCum apare
Tranșa activăCu eticheta ei, marcată activă
Tranșă epuizată (cantitate 0)Cu eticheta ei și cu ce a vândut; „rămas" 0
Tranșă ștearsă din tabelRând propriu, marcat „tranșă care nu mai există"
Prețul standardRând propriu, marcat „preț standard"; „rămas" este stocul nealocat niciunei tranșe

Un produs care nu a avut niciodată tranșe își arată vânzările pe rândul prețului standard. O tranșă configurată exact la prețul standard își păstrează propriul rând și eticheta dată de admin — istoricul comenzilor nu le poate distinge, iar eticheta este răspunsul mai precis.

Toate trei tipurile de produse — passuri, workshopuri și add-on-uri — au același raport.

De ce raportul grupează după preț, nu după tranșă​

O tranșă nu are identitate stabilă. La fiecare salvare a produsului, tabelul de tranșe este rescris integral: etichetă, preț, cantitate, ordine și număr de tranșe. O tranșă poate fi redenumită, reprețuită, mutată sau ștearsă între două vânzări.

Ce rămâne adevărat este prețul de pe linia de comandă. „S-au vândut 40 de locuri la 100 RON" este o afirmație despre istoric, adevărată indiferent ce s-a întâmplat cu tabelul după aceea.

De aceea raportul grupează după prețul facturat și doar adnotează un rând cu eticheta unei tranșe atunci când o tranșă actuală are exact acel preț. Un preț care nu se mai regăsește în tabel primește rând propriu, marcat „tranșă care nu mai există" — este informație reală, nu o eroare.

Nu există „cantitate inițială"

Din același motiv, raportul nu arată o cantitate originală și nu prezintă „Rămas" ca „X din Y consumate". Cantitatea este o pârghie pe care o muți, nu restul unui buget.

Rânduri care nu sunt prețuri​

Trei categorii consumă locuri fără să încaseze bani și primesc rânduri proprii, ca „Vândut" să rămână în acord cu locurile pe care tranșele chiar le-au cedat:

RândCe înseamnă
Acoperit de creditWorkshop plătit cu un credit inclus în pass
Inclus gratuit în passAdd-on acordat automat odată cu pass-ul
Atribuit de adminLoc dat manual din wp-admin, cu scăderea stocului
Atribuit de admin · nu se știeAtribuire manuală făcută înainte ca alegerea de stoc să fie înregistrată

Când atribui manual un pass, un workshop sau un add-on, întrebarea „scade stocul?" decide dacă se consumă un loc din tranșă. Numai „da" consumă. Atribuirile făcute înainte de versiunea 5.26.0 nu au alegerea înregistrată — nu se poate reconstrui, deci apar pe rând separat în loc să fie presupuse într-un fel sau altul.

Două tranșe la același preț

Se contopesc într-un singur rând, cu ambele etichete („100 lei · Early Bird + Preview"). Cantitățile și rezervările se adună. Istoricul comenzilor nu poate spune din care s-a vândut, iar raportul o spune deschis în loc să atribuie arbitrar.

Linii reduse​

Un pass cumpărat prin upgrade este facturat la prețul tranșei minus discountul de upgrade. Rândul acelui preț este marcat „include linii reduse față de prețul tranșei", ca să nu fie confundat cu o vânzare la o tranșă mai ieftină care nu a existat niciodată.

Distincția este disponibilă doar pentru comenzile plasate începând cu versiunea 5.25.0 — liniile mai vechi nu au înregistrat prețul tranșei, deci pentru ele diferența nu se poate recupera.


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.

O comandă neplătită blochează tranșa la nesfârșit?​

Nu. Locul este ținut doar cât timp comanda rămâne deschisă. Când comanda este anulată — manual, sau automat prin „Hold stock (minutes)" din WooCommerce → Setări → Produse → Inventar — locul redevine disponibil de la sine.

Dacă participantul anulează plata la bancă, ce se întâmplă cu prețul?​

Comanda trece în eșuată, iar de acolo pornește o fereastră de 30 de minute:

  • În fereastră — locul rămâne ținut, iar comanda mai poate fi plătită la prețul de pe ea. Ăsta e cazul real: cardul a fost refuzat, participantul reia peste un minut. Tot ce conține comanda rămâne blocat pentru o a doua cumpărare — pass, workshop, add-on și creditele folosite.
  • După fereastră — locul se eliberează, iar comanda nu mai poate fi plătită. Când participantul deschide vechiul link de plată, comanda se anulează și e trimis să plaseze una nouă, la prețul curent.

Statusul nu poate deosebi un card refuzat de o anulare deliberată — ambele dau „eșuată". Doar timpul le separă. Fără fereastră, cine anula la bancă își păstra prețul ieftin la nesfârșit și putea plăti după ce tranșa se epuiza pentru toți ceilalți.

Ce se întâmplă cu tranșa dacă o comandă finalizată este rambursată?​

Locul se întoarce în tranșa activă în momentul rambursării, nu în cea la care a fost vândut. Astfel capacitatea este refăcută fără să se redeschidă un preț early bird pe care organizatorii l-au închis deja.

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.