- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/compatible/basketcompatibility.php
- Класс: BitrixSaleCompatibleBasketCompatibility
- Вызов: BasketCompatibility::delete
static function delete($id)
{
$result = new SaleResult();
$item = null;
$basket = null;
$order = null;
$registry = SaleRegistry::getInstance(static::getRegistryType());
/** @var SaleBasket $basketClassName */
$basketClassName = $registry->getBasketClassName();
$res = $basketClassName::getList(
array(
'filter' => array(
'ID' => $id
),
'select' => array(
'ID', 'ORDER_ID', 'SET_PARENT_ID', 'TYPE', 'FUSER_ID', 'LID'
),
));
if (!$itemDat = $res->fetch())
{
$result->addError(new SaleResultError(MainLocalizationLoc::getMessage('SALE_BASKET_COMPATIBLE_BASKET_ITEM_NOT_FOUND'), 'BASKET_ITEM_NOT_FOUND'));
return $result;
}
if (intval($itemDat['ORDER_ID']) > 0)
{
/** @var SaleBasket $basketClassName */
$orderClassName = $registry->getOrderClassName();
/** @var SaleOrder $order */
if ($order = $orderClassName::load(intval($itemDat['ORDER_ID'])))
{
if ($basket = $order->getBasket())
{
/** @var SaleBasketItem $item */
$item = $basket->getItemById($id);
}
}
}
else
{
if (!array_key_exists('FUSER_ID', $itemDat) || intval($itemDat['FUSER_ID']) <= 0)
{
$itemDat['FUSER_ID'] = SaleFuser::getId();
}
/** @var SaleBasket $basketClassName */
$basketClassName = $registry->getBasketClassName();
if ($basket = $basketClassName::loadItemsForFUser($itemDat["FUSER_ID"], $itemDat['LID']))
{
/** @var SaleBasketItem $item */
$item = $basket->getItemById($id);
}
}
if ($basket === null)
{
$result->addError(new SaleResultError(MainLocalizationLoc::getMessage('SALE_BASKET_COMPATIBLE_BASKET_COLLECTION_NOT_FOUND'), 'BASKET_COLLECTION_NOT_FOUND'));
return $result;
}
if ($item === null)
{
$result->addError(new SaleResultError(MainLocalizationLoc::getMessage('SALE_BASKET_COMPATIBLE_BASKET_ITEM_PROPS_NOT_FOUND'), 'BASKET_ITEM_PROPS_NOT_FOUND'));
return $result;
}
/** @var SaleResult $r */
$r = $item->delete();
if (!$r->isSuccess())
{
$result->addErrors($r->getErrors());
}
if ($order !== null)
{
if (!$result->isSuccess())
{
return $result;
}
/** @var SaleResult $r */
$r = $order->save();
}
else
{
if (!$result->isSuccess())
{
return $result;
}
/** @var SaleResult $r */
$r = $basket->save();
if ($r->isSuccess())
{
SaleBasketComponentHelper::clearFUserBasketQuantity($itemDat['FUSER_ID'], $itemDat['LID']);
SaleBasketComponentHelper::clearFUserBasketPrice($itemDat['FUSER_ID'], $itemDat['LID']);
}
}
if (!$r->isSuccess())
{
$result->addErrors($r->getErrors());
}
return $result;
}