1. Регистрация нового, триального клиента.


Условия:  -

Шаги:

1.1 Клиент регистрируется в сервисе Zegoal, верифицирует e-mail, ожидает начало триального периода.

1.2 Zegoal создает новую базу (тенант) для нового клиента. 

1.3 Zegoal выполняет запрос через API CreateAccount в Ti-Rate для создания нового аккаунта. Передает как минимум

  • "account_type" (проверяется Ti-Rate)
  • "account_name" (проверяется Ti-Rate) 
  • "account_code" (проверяется Ti-Rate)
  • "noti_channel"
  • "noti_user_id"

1.4 Ti-Rate обрабатывает запрос на API CreateAccount, создает новый аккаунт и возвращает "account_id". Новый аккаунт в состоянии Trial.

1.4.1 Для нового аккаунта автоматически добавляются все балансы, для которых указана опция автодобавления (в нашем случае Money_BYN, TASKS, USERS). 

1.4.2 Новому аккаунту автоматически продается продукт с опцией автопродажи (в нашем случае Trial) в состоянии ACT.

1.4.3 По триальному продукту отправляется нотификация про его состояние (ProductStateChange).

1.4.4 Состояние Trial для аккаунта позволяет выполнять любые снятия с помощью API ProcesEvent.

1.4.5 Для нового аккаунта автоматически запланирована смена LC на Suspended через 15 дней и Terminated через 60 дней после создания.

1.4.6 По всем запланированным LC отправляются нотификации (AccountStateChange).

1.5 Zegoal принимает и сохраняет "account_id". Позволяет новому клиенту регистрировать пользователей и использовать таски.

1.6 Zegoal может получить все данные нового аккаунта через API GetAccountInfo

1.7 За 5, 3 и 1 день до окончание Триального периода (до перевода LC в Suspended), Ti-Rate формирует нотификацию TrialReminder.

Комментарий. Если клиент после окончания триального периода не выбирает платный продукт, согласно запланированному LC он меняет статус на Suspended или Terminated, после чего ему не доступен функционал сервиса.


2. Продажа primary продукта триальному клиенту (переход на подписку)

Условия: Аккаунт в состоянии Trial или Suspended. У аккаунта активный primary продукт.

Шаги:

2.1 Клиент выбирает в сервисе Zegoal интересующий его тариф и интересующее его количество пользователей для тарифа.

2.2 Zegoal выполняет запрос на API AddProduct. Передает Account_id, ProductID, LC_status, force_tariff_change = true, а так же коллекцию параметров с количеством и ценой пользователей разных типов.

2.3 Ti-Rate принимает и обрабатывает запрос.

2.3.1 Продукт Trial переводиться в состояние TRM. По изменению состояния отправляется нотификация ProductStateChange.

2.3.2 Для аккаунта добавлен новый продукт в состоянии, которое было передано. По новому продукту отправляется нотификация ProductStateChange.

2.3.3 Для аккаунта обновлены балансы: Балансы лимитов юзеров обновлены согласно параметрам количества купленных пользователей. Баланс использованных юзеров всех типов = 0. На баланс TASKS начислено соответственное количество тасок.

2.3.4 Аккаунт переходит в состояние Active.

2.3.5 Выполняется нотифицирование AccountStateChange.

2.3.6 Ti-Rate автоматически формирует инвойс с типом interim на предоплату нового продукта. В инвойсе указано стоимость продукта с учетом количества юзеров разного типа.

2.3.6.1 Расчет стоимости продукта выполняется по схеме Prorate. Биллинг посчитает пропорционально стоимость платежа АП и стоимость юзеров на количество дней от дня покупки до конца месяца. Соотвественно количество тасков будет тоже начислено пропорционально. Например, если продукт куплен 15го числа, то клиенту будет выставлен счет на 50% абонплаты и будет начислено 50% от пакетного количества тасок.

2.3.7 Ti-Rate нотифицирует о формировании нового инвойса.

2.3.8 Если на балансе Money_BYN достаточно средств (после снятия баланс > 0) для покрытия инвойса

-- средства снимаются и инвойс помечается как Paid.

-- Запланированные переходы LC аккаунта в Suspended и Terminated смещены соотвественно на 10 дней и 60 от даты конца периода действия услуги (от первого дня следующего месяца ждем оплаты за следующий месяц).

Иначе (не выполнилось снятие АП)

-- средства снимаются "в минус", продукт все равно активировался.

-- Запланированные переходы LC аккаунта в Suspended и Terminated смещены соотвественно на 10 дней и 60 от даты активации продукта (ждем оплаты 10 дней).

2.3.9 Все изменения в запланированных LC сопровождаются нотификациями AccountStateChange

2.4 Если инвойс не оплачен 5, 7, 9 дней, Ti-Rate нотифицирует об этом ( нотификация UnPaidInvoice).


Комментарий: перенос автоблокировки аккаунта выполняет триггер, который проставляет Suspended и Terminated соответсвенно на +10 и +60 от даты "по" последнего оплаченного инвойса. Если нет ни одного оплаченного инвойса - от от даты активации текущего продукта ?. 

3. Получение платежа для клиента

Условия: Аккаунт в состоянии Trial, Active или Suspended. У аккаунта активный primary продукт.

Шаги:

  1. Zegoal (или другая внешняя система) выполняет запрос через API AddPayment, передавая такие атрибуты как account_id, channel, amount, invoice_id.
  2. Ti-Rate принимает запрос и обрабатывает его:

2.1 В биллинге создается запись сущности "Платеж"

2.2 Денежный баланс увеличивается на сумму amount.

2.3 Система отправляет нотификацию о новом платеже (NewPayment)

3. Если для платежа указан инвойс, то привязываем платеж к инвойсу.

3.1 Если суммы на балансе достаточно для покрытия привязанно инвойса - средства списываются со счета и инвойс помечается как Paid.

4. Если для аккаунта есть неоплаченные инвойсы - выполняем попытку их покрыть с денежного баланса.

5. Выполняем смещение дат для автоматической блокировки аккаунта в состояниях Suspended и Terminated. 


4. Переход на новый биллинговый период (первого числа)

Условия: Аккаунт в состоянии Active или Suspended. У аккаунта активный primary продукт.

Шаги:

  1. Zegoal не выполняет никаких действия
  2. Первого числа месяца Ti-Rate формирует инвойс на предоплату для всех продуктов, которые активные на начало периода в соответствии с количеством за прошлый период и запланированными LC для продукта.
  3. Ti-Rate нотифицирует о формировании нового инвойса.
  4.  Если на балансе Money_BYN достаточно средств (после снятия баланс > 0) для покрытия нового инвойса

-- средства снимаются и инвойс помечается как Paid.

-- Запланированные переходы LC аккаунта в Suspended и Terminated смещены соотвественно на 10 дней и 60 от даты конца периода действия услуги (от первого дня следующего месяца ждем оплаты за следующий месяц).

Иначе (не выполнилось снятие АП)

-- средства снимаются "в минус", продукт все равно активировался.

-- Запланированные переходы LC аккаунта в Suspended и Terminated смещены соотвественно на 10 дней и 60 от даты активации продукта (ждем оплаты 10 дней).

5. Все изменения в запланированных LC сопровождаются нотификациями AccountStateChange

6. Если инвойс не оплачен 5, 7, 9 дней, Ti-Rate нотифицирует об этом ( нотификация UnPaidInvoice).