- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/order/orderhistory.php
- Класс: Bitrix\Crm\Order\OrderHistory
- Вызов: OrderHistory::addRecord
static function addRecord($entityName, $orderId, $type, $id = null, $entity = null, array $data = array())
{
parent::addRecord($entityName, $orderId, $type, $id, $entity, $data);
$operationType = static::getOperationType($entityName, $type);
if (empty($operationType))
{
return;
}
if ($entity instanceof BasketItem)
{
$entityType = \CCrmOwnerType::OrderName;
$entityId = $entity->getField('ORDER_ID');
}
elseif ($entity instanceof Order)
{
$entityType = \CCrmOwnerType::OrderName;
$entityId = $entity->getId();
}
elseif ($entity instanceof ShipmentItem)
{
$entityType = \CCrmOwnerType::OrderShipmentName;
$entityId = $entity->getField('ORDER_DELIVERY_ID');
$basketItem = $entity->getBasketItem();
if ($basketItem)
{
$data['NAME'] = $basketItem->getField('NAME');
$data['PRODUCT_ID'] = $basketItem->getField('PRODUCT_ID');
}
}
elseif ($entity instanceof Payment)
{
$entityType = \CCrmOwnerType::OrderPaymentName;
$entityId = $entity->getId();
}
else
{
return;
}
$orderChange = new \CSaleOrderChange();
$operationResult = $orderChange->GetRecordDescription($type, serialize($data));
global $USER;
$crmEventData = [
'ENTITY_TYPE' => $entityType,
'ENTITY_ID' => $entityId,
'EVENT_TYPE' => \CCrmEvent::TYPE_CHANGE,
'USER_ID' => (is_object($USER)) ? intval($USER->GetID()) : 0,
'ENTITY_FIELD' => is_array($operationType['TRIGGER_FIELDS']) ? current($operationType['TRIGGER_FIELDS']) : "",
'EVENT_NAME' => $operationResult['NAME'],
'EVENT_TEXT_1' => $operationResult['INFO']
];
$event = new \CCrmEvent();
$event->Add($crmEventData, false);
}