- Модуль: 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;
}