Дополнительные услуги

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

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

Найти его можно в интерфейсе админки по адресу "настройки" → "справочники" → "дополнительные услуги":

nolink&|
nolink&|
Название Назначение
1 Имя Название доп. услуги. Будет отображаться в отчётах
2 Цена Сумма, которая будет начисляться/снимать с абонента (единоразовое списание)
3 Период Как часто будет активироваться услуга
4 Вид фактической услуги Направление движения средств: +/-
5 Условие срабатывания Можно выбрать условие, при выполнении которого будет выполнятся доп. услуга над абонентом
6 Группы абонентов Те группы абонентов, на которых распространяется услуга
7 Описание Внутреннее описание доп. услуги для ориентации среди них
8 Приостановлена Можно на время приостановить доп. услугу без её удаления и открепления её от тарифов
9 Таблица тарифов Можно выбрать тарифы, к которым будет прикреплена доп. услуга (абоненты)
10 Фильтр тарифов Можно быстро найти необходимый тариф

Также можно со стороны настроек тарифа привязать доп. услуги:

nolink&|

Консольные команды

Начиная с 2.10.7 ничего никуда прописывать не нужно

Период

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

Вид услуги

  • Абон. плата - снимает средства с депозита абонента
  • Акция/подарок - начисляет средства на депозит абонента

Условие срабатывания

  • Безусловное (всегда) - срабатывает каждый раз
  • Положительный баланс и интернет включен - срабатывает только на пользователях, у которых: положительный баланс и включен интернет
  • Отрицательный баланс или интернет выключен - срабатывает только на пользователях, у которых: отрицательный баланс (депозит + лимит < 0) или отключен интернет

Настраиваемые условия

В ближайшее время будут доступны настраиваемые условия, т.е. Вы сами сможете задать критерии, по которым абонентам начислять/списывать сумму на депозит. Будут они построены на основе SQL-запросов, будут их примеры. Также думаем, что пользователи будут делиться своими запросами, дабы помочь сообществу.
Тема на форуме:

Фильтр тарифов

Если указать 'true' (без кавычек), то отобразятся только те тарифы, которые прикреплены к этой услуге (и те, у которые в названии содержат 'true').
Если указать 'false' (без кавычек), то отобразятся только те тарифы, которые не прикреплены к этой услуге (и те, у которые в названии содержат 'false').

С версии 2.7.19 появилась возможность активировать логирование пополнений/списаний с абонентов а таблицу платежей (помимо таблиц услуг и дополнительных услуг). При занесении в таблицу платежей записи делятся на 2 типа:

  1. Дополнительные услуги - пополнение абонента
  2. Дополнительные услуги - списание с абонента

В поле "комментарий" попадает название доп. услуги из справочника. Пример:

direct&600 |

Настройка в системных опциях (услуги → "дополнительные услуги"):

nolink&|

Отчёт во вкладке услуги в админ. панели:

аренда порта

Арена порта: всем активным абонентам (обычный, замороженный) тарифа "Тестовый", у которых на счету (депозит с учётом лимита) меньше нуля или заблокирован интернет - списываем каждый день "аренду порта".

nolink&|

В "настраиваемых условиях" текст кода нужно писать с учётом того, что мы находимся в одной из 4-х таблиц или во всех по очереди, в зависимости от выбранной группы пользователей:
users, usersfreeze, usersblok, usersdel

Условие нужно начинать с 'AND', т.к. до этого идут системные условия.

Попробовать составить и проверить условие можно в удобном Вам редакторе (phpMyAdmin, dbForge, adminer):

  1. Берём тестового пользователя (например, uid = 1)
  2. Наделяем его необходимыми свойствами (день рождение в текущем месяце)
  3. Создаём SQL запрос и получаем этого пользователя ( SELECT uid, MONTH(date_birth) FROM users WHERE MONTH(date_birth) = MONTH(NOW()) )

Таким образом можно связать всевозможными способами несколько таблиц с таблицей пользователей.

Подарок в месяц, когда день рождения абонента

Видно, что нужно использовать следующие параметры:

  • ежемесячная услуга
  • подарок
  • "настраиваемое условие"
  • состояния: обычный, заморожен
  • собственное SQL-условие

Условие в услуге (SQL):

AND MONTH(`date_birth`) = MONTH(NOW())
direct&400|

Подарок каждый месяц, если платит вовремя

direct&600|
  • mikbill/services/additional_services.txt
  • Последние изменения: 3 лет назад
  • — Алексей Ларюшкин