- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/compatible/eventcompatibility.php
- Класс: BitrixSaleCompatibleEventCompatibility
- Вызов: EventCompatibility::onBasketItemChange
static function onBasketItemChange(MainEvent $event)
{
if (static::$disableEvent === true)
{
return new MainEventResult( MainEventResult::SUCCESS, null, 'sale');
}
$parameters = $event->getParameters();
/** @var SaleBasketItem $basketItem */
$basketItem = $parameters['ENTITY'];
$isNew = $parameters['IS_NEW'] ?? false;
$oldValues = $parameters['VALUES'];
if (!$basketItem instanceof SaleBasketItem)
{
return new MainEventResult(
MainEventResult::ERROR,
new SaleResultError(MainLocalizationLoc::getMessage('SALE_EVENT_COMPATIBILITY_WRONG_BASKET'), 'SALE_EVENT_COMPATIBILITY_BASKET_ITEM_CHANGE_WRONG_BASKET'),
'sale'
);
}
$basketFields = BasketCompatibility::convertBasketItemToArray($basketItem);
static::setDisableEvent(true);
if (!$isNew)
{
foreach(GetModuleEvents("sale", static::EVENT_COMPATIBILITY_ON_BASKET_ITEM_UPDATE, true) as $oldEvent)
{
ExecuteModuleEventEx($oldEvent, array($basketItem->getId(), $basketFields));
}
}
if (array_key_exists('QUANTITY', $oldValues) && ($basketFields['QUANTITY'] - $oldValues['QUANTITY']) > 0)
{
foreach(GetModuleEvents("sale", static::EVENT_COMPATIBILITY_ON_BASKET_ITEM_ADD, true) as $oldEvent)
{
ExecuteModuleEventEx($oldEvent, Array($basketItem->getId(), $basketFields));
}
}
static::setDisableEvent(false);
return new MainEventResult( MainEventResult::SUCCESS, null, 'sale');
}