Цена с флагом CUSTOM_PRICE и скидки и купоны.

Рейтинг: 15.0000  
На голосовании
Предложил Шадрин Сергей 18.01.2018 12:19:12

Цена с флагом CUSTOM_PRICE и скидки и купоны.

Всем известно что в Битриксе стандартными средствами не сделать продажу платных доп. услуг к товару. Т.е. цену товара стандатрным компонентом "Каталого" не изменить.

Можно править цену товара в корзине устанавливая флаг CUSTOM_PRICE, но после этого система перестает воздействовать на цену, т.е. не работают скидки.

Нужно сделать так, что даже при установленном флаге CUSTOM_PRICE в корзине применялись правила корзины на скидки и купоны ибо другого способа опционально добавлять платные услуги к товарам - НЕТ.

Или в торговом каталоге добавить функционал (новую вкладку при редактировании товара) добавления к товару доп. платных услуг, которые прибавляются к цене товара при добавлении товара в корзину с выбранными платными услугами. И чтобы это было независимо от типа товара, товар это или набор.
Рейтинг: 0  
Ответил Жуков Евгений 18.01.2018 13:30:39
Нужно сделать так, что даже при установленном флаге CUSTOM_PRICE в корзине применялись правила корзины на скидки и купоны
Именно в таком варианте - не будет реализовано. Флаг задумывался как раз для отключения скидок.

Рейтинг: 3  
Шадрин Сергей 18.01.2018 13:34:50
Именно в таком варианте - не будет реализовано. Флаг задумывался как раз для отключения скидок.
Хорошо, а как тогда модифицировать цену товара при добавлении в корзину чтобы в последствии применялись скидки и купоны?
Рейтинг: 0  
Жуков Евгений 18.01.2018 19:01:32
Хорошо, а как тогда модифицировать цену товара при добавлении в корзину
Поясните.
Рейтинг: 0  
Шадрин Сергей 18.01.2018 19:21:33
Поясните.
Довольно часто встречается что нужно цену товара увеличить в зависимости от выбранных доп. услуг связанных с этим товаром. Стандартного подобного функционала в Битриксе нет.
Приходится писать костыли типа:
AddEventHandler('sale', 'OnBeforeBasketAdd', 'BeforeBasketAdd');
function BeforeBasketAdd(&$arFields)
{
   if ($_POST['chec_dop'] == 1)
   {
      $DOP_CENA=3000;
   }
   else
   {
      $DOP_CENA=0;
   }
   if ($_POST['pre_order'] == 1) 
   {
      $arFields['PRODUCT_PROVIDER_CLASS'] = '';
      $arFields['CALLBACK_FUNC'] = '';
      $arFields['PRICE'] = $arFields['PRICE'] * 0.3+$DOP_CENA;
#      $arFields['CUSTOM_PRICE'] = 'Y';
   }
   else
   {
      $arFields['PRODUCT_PROVIDER_CLASS'] = '';
      $arFields['CALLBACK_FUNC'] = '';
      $arFields['PRICE'] = $arFields['PRICE'] + $DOP_CENA;
#      $arFields['CUSTOM_PRICE'] = 'Y';
   }
}
но при этом если раскомментить строку с CUSTOM_PRICE, то дальнейшие изменений цены не будет.
Если этот флаг не ставить, то цена поидеи не должна меняться(хотя и меняется).
Вотпрос:

получается достаточно:
AddEventHandler('sale', 'OnBeforeBasketAdd', 'BeforeBasketAdd');
function BeforeBasketAdd(&$arFields)
{
   $DOP_CENA=3000;
   if ($_POST['pre_order'] == 1) 
   {
      $arFields['CALLBACK_FUNC'] = '';
      $arFields['PRICE'] = $arFields['PRICE'] * 0.3+$DOP_CENA;
   }
}
чтобы модифицировать цену товара и при этом сохраняется функционал работы скидок, купонов, правил корзины?
Рейтинг: 0  
Жуков Евгений 18.01.2018 22:38:22
Довольно часто встречается что нужно цену товара увеличить в зависимости от выбранных доп. услуг связанных с этим товаром.
Доп. услуги - это тоже позиции в заказе (корзине)?
Рейтинг: 4.7804  
Белоконь Дмитрий 12.02.2018 18:56:47
Присоединяюсь к необходимости данного функционала.
Нужно устанавливать цену после расчета всех скидок торгового каталога и правил корзины. Сделать это кроме как с помощью флага CUSTOM_PRICE не получается. Цена устанавливается, но при этом админка не видит, что к товару были применены скидки и купоны. Принудительного метода привязки скидок и купонов к товару\заказу я не нашел.  
Рейтинг: 7.7804  
Белоконь Дмитрий 12.02.2018 18:59:37
Думаю, не помешал бы флаг что-то типа CUSTOM_DISCOUNT, который делегирует разработчику решение установки признака примененных скидок и купонов для товара\заказа.
Рейтинг: 3.7804  
Иванов Максим 05.03.2019 20:03:56
Поддерживаю необходимость такого функционала. Из редко нужно применить купон корзины к отредактированному заказу.