Élő előfizetések és életciklus – rendszerleírás
Az előfizetés-tábla és kapcsolatai, a mentés, az állapotváltás, a tételkorlátok felhasználókra írása, a kredit és a lemondás, valamint az éjjeli életciklus-futás.
Áttekintés
A felhasználóhoz és clienthez tartozó élő előfizetések kezelése. A táblanevek a telepítés saját előtagjával állnak az adatbázisban.
Adatmodell
| Tábla | Szerep |
|---|---|
subscription | előfizetés: felhasználó, client, csomag, állapot (trial, active, past_due, suspended, canceled, expired), ciklus, ülésszám, próbaidő vége, időszak vége, lemondás az időszak végén |
subscription_item | az előfizetés egyedi tételei korláttal |
subscription_account | a felhasználó folyószámlája és házi clientje |
subscription_event | állapot-napló |
payment_transaction | fizetési tranzakciók |
subscription_credit | kredit-napló |
Mentés és állapotváltás
- Form:
canAction(edit); mentés:canSave. Csomag kötelező; új előfizetésnél létező felhasználó és aktív csomag; a client csak tartalmi jog szerinti; a számlázási cég csak agetBillableCompanies()listából (különben némán kimarad). - Új előfizetés: a felhasználó folyószámla-sorának biztosítása (
ensureAccount), számlázási cég, majdDlbtpayment::startTrial()(7 nap). - Meglévő:
saveSubscription(), számlázási cég, cache-ürítés. - Tételek:
saveItems()törlés-újraírással, majdmaterialiseLimits()– a tétel-korlátot a tulajdonos felhasználó MEGLÉVŐ hozzárendelés-sorára írja. setstate:Dlbtpayment::setState()(+ állapot-napló +syncGrants());trial,active,past_dueállapotnálsyncClientPlan()a client minden felhasználójára.
Tétel-választás (item, SYSTEM): a funkció-lista csak a SUBSCRIPTION besorolású aktív funkciókat kínálja; a plantemplate egy csomag régi tartalom-tételeit adja. A form tétel- és korlát-blokkja item vagy edit, illetve limit vagy edit joggal jelenik meg; mivel ezek SYSTEM kulcsok, a tényleges korlát az edit.
Kredit, lemondás, törlés
credit:Dlbtcredit::grant(), visszaadja az új egyenleget;account_id > 0,amount > 0.cancel:Dlbtpayment::requestCancel(), időszak végére vagy azonnal; hibáknot_found,already_ended.delete: fizetési tranzakció esetén tilt (error_in_use); különben fizikai törlés az állapot-naplóval.autocomplete:findUsers(), legfeljebb 8 találat,editnélkül üres.
Háttérfeladat: subscription_lifecycle
Globális seed-job a katalógus oldali cron-sor feldolgozóban. Lépései: Dlbtpayment::runLifecycle() (lejárt próbaidő és lemondás → expired; lejárt próbaidő vagy időszak → terhelés, sikeresen active, sikertelenül past_due; tartósan fizetetlen → suspended; lemondott, lejárt időszak → lezárás), majd Dlbtbilling::applyPendingPlans() (esedékes lefelé-váltás) és Dlbtbilling::invoiceMonthlyUsage() (havi túlhasználat-számla). Napló-előtag: subscription_lifecycle.
Jogosultság és korlátok
list:UNMAPPED;item,limit:SYSTEM;edit,add,credit,cancel,delete,debug: nincs besorolva.- A lista tartalmi hatókör nélkül minden előfizetést mutat.
- A
creditnem ellenőrzi a folyószámla tartalmi hatókörét.