Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Наценки группам пользователей на весь каталог

00 голосов
0
Доброго времени суток!Есть такая задача:
Дано:
5 типов цен - розничная, спецпредложение, распродажа, склад, заказ
каталог в 170+ тысяч позиций
несколько групп пользователей, на которые забиты определённые скидки от розничной цены
Найти:
для некоторых групп дать наценки на цены склад и заказ на весь каталог.

Пока использую следующее:catalog.section с шаблоном list
необходимо выводить в 1-ом столбце розничную цену (для всех пользователей); во 2-ом столбце (в зависимости от типа пользователя) - цену с учётом скидки, спецпредложение или распродажу (если меньше скидочной), наценку на заказ и склад (если пользователю прописана наценка); в 3-ем столбце прописывается фактическая экономия клиента (в %) или же пометка о спец или распродаже.Со скидками разобрался стандартными средствами, а вот с наценками загвоздка: не хватило мозгов осилить. Так как "отрицательная" скидка не считается Битриксом, сделал следующее - в каталог вывожу вручную посчитанное значение, полученное из формулы - ВЫВОДИМАЯ ЦЕНА = ЦЕНА + ЗНАЧЕНИЕ СКИДКИ. Естественно пришлось прописывать эту абракадабру во все компоненты, до которых смог дотянуться - детальная информация, корзина, оформление заказа...
И вот проблема, с которой столкнулся - в админке в просмотре заказа, в почтовых шаблонах макрос #ORDER_LIST# в случаях заказа по наценке получаю кривые значения (падает цена с объявленной на неё скидкой).
Код вывода цен в catalog.section:
Код
         <?$sklad_mark = - ($arElement["PRICES"]["sklad"]["DISCOUNT_VALUE"] - $arElement["PRICES"]["sklad"]["VALUE"]);?>
         <?$zakaz_mark = - ($arElement["PRICES"]["zakaz"]["DISCOUNT_VALUE"] - $arElement["PRICES"]["zakaz"]["VALUE"]);?>
         <?$sklad = ($arElement["PRICES"]["sklad"]["VALUE"] + $sklad_mark);?>
         <?$zakaz = ($arElement["PRICES"]["zakaz"]["VALUE"] + $zakaz_mark);?>
      <td>
         <?if ( ($arElement["PRICES"]["sklad"]["VALUE"]) > 0):?>
            <?echo ($arElement["PRICES"]["roznich"]["PRINT_VALUE"]);?>
               <td>
               <?if (($arElement["PRICES"]["sklad"]["VALUE"]) > ($arElement["PRICES"]["sale"]["VALUE"])):?>
                  <?echo ($arElement["PRICES"]["sale"]["PRINT_VALUE"]);?>
                  <td>
                     <b><?=GetMessage("SALE");?></b>
                  </td>
               <?else:?>
                  <?if (($arElement["PRICES"]["sklad"]["VALUE"]) > ($arElement["PRICES"]["special"]["VALUE"])):?>
                     <b><?echo ($arElement["PRICES"]["special"]["PRINT_VALUE"]);?></b>
                     <td>
                        <?=GetMessage("SPECIAL");?>
                     </td>
                  <?else:?>
                     <?echo number_format($sklad, 2, ',', ' ');?><?=GetMessage("RUB");?>
                     <td>
                     <?echo round(($arElement["PRICES"]["roznich"]["VALUE"]-$sklad)/($arElement["PRICES"]["roznich"]["VALUE"]/100));?><?print_r("%");?>
                     </td>
                  <?endif;?>
               <?endif;?>
               </td>

         <?else:?>
            <?if (($arElement["PRICES"]["zakaz"]["VALUE"]) > 0):?>
            <?echo ($arElement["PRICES"]["roznich"]["PRINT_VALUE"]);?>
               <td>
               <?if (($arElement["PRICES"]["zakaz"]["VALUE"]) > ($arElement["PRICES"]["sale"]["VALUE"])):?>
                  <?echo ($arElement["PRICES"]["sale"]["PRINT_VALUE"]);?>
                  <td>
                     <?=GetMessage("SALE");?>
   &
спросил 25 Янв, 14 от Dalboz (140 баллов)

Ваш ответ

Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
Анти-спам проверка:
Чтобы избежать проверки в будущем, пожалуйста войдите или зарегистрируйтесь.

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

0 голосов
4 ответов
0 голосов
2 ответов