- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/basketitembase.php
- Класс: BitrixSaleBasketItemBase
- Вызов: BasketItemBase::delete
public function delete()
{
$result = new Result();
$checkResult = $this->checkBeforeDelete();
if (!$checkResult->isSuccess())
{
$result->addErrors($checkResult->getErrors());
return $result;
}
/** @var array $oldEntityValues */
$oldEntityValues = $this->fields->getOriginalValues();
/** @var MainEvent $event */
$event = new MainEvent('sale', "OnBeforeSaleBasketItemEntityDeleted", [
'ENTITY' => $this,
'VALUES' => $oldEntityValues,
]);
$event->send();
if ($event->getResults())
{
/** @var MainEventResult $eventResult */
foreach($event->getResults() as $eventResult)
{
if($eventResult->getType() == MainEventResult::ERROR)
{
$eventResultData = $eventResult->getParameters();
if ($eventResultData instanceof ResultError)
{
$error = $eventResultData;
}
else
{
$error = new ResultError(
LocalizationLoc::getMessage('SALE_EVENT_ON_BEFORE_SALEBASKETITEM_ENTITY_DELETED_ERROR'),
'SALE_EVENT_ON_BEFORE_SALEBASKETITEM_ENTITY_DELETED_ERROR'
);
}
$result->addError($error);
}
}
if (!$result->isSuccess())
{
return $result;
}
}
$this->setFieldNoDemand("QUANTITY", 0);
/** @var Result $r */
$r = parent::delete();
if (!$r->isSuccess())
{
$result->addErrors($r->getErrors());
return $result;
}
/** @var array $oldEntityValues */
$oldEntityValues = $this->fields->getOriginalValues();
/** @var MainEvent $event */
$event = new MainEvent('sale', "OnSaleBasketItemEntityDeleted", [
'ENTITY' => $this,
'VALUES' => $oldEntityValues,
]);
$event->send();
if ($event->getResults())
{
/** @var MainEventResult $eventResult */
foreach($event->getResults() as $eventResult)
{
if($eventResult->getType() == MainEventResult::ERROR)
{
$eventResultData = $eventResult->getParameters();
if ($eventResultData instanceof ResultError)
{
$error = $eventResultData;
}
else
{
$error = new ResultError(
LocalizationLoc::getMessage('SALE_EVENT_ON_SALEBASKETITEM_ENTITY_DELETED_ERROR'),
'SALE_EVENT_ON_SALEBASKETITEM_ENTITY_DELETED_ERROR'
);
}
$result->addError($error);
}
}
}
return $result;
}