- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/controller/action/entity/deletebasketitemaction.php
- Класс: BitrixSaleControllerActionEntityDeleteBasketItemAction
- Вызов: DeleteBasketItemAction::deleteBasketItem
public function deleteBasketItem(int $id): SaleResult
{
$result = new SaleResult();
$registry = SaleRegistry::getInstance(SaleRegistry::REGISTRY_TYPE_ORDER);
/** @var SaleBasket $basketClass */
$basketClass = $registry->getBasketClassName();
$basketIterator = $basketClass::getList([
'select' => ['ORDER_ID', 'FUSER_ID', 'LID'],
'filter' => [
'=ID' => $id,
]
]);
if ($basketItemData = $basketIterator->fetch())
{
if (empty($basketItemData['ORDER_ID']))
{
$basket = $basketClass::loadItemsForFUser($basketItemData['FUSER_ID'], $basketItemData['LID']);
if ($basket && !$basket->isEmpty())
{
$basket->getItemByBasketCode($id)->delete();
$saveResult = $basket->save();
if ($saveResult->isSuccess())
{
$result->setData(['basket' => $basket]);
}
else
{
/** @var MainError $error */
foreach ($saveResult->getErrors() as $error)
{
// save basket error
$result->addError(
new MainError(
$error->getMessage(),
SaleControllerErrorEnumeration::DELETE_BASKET_ITEM_ACTION_SAVE_BASKET
)
);
}
}
}
else
{
$result->addError(
new MainError(
'basket load error',
SaleControllerErrorEnumeration::DELETE_BASKET_ITEM_ACTION_BASKET_LOAD
)
);
}
}
else
{
$result->addError(
new MainError(
'there is order with this basket item',
SaleControllerErrorEnumeration::DELETE_BASKET_ITEM_ACTION_ORDER_EXIST
)
);
}
}
else
{
$result->addError(
new MainError(
'basket item with id '.$id.' is not exists',
SaleControllerErrorEnumeration::DELETE_BASKET_ITEM_ACTION_BASKET_ITEM_NOT_EXIST
)
);
}
return $result;
}