Вы столкнетесь с проблемой при расчете скидок, если захотите добавлять товары в корзину с кастомной ценой. Скидки на такие товары просчитываться не будут. И об этом писали тут например . Нужно было как-то очень быстро и изящно решить эту проблему, хотя бы на время, пока разработчики наконец-то это не учтут в новых версиях. И очень рационально на мой взгляд сделать два разных параметра 'CHECK_PRICE' и 'CHECK_DISCOUNT' вместо 'CUSTOM_PRICE', что кстати уже реализовано в стандартном классе провайдере CCatalogProductProvider который по умолчанию передается параметром 'PRODUCT_PROVIDER_CLASS' в методе $basket->createItem, например.
Поэтому, исходя из проблемы, было принято решение скопировать стандартный PRODUCT_PROVIDER_CLASS CCatalogProductProvider (он находится тут /bitrix/modules/catalog/general/product_provider.php и реализован от интерфейса IBXSaleProductProvider ) и переименовать его, например, в CCatalogProductProviderCustom. В нашем новом провайдере меняем одну строчку (в моей версии это 65 строчка):
на
Теперь вы можете выставлять свою цену, а скидка будет просчитываться как раньше.
p.s.
Я предупреждаю, что данное решение на коленке, и если возможно оно кому-то поможет. Но если кто-то глубже погружался в проблему и знает, такого рецепта недостаточно, пожалуйста отпишитесь в комментариях.
К слову версия Битрикса 18.1.3
Поэтому, исходя из проблемы, было принято решение скопировать стандартный PRODUCT_PROVIDER_CLASS CCatalogProductProvider (он находится тут /bitrix/modules/catalog/general/product_provider.php и реализован от интерфейса IBXSaleProductProvider ) и переименовать его, например, в CCatalogProductProviderCustom. В нашем новом провайдере меняем одну строчку (в моей версии это 65 строчка):
$arParams['CHECK_PRICE'] = (isset($arParams['CHECK_PRICE']) && $arParams['CHECK_PRICE'] == 'N' ? 'N' : 'Y'); |
$arParams['CHECK_PRICE'] = 'N'; |
p.s.
Я предупреждаю, что данное решение на коленке, и если возможно оно кому-то поможет. Но если кто-то глубже погружался в проблему и знает, такого рецепта недостаточно, пожалуйста отпишитесь в комментариях.
К слову версия Битрикса 18.1.3