Битрикс D7 – как добавить товар с произвольной ценой

Нам понадобится параметр CUSTOM_PRICE = 'Y', при помощи этого, наш PRICE теперь можно делать каким угодно, какая бы стоимость у вас не была в каталоге.

Код выглядит так:

//ID товара
$productId = 111;
$quantity = 1;

$basket = \Bitrix\Sale\Basket::loadItemsForFUser(
   \Bitrix\Sale\Fuser::getId(), 
   \Bitrix\Main\Context::getCurrent()->getSite()
);

if ($item = $basket->getExistsItem('catalog', $productId)){
   $item->setField('QUANTITY', $item->getQuantity() + $quantity);
}else{
   $item = $basket->createItem('catalog', $productId);
   $item->setFields([
      'QUANTITY' => $quantity,
      'CURRENCY' => \Bitrix\Currency\CurrencyManager::getBaseCurrency(),
      'LID' => \Bitrix\Main\Context::getCurrent()->getSite(),
      'PRICE' => 123, // цена
      'CUSTOM_PRICE' => 'Y',
      'NAME' => 'Общая стоимость за услуги'
   ]);
}

$basket->save();

Вот и всё, товар добавлен в корзину. Удобно применять данный код при “кастомном” оформлении заказа через API.

автор: Dmitriy

З 2011 року займаюся веб-розробкою. Зараз я – PHP Full Stack Developer.
Обговорити ваш проект, а також дізнатися більше про мене ви можете на цьому сайті:
dev.forwww.com

Email: dmitriyribka@gmail.com

5 коментаря

  1. Комментарий про то как выводить комментарий 🙂
    Перед
    $r = $order->save();
    Добавить
    $order->setField(‘USER_DESCRIPTION’, $_REQUEST[‘comment’]);
    где $_REQUEST[‘comment’] – ваш комментарий

  2. товар можно добавлять не только в корзину, но и в каталог. заголовок нужно сделать точнее.

    1. Что вы имеете ввиду? Чтобы добавить товар в каталог при помощи API нужно использовать CIBlockElement::Add + пару методов для изменения цены и количества.

  3. толкьо при указании своей цены перестают работать купоны, это тоже надо учитывать

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *