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,
т.к. стоимость это деньги, а не бонусы. Если же бонусов не достаточно для полной оплаты услуги, то конечная стоимость услуги будет вычислена за вычетом кол-ва бонусов.