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