Konfiguráció kölcsönhatási térkép¶
Ez az oldal dokumentálja, hogyan függenek egymástól és hogyan hatnak egymásra a HellaBooking konfigurációs entitásai. Ezen láncolatok megértése elengedhetetlen a rendszer helyes beállításához -- bármely láncszem hiánya megzavarja a következő lépések működését.
1. Foglalástól az árazásig lánc¶
A teljes konfigurációs lánc, amely egy foglalható, árazott idősávhoz szükséges:
flowchart TD
Season["Szezon\n(dátumtartomány, aktív jelző)"]
BH["Nyitvatartás\n(nyitás/zárás naponként)"]
SFA["Pálya elérhetőség\n(pálya + szezon + órák)"]
SFR["Pálya bérlés\n(alap árazási szabályok)"]
RPP["Árazási időszak\n(idősávok egy napon belül)"]
RPPI["Árazási időszak intervallum\n(ár idősávonként)"]
Reservation["Foglalás\n(ügyfél foglalása)"]
Season --> BH
BH --> SFA
SFA --> SFR
SFR --> RPP
RPP --> RPPI
RPPI --> Reservation
style Season fill:#4a90d9,color:#fff
style Reservation fill:#50c878,color:#fff
Mind a hat entitást konfigurálni kell ahhoz, hogy egy sportpálya foglalhatóként jelenjen meg helyes árazással. Ha a láncból bármely entitás hiányzik, a pálya vagy nem jelenik meg a naptárban, vagy nulla árat mutat.
2. Felhasználótípus és fizetési viselkedés¶
A CustomerBookAndPayLater rendszerparaméter a UserType_Enum értékkel együtt határozza meg a fizetési folyamatot:
flowchart TD
UT["User.UserType_ID"]
CBPL["Rendszerparaméter:\nCustomerBookAndPayLater"]
UT --> Decision{Érték?}
CBPL --> Decision
Decision -->|OFF| PayNow["Minden felhasználónak\nazonnal fizetnie kell"]
Decision -->|CLUBMEMBER| Split{Felhasználótípus?}
Decision -->|ALL| PayLater["Minden felhasználó\nhalaszthatja a fizetést"]
Split -->|Klubtag, Edző,\nRecepciós, Admin| PayLater2["Foglalhat és\nkésőbb fizethet"]
Split -->|Alkalmi látogató| PayNow2["Azonnal\nfizetnie kell"]
style PayNow fill:#e74c3c,color:#fff
style PayNow2 fill:#e74c3c,color:#fff
style PayLater fill:#50c878,color:#fff
style PayLater2 fill:#50c878,color:#fff
Amikor CustomerBookAndPayLaterInActiveStatus=ON, csak az Active státuszú (Status_ID=2) felhasználók halaszthatják a fizetést, a fő beállítástól függetlenül.
3. Kreditrendszer folyamata¶
flowchart TD
CE["Rendszerparaméter:\nCreditEnabled=YES"]
CD["Kredit meghatározás\n(csomagok: összeg, ár, lejárat)"]
CT["Kredit tranzakció\n(vásárlás, fizetés, visszatérítés...)"]
UB["User.CreditBalance"]
Pay["Fizetés\n(PaidByCredit mező)"]
CE -->|aktiválja| CD
CD -->|ügyfél vásárol| CT
CT -->|frissíti| UB
UB -->|elegendő egyenleg| Pay
Pay -->|levonja| CT
style CE fill:#4a90d9,color:#fff
style UB fill:#f39c12,color:#fff
Amikor az ügyfél kredittel fizet, a Payment.PaidByCredit rögzíti a felhasznált kredit összeget, csökkentve a PayableAmount értéket. Egy Payment (ID=2) típusú CreditTransaction jön létre a levonás nyomon követésére.
4. Tanfolyami kredit lánc¶
flowchart TD
TCE["Rendszerparaméter:\nTrainingCreditEnabled=ALL"]
TCD["Rendszerparaméter:\nTrainingCreditDefinitionSetup=PACKAGE"]
CP["Tanfolyamcsomag /\nEdzéscsoportcsomag"]
TCC["Tanfolyami kredit\n(ügyfél kreditegyenlege)"]
ATT["Jelenlét\n(edzésen való részvétel)"]
TPT["Edzéscsomag tranzakció\n(terhelés jelenlétkor)"]
TCE -->|aktiválja| TCD
TCD -->|PACKAGE mód| CP
CP -->|ügyfél vásárol| TCC
TCC -->|felhasználja| ATT
ATT -->|létrehozza| TPT
style TCE fill:#4a90d9,color:#fff
style TPT fill:#50c878,color:#fff
TrainingCreditMatch=ANYlehetővé teszi bármely csomag kreditjeinek felhasználását bármely edzéstípushoz.TrainingCreditMatch=EXACTmegköveteli, hogy a kreditek az adott tanfolyamhoz/edzéscsoporthoz tartozzanak.TrainingCreditHourBased=YESesetén a felhasználás óra alapján számítódik, nem alkalmak szerint.
5. Kedvezmények halmozása¶
Egyetlen foglalásra több kedvezményforrás is vonatkozhat. A rendszer prioritási sorrendben értékeli őket:
flowchart TD
GD["Group.Discount\n(százalék)"]
GSD["Group.SeasonDiscount\n(szezon-specifikus %)"]
SDOO["Rendszerparaméter:\nSeasonDiscountForOneOffReservations"]
USDE["User.SeasonDiscountEnabled"]
UDD["User.DiscountsDisabled"]
GD --> Eval["Kedvezmény kiértékelés"]
GSD --> Eval
SDOO --> Eval
USDE --> Eval
UDD --> Override{"DiscountsDisabled?"}
Override -->|IGEN| Zero["Nincs kedvezmény"]
Override -->|NEM| Eval
Eval --> Final["Végső kedvezmény %"]
style Zero fill:#e74c3c,color:#fff
style Final fill:#50c878,color:#fff
Prioritási szabályok:
User.DiscountsDisabled = truemindent felülír -- nem jár kedvezmény.User.SeasonDiscountEnabledértékének igaznak kell lennie ahhoz, hogy az adott felhasználóra szezonkedvezmény vonatkozzon.Group.SeasonDiscountelsőbbséget élvez aGroup.Discountfelett az érvényes szezon alatt.SeasonDiscountForOneOffReservationsértékének YES-nek kell lennie a szezonkedvezményhez nem ismétlődő foglalásoknál.SeasonDiscountForShortRecurringReservationsvezérli a rövid ismétlődő sorozatok jogosultságát.- Ha egy felhasználó több csoporthoz tartozik, a legmagasabb prioritású csoport érvényesül.
6. Lemondási időzítési logika¶
A lemondási határidő határozza meg, hogy a lemondott foglalás milyen státuszt kap:
flowchart LR
Cancel["Ügyfél lemondást\nkérelmez"]
Check{"Órák a\nkezdésig >= határidő?"}
Cancel --> Check
Check -->|IGEN| Status2["Státusz = Cancelled\n(ID=2)\nTeljes visszatérítés lehetséges"]
Check -->|NEM| Status3["Státusz = LastMinuteCancelled\n(ID=3)\nNincs visszatérítés"]
style Status2 fill:#50c878,color:#fff
style Status3 fill:#e74c3c,color:#fff
A határidő felhasználótípusonként eltérő:
| Felhasználótípus | Paraméter | Alapérték |
|---|---|---|
| Alkalmi látogató | MinReservationCancellationCasualVisitor_Hours |
24 óra |
| Klubtag | MinReservationCancellationClubMember_Hours |
24 óra |
7. Pályatípustól az árazási modellhez¶
A sportpálya típusa határozza meg a foglalás típusát, amely viszont az árazási modellt határozza meg:
flowchart TD
SFT["Sportpályatípus\n(pl. teniszpálya, squash)"]
RT["SportsFieldType.ReservationType_ID"]
SFT --> RT
RT -->|1 = Óradíjas| HP["Óradíjas árazás\nRentPricingPeriodInterval\nidősávonként"]
RT -->|2 = Napi| DP["Napi árazás\nEgyetlen ár naponta\na SportsFieldRent-ből"]
HP --> Cal["Naptár idősáv\nrácsot mutat"]
DP --> Cal2["Naptár egész napos\nsávokat mutat"]
style HP fill:#4a90d9,color:#fff
style DP fill:#f39c12,color:#fff
- Az Óradíjas pályák a
ReservationIntervalIncrement_Mins(alapérték: 30) paramétert használják az idősávrács meghatározásához és aMin_ReservationInterval_Mins(alapérték: 60) paramétert a minimális foglalási időtartamhoz. - A Napi pályák figyelmen kívül hagyják az idősáv-paramétereket és az egész napot foglalják le.
Kereszthivatkozási összefoglaló¶
| Kölcsönhatás | Kulcsparaméterek/táblák | Hatás |
|---|---|---|
| Árazási lánc | Season -> BusinessHours -> SportsFieldAvailability -> SportsFieldRent -> RentPricingPeriod -> RentPricingPeriodInterval | Mindegyik szükséges a foglalható idősávokhoz |
| Későbbi fizetés | CustomerBookAndPayLater + UserType | Meghatározza, ki fizet azonnal és ki halaszthat |
| Kredit fizetés | CreditEnabled + CreditDefinition + Payment.PaidByCredit | Pénztárca alapú fizetés engedélyezése |
| Tanfolyami kreditek | TrainingCreditEnabled + TrainingCreditDefinitionSetup + csomagok | Tanfolyami kredit felhasználás vezérlése |
| Kedvezmény halmozás | Group.Discount + SeasonDiscount + User jelzők | Prioritás alapú kedvezmény feloldás |
| Lemondási státusz | MinReservationCancellation*_Hours | Cancelled vagy LastMinuteCancelled meghatározása |
| Árazási modell | SportsFieldType.ReservationType_ID | Óradíjas vagy napi árazás és naptár |