| Версия 5.2
Введение
Установка
Администрирование
Сеть
Объекты
Почта
Сигналы
Доступ
Услуги
Справочник
Кластеры
Программы
Разное
Лицензирование
Веб Почта
Pronto!
PBX
Почта | Тарификация
# Тарификация Интерфейсы Операции Сервер CommuniGate Pro может работать как платформа для Тарификации. Каждый Пользователь может иметь один или несколько Остатков. Модули и компоненты CommuniGate Pro могут списывать из этих остатков плату за услуги и пополнять остатки, осуществлять различные операции возмещения средств и т.п. Для каждого Остатка поддерживается текущая сумма, учитывающая активные резервирования. Журнал всех транзакций хранится в файлах данных Пользователя. Формат Журнала позволяет легко производить операции резервного копирования и восстанавливать данные после различных аппаратных сбоев. В качестве имени Остатка "по умолчанию" ("обычного" Остатка) используется пустая строка. Денежные значения (денежные средства) представлены как целочисленные 64-битные целые значения со знаком.

## Интерфейсы

Подсистема Тарификации CommuniGate Pro доступна для:

- CG/PL приложений, выполняющихся на сервере (PBX Задачи, WebUser аплеты и т.п.).
- XIMSS приложений, выполняющихся у клиента.
- ParlayX приложений, выполняющихся у клиента.
- CLI приложений, выполняющихся у клиента.

## Операции

Доступны следующие операции Тарификации:

`list`
  Эта операция возвращает все Остатки, доступные для этого Пользователя.
  Параметры:
    отсутствуют
  Результаты:
  `balance`
    массив доступных названий Остатков.
`credit`
  Эта операция добавляет средства к Балансу.
  Параметры:
  `balance`
    строка: название Остатка Если Остаток с таким названием не существует, то он будет создан.
  `amount`
    неотрицательное число: зачисляемая сумма.
  `reference`
    строка: произвольные данные, используемые для указания ссылки, полезной при разрешении спорных ситуаций и т.д.
  `description`
    объект (обычно - строка или массив строк): произвольные данные, описывающие транзакцию.
  Результаты:
  `amount`
    число: текущее значение Остатка.
`удалить`
  Эта операция удаляет Остаток.
  Обратите внимание: история Остатков не удаляется. Если текущее значение Остатка ненулевое, то в историю Остатков добавляется запись, обнуляющая значение Остатка.
  Параметры:
  `balance`
    строка: название Остатка Остаток с таким названием будет удалён.
  Результаты:
  `amount`
    число: значение удалённого Остатка.
`reserve`
  Эта операция резервирует средства из Остатка. Зарезервированная сумма не может быть использована для оплаты других услуг. Резервирование может отменяться явно, с возвращением зарезервированных средств в Остаток, или оно может терять силу автоматически после заданного интервала времени.
  Параметры:
  `balance`
    строка: название Остатка Этот Остаток уже должен существовать.
  `amount`
    неотрицательное число: резервируемая сумма.
  `reserve`
    строка, опционально: если этот параметр существует, то он должен указывать на существующий резерв. Сумма `amount` будет добавлена к этому резерву. Если этот параметр отсутствует, то создаётся новый резерв.
  `expires`
    отметка о времени, опционально: если этот параметр существует, то он определяет, когда закончится срок действия этой операции резервирования.
  `overdraft`
    опционально: если этот параметр существует, то с его помощью можно будет зарезервировать сумму, превышающую текущий Остаток. Если этот параметр не задан, то попытка зарезервировать сумму, превышающую текущий Остаток, будет отвергнута.
  Результаты:
  `reserve`
    строка: имя резерва (аналогично параметру `reserve`, если он задан).
  `amount`
    число: текущее значение резерва.
`release`
  Эта операция освобождает зарезервированные средства. Зарезервированная сумма зачисляется к Остатку.
  Параметры:
  `balance`
    строка: название Остатка Этот Остаток уже должен существовать.
  `reserve`
    строка: имя существующего резерва.
  Результаты:
  `reserve`
    строка: имя резерва (аналогично параметру `reserve`, если он задан).
  `amount`
    число: текущее значение Остатка.
`charge`
  Эта операция списывает средства из Остатка или из резерва.
  Параметры:
  `balance`
    строка: название Остатка Этот Остаток уже должен существовать.
  `amount`
    число: списываемая сумма.
  `reserve`
    строка, опционально: если этот параметр существует, то сумма списывается из существующего резерва. Если этот параметр отсутствует, то списывание осуществляется из Остатка.
  `overdraft`
    опционально, не может быть указан совместно с параметром `reserve`: задание этого параметра позволяет списать сумму, превышающую текущий Остаток. Если этот параметр не задан, то попытка списать сумму, превышающую текущий Остаток, будет отвергнута.
  `reference`, `description`
    аналогично операции `credit`.
  Результаты:
  `amount`
    число: текущее значение Остатка или резерва.
  `expires`
    отметка о времени: время окончания срока действия операции резервирования (только если был указан параметр `reserve` и установлено время окончания срока действия).
`read`
  Эта операция читает текущий Остаток или текущее значение резерва.
  Параметры:
  `balance`
    строка: название Остатка Этот Остаток уже должен существовать.
  `reserve`
    строка, опционально: если этот параметр существует, то он должен указывать на существующий резерв. Операция читает это значение резерва. Если этот параметр отсутствует, то операция читает значение Остатка.
  Результаты:
  `amount`
    число: текущее значение Остатка или резерва.
  `expires`
    отметка о времени: время окончания срока действия операции резервирования (только если был указан параметр `reserve` и установлено время окончания срока действия).
`history`
  Эта операция читает журнал транзакций Остатка.
  Параметры:
  `balance`
    строка: название Остатка Этот Остаток уже должен существовать.
  `timeFrom`,`timeTill`
    отметки о времени: Записи, которые были записаны, начиная с `timeFrom` (включительно) и до `timeTill` (не включая последнюю отметку).
  `limit`
    число: максимально число отображаемых записей.
    Если это число положительно, то сначала возвращаются самые последние записи, а более старые отбрасываются при достижении лимита.
    Если это число отрицательно, то сначала возвращаются самые старые записи, а более новые отбрасываются при достижении лимита.
  Результаты:
  `history`
    массив записей с транзакциями. Каждая запись содержит следующие элементы:
    `Date`
      отметка о времени: время транзакции.
    `amount`
      число: сумма транзакции (положительно для операций `credit`).
    `balance`
      число: значение Остатка после этой транзакции.
    `reference`, `description`
      копии параметров операций `credit` и `charge`.

Руководство CommuniGate® Pro. Copyright © 1998-2009, Stalker Software, Inc.