...
при создании, редактирование, удаление учетного периода генерируются события
- Окончание Создание/редактирование учетного периода (ru.bitel.bgbilling.kernel.contract.period.server.event.ContractPeriodCloseEventContractPeriodUpdateEvent)
- Создание/редактирование Удаление учетного периода (ru.bitel.bgbilling.kernel.contract.period.server.event.ContractPeriodUpdateEvent)Удаление ContractPeriodDeleteEvent
при окончание учетного периода может генерироваться событие (если при создании/редактировании учетного периода был выставлен соответствующий флаг и настроен соответствующий режим, см. ниже )
- Окончание учетного периода (ru.bitel.bgbilling.kernel.contract.period.server.event.ContractPeriodDeleteEventContractPeriodCloseEvent)
возможно программное создание учетного периода
Programlistingcode |
---|
// создаем объект 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