- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/shipmentcollection.php
- Класс: BitrixSaleShipmentCollection
- Вызов: ShipmentCollection::onBasketModify
public function onBasketModify($action, BasketItemBase $basketItem, $name = null, $oldValue = null, $value = null) : Result
{
$result = new Result();
if (!($basketItem instanceof BasketItem))
{
return $result;
}
if ($action === EventActions::DELETE)
{
$order = $this->getOrder();
if ($order->getId() == 0 && !$order->isMathActionOnly())
{
$this->refreshData();
}
return $result;
}
elseif ($action === EventActions::ADD)
{
return $this->getSystemShipment()->onBasketModify($action, $basketItem, $name, $oldValue, $value);
}
elseif ($action !== EventActions::UPDATE)
{
return $result;
}
if ($name == 'QUANTITY')
{
if (!$this->isAllowAutoEdit($basketItem))
{
$result = $this->checkDistributedQuantity($basketItem, $value);
if (!$result->isSuccess())
{
return $result;
}
}
$shipment = $this->getItemForAutoEdit($basketItem);
if ($value - $oldValue > 0)
{
$r = $this->getSystemShipment()->onBasketModify($action, $basketItem, $name, $oldValue, $value);
if (!$r->isSuccess())
{
return $result->addErrors($r->getErrors());
}
}
if ($shipment)
{
$r = $shipment->onBasketModify($action, $basketItem, $name, $oldValue, $value);
if (!$r->isSuccess())
{
$result->addErrors($r->getErrors());
return $result;
}
}
if ($value - $oldValue < 0)
{
$r = $this->getSystemShipment()->onBasketModify($action, $basketItem, $name, $oldValue, $value);
if (!$r->isSuccess())
{
return $result->addErrors($r->getErrors());
}
}
}
elseif (in_array($name, ['WEIGHT', 'PRICE']))
{
/** @var Shipment $shipment */
foreach ($this->getNotSystemItems() as $shipment)
{
$shipment->onBasketModify($action, $basketItem, $name, $value, $oldValue);
}
}
return $result;
}