Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Не срабатывает CSaleBasket::Update

00 голосов
7
Здравствуйте!

В init.php следующий код. Не отрабатывает и соответственно не меняет количество и цену... (

Код
 <?
AddEventHandler("sale", "OnBasketAdd", "AddPresentToBasket");
function  AddPresentToBasket($ID,&$arFields)
{
$arFields = array(
"PRODUCT_ID" =>  121,
//PRODUCT_PRICE_ID - дополнительный код товара;
"PRICE" => 6000,
"CURRENCY "=> 'RUB',
"WEIGHT "=> 0,
"QUANTITY" => 2,
"LID" => SITE_ID,
"DELAY" => "N",
"CAN_BUY" => "Y",
"NAME" => "тест",
"CALLBACK_FUNC" => "MyBasketCallback",
"MODULE" => "catalog",
"NOTES" => "Товар в подарок",
"ORDER_CALLBACK_FUNC" => "MyBasketOrderCallback"
//DETAIL_PAGE_URL => ссылка на страницу детального просмотра товара;
//PROPS => массив свойств товара, который сохраняется в корзине. Каждый элемент этого массива является массивом следующего формата:   
); 
CSaleBasket::Update(121, $arFields);                    
}
?>
Если использовать CSaleBasket::ADD то отрабатывает нормально т.е. добавляет товар в корзину...
спросил 06 Авг, 13 от FoCuS (360 баллов)

7 Ответы

00 голосов
Также попробовал CSaleBasket::ADDВ документации написано: Функция добавляет товар в корзину, если его ещё нет, и обновляет параметры товара с увеличением количества, если он уже находится в корзине. 

Код
<?

AddEventHandler("sale", "OnBasketAdd", "AddPresentToBasket";
function  AddPresentToBasket($ID,&$arFields)
{
$arFields = array(
"PRODUCT_ID" =>  121,
PRODUCT_PRICE_ID => 0;
"PRICE" => 6000,
"CURRENCY "=> 'RUB',
"WEIGHT "=> 0,
"QUANTITY" => 2,
"LID" => SITE_ID,
"DELAY" => "N",
"CAN_BUY" => "Y",
"NAME" => "тест",
"CALLBACK_FUNC" => "MyBasketCallback",
"MODULE" => "catalog",
"NOTES" => "Товар в подарок",
"ORDER_CALLBACK_FUNC" => "MyBasketOrderCallback"
//DETAIL_PAGE_URL => ссылка на страницу детального просмотра товара;
//PROPS => массив свойств товара, который сохраняется в корзине. Каждый элемент этого массива является массивом следующего формата:   
); 
CSaleBasket::ADD(121, $arFields);           
}
?>
 


Функция отрабатывает, но добавляет товар... По докам теоретически должна изменять количество уже имеющегося товар в корзине... Товар с ID - 121 уже есть в корзине smile:)
ответил 06 Авг, 13 от FoCuS (360 баллов)
00 голосов
$ID это ID записи в корзине, а PRODUCT_ID это ID товара тобишь при вызове метода нужно ID записи корзины для успешного обновления
ответил 07 Окт, 13 от Amentet (2,080 баллов)
00 голосов
Цитата
Сергей Фролов пишет:
$ID это ID записи в корзине, а PRODUCT_ID это ID товара тобишь при вызове метода нужно ID записи корзины для успешного обновления
Cпасибо. 

Количество меняется. Цена товара в строке корзины нет...
ответил 07 Янв, 14 от FoCuS (360 баллов)
00 голосов
PRODUCT_PRICE_ID => 0; не правильно задана строка
ответил 24 Апр, 14 от Amentet (2,080 баллов)
00 голосов
и для смены цены по моему модуль должен быть не catalog а sale хотя точно не помню
ответил 19 Авг, 14 от Amentet (2,080 баллов)
00 голосов
Цитата
Сергей Фролов пишет:
PRODUCT_PRICE_ID => 0; не правильно задана строка
Вот текущий листинг.
Код
<?
AddEventHandler("sale", "OnBasketAdd", "AddPresentToBasket");
function  AddPresentToBasket($ID,&$arFields)
{
$arFields = array(
//"PRODUCT_ID" =>  121,
//PRODUCT_PRICE_ID - дополнительный код товара;
"PRICE" => 40000,
"CURRENCY "=> 'RUB',
//"WEIGHT "=> 0,
"QUANTITY" => 5,
"LID" => SITE_ID,
"DELAY" => "N",
"CAN_BUY" => "Y",
"NAME" => "тест",
"CALLBACK_FUNC" => "MyBasketCallback",
"MODULE" => "catalog",
"NOTES" => "Товар в подарок",
//"ORDER_CALLBACK_FUNC" => "MyBasketOrderCallback"
//DETAIL_PAGE_URL => ссылка на страницу детального просмотра товара;
//PROPS => массив свойств товара, который сохраняется в корзине. Каждый элемент этого массива является массивом следующего формата:   
); 
CSaleBasket::Update($ID, $arFields);                    
}
?>
 
ответил 24 Дек, 14 от FoCuS (360 баллов)
00 голосов
сделай модуль sale и раскоментарь PRODUCT_ID
ответил 13 Апр, 15 от Amentet (2,080 баллов)

Похожие вопросы

0 голосов
5 ответов
0 голосов
2 ответов
спросил 16 Апр, 14 от Exumer (360 баллов)
0 голосов
5 ответов
0 голосов
0 ответов
спросил 21 Сен, 13 от Hohat (720 баллов)