Платёжный цикл в BILLmanager (биллинговый цикл) — это период между двумя последовательными оплатами услуги. 

Задание billdaily в планировщике (cron) отслеживает платёжный цикл. Задание отвечает за ежедневный сбор информации об открытых услугах. Некоторые функции задания (cron):

  • считает, через сколько дней необходимо продлить услугу;
  • инициирует автопродление услуг, если такая возможность включена;
  • инициирует уведомления о необходимости продлить услугу;
  • ведёт статистику использования ресурсов и услуг;
  • считает на какой срок просрочена оплата услуг.

В BILLmanager можно использовать биллинговый цикл разной длительности: помесячный, ежедневный и почасовой. 

Помесячный цикл


Ежемесячное списание средств можно разделить на два типа: периодическое и календарное. 

Периодическое списание

При заказе услуги клиент выбирает период оплаты. Средства списываются периодами на протяжении всего времени использования услуги. Период всегда кратен месяцу. В качестве дня списания средств используется число заказа услуги.

Например, клиент заказал услугу виртуального хостинга пятого июня и оплатил три месяца использования. Все последующие списания средств будут происходить раз в три месяца пятого числа: пятого сентября, пятого декабря и т.д.

Календарное списание средств

Чтобы активировать календарное списание средств:

  1. Перейдите в раздел ПродуктыТарифные планы → выберите тарифный план → кнопка Изменить.
  2. Активируйте опцию Календарное списание средств. Когда опция включена, оплата услуги выравнивается по первому числу месяца.
  3. Укажите Переходный день. Указанный день будет использован для календарного выравнивания стоимости и срока действия услуги.
    Если услуга заказана до переходного дня, то она будет активна до конца текущего месяца. Если услуга заказана в переходный день или позже, то она будет активна до конца следующего месяца.
    Например, в качестве Переходного дня установлено значение пятнадцать. Услуга, которую клиент заказал двенадцатого июля, будет активна до первого августа. Услуга, которую клиент заказал семнадцатого июля, будет активна до первого сентября. 

При календарном списании средств для расчёта стоимости неполного месяца используется формула:

(количество дней в месяце - текущее число + 1) / количество дней в месяце * стоимость тарифа

За пользование услугой целый месяц взимается полная стоимость тарифного плана.

Таким образом, при заказе услуги на месяц:

  • до переходного дня с клиента будет списана стоимость неполного месяца (по формуле);
  • после переходного дня — с клиента будет списана стоимость неполного месяца (по формуле) + стоимость целого месяца. 

Для заказов на более длительные сроки, например, три месяца:

  • заказ до переходного дня — будет списана стоимость двух полных месяцев и стоимость неполного месяца;
  • заказ после переходного дня — будет списана полная стоимость периода (три полных месяца) и стоимость неполного месяца. 

Ежедневный цикл


Особенности ежедневного платёжного цикла:

  • Для услуг на ежедневном списании, у которых период заказа месяц и больше, остановка происходит в 00:00 часов каждого дня, независимо от времени её приобретения.
  • Услуги с ежедневным типом учёта действуют пока на счету клиента есть средства.
  • Сумма ежедневного платежа зависит от периода заказа услуги.

Чтобы активировать ежедневное списание средств:

  1. Перейдите в раздел ПродуктыТипы продуктов → выберите продукт → кнопка Изменить:
    1. В разделе Доступные периоды оплаты активируйте опцию День.
    2. Выберите схему Платёжного цикла:
      • Общая схема списания — продление услуг будет происходить по стандартной схеме списания один раз в день. По умолчанию задача на  продления услуг запускается в 00:15 каждого дня;
      • Полный день — продление услуг будет происходить не раньше времени действия услуги. По умолчанию задача на продление истекающих услуг запускается каждые 30 минут;
      • Полный день (с точностью до часов) — продление услуг будет происходить не раньше часа действия услуги. По умолчанию задача на продление истекающих услуг запускается каждые 30 минут.

        Например, провайдер настроил Платёжный цикл для двух типов продуктов. У одного типа продукта установлена опция "Полный день", у второго — "Полный день (с точностью до часов)". Клиент заказал на один день по услуге каждого типа продукта. Время заказа и срок действия обеих услуг: 16:47. Тогда схема продления услуг будет:

        • запуск задания billperiodic в 16:00 — продлевает или останавливает, если на счету недостаточно средств, услугу, у которой в типе продукта установлена опция "Полный день (с точностью до часов)". Для этой опции система не учитывает минуты;
        • запуск задания billperiodic в 16:30 — отсутствуют услуги на продление, так как 16:30 < 16:47;
        • запуск задания billperiodic в 17:00 — продлевает или останавливает, если на счету недостаточно средств, услугу, у которой в типе продукта установлена опция "Полный день". Так как 17:00 ≥ 16:47.
  2. Перейдите в раздел ПродуктыТарифные планы → выберите тарифный план → кнопка Изменить.
    1. Активируйте опцию Ежедневно снимать оплату. Когда опция включена, средства за использование услуги списываются с клиента ежедневно.
      С включённой опцией Ежедневно снимать оплату будут доступны:
      • Расчёт стоимости дня от периода заказа — активируйте опцию, чтобы сумма оплаты при ежедневном списании не зависела от количества дней в месяце. Стоимость дня будет рассчитываться в зависимости от количества дней в периоде заказа;
      • Разрешить клиенту запуск/остановку — активируйте опцию, чтобы клиент получил права на запуск и остановку услуг тарифа.
        Если опция Списывать средства при остановке:
        • включена — время простоя оплачивается клиентом. По умолчанию опция включена;
        • выключена — в начале следующего дня клиенту будут возвращены средства за время простоя услуги. Таким образом, клиент может влиять на ежедневную стоимость услуги.

Примеры

Стоимость услуги с ежедневным списанием считается по формуле:

(стоимость заказанного периода / количество месяцев в периоде) / количество дней в текущем месяце

Например, первого марта клиент заказал виртуальный сервер за 100 рублей в месяц с ежедневным списанием средств. Период заказа — три месяца. Итоговая стоимость заказа — 300 рублей. В марте каждый день с клиента будет списываться 3.23 рубля (300/3/31). В апреле ежедневно будет списываться 3.33 рубля (300/3/30).

Стоимость услуги с ежедневным списанием с включённой опцией Расчёт стоимости дня от периода заказа считается по формуле:

стоимость заказанного периода / сумма дней в периоде

Например, первого марта клиент заказал виртуальный сервер за 100 рублей в месяц с ежедневным списанием средств. Период заказа — три месяца. Итоговая стоимость заказанного периода — 300 рублей. В периоде 92 дня. С клиента ежедневно будет списываться 3.26 рубля (300/92) вплоть до тридцать первого мая. Первого июня начнётся новый период.

Разница между ежедневным списанием и списанием за период "один день"

В обоих случаях списывается стоимость за день, но:

  • при ежедневном списании услуга заказывается на некий период и стоимость одного дня рассчитывается из стоимости этого периода. Например, клиент заказывает VDS на один месяц за 300 рублей, тогда каждый день у него будет списываться: 300/количество дней в этом месяце;
  • при периоде равном один день задаётся конкретно стоимость одного дня. Например, клиент покупает VDS за 3 рубля в день. В этом случае каждый день будет списываться 3 рубля.

Дополнительно

За ежедневное продление услуг, у которых в настройках типа продукта для Платёжного цикла активны опции "Полный день" или "Полный день (с точностью до часов)", отвечает задание в планировщике cron:

*/30 * * * * /usr/local/mgr5/sbin/billmaintain --command billperiodic >/dev/null 2>&1
CODE

Почасовой биллинг


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

Чтобы активировать почасовой биллинг:

  1. Перейдите в раздел ПродуктыТарифные планы → выберите тарифный план → кнопка Изменить.
  2. Активируйте опции Ежедневно снимать оплату и Разрешить клиенту запуск/остановку, чтобы учитывать время простоя услуг. Если опция Списывать средства при остановке:
    • включена — время простоя оплачивается клиентом. По умолчанию опция включена;
    • выключена — в начале следующего дня клиенту будут возвращены средства за время простоя услуги. Таким образом, клиент может влиять на ежедневную стоимость услуги.

Стоимость услуги с учётом простоя рассчитывается по формуле:

(Стоимость услуги + Стоимость ресурса) / Количество часов в сутки * Количество часов работы + Стоимость ресурсов со списанием при простое

Перерасчёт и возврат средств клиенту выполняется каждый день по заданию (cron) billdaily. Перерасчёт и возврат выполняются для услуг, у которых дата остановки совпадает с текущей датой. В рамках задания cron изменяется дата остановки услуг с почасовым биллингом — продлевается на один день. Схема возврата:

  1. Услуга была продлена, в начале дня списываются средства за текущий день.
  2. Услуга была активна двенадцать часов, после чего была остановлена.
  3. В начале следующего дня BILLmanager запустит перерасчёт. Расход с суммой за предыдущие сутки будет удалён, вместо него будет создан новый расход с суммой за двенадцать часов.

Например, провайдер предоставляет клиентам услугу виртуального хостинга с возможностью почасового биллинга. За простой услуги средства не списываются (опция Списывать средства при остановке выключена). Ежедневная стоимость услуги — 10 рублей. Клиент заказал два ресурса: дополнительное дисковое пространство за 5 рублей в сутки и публичный IP-адрес за 10 рублей. За ресурс "Дисковое пространство" списываются средства при остановке услуги, за "IP-адрес" — не списываются. В сутки услуга клиента стоит 25 рублей. Последние сутки виртуальный хостинг был активен только 12 часов. Клиенту будет возвращена половина стоимости услуги и ресурса "IP-адрес". Итоговая стоимость услуги за последние сутки составит 15 рублей. 

Не рекомендуем вручную выполнять перерасчёт стоимости услуг с почасовым биллингом. Это может нарушить логику списания расходов, а также затронуть расходы с другими типами учёта.