...
при создании, редактирование, удаление учетного периода генерируются события
- Окончание Создание/редактирование учетного периода (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)
возможно программное создание учетного периода
Блок кода |
---|
// создаем объект 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