Обработчики корзины

Рейтинг: 0.5859  
Внедрено
Предложил С Константин 14.03.2014 10:45:46

Обработчики корзины

Предлагаю в методы GetProductData и OrderProduct интерфейса IBXSaleProductProvider обязательно передавать ID элемента корзины (BASKET_ID).

Например внутри вызова CSaleBasket::UpdateBasketPrices:
Было:
$arFields = $productProvider::GetProductData(array(                                      
   "PRODUCT_ID" => $arItem["PRODUCT_ID"],                                                  
   "QUANTITY"   => $arItem["QUANTITY"],                                                    
   "RENEWAL"    => "N",                                                                    
   "CHECK_COUPONS" => ('Y' == $arItem['CAN_BUY'] && 'N' == $arItem['DELAY'] ? 'Y' : 'N')   
));                                                                                       
Сделать:

$arFields = $productProvider::GetProductData(array(                                      
    "BASKET_ID" => $arItem["ID"],                                                        
    "PRODUCT_ID" => $arItem["PRODUCT_ID"],                                               
    "QUANTITY"   => $arItem["QUANTITY"],                                                    
    "RENEWAL"    => "N",                                                                    
    "CHECK_COUPONS" => ('Y' == $arItem['CAN_BUY'] && 'N' == $arItem['DELAY'] ? 'Y' : 'N')   
));                                                                                       
Это позволит создавать очень гибкие собственные обработчики при установке своего PRODUCT_PROVIDER_CLASS, производить любые расчеты цены (и возможности покупки товара) на основании параметров элемента корзины.  Например,  можно при добавлении товара в корзину устанавливать ему параметр скидку в 55 рублей,  и потом не зависимо от того есть ли сейчас активные скидки на сайте, всегда вычитать из стоимости товара 55 рублей.  Т.е даже после окончания акции, если пользователь успел добавить товар в корзину, у него останется скидка.

В общем передача ID элемента корзины даст огромные возможности по расширению функционала корзины с сохранением возможности обновления ядра.
Рейтинг: 0.0751  
Ответил Жуков Евгений 09.07.2014 18:19:02
Выйдет в sale 14.5.9

Рейтинг: 0  
Нечаев Александр 11.09.2015 08:55:45
Так и не вышло, на сколько я понимаю?