<?php
function addBasket($id, $q = 1, $site_id = SITE_ID, $currency = CURRENCY, $change = false)
{
if ($id) {
if (CModule::IncludeModule('sale') &&
CModule::IncludeModule('iblock') &&
CModule::IncludeModule('catalog')
) {
$basket = Bitrix\Sale\Basket::loadItemsForFUser(Bitrix\Sale\Fuser::getId(), $site_id);
if ($item = $basket->getExistsItem('sale', $id)) { //Если уже в корзине, то только обновляем количество
if ($change) {
$item->setField('QUANTITY', $q); //Если пришло из события, то ставим правильное количество
} else {
$item->setField('QUANTITY', $item->getQuantity() + $q);
}
$basket_rec = $basket->save();
} else {
$price = roundPriceFiveHundred($id, $site_id, $currency); //Берем оптимальную цену с округлением
//Выбираем поля для товара, для занесения в корзину
$arSelect = Array("NAME");
$arFilter = Array("ID" => $id);
$res = CIBlockElement::GetList(Array(), $arFilter, false, false, $arSelect);
if ($ob = $res->GetNextElement()) {
$arFields = $ob->GetFields();
$name = $arFields['NAME'];
}
$item = $basket->createItem('sale', $id);
$item->setFields(array(
"PRODUCT_ID" => $id,
"PRODUCT_PRICE_ID" => 0,
"PRICE" => $price['PRICE'],
'NAME' => $name,
"CURRENCY" => $currency,
"QUANTITY" => $q,
"LID" => $site_id,
"DELAY" => "N",
"CAN_BUY" => "Y",
"CALLBACK_FUNC" => "",
"ORDER_CALLBACK_FUNC" => "",
));
$basket_rec = $basket->save();
}
return $basket_rec;
}
return false;
}
return false;
}