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

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

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

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

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

	$filter = array('STATUS' => 'E');
	if ($entity instanceof Payment)
	{
		$filter['PAYMENT_ID'] = $entity->getId();
	}
	elseif ($entity instanceof Shipment)
	{
		$filter['SHIPMENT_ID'] = $entity->getId();
	}

	$dbRes = CashboxCheckTable::getList(
		array(
			'select' => array('*'),
			'filter' => $filter,
			'order' => array('DATE_PRINT_END' => 'DESC'),
			'limit' => 1
		)
	);
	$check = $dbRes->fetch();
	if (!$check)
	{
		$result->addError(new ResultError(MainLocalizationLoc::getMessage("SALE_NOTIFY_ORDER_CHECK_NOT_FOUND")));
		return $result;
	}

	$cashbox = Manager::getCashboxFromCache($check['CASHBOX_ID']);
	if ($cashbox['EMAIL'])
	{
		$cashbox = Manager::getCashboxFromCache($check['CASHBOX_ID']);

		$fields = array(
			"ORDER_ACCOUNT_NUMBER" => $order->getField("ACCOUNT_NUMBER"),
			"CHECK_ID" => $check['ID'],
			"ORDER_ID" => $order->getId(),
			"ORDER_DATE" => $order->getDateInsert()->toString(),
			"EMAIL" => $cashbox['EMAIL'],
			"SALE_EMAIL" => MainConfigOption::get("sale", "order_email", "order@".$_SERVER["SERVER_NAME"]),
		);

		$context = MainContext::getCurrent();
		$server = $context->getServer();

		if (IsModuleInstalled('crm'))
		{
			$fields['LINK_URL'] = 'http://'.$server->getServerName().'/shop/orders/details/'.$order->getId().'/';
		}
		else
		{
			$fields['LINK_URL'] = 'http://'.$server->getServerName().'/bitrix/admin/sale_order_view.php?ID='.$order->getId();
		}

		$eventName = static::EVENT_ON_CHECK_PRINT_ERROR_SEND_EMAIL;
		$event = new CEvent;
		$event->Send($eventName, $order->getField('LID'), $fields, "N");

		if ($entity instanceof Payment)
		{
			static::addSentEvent('p'.$entity->getId(), $eventName);
		}
		elseif ($entity instanceof Shipment)
		{
			static::addSentEvent('s'.$entity->getId(), $eventName);
		}
	}

	CSaleMobileOrderPush::send(
		static::EVENT_MOBILE_PUSH_ORDER_CHECK_ERROR,
		array(
			'ORDER' => static::getOrderFields($order),
			'CHECK' => $check
		)
	);

	return $result;
}