Задать вопрос
@KirgizKing
кодю

Как менять цены на товары в bitrix:sale.order.ajax?

Всем привет.
Есть нестандартный шаблон компонента bitrix:sale.order.ajax.
В файле result_modifier.php идет обращение к стороннему api, отправляется вся корзина и промокод, там это все обрабатывается и возвращается пересчитанная корзина, отображаемые цены меняются на новые, но при нажатии кнопки оформить заказ, в заказ улетают стандартные цены.
Где я просчитался, подскажите пожалуйста.
  • Вопрос задан
  • 15 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Python-разработчик
    10 месяцев
    Далее
  • Skillbox
    Профессия Графический дизайнер PRO
    15 месяцев
    Далее
  • Нетология
    Фронтенд-разработчик
    11 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
есть 2 пути:
1) отнаследоваться от CCatalogProductProvider ( или реализовать заново IBXSaleProductProvider), перенести нужную логику из result_modifier.php в его методы и записать имя этого класса в параметрах товара в корзине. Вот кусочек кода по теме:
/* @var \Bitrix\Sale\Baset $basket */
$fields = array(
    'QUANTITY' => $quantity,
    'CURRENCY' => 'RUB',
    'LID' => 's1',
    'PRODUCT_PROVIDER_CLASS' => 'CCatalogProductProvider',
);
$item = $basket->createItem('catalog', $productId);
$item->setFields($fields);
$saveResult = $basket->save();
if (!$saveResult->isSuccess()) {
    echo implode('<br>', $saveResult->getErrorMessages());
}


второй путь: вместо ключа PRODUCT_PROVIDER_CLASS задать другой ключ: $fields['CUSTOM_PRICE'] = 'Y';
и ещё потребуется заполнить ключи NAME, DETAIL_PAGE_URL и PRODUCT_XML_ID - чтобы в админке заказов отображалось как надо. Этот путь менее гибкий и имеет больше ограничений.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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