This is the multi-page printable view of this section. Click here to print.

Return to the regular view of this page.

Биллинг

Биллинг (автоматизированная система расчётов (АСР)) - система, програмный комплекс, для тарификации оказываемых услуг.

Обязательно настройте синхронизацию времени на вашем сервере, иначе могут быть ошибки и не точности в работе биллинга.

Функции биллинга SHM:

  • Оказание платных услуг
  • Вычисление даты окончания услуг, в зависимости от системы расчёта и периода оплаты
  • Возврат средств за преждевременно завершенные услуги
  • Генерация событий для возможности привязки внешних команд

Биллинг SHM всегда округляет деньги до сотого знака (до копеек).

SHM поддерживает несколько систем расчетов.

1 - Системы расчетов

Система расчета с фиксированным кол-вом дней в месяце

SHM использует по-умолчанию именно эту систему расчетов.

Считаем, что в месяце всегда 30 дней.

Например, услуга стоит 100р. в месяц, тогда легко подсчитать стоимость услуги за день, за час, за минуту и т.п.

Стоимость дня будет вычислена по формуле: 100р./30дней = 3.33 руб/день.

При заказе услуги дата окончания будет вычислена как текущая дата плюс 30 дней.

Дата окончания услуг плавающая из-за разного кол-ва дней в месяцах.

Этот способ расчетов самый простой и понятный для клиентов.

Календарная система расчетов

Самая сложная и самая честная система расчетов стоимости услуг.

Стоимость дня зависит от кол-ва дней в месяце.

Например, стоимость услуги за месяц 100р.:

в Январе 31 день, поэтому, стоимость услуги за день: 100р./31дней = 3.32 руб/день,

в Феврале 28 дней, поэтому, стоимость услуги за день: 100р./28дней = 3.57 руб/день,

Если клиент заказал услугу на месяц 1-ого Января, то дата окончания услуги будет 31-ого Января, тут всё ожидаемо.

Но если клиент заказал услугу на месяц 10 января, то дата окончания услуги будет 9 февраля (а не 10, как ожидалось). Это связано с тем, что стоимость услуги в январе меньше, чем в феврале (из-за разного кол-ва дней в месяцах). Однако, особо внимательным клиентам кажется, что у них украли день. Но бывают и обратные случаи, когда мы “дарим” дни: например, если клиент закажет услугу 27 февраля, то дата окончания будет 29 марта. Клиентам приходится объяснять, что “крадут/дарят” дни не мы, а календарь.

Дата окончания услуг плавающая из-за разного кол-ва дней в месяцах.

Расчет по последнему дню месяца

Данная система расчетов очень удобна для оказания услуг юридическим лицам, так как бухгалтерия выставляет закрывающие документы в конце каждого месяца.

При заказе услуги 10 января, первый платеж будет за период с 10 по 31 января. Следующий платеж будет с 1 февраля по 28 февраля, затем, с 1 марта по 31 марта и так далее.

Дата окончания услуги всегда последний день месяца.

2 - Платежи и бонусы

  • Платежи - строки в БД (pays_history) с указанием суммы, даты и типа платежа.
  • Бонусы - строки в БД (bonus_history) с указанием кол-ва бонусов, даты начисления/списания и поле комментария
  • Списания - строки в БД (withdraw_history) с указанием сколько, за что и кода было списано (оказано)
  • Баланс - разница платежей и списаний
  • Бонусный баланс - сумма бонусов в таблице бонусов

Списания

Каждый раз, при заказе или продлении услуги, биллинг вычисляет итоговую сумму списания (итоговая стоимость услуги).

Сумма списания вычисляется как произведение стоимости услуги (cost), помноженное на кол-во (qnt) за вычетом персональной скидки клиента и скидки на саму услугу.

SHM проверяет бонусный баланс, и если его достаточно, то услуга будет оказана за счет бонусов. При этом, стоимость (total) услуги будет 0, т.к. стоимость это деньги, а не бонусы. Если же бонусов не достаточно для полной оплаты услуги, то конечная стоимость услуги будет вычислена за вычетом кол-ва бонусов.