Во многих модулях и конфигурационных файлах сервера статистики используются математические формулы для вычислений. В целом, правила их записи очень похожи на правила записи формул в любых языках программирования высокого уровня - допустимы скобки, переменные, функции..
Примеры формул:
2+2 (127+12)/(123-17) (total()-statistic())*(1+taxes) statistic(.6) ? 1000 : 0 ((account()>1000 && statistic()<10000) ? 0 : 50000)*(1+taxes) |
Количество уровней вложенности скобок практически неограничено.
Сложение, вычитание, умножение и деление соответсвенно.
Получение остатка от деления x на y. Подразумевается, что y - целое число.
Истинно если x больше y.
Истинно если x меньше y.
Истинно если x больше или равно y.
Истинно если x меньше или равно y.
Истинно если абсолютное значение разницы x и y меньше одной миллионной.
Истинно если абсолютное значение разницы x и y больше или равно одной миллионной.
Истинно если логические выражения x и y истинны.
Истинно если истинно логическое выражение x или логическое выражение y.
Результатом является выражение y если логическое выражение x истинно и z в противном случае. Следует отметить, что в отличие от аналогичного оператора языка C вычисляются как выражение y, так и выражение z и лишь затем происходит выбор результата.
В порядке убывания приоритета операторы располагаются так:
Среди операторов каждой группы приоритета порядок вычисления не определен. Т.е. нельзя заранее сказать в каком порядке будет вычисляться выражение `x+y-z'.
Порядком вычисления можно управлять с помощью круглых скобок.
Существует несколько функций, доступных при вычислени функций всегда:
Результатом является абсолютное значение выражения x.
Результатом является большее из двух значений выражений x и y.
Результатом является меньшее из двух значений выражений x и y.
Результатом является число, полученное из значения выражения x по правилам округления. Вторым параметром может быть задана точность - положительное число, возможно дробное. По умолчанию округление происходит до целых.
Результатом является -1, если x меньше нуля; 0, если равно нулю и 1, если значение x больше нуля.
Результатом является день даты date. Здесь и далее дата записывается по стандартным правилам.
Результатом является целое положительное число, цифры которого сформированы из даты date - ГГГГММДД (например для 9-го августа 1996 года результатом будет 19960809).
Результатом является месяц даты date.
Результатом является год даты date.
Константа ставки налога, определенная в основном конфигурационном файле.
Вычисление суммы налога для указанной величины в предположении, что налог в нее не входит.
Вычисление суммы с учетом налога.
Некоторые функции доступны только в контексте конкретного пользователя. Их удобно использовать в таких модулях, как mkreport, accadmin, evaluate и т.п.
Сумма операций на лицевом счете пользователя. Параметрами можно указать дату до которой включительно (параметр end) и дату начиная с которой (параметр begin) будет произведена выборка информации из лицевого счета абонента. По умолчанию результатом будет остаток на лицевом счете до текущей даты (включая ``сегодняшние'' операции).
Сумма статистики за текущий месяц, указанный или интервал времени. Если указан только первый параметр (end), то выводится информация за этот месяц. Если оба (begin и end) - то за интервал времени, включающий оба эти месяца. По умолчанию (если не указано ни end, ни begin) возвращает сумму статистики за текущий месяц.
Сумма остатка на указанную или текущую дату с учетом расходов (статистики); ``баланс'' пользователя на определенный момент.
В некторых модулях могут использоваться какие-то дополнительные функции и/или константы (например значения статистики в модуле convertstat). В этом случае соответствующие описания включены в описание модулей.