Как добавить товар в корзину через API?

Здравствуйте. Делаю добавление товаров в корзину. Использую CSaleBasket::Add($arFields);. Товар добавляется, но как правильно добавить цену товара? делаю так:
CModule::IncludeModule("sale");
                CModule::IncludeModule("product");
                CModule::IncludeModule("iblock");
                $arFilterOffers = array("IBLOCK_TYPE" => "catalog", 'ID' => $id);
                $rsOffers = CIBlockElement::GetList(array(),$arFilterOffers, false, false, array("NAME", "CATALOG_GROUP_2", "XML_ID", "EXTERNAL_ID", "DETAIL_PAGE_URL"));
                while($Offers = $rsOffers->GetNext()){
                    $arOffers = $Offers;
                }
                $dbPrices = CPrice::GetList(
                    array(),
                    array("PRODUCT_ID" => $id,"CATALOG_GROUP_ID" => 2),
                    false,
                    false,
                    array()
                );
                while($price = $dbPrices->Fetch()){
                    $OffersCost = $price;
                }

                $arFields = array(
                    "PRODUCT_ID" => $arOffers["ID"],
                    "PRODUCT_PRICE_ID" => $OffersCost["ID"],
                    "PRICE" => $OffersCost["PRICE"],
                    "CURRENCY" => "RUB",
                    "QUANTITY" => 1,
                    "LID" => 's1',
                    "DELAY" => "N",
                    "CAN_BUY" => "Y",
                    "NAME" => $arOffers["NAME"],
                    "MODULE" => "catalog",
                    "DETAIL_PAGE_URL" => $arOffers["DETAIL_PAGE_URL"]
                );
                CSaleBasket::Add($arFields);

В поле $arFields["PRICE"] могу вставить любую цену. Могу определить цену со скидкой, и добавить ее. Но после добавления товара в корзину, цена будет та, которую я указал, но не будет скидки на товар. Как при добавлении товара в корзину, добавлять и скидку? Скидка создана в битриксе.
Товар в корзине, добавленный через API (Цену передаю именно 36900)
5c9e06d5ac087930389681.pngТовар в корзине, добавленный через стандартный функционал из каталога.
5c9e06df78b62334395584.png

З.Ы. В методе CSaleBasket::Add($arFields); есть параметр PRODUCT_PROVIDER_CLASS, предполагаю надо его как то использовать. Но не понимаю как.
  • Вопрос задан
  • 1122 просмотра
Пригласить эксперта
Ответы на вопрос 2
@anton99zel Куратор тега 1С-Битрикс
29а класс средней школы №7
Вам нужно воспользоваться методом CSaleOrder::DoCalculateOrder - этот метод сделает перерасчет с учетом скидки в момент создания заказа.
А вот это скорее всего тут не нужно:
CModule::IncludeModule("product");
CModule::IncludeModule("iblock");
Ответ написан
Комментировать
s_panteleev
@s_panteleev
25 yo, Yaroslavl
Попробуйте
'PRODUCT_PROVIDER_CLASS' => 'CCatalogProductProvider'


А также посмотрите в сторону D7
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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