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