• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/timeline/shipmentdocumentcontroller.php
  • Класс: Bitrix\Crm\Timeline\ShipmentDocumentController
  • Вызов: ShipmentDocumentController::onStatusModify
public function onStatusModify($documentId, $params)
{
	$shipment = $params['SHIPMENT'];
	if (!$shipment)
	{
		return;
	}

	if (!$shipment->isShipped())
	{
		if ($shipment->getField('DATE_DEDUCTED'))
		{
			$newStageName = Loc::getMessage('STORE_DOCUMENT_STATUS_CANCELLED');
			$newStageClass = StoreDocumentStatusDictionary::CANCELLED;
		}
		else
		{
			$newStageName = Loc::getMessage('STORE_DOCUMENT_STATUS_DRAFT');
			$newStageClass = StoreDocumentStatusDictionary::DRAFT;
		}
	}
	else
	{
		$newStageName = Loc::getMessage('STORE_DOCUMENT_STATUS_CONDUCTED');
		$newStageClass = StoreDocumentStatusDictionary::CONDUCTED;
	}

	$authorID = self::resolveEditorID($shipment->getFieldValues());
	$order = $params['ORDER'] ?? $shipment->getOrder();
	$bindings = $this->getDefaultBindings($documentId, $order);

	$historyEntryID = StoreDocumentEntry::create(
		[
			'TYPE_CATEGORY_ID' => TimelineType::MODIFICATION,
			'ENTITY_TYPE_ID' => \CCrmOwnerType::ShipmentDocument,
			'ENTITY_ID' => $documentId,
			'AUTHOR_ID' => $authorID,
			'SETTINGS' => [
				'FIELD' => 'STATUS',
				'NEW_VALUE' => $newStageName,
				'CLASS' => $newStageClass,
				'TOTAL' => $this->calculateTotalForShipment($shipment),
				'CURRENCY' => $this->getShipmentCurrency($shipment),
			],
			'BINDINGS' => $bindings,
		]
	);

	foreach ($bindings as $binding)
	{
		$this->sendPullEventOnAdd(
			new \Bitrix\Crm\ItemIdentifier($binding['ENTITY_TYPE_ID'], $binding['ENTITY_ID']),
			$historyEntryID
		);
	}
}