• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/timeline/ordershipmentcontroller.php
  • Класс: Bitrix\Crm\Timeline\OrderShipmentController
  • Вызов: OrderShipmentController::onCreate
public function onCreate($ownerID, array $params)
{
	if(!is_int($ownerID))
	{
		$ownerID = (int)$ownerID;
	}
	if($ownerID <= 0)
	{
		throw new Main\ArgumentException('Owner ID must be greater than zero.', 'ownerID');
	}

	$fields = isset($params['FIELDS']) && is_array($params['FIELDS']) ? $params['FIELDS'] : null;
	if(!is_array($fields))
	{
		$fields = self::getEntity($ownerID);
	}
	if(!is_array($fields))
	{
		return;
	}

	$settingFields = [
		'PRICE_DELIVERY' => $fields['PRICE_DELIVERY'],
		'CURRENCY' => $fields['CURRENCY']
	];

	if ($fields['DATE_INSERT'] instanceof Main\Type\Date)
	{
		$settingFields['DATE_INSERT_TIMESTAMP'] = $fields['DATE_INSERT']->getTimestamp();
	}

	$settings = ['FIELDS' => $settingFields];

	$orderId = (isset($fields['ORDER_ID']) && (int)$fields['ORDER_ID'] > 0) ? (int)$fields['ORDER_ID'] : 0;
	if($orderId > 0)
	{
		$settings['BASE'] = array(
			'ENTITY_TYPE_ID' => \CCrmOwnerType::Order,
			'ENTITY_ID' => (int)$fields['ORDER_ID']
		);
	}

	$authorID = self::resolveCreatorID($fields);

	$bindings = array(
		array(
			'ENTITY_TYPE_ID' => \CCrmOwnerType::OrderShipment,
			'ENTITY_ID' => $ownerID
		)
	);

	if ($orderId > 0)
	{
		$bindings[] = array(
			'ENTITY_TYPE_ID' => \CCrmOwnerType::Order,
			'ENTITY_ID' => $orderId
		);

		$tag = TimelineEntry::prepareEntityPushTag(\CCrmOwnerType::Order, $orderId);
	}
	else
	{
		$tag = TimelineEntry::prepareEntityPushTag(\CCrmOwnerType::OrderShipment, $ownerID);
	}

	$historyEntryID = CreationEntry::create(
		array(
			'ENTITY_TYPE_ID' => \CCrmOwnerType::OrderShipment,
			'ENTITY_ID' => $ownerID,
			'AUTHOR_ID' => $authorID,
			'SETTINGS' => $settings,
			'BINDINGS' => $bindings
		)
	);

	if($historyEntryID > 0)
	{
		self::pushHistoryEntry($historyEntryID, $tag,'timeline_order_shipment_add');
	}
}