Экстакторы
Зачастую в системе присутствуют большое количество однотипных списаний и абонентских плат. В этом случае конфигурирование под каждую отдельной позиции достаточно обременительно и могут использоваться экстракторы. Позиция с экстрактором заводится в конфигурации модуля.
Параметры title и unit имеют значение, аналогичные обычным позициям. В параметр extractor может быть подставлен один из перечисленных ниже макросов. Вместо <month> могут быть подставлены значения $month, $nextmonth, $prevmonth, $prev2month, $prev3month, означающие в данном контексте месяц, за который производится выборка. Вместо <mid> подставляется код экземпляра соответствующего модуля.
KERNEL_CHARGES(<month>, <коды типов расх>) - расходы договора в каком-то месяце. Тип расхода становится названием позиции, количество расходов данного типа - количеством. При не указании кодов типов расходов выбираются все типы расходов;
KERNEL_CHARGES_EXCEPT(<month>, <коды типов расходов, которые исключаются>) - аналогичен предыдущему, но указываются коды типов расходов, которые не выбираются;
NPAY_SERVICES(<mid>, <month>, <коды услуг>) - начисления абонплат в каком-то месяце. Название услуги абонплаты становится названием позиции, количество абонплат данного типа, установленных в договоре на данный месяц - количеством. При не указании кодов услуг выбираются все начисленные на договор абонплаты;
NPAY_SERVICES_EXCEPT(<mid>, <month>, <коды услуг, которые исключаются>) - аналогичен предыдущему, но указываются коды услуг, которые не выбираются;
NPAY_SERVICES_DETAIL(<mid>, <month>, <коды услуг>) - детализация начислений абонплат в каком-то месяце. Аналогичен NPAY_SERVICES, но данные берутся из таблицы npay_detail_<mid>_yyyymm, то есть данные будут разнесены по кодам сущностей других модулей( например поинты модуля телефонии );
RSCM_SERVICES(<mid>, <month>, <коды услуг>) - начисления по услугам RSCM в каком-то месяце. Название услуги RSCM становится названием позиции, количество услуги - количеством оказанной услуги . Единица измерения услуги - единица измерения счета При не указании кодов услуг выбираются все услуги RSCM оказанные для данного договора;
RSCM_SERVICES_EXCEPT(<mid>, <month>, <коды услуг, которые исключаются>) - аналогичен предыдущему, но указываются коды услуг, которые не выбираются;
EXT-экстракторы (KERNEL_CHARGES_EXT, KERNEL_CHARGES_EXT_EXCEPT, NPAY_SERVICES_EXT, NPAY_SERVICES_EXT_EXCEPT и т.д.) - расширенные (EXTended) экстракторы, которые в отдельную позицию выделяют каждый расход (для ядра) и каждую услугу (для модулей), даже если они имею одинаковый тип (код). Аргументы для экстрактора те же, что и для аналогичных нерасширенных.
Позиция экстрактора "распадается" в момент генерации документа на множество позиций в зависимости от реального количества начислений на договоре.
В unit указывается единица измерения - простая строка.
Получение всех расходов за месяц:
bill.pos.
3
.title=Расходы
bill.pos.
3
.name=Расход
bill.pos.
3
.extractor=
KERNEL_CHARGES
(
$month
)
NPay экстракторы
Отдельно стоит отметить, что экстракторы модуля NPay поддерживают следующие макросы в имени позиции( name ):
$title - название услуги
$period - период услуги
$month, $nextmonth, {$month,date,MMMM yyyy г.} итд - стандартные макросы даты счета
И только расширенные(EXT) еще следующие:
$comment - комментарий услуги
$oid.name - название объекта, если таковой имеется у услуги
Если в конфигурации отсутствует параметр bill.pos.<№ позиции>.name, то для обычных экстракторов будет использовано название услуги, а для расширенных название услуги и комментарий.