Телеграм: @camouf_ru Почта: mihail@bazarow.ru

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

Просмотров: 5854

Встала задачка, иммититровать систему скидок в интернет магазине на Битрикс. Из 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; //Вывели цифру процента
}

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

Nikita Androsov 15.01.2018
Добрый день.
Попробовал ваш способ, что то не получилось. Решил проблему так:

$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>';
        }
        ?>
Артур 11.07.2018
Добрый день, подскажите пожалуйста как реализовать вывод двух типов цен для одного товара с условием -
при покупке до 5 единиц товара - розничная цена, если добавляем 6 и выше оптовая.
Гость 29.11.2022
сделал еще проще. Вывел 2 цены (зачеркнутая - цена в розничном магазине, не зачеркнутая - цена в интернет-магазине). Разницу вывел простым JS-сом ввиде скидки
Гость 29.11.2022
Цитата
Артур написал:
Добрый день, подскажите пожалуйста как реализовать вывод двух типов цен для одного товара с условием -
при покупке до 5 единиц товара - розничная цена, если добавляем 6 и выше оптовая.
Цены обычно присваиваются конкретному пользователю. Все что Вы сказали можно обыграть через маркетинговые акции.

Записная книжка разработчика

Примерно с 2013-го года пишу заметки по разработке сайтов на Битрикс.
Вы можете задавать уточняющие вопросы в комментариях- отвечаю или дополняю заметки по возможности.

Массово: применить наценку ко всем товарам каталога с пересчетом от б... Просмотров: 5585 Рассмотрим как, в магазине работающем на 1С-битрикс, массово применить наценку на все това... FTP доступ на Виртуальной машине Битрикс Просмотров: 15920 Бывает что нужно открыть FTP доступ к заранее известной папке на сайте под управлением 1С ... Time Capsule на Windows 10. Хранение бекапов Time Machine на компьюте... Просмотров: 6665 Заметку написал скорее для себя, что бы собрать все в одну кучу. Написана на базе нескольк... AJAX корзина с отправкой количества из раздела каталога Просмотров: 19126 Столкнулся с задачкой: нужно было на одном сайте реализовать интерактивный прайс лист. При... Малая корзина Битрикс, упрощенный шаблон Просмотров: 12545 Шаблон малой корзины битрикс, который можно вывести в боковом разделе шаблона или в шапке ... Адаптивное гамбургер меню для битрикс Просмотров: 14443 Заметка коротенькая, но решил оставить ее - так как самому часто нужно нечто подобное. В а... Вывести минимальную цену торговых предложений в Битрикс Просмотров: 26860 Если у товара несколько торговых предложений и у каждого предложения разные цены, иногда т... Звездочки в рейтинге Битрикс статей и новостей Просмотров: 18072 Стандартный вид рейтинга в новостях Битрикс, ну скажем так- не очень красив. Давайте его п... XML в формате Commerce ML-2, города России и Мира, для выгрузки в инф... Просмотров: 6303 Подвернулась задачка, создать инфоблок для Битрикс, в котором будут просто города России и... Очистка корзины в 1С-Битрикс одним нажатием Просмотров: 27754 В стандартной корзине Битрикс не хватает кнопки для полной очистки корзины одним нажатием... Удалить товары из корзины, если есть определенные товары. Просмотров: 880 Задача: если в корзину добавлены товары с определенным свойством, нужно удалить из корзины... Ускорение работы сайта на 1С-Битрикс Просмотров: 15895 Данная статья написана специально под видеоролик (приложен в конце статьи), опубликованный... Как вывести картинки к разделам на базе _ext меню Просмотров: 7087 Просто для эстетической красоты, нужно вывести в меню разделов сайта картинки или иконки. ... Заполнить коэффициент единицы измерения (MEASURE_RATIO) из свойства э... Просмотров: 5722 Задачка: Каталог наполняется из 1С, но 1С не передает коэффициент единицы измерения (особе... Вывести производителей на сайте с отбором его товаров из каталога Просмотров: 18244 Достаточно частая задачка для каталога или интернет-магазина: вывести список производителе... Мобильные версии страниц и поисковые системы Просмотров: 5849 Согласно требования поисковых систем: Яндекс и Google, в случае если у вашего сайта имеетс... Связанные элементы в карточке товара, с помощью catalog.section Просмотров: 14030 Достаточно часто, при разработке магазинов на битрикс, требуется выводить связанные элемен... Memcached на сайте под управлением битрикс, при использовании Веб Окр... Просмотров: 6940 Если вам важна скорость отдачи сайта, а у вашего сервера медленный диск для использования ... Denwer c PHP 7.1.8 и MYSQL 5.7 оптимизированный для Битрикс Просмотров: 29518 В последнее время, все чаще приходиться работать на Windows, хотя и не люблю эту ОС- с точ... Информация о заказах и содержимое корзины текущего пользователя. Просмотров: 11778 В процессе разработки сайта могут понадобиться рецепты приведенные ниже. Использовать можн...