Kihagyás

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=ANY lehetővé teszi bármely csomag kreditjeinek felhasználását bármely edzéstípushoz.
  • TrainingCreditMatch=EXACT megköveteli, hogy a kreditek az adott tanfolyamhoz/edzéscsoporthoz tartozzanak.
  • TrainingCreditHourBased=YES eseté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:

  1. User.DiscountsDisabled = true mindent felülír -- nem jár kedvezmény.
  2. User.SeasonDiscountEnabled értékének igaznak kell lennie ahhoz, hogy az adott felhasználóra szezonkedvezmény vonatkozzon.
  3. Group.SeasonDiscount elsőbbséget élvez a Group.Discount felett az érvényes szezon alatt.
  4. SeasonDiscountForOneOffReservations értékének YES-nek kell lennie a szezonkedvezményhez nem ismétlődő foglalásoknál.
  5. SeasonDiscountForShortRecurringReservations vezérli a rövid ismétlődő sorozatok jogosultságát.
  6. 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 a Min_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