• Модуль: sender
  • Путь к файлу: ~/bitrix/modules/sender/lib/dispatch/state.php
  • Класс: BitrixSenderDispatchState
  • Вызов: State::updateStatus
private function updateStatus($status, $state, Date $sendDate = null)
{
	$fields = array('STATUS' => $status);
	if ($state === self::READY && $this->letter->get('AUTO_SEND_TIME'))
	{
		$fields['AUTO_SEND_TIME'] = null;
	}
	if ($state === self::SENDING)
	{
		$fields['AUTO_SEND_TIME'] = $sendDate ?: new DateTime();
	}
	if ($state === self::PLANNED)
	{
		$fields['AUTO_SEND_TIME'] = $sendDate ?: new DateTime();
	}
	if ($state === self::WAITING && $sendDate)
	{
		$fields['AUTO_SEND_TIME'] = $sendDate;
	}
	if ($updatedBy = $this->letter->get('UPDATED_BY'))
	{
		$fields['UPDATED_BY'] = $updatedBy;
	}
	CTimeZone::disable();
	$result = ModelLetterTable::update($this->letter->getId(), $fields);
	CTimeZone::enable();

	if ($result->isSuccess())
	{
		$this->letter->set('STATUS', $status);
		if (isset($fields['AUTO_SEND_TIME']))
		{
			$this->letter->set('AUTO_SEND_TIME', $fields['AUTO_SEND_TIME']);
		}
	}
	else
	{
		$this->letter->getErrorCollection()->add($result->getErrors());
	}

	return $result->isSuccess();
}