- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/Service/Timeline/Item/Activity/Delivery.php
- Класс: Bitrix\Crm\Service\Timeline\Item\Activity\Delivery
- Вызов: Delivery::getButtons
public function getButtons(): array
{
$deliveryRequest = $this->getDeliveryRequest();
$deliveryService = $this->getDeliveryService();
$deliveryShipments = $this->getDeliveryShipments();
if (!$deliveryRequest && $this->isScheduled())
{
$result['createDeliveryRequest'] =
(new Button(
Loc::getMessage('CRM_TIMELINE_ACTIVITY_DELIVERY_ORDER_BUTTON'),
Button::TYPE_PRIMARY,
))
->setAction(
(new RunAjaxAction('sale.deliveryrequest.create'))
->addActionParamArray(
'shipmentIds',
array_column($deliveryShipments, 'ID')
)
->addActionParamArray(
'additional',
[
'ACTIVITY_ID' => $this->getActivityId(),
]
)
->setAnimation(Animation::showLoaderForBlock()->setForever())
)
;
}
elseif(
isset($deliveryShipments[0]['ID'])
&& !in_array(
$this->getContext()->getEntityTypeId(),
[
\CCrmOwnerType::Order,
\CCrmOwnerType::ShipmentDocument,
],
true
)
)
{
$shipmentId = (int)$deliveryShipments[0]['ID'];
$shipment = Sale\Repository\ShipmentRepository::getInstance()->getById($shipmentId);
if ($shipment)
{
$openDetailsButton = new Button(
Loc::getMessage('CRM_TIMELINE_ACTIVITY_DELIVERY_OPEN'),
$this->isScheduled() ? Button::TYPE_PRIMARY : Button::TYPE_SECONDARY
);
$result['openDetails'] = $openDetailsButton->setAction(
(new JsEvent('SalescenterApp:Start'))
->addActionParamString('mode', 'delivery')
->addActionParamInt('orderId', $shipment->getOrder()->getId())
->addActionParamInt('shipmentId', $shipmentId)
->addActionParamInt('ownerTypeId', $this->getContext()->getEntityTypeId())
->addActionParamInt('ownerId', $this->getContext()->getEntityId())
);
}
}
if (
$deliveryService
&& $deliveryService['IS_CANCELLABLE'] === true
&& $deliveryRequest
&& (int)$deliveryRequest['STATUS'] !== Sale\Delivery\Requests\Manager::STATUS_PROCESSED
)
{
$cancelDeliveryRequestAction =
(new CallRestBatch())
->addActionParamArray(
'cancel',
[
'method' => 'sale.deliveryrequest.execute',
'params' => [
'requestId' => $deliveryRequest['ID'],
'actionType' => $deliveryService['CANCEL_ACTION_CODE'],
]
]
)
->addActionParamArray(
'create_message',
[
'method' => 'crm.timeline.deliveryactivity.createcanceldeliveryrequestmessage',
'params' => [
'requestId' => $deliveryRequest['ID'],
'message' => '$result[cancel][message]',
],
]
)
->addActionParamArray(
'delete',
[
'method' => 'sale.deliveryrequest.delete',
'params' => [
'requestId' => $deliveryRequest['ID'],
],
]
)
->setAnimation(Animation::showLoaderForBlock())
;
$cancelDeliveryRequestButton = new Button(
isset($deliveryService['CANCEL_ACTION_NAME'])
? (string)$deliveryService['CANCEL_ACTION_NAME']
: Loc::getMessage('CRM_TIMELINE_ACTIVITY_DELIVERY_CANCEL')
,
Button::TYPE_SECONDARY,
);
$result['cancelDeliveryRequest'] = $cancelDeliveryRequestButton->setAction($cancelDeliveryRequestAction);
}
return $result;
}