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

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

	if (!$entity instanceof Shipment)
	{
		throw new MainArgumentTypeException('entity', 'BitrixSaleShipment');
	}

	if (static::hasSentEvent('s'.$entity->getId(), static::EVENT_SHIPMENT_TRACKING_NUMBER_SEND_EMAIL_EVENT_NAME))
	{
		return $result;
	}

	/** @var ShipmentCollection $shipmentCollection */
	if (!$shipmentCollection = $entity->getCollection())
	{
		$result->addError(new ResultError(MainLocalizationLoc::getMessage("SALE_NOTIFY_SHIPMENT_COLLECTION_NOT_FOUND")));
		return $result;
	}

	/** @var Order $order */
	if (!$order = $shipmentCollection->getOrder())
	{
		$result->addError(new ResultError(MainLocalizationLoc::getMessage("SALE_NOTIFY_ORDER_NOT_FOUND")));
		return $result;
	}

	/** @var InternalsFields $fields */
	$fields = $order->getFields();
	$originalValues = $fields->getOriginalValues();

	if (array_key_exists('ACCOUNT_NUMBER', $originalValues) && $originalValues['ACCOUNT_NUMBER'] == $order->getField("ACCOUNT_NUMBER"))
	{
		return $result;
	}

	$accountNumber = $order->getField("ACCOUNT_NUMBER");

	$emailFields = Array(
		"ORDER_ID" => $accountNumber,
		"ORDER_REAL_ID" => $order->getField("ID"),
		"ORDER_ACCOUNT_NUMBER_ENCODE" => urlencode(urlencode($order->getField("ACCOUNT_NUMBER"))),
		"ORDER_DATE" => $order->getDateInsert()->toString(),
		"ORDER_USER" => static::getUserName($order),
		"ORDER_TRACKING_NUMBER" => $entity->getField('TRACKING_NUMBER'),
		"BCC" => MainConfigOption::get("sale", "order_email", "order@".$_SERVER['SERVER_NAME']),
		"EMAIL" => static::getUserEmail($order),
		"SALE_EMAIL" => MainConfigOption::get("sale", "order_email", "order@".$_SERVER['SERVER_NAME']),
		"ORDER_PUBLIC_URL" => HelpersOrder::isAllowGuestView($order) ? HelpersOrder::getPublicLink($order) : ""
	);

	$event = new CEvent;
	$event->send(static::EVENT_SHIPMENT_TRACKING_NUMBER_SEND_EMAIL_EVENT_NAME, $order->getField("LID"), $emailFields, "Y", "", array(), static::getOrderLanguageId($order));

	static::addSentEvent('s'.$entity->getId(), static::EVENT_SHIPMENT_TRACKING_NUMBER_SEND_EMAIL_EVENT_NAME);

	return $result;
}