• Модуль: timeman
  • Путь к файлу: ~/bitrix/modules/timeman/lib/service/agent/autocloseworktimeagent.php
  • Класс: BitrixTimemanServiceAgentAutoCloseWorktimeAgent
  • Вызов: AutoCloseWorktimeAgent::closeRecord
public function closeRecord($recordId)
{
	$record = $this->worktimeRepository->findByIdWith($recordId, ['SCHEDULE', 'SHIFT']);
	if (!$record || $record->getRecordedStopTimestamp() > 0 ||
		!$record->obtainSchedule() || !$record->obtainSchedule()->isAutoClosing())
	{
		return '';
	}
	$manager = DependencyManager::getInstance()
		->buildWorktimeRecordManager(
			$record,
			$record->obtainSchedule(),
			$record->obtainShift()
		);
	$recordStopUtcTimestamp = $manager->buildStopTimestampForAutoClose();
	if ($recordStopUtcTimestamp === null)
	{
		return '';
	}
	$recordStop = TimeHelper::getInstance()->createUserDateTimeFromFormat('U', $recordStopUtcTimestamp, $record->getUserId());
	if (!$recordStop)
	{
		return '';
	}
	$recordForm = WorktimeRecordForm::createWithEventForm();
	$recordForm->recordedStopSeconds = TimeHelper::getInstance()->getSecondsFromDateTime($recordStop);
	$recordForm->recordedStopDateFormatted = BitrixMainTypeDate::createFromPhp($recordStop)->toString();
	$recordForm->userId = $record->getUserId();
	$recordForm->isSystem = true;
	$recordForm->stopOffset = $record->getStartOffset();
	$this->worktimeService->stopWorktime($recordForm);

	return '';
}