От нашего клиента поступила задача. Надо сделать так, чтобы клиент добавлял товар А в корзину, но в корзину добавлялся товар А и В, или только В. Как такое может быть, например вы покупаете стол, он состоит из столешницы и 4 ножек. У клиента в каталоге есть товары как отдельно: ножка, столешница, так и стол в целом. Кто-то может сам собрать себе стол и подберет себе столешницу и ножки, а кто-то не хочет этим заниматься и готов выбрать готовый вариант. Так вот если клиент добавляет товар «стол» в корзину, то в корзине отображались товары: 1 «столешница» и 4 «ножки».
Что-же мы сделаем. Чтобы удалить товар нам понадобиться ID товара и вставить в код для удаление. Чтобы добавить товар нам также понадобиться ID товара.
//добавление товара
if ($arResult['ID'] == 2872) {
$fields = [
'PRODUCT_ID' => 2872, //ID моего товара
'QUANTITY' => 1
];
$fields1 = [
'PRODUCT_ID' => 2940, //ID моего товара
'QUANTITY' => 4
];
$r = Bitrix\Catalog\Product\Basket::addProduct($fields);
$rr = Bitrix\Catalog\Product\Basket::addProduct($fields1);
if (!$r->isSuccess()) { //ну и проверочка, для дебага
var_dump($r->getErrorMessages());
}
}
// Удаление товаров
if (CModule::IncludeModule('sale')) {
$dbBasketItems = CSaleBasket::GetList(array(),array(
'FUSER_ID' => CSaleBasket::GetBasketUserID(),
'LID' => SITE_ID,
'ORDER_ID' => 'NULL',
'PRODUCT_ID' => 2872));
if ($arBasket = $dbBasketItems->Fetch()) {
CSaleBasket::Delete($arBasket['ID']);
}
}
