HandyCafe Docs
owner cashier

Гаманець учасника

Гаманець учасника -- це система грошового балансу, що дозволяє учасникам передплачувати послуги кафе. Замість оплати готівкою за кожен окремий сеанс учасник може поповнити гаманець, і система автоматично списує з балансу по мірі використання ПК, консолей або замовлення товарів.

Кредитна архітектура

Гаманець використовує систему кредитів замість єдиного поточного балансу. Кожного разу при додаванні коштів до гаманця система створює новий кредит гаманця. Кожен запис кредиту -- незалежний запис з власним балансом, джерелом, терміном дії та обмеженням за пристроєм. Ця архітектура забезпечує:

  • Повну відстежуваність походження кожної одиниці балансу.
  • Незалежні терміни дії для кожного запису кредиту.
  • Обмеження за типом пристрою (деякі кредити можуть використовуватись лише на ПК, інші лише на консолях).
  • Чітке розділення оплачених коштів та промоційних бонусів.

Загальний баланс гаманця учасника -- сума залишків по всіх активних записах кредитів.

Типи кредитів

Кожен кредит гаманця має тип, що ідентифікує спосіб надходження коштів:

Тип кредиту Опис
Оплачений Учасник заплатив за ці кошти (готівка, картка або інший спосіб). Створюється при покупці грошового пакета акції.
Бонусний Промоційні кошти, надані як частина покупки пакета.
Ручний Завантажено вручну касиром або адміністратором. Для компенсаційних кредитів або спеціальних домовленостей.
Коригування Адміністративне коригування для виправлення помилки у балансі.
Міграція Кошти, імпортовані з попередньої системи при міграції даних.
Скасоване повернення Кошти, відновлені при скасуванні раніше оформленого повернення.

Тип встановлюється при створенні кредиту та не може бути змінений. Він слугує постійним аудиторським слідом.

Статус кредиту

Кожен кредит гаманця проходить життєвий цикл, відстежуваний статусом:

  • Активний: кредит має залишок коштів та не прострочений. Кошти можуть споживатися.
  • Прострочений: дата закінчення кредиту минула. Залишок більше не доступний.
  • Спожитий: залишок балансу досяг нуля через нормальне споживання.
  • Скасований: кредит вручну скасовано адміністратором, анулюючи залишок.

Споживання гаманця

Коли з гаманця учасника списуються кошти (за час сеансу, замовлення або іншу тарифіковану подію), система створює запис споживання гаманця, що пов'язується з конкретним кредитом та фіксує точну списану суму.

Кожен запис споживання включає контекст:

Контекст Опис
Використання сеансу Кошти спожиті для оплати часу сеансу. Система списує з гаманця по мірі роботи сеансу.
Оплата гаманцем Пряма оплата з гаманця (наприклад, оплата замовлення товарів балансом гаманця).
Замовлення Кошти спожиті для оплати замовлення товарів.
Повернення Негативне коригування при обробці повернення для відновлення коштів у кредиті.

Кожен запис споживання посилається на конкретний сеанс, замовлення або транзакцію, що його спричинили, забезпечуючи повне аудиторське відстеження.

Журнал балансу

Додатково до записів споживання на рівні кредитів система підтримує журнал балансу учасника, що фіксує кожну подію зміни загального балансу гаманця:

Тип події Опис
load Кошти додано до гаманця (створено новий кредит або поповнено існуючий).
spend Кошти спожито з гаманця (оплата сеансу, замовлення).
refund Кошти повернуто до гаманця (повернення замовлення, сеансу).
adjustment Адміністративна зміна балансу (коригування, списання).

Кожен запис журналу фіксує суму зміни та результуючий баланс, тому ви можете відтворити баланс учасника на будь-який момент часу, читаючи журнал хронологічно.

Обмеження за пристроєм

Кожен кредит гаманця має обмеження за пристроєм, що контролює, які типи пристроїв можуть споживати з нього:

Обмеження Значення
Клієнт Використовується на клієнтських ПК. Також на консолях, якщо не обмежено явно.
Консоль Використовується на ігрових консолях. Також на ПК, якщо не обмежено явно.
Лише ПК Виключно для клієнтських ПК. Не може споживатися сеансами консолей.
Лише консолі Виключно для ігрових консолей. Не може споживатися сеансами ПК.
Обидва Використовується на будь-якому типі пристрою. Значення за замовчуванням.

Коли системі потрібно списати з гаманця учасника, вона фільтрує доступні кредити за обмеженням пристрою для забезпечення списання лише з відповідних кредитів.

Категорія гаманця та міжкатегорійні витрати

Кредити гаманця можуть мати позначку категорії (наприклад, "ігровий" або "загальний"). Це дозволяє кафе створювати ізольовані пули балансів, що можуть витрачатися лише у певних контекстах.

Параметр міжкатегорійних витрат на кожному кредиті контролює, чи можуть його кошти використовуватись поза призначеною категорією:

  • Коли вимкнено (за замовчуванням), кредит може споживатися лише у власній категорії.
  • Коли увімкнено, кредит може також споживатися транзакціями інших категорій.

Якщо кредит не має призначеної категорії, він вважається загальним і може споживатися будь-якою транзакцією.

Як працює поповнення

Кошти до гаманця можна додати кількома способами:

  1. Покупка пакета акції: коли учасник купує грошовий пакет з акції, система автоматично створює кредити гаманця на основі визначення пакета. Одна покупка може створити кілька кредитів (один для оплаченої частини, один для бонусної).

  2. Ручне поповнення: касир може вручну додати кошти до гаманця учасника з панелі деталей. Це створює кредит з типом "Ручний".

  3. Міграція: під час налаштування системи існуючі баланси з попередньої системи можна імпортувати як кредити з типом "Міграція".

Як гаманець споживається під час сеансів

Коли учасник з балансом гаманця запускає сеанс, система може автоматично оплачувати сеанс з гаманця:

  1. Механізм тарифікації розраховує вартість за хвилину на основі активного тарифного слоту та будь-яких рівневих знижок.
  2. По мірі роботи сеансу система періодично списує накопичену вартість з відповідних кредитів гаманця.
  3. Кредити споживаються в порядку дати закінчення (найраніше прострочені першими) для мінімізації втрат.
  4. Якщо баланс гаманця вичерпано до завершення сеансу, залишкова вартість стягується як оплата готівкою при закритті сеансу.
  5. Кожне списання створює запис споживання, пов'язаний із сеансом як "Використання сеансу".