• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/entitymarker.php
  • Класс: BitrixSaleEntityMarker
  • Вызов: EntityMarker::addMarker
static function addMarker(OrderBase $order, InternalsEntity $entity, Result $result)
{
	if (!$result->hasWarnings())
	{
		return;
	}

	$entityType = static::getEntityType($entity);
	if ($entityType === null)
	{
		return;
	}

	$fields = array(
		'ENTITY' => $entity,
		'ORDER' => $order,
	);

	if ($order->getId() > 0)
	{
		$fields['ORDER_ID'] = $order->getId();
	}

	if ($entity->getId() > 0)
	{
		$fields['ENTITY_ID'] = $entity->getId();
	}

	$fields['ENTITY_TYPE'] = $entityType;
	/** @var ResultError $resultError */
	foreach ($result->getWarnings() as $resultWarning)
	{
		$code = $resultWarning->getCode();
		$message = $resultWarning->getMessage();
		$isAutoFix = false;

		if ($entity instanceof IEntityMarker)
		{
			$isAutoFix = $entity->canAutoFixError($code);
		}

		$fields['CODE'] = $code;
		$fields['MESSAGE'] = $message;
		$fields['TYPE'] = $isAutoFix ? static::ENTITY_MARKED_TYPE_AUTO : static::ENTITY_MARKED_TYPE_MANUAL;
		$fields['SUCCESS'] = static::ENTITY_SUCCESS_CODE_FAIL;
		static::addItem($order, $entityType, $fields);
	}
	$lastWarning = end($result->getWarnings());
	$order->setField('REASON_MARKED', $lastWarning->getMessage());

	if (
		$entity instanceof Payment
		|| $entity instanceof Shipment
	)
	{
		$entity->setField('MARKED', 'Y');
	}
}