Документация для разработчиков

Add

int
   CSaleBasket::Add(
 array arFields
   );

Метод добавляет товар в корзину, если его ещё нет, и обновляет параметры товара с увеличением количества, если он уже находится в корзине. В массиве arFields перечисляются все параметры товара, которые нужны для работы модуля Интернет-магазина (т.е. этот модуль не зависит от других модулей и работает полностью самостоятельно). Нестатический метод.

Интернет-магазин не зависит от других модулей, поэтому товары в корзину модуля продаж могут добавляться из любого места (например, из торгового каталога или со статической страницы). Для некоторых модулей существуют функции - оболочки, облегчающие добавление товара в корзину (например, для модуля catalog существуют функции Add2Basket и Add2BasketByProductID).

Параметры вызова

ПараметрОписание
arFields Ассоциативный массив параметров элемента корзины, содержащий следующие ключи:
  • PRODUCT_ID - уникальный в рамках модуля код товара (обязательное поле);
  • PRODUCT_PRICE_ID - ID (идентификатор) конкретного ценового предложения товара, пришедшего в корзину. Может быть использован в классе CPrice модуля Catalog для получения детальной информации о цене.
  • PRICE - стоимость единицы товара (обязательное поле);
  • CUSTOM_PRICE Указывает на то могут ли, например, скидки изменять стоимость позиции или нет. Обычно этот флаг выставляется в административном отделе, когда в форме редактирования вручную правится цена. Значение Y/N (N - по умолчанию).
  • CURRENCY - валюта стоимости единицы товара (обязательное поле), если валюта отличается от базовой валюты для данного сайта, то стоимость будет автоматически сконвертирована по текущему курсу;
  • WEIGHT - вес единицы товара;
  • QUANTITY - количество единиц товара;
  • LID - сайт, на котором сделана покупка (обязательное поле);
  • DELAY - флаг "товар отложен" (Y/N);
  • CAN_BUY - флаг "товар можно купить" (Y/N) - может устанавливаться автоматически про наличии функции обратного вызова для поддержки актуальности корзины;
  • NAME - название товара (обязательное поле);
  • PRODUCT_XML_ID - внешний код товара (необходим при обмене заказами с 1С);
  • CATALOG_XML_ID - внешний код каталога (необходим при обмене заказами с 1С);
  • ORDER_ID - идентификатор заказа. Ключ будет пустым, если товар еще не добавлен в заказ;
  • CALLBACK_FUNC* - название функции обратного вызова для поддержки актуальности корзины (описание ниже);
  • MODULE - модуль, добавляющий товар в корзину;
  • NOTES - особые заметки, например, тип цены;
  • ORDER_CALLBACK_FUNC* - название функции обратного вызова для оформления заказа (описание ниже);
  • DETAIL_PAGE_URL - ссылка на страницу детального просмотра товара;
  • CANCEL_CALLBACK_FUNC* - название функции обратного вызова для отмены заказа (описание ниже);
  • PAY_CALLBACK_FUNC* - название функции обратного вызова, которая вызывается при установке флага "Доставка разрешена" заказа;
  • FUSER_ID - идентификатор пользователя интернет-магазина, необязательный параметр, по умолчанию CSaleBasket::GetBasketUserID() (текущий пользователь);
  • DISCOUNT_PRICE - величина скидки;
  • DISCOUNT_NAME - название скидки;
  • DISCOUNT_VALUE - размер скидки (в процентах);
  • DISCOUNT_COUPON - купон скидки;
  • PROPS - массив свойств товара, который сохраняется в корзине. Каждый элемент этого массива является массивом следующего формата:
    array("NAME" => "Название свойства",
          "CODE" => "Код свойства", 
          "VALUE" => "Значение свойства", 
          "SORT" => "Индекс сортировки")
  • PRODUCT_PROVIDER_CLASS** - содержит имя класса, реализующего интерфейс IBXSaleProductProvider. Торговый каталог записывает в это поле имя класса CCatalogProductProvider. Если поле пусто, то возникает попытка использовать старые поля:CALLBACK_FUNC, ORDER_CALLBACK_FUNC, CANCEL_CALLBACK_FUNC и PAY_CALLBACK_FUNC.
  • IGNORE_CALLBACK_FUNC Y\N. По умолчанию N. Если выставить параметру Y то CALLBACK_FUNC и PRODUCT_PROVIDER_CLASS вызываться не будут.

* - поля считаются устаревшими, начиная с версии 12.5. Вместо них используется PRODUCT_PROVIDER_CLASS.
** - поле доступно, начиная с версии 12.5.

Возвращаемые значения

Метод возвращает код элемента корзины, в который попал данный товар.

Пример использования

<?
if (CModule::IncludeModule("sale"))
{
$arFields = array(
"PRODUCT_ID" => 51,
"PRODUCT_PRICE_ID" => 0,
"PRICE" => 138.54,
"CURRENCY" => "RUB",
"WEIGHT" => 530,
"QUANTITY" => 1,
"LID" => LANG,
"DELAY" => "N",
"CAN_BUY" => "Y",
"NAME" => "Чемодан кожаный",
"CALLBACK_FUNC" => "MyBasketCallback",
"MODULE" => "my_module",
"NOTES" => "",
"ORDER_CALLBACK_FUNC" => "MyBasketOrderCallback",
"DETAIL_PAGE_URL" => "/".LANG."/detail.php?ID=51"
);

$arProps = array();

$arProps[] = array(
"NAME" => "Цвет",
"CODE" => "color",
"VALUE" => "черный"
);

$arProps[] = array(
"NAME" => "Размер",
"VALUE" => "1.5 x 2.5"
);

$arFields["PROPS"] = $arProps;

CSaleBasket::Add($arFields);
}
?>

Пример использования

//пример на проверку создания покупателя

$userId=XXX;//id пользователя
//получаем FUSER_ID, если покупатель для данного пользователя существует
$FUSER_ID=CSaleUser::GetList(array('USER_ID' => $userId));
//если покупателя нет - создаем его
if(!$FUSER_ID['ID'])                  
       $FUSER_ID['ID']=CSaleUser::_Add(array("USER_ID" => $userId)); //обратите внимание на нижнее подчеркивание перед Add
//если не получается создать покупателя - то тут уж ничего не поделаешь
if(!$FUSER_ID['ID']){         
 echo "Error while creating SaleUser";      
 die();      
}
$FUSER_ID=$FUSER_ID['ID'];
//теперь переменную $FUSER_ID можно использовать для добавления товаров в корзину пользователя с $userId.

Смотрите также:



© «Битрикс», 2001-2019, «1С-Битрикс», 2019
Наверх