- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/shipmentitem.php
- Класс: BitrixSaleShipmentItem
- Вызов: ShipmentItem::delete
public function delete()
{
$result = new Result();
$shipment = $this->getCollection()->getShipment();
$oldEntityValues = $this->fields->getOriginalValues();
$event = new MainEvent('sale', "OnBeforeSaleShipmentItemEntityDeleted", [
'ENTITY' => $this,
'VALUES' => $oldEntityValues,
]);
$event->send();
foreach($event->getResults() as $eventResult)
{
if($eventResult->getType() == MainEventResult::ERROR)
{
$errorMsg = new ResultError(
Loc::getMessage('SALE_EVENT_ON_BEFORE_SALESHIPMENTITEM_ENTITY_DELETED_ERROR'),
'SALE_EVENT_ON_BEFORE_SALESHIPMENTITEM_ENTITY_DELETED_ERROR'
);
if ($eventResultData = $eventResult->getParameters())
{
if (isset($eventResultData) && $eventResultData instanceof ResultError)
{
$errorMsg = $eventResultData;
}
}
$result->addError($errorMsg);
}
}
if (!$result->isSuccess())
{
return $result;
}
if (!$shipment->isSystem())
{
if ($shipment->isShipped())
{
/** @var BasketItem $basketItem */
if (!$basketItem = $this->getBasketItem())
{
throw new MainObjectNotFoundException('Entity "BasketItem" not found');
}
$result->addError(
new ResultError(
Loc::getMessage('SALE_SHIPMENT_ITEM_SHIPMENT_ALREADY_SHIPPED_CANNOT_EDIT'),
'SALE_SHIPMENT_ITEM_SHIPMENT_ALREADY_SHIPPED_CANNOT_EDIT'
)
);
return $result;
}
$r = $this->setField("QUANTITY", 0);
if (!$r->isSuccess())
{
return $result->addErrors($r->getErrors());
}
}
elseif ($shipment->isSystem() && $this->getQuantity() > 1e-10)
{
throw new ErrorException('System shipment not empty');
}
$r = parent::delete();
if (!$r->isSuccess())
{
$result->addErrors($r->getErrors());
}
$event = new MainEvent('sale', "OnSaleShipmentItemEntityDeleted", [
'ENTITY' => $this,
'VALUES' => $oldEntityValues,
]);
$event->send();
foreach($event->getResults() as $eventResult)
{
if($eventResult->getType() == MainEventResult::ERROR)
{
$errorMsg = new ResultError(
Loc::getMessage('SALE_EVENT_ON_SALESHIPMENTITEM_ENTITY_DELETED_ERROR'),
'SALE_EVENT_ON_SALESHIPMENTITEM_ENTITY_DELETED_ERROR'
);
$eventResultData = $eventResult->getParameters();
if (isset($eventResultData) && $eventResultData instanceof ResultError)
{
$errorMsg = $eventResultData;
}
$result->addError($errorMsg);
}
}
return $result;
}