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