Если в конфиге сервера есть параметр client.gui.contract.tree.order его требуется удалить (закомментировать) или в него добавить period
client.gui.contract.tree.order=parameters objects hierarchy status limit period mode face balance tariff modules groups web tariffGroup script addAction memo
если параметр был или его правили, требуется перезапустить клиента биллинга
в дереве договора появится пункт Учетный период
при создании, редактирование, удаление учетного периода генерируются события
- Создание/редактирование учетного периода (ru.bitel.bgbilling.kernel.contract.period.server.event.ContractPeriodUpdateEvent)
- Удаление учетного периода (ru.bitel.bgbilling.kernel.contract.period.server.event.ContractPeriodDeleteEvent
при окончание учетного периода может генерироваться событие (если при создании/редактировании учетного периода был выставлен соответствующий флаг и настроен соответствующий режим, см. ниже )
- Окончание учетного периода (ru.bitel.bgbilling.kernel.contract.period.server.event.ContractPeriodCloseEvent)
возможно программное создание учетного периода
// создаем объект ContractPeriod ContractPeriod contractPeriod = new ContractPeriod(); // указываем ID договора contractPeriod.setContractId( 111 ); // создаем объект с периодом действия учетного периода PeriodWithTime period = new PeriodWithTime(); // начало периода 2019-09-01 01:02:03 period.setLocalDateTimeFrom( java.time.LocalDateTime.of( 2019, 9, 1, 1, 2, 3 ) ); // окончание периода 2019-09-10 04:05:59 period.setLocalDateTimeTo( java.time.LocalDateTime.of( 2019, 9, 10, 4, 5, 59 ) ); // устанавливаем период contractPeriod.setPeriod( period ); // устанавливаем необходимость сгенерировать событие окончания учетного периода ( true - генерировать, false - не генерировать ) contractPeriod.setGenerateCloseEvent( true ); // сохраняем в БД ServerContext.get( ServerContext.class ).getService( ContractPeriodServiceImpl.class, 0 ).updateContractPeriod( contractPeriod );
1) задача планировщика
она при запуске будет выбирать все учетные периоды у которых
- установлен флаг необходимости генерации события окончания периода
- событие не было отправлено ранее
- дата окончания периода ранее now + period, где now - текущее время, period = 900 (по умолчанию) сек. (значение period может быть задано в параметрах запуска задачи планировщика в параметре period=900)
2) с помощью встроенной в биллинг подсистемы JobSheduler. Для включения этого режима в конфиге сервера необходимо прописать параметр contract.period.job.close.event.enable=true