• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/notify.php
  • Класс: BitrixSaleNotify
  • Вызов: Notify::sendOrderCancel
static function sendOrderCancel(InternalsEntity $entity)
{
	$result = new Result();

	if (static::isNotifyDisabled())
	{
		return $result;
	}


	if (!$entity instanceof Order)
	{
		throw new MainArgumentTypeException('entity', 'BitrixSaleOrder');
	}

	if (static::hasSentEvent($entity->getId(), static::EVENT_ORDER_CANCEL_SEND_EMAIL_EVENT_NAME))
	{
		return $result;
	}

	if (!$entity->isCanceled())
	{
		return $result;
	}

	$fields = Array(
		"ORDER_ID" => $entity->getField("ACCOUNT_NUMBER"),
		"ORDER_REAL_ID" => $entity->getField("ID"),
		"ORDER_ACCOUNT_NUMBER_ENCODE" => urlencode(urlencode($entity->getField("ACCOUNT_NUMBER"))),
		"ORDER_DATE" => '',
		"EMAIL" => static::getUserEmail($entity),
		"ORDER_CANCEL_DESCRIPTION" => $entity->getField('REASON_CANCELED'),
		"SALE_EMAIL" => MainConfigOption::get("sale", "order_email", "order@".$_SERVER["SERVER_NAME"]),
		"ORDER_PUBLIC_URL" => HelpersOrder::isAllowGuestView($entity) ? HelpersOrder::getPublicLink($entity) : ""
	);

	$dateInsert = $entity->getDateInsert();
	if (isset($dateInsert) && $dateInsert instanceof MainTypeDate)
	{
		$fields['ORDER_DATE'] = $dateInsert->toString();
	}


	$eventName = static::EVENT_ORDER_CANCEL_SEND_EMAIL_EVENT_NAME;
	$send = true;

	foreach(GetModuleEvents("sale", static::EVENT_ON_ORDER_CANCEL_SEND_EMAIL, true) as $oldEvent)
	{
		if (ExecuteModuleEventEx($oldEvent, array($entity->getId(), &$eventName, &$fields)) === false)
		{
			$send = false;
		}
	}

	if($send)
	{
		$event = new CEvent;
		$event->Send($eventName, $entity->getField('LID'), $fields, "Y", "", array(), static::getOrderLanguageId($entity));
	}

	CSaleMobileOrderPush::send(static::EVENT_MOBILE_PUSH_ORDER_CANCELED, array("ORDER" => static::getOrderFields($entity)));

	static::addSentEvent($entity->getId(), static::EVENT_ORDER_CANCEL_SEND_EMAIL_EVENT_NAME);

	return $result;
}