Сравнение двух типов цен для иммитации системы скидок, в Битрикс

Встала задачка, иммититровать систему скидок в интернет магазине на Битрикс. Из 1С-УТ, на сайт, выгружается два типа цен: "РИЦ сайт"" и "Старт розница"

РИЦ сайт - это цена со скидкой, а Старт розница - цена без скидки. Но, бывают ситуации когда обе эти цены одинаковые.

Задача, выводить эти цены в шаблон каталога, таким образом, что бы имитировалась система скидок.

Алгоритм простой:
- Если "РИЦ сайт" меньше "Старт розница" - выводим зачеркнутую "Старт розница" и подсвеченную "РИЦ сайт".
- Для красоты, выводим и процент скидки, вычесляя его пропорцией.
- Иначе просто выводим "Старт розница".

Передать цену товара в $arElement- CPrice::GetList

Для дальнейших манипуляций, работы с математическими функциями, нам нужно передать каждый тип цены в переменнуи $arElement и привести к числовому виду, так как они будут строкой.

Загоняем цену, как число в переменную, при помощи оператора приведения int. Для "РИЦ сайт"- ее ID = 11 (скрин выше):

$db_res_ric = CPrice::GetList(array(), array("PRODUCT_ID" => $ID, "CATALOG_GROUP_ID" => '11',));
    if ($ricPrice = $db_res_ric->Fetch()) {
    $arElement["PRICE_RIC"] = round($ricPrice['PRICE']);
}

$Ric = $arElement['PRICE_RIC'];
$Ric = (int)$Ric; //Приводим в число

Тоже самое делаем с "Старт розница"- ее ID = 7

$db_res_ret = CPrice::GetList(array(), array("PRODUCT_ID" => $ID, "CATALOG_GROUP_ID" => '7',));
if ($retPrice = $db_res_ret->Fetch()) {
    $arElement["PRICE_RET"] = round($retPrice['PRICE']);
}

$Ret = $arElement['PRICE_RET'];
$Ret = (int)$Ret; //Приводим в число

Таким образом, наши типы цен теперь в переменных $Ric и $Ret и они числовые. Дальше, простое сравнение и немножко математики

Реализуем алгоритм

Все подсказки в комментариях к коду, дабы было нагляднее и понятнее

if ($Ric == $Ret) { //Если РИЦ равна Розница
   echo $arElement['PRICE_RET']; //Выводим Розницу
} else {
	echo $arElement['PRICE_RET']; //Зачеркнутая Розница
	echo $arElement['PRICE_RIC']; //Выводим РИЦ
}  

Высчитываем процент разницы, что бы вывести в лейбл

Для полной иммитации скидки, и эстетики. Навешиваем лейбл с процентом скидки. Тут немножко математики:

if ($Ric !== $Ret) {
	$DifsPercent = $Ric * 100 / $Ret; //Высчитали пропорцию
	$LabelPercent = 100 - $DifsPercent; //Высчитали разницу
	echo $LabelPercent; //Вывели цифру процента
}

Можно было, сделать и одной строкой, просто по правилам математики- но разложил для понимания

Просмотров: 4917 | Комментариев: 2
Внимание! все сообщения проходят премодерацию. Ваше сообщение появится после проверки
 
Текст сообщения*
Перетащите файлы
Ничего не найдено
Защита от автоматических сообщений
Загрузить файл
Нажимая кнопку "Отправить", Вы принимаете условия
Политики конфиденциальности и обработки персональных данных
Nikita Androsov
Добрый день.
Попробовал ваш способ, что то не получилось. Решил проблему так:

$mincena = (int) $arResult['MIN_PRICE']['VALUE'];
$maxprice = (int) $arResult['PROPERTIES']['MAXIMUM_PRICE']['VALUE'];
if ($mincena !== $maxprice)
{
        $DifsPercent = $mincena * 100 / $maxprice;
        $procentskidki = (int) 100 - $DifsPercent;
        echo '<pre>';
echo (floor($procentskidki)).'%';
        echo  '</pre>';
        }
        ?>
Имя Цитировать
Артур
Добрый день, подскажите пожалуйста как реализовать вывод двух типов цен для одного товара с условием -
при покупке до 5 единиц товара - розничная цена, если добавляем 6 и выше оптовая.
Имя Цитировать

Цены на разработку сайта или приложения

Что бы узнать точные стоимость и срок разработки:
достаточно, как можно подробнее, заполнить опросник и выслать на электронную почту info@bazarow.ru.
После ознакомления, смогу задать уточняющие вопросы и оценить.

В стоимость разработки уже включены и не требуют доплат:
  • Лицензия на необходимую редакцию 1С-Битрикс: Управление сайтом и лицензии на дополнительные модули, если требуются для конкретного проекта.
  • Применение технологии композитный сайт: Оптимизация скорости работы проекта под нагрузками.
  • Один год, бесплатной, технической поддержки от 1С-Битрикс
Интернет-магазин от 250 000 рублей
Полно-комплексная разработка интернет-магазина любой сложности. Интеграция с 1С, службами доставки и оплаты. Внутренняя СЕО оптимизация перед запуском.
Сайт компании от 200 000 рублей
Сайт с каталогом товаров или услуг, без функционала магазина. Включает формы обратной связи внутри карточек каталога. Любое количество статичных и динамичных разделов.
Инфоресурс от 200 000 рублей
Портал или доска объявлений с большим количеством разделов. Возможность включения форумов, блогов, регистрации пользователей, внутри сайтовая социальная сеть.
Сайт на готовом решении от 40 000 рублей
Подбор решения из более 200-от готовых сайтов, в соответствии с тематикой бизнеса. Запуск сайта на сервере или хостинге, со всеми настройками. Не большие доработки под задачу.
Мобильное приложение от 200 000 рублей

Кроме сайтов, занимаюсь разработкой мобильных приложений на технологии Apache Cordova. Это полноценные приложения, которые публикуются и распостранияются через официальные магазины GooglePlay и AppStore

  • Полная интеграция с базой данных, основного сайта.
  • Вывод каталогов продукции и услуг, прямо в приложении.
  • Персональные разделы пользователей с историей заказов.
  • Прямой доступ к устройству: GPS, камера, звонки и медиабиблиотека

attention