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

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

Всем привет.
Есть нестандартный шаблон компонента bitrix:sale.order.ajax.
В файле result_modifier.php идет обращение к стороннему api, отправляется вся корзина и промокод, там это все обрабатывается и возвращается пересчитанная корзина, отображаемые цены меняются на новые, но при нажатии кнопки оформить заказ, в заказ улетают стандартные цены.
Где я просчитался, подскажите пожалуйста.
  • Вопрос задан
  • 102 просмотра
Подписаться 1 Простой 1 комментарий
Помогут разобраться в теме Все курсы
  • Нетология
    1С-программист
    10 месяцев
    Далее
  • Skillbox
    Профессия Графический дизайнер PRO
    15 месяцев
    Далее
  • Hi-TECH Academy
    KL 004.2.4 Kaspersky SD-WAN
    2 дня
    Далее
Решения вопроса 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 - чтобы в админке заказов отображалось как надо. Этот путь менее гибкий и имеет больше ограничений.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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