УлучшениеЧто бы не удалялись товары при обновлении формы заказа, если в ней нет нужных товаров.
Плюс, не обязательно делать свойство добавляемым в корзину, делаем простой проход по элементам инфоблока.
Задача. Если в корзину добавлены товары со свойством "'Это генератор купона" (ETO_GENERATOR_KUPONA), надо удалить все другие товары из корзины.
Код |
---|
foreach ($arResult['BASKET_ITEMS'] as $basketItem) {
$res = CIBlockElement::GetList(
array(),
array('ID' => $basketItem['PRODUCT_ID']),
false,
false,
array('PROPERTY_ETO_GENERATOR_KUPONA')
);
while ($ob = $res->GetNext()) {
if ($ob['PROPERTY_ETO_GENERATOR_KUPONA_VALUE']) {
$arCuponsGoods[] = $basketItem['ID'];
} else {
$arNotCuponsGoods[] = $basketItem['ID'];
}
}
}
if (count($arCuponsGoods) > 0) {
foreach ($arNotCuponsGoods as $value) {
if (!in_array($value, $arCuponsGoods)) {
$arrForDelItems[] = $value;
}
}
}
if(count($arrForDelItems) > 0) {
foreach ($arrForDelItems as $del) {
CSaleBasket::Delete($del);
}
}
|
Пояснение:
- Создаем два массива, с товарами которые купоны и товарми которые не купоны ($arCuponsGoods и $arNotCuponsGoods)
- Если $arCuponsGoods не пустой, то создаем новый массив ($arrForDelItems) со списком кандидатов на удаление.
- Если $arrForDelItems не пустой, запускаем foreach с удалением записи корзины CSaleBasket::Delete($del);.
Как генерировать скидочные купоны по информации заказа, можно посмотреть тут
https://camouf.ru/blog-note/13295/