Купил такой модуль http://marketplace.1c-bitrix.ru/solutions/vbcherepanov.bonus/ Модуль прекрасно работает с товарами, находящимися в базе битрикса,с инфоблоками. При добавлении товара в корзину - в корзине пишет сколько бонусов будет начислено за товар находящийся в корзине.
Также на сайте прикручен сторонний модуль для продажи автозапчастей (TDMod tecdoc.ru). Прикручен просто в раздел site.ru/autoparts В модуле есть функция добавления товара в корзину битрикса:
Код
//Add to cart
if(defined('TDM_ADD_TO_CART') AND TDM_ADD_TO_CART AND CModule::IncludeModule("sale")){
global $arCartPrice;
if(is_array($arCartPrice)){
if($_REQUEST['QTY']>1){$QUANTITY=intval($_REQUEST['QTY']);}else{$QUANTITY=1;}
if($arCartPrice['OPTIONS']['MINIMUM']>1 AND $QUANTITY<$arCartPrice['OPTIONS']['MINIMUM']){$QUANTITY=$arCartPrice['OPTIONS']['MINIMUM'];}
if($arCartPrice['NAME']==''){$arCartPrice['NAME'] = $arCartPrice['BRAND'].' '.$arCartPrice['ARTICLE'];}
$arFields = Array(
"LID" => $TDMCore->arSettings["CMS_SITE_ID"],
"NOTES" => $arCartPrice['TYPE_NAME'],
"PRODUCT_ID" => $arCartPrice['CPID'],
"PRICE" => TDMConvertPrice($arCartPrice['CURRENCY'],$TDMCore->arSettings["CMS_ADDCART_CURRENCY"],$arCartPrice['PRICE']),
"CURRENCY" => $TDMCore->arSettings["CMS_ADDCART_CURRENCY"],
"QUANTITY" => $QUANTITY,
"NAME" => $arCartPrice['NAME'],
"MODULE" => "tecdoc-module.com",
"DELAY" => "N",
"CAN_BUY" => "Y",
"DETAIL_PAGE_URL" => $arCartPrice['ADD_URL'],
"PRODUCT_PROVIDER_CLASS"=>false,
"PRODUCT_XML_ID" => $arCartPrice['CPID'], //Для интеграции с 1С
"CATALOG_XML_ID" => $arCartPrice['CPID'], //Для интеграции с 1С
//"DISCOUNT_PRICE" => //величина скидки;
//"DISCOUNT_NAME" => //название скидки;
//"DISCOUNT_VALUE" => //размер скидки (в процентах);
//"DISCOUNT_COUPON" => //купон скидки;
"PROPS" => Array(
Array("NAME"=>"Артикул", "CODE"=>"ARTICLE", "VALUE"=>$arCartPrice['ARTICLE'], "SORT"=>1),
Array("NAME"=>"Производитель", "CODE"=>"BRAND", "VALUE"=>$arCartPrice['BRAND'], "SORT"=>2),
Array("NAME"=>"Срок поставки", "CODE"=>"DAY", "VALUE"=>$arCartPrice['DAY'], "SORT"=>3),
Array("NAME"=>"Наличие", "CODE"=>"AVAILABLE", "VALUE"=>$arCartPrice['AVAILABLE'], "SORT"=>4),
Array("NAME"=>"Поставщик", "CODE"=>"SUPPLIER*", "VALUE"=>$arCartPrice['SUPPLIER_STOCK'], "SORT"=>5), //Помечайте поле "CODE" звездочкой * что бы свойство не было видно покупателю в корзине..
Array("NAME"=>"Код прайса", "CODE"=>"CODE*", "VALUE"=>$arCartPrice['CODE'], "SORT"=>6),
Array("NAME"=>"Исходная цена", "CODE"=>"PRICE*", "VALUE"=>$arCartPrice['PRICE'].' '.$arCartPrice['CURRENCY'],"SORT"=>7),
Array("NAME"=>"Дата прайса", "CODE"=>"DATE_FORMATED*", "VALUE"=>$arCartPrice['DATE_FORMATED'], "SORT"=>8),
Array("NAME"=>"Ссылка на фото", "CODE"=>"IMG_SRC*", "VALUE"=>$arCartPrice['IMG_SRC'], "SORT"=>9),
//Array("NAME"=>"Статус доставки","CODE"=>"DELIVERY", "VALUE"=>"В обработке", "SORT"=>10)
)
);
if($arCartPrice['OPTIONS']['WEIGHT']>0){
$arFields['WEIGHT']=$arCartPrice['OPTIONS']['WEIGHT'];
}
if($arCartPrice['DISCOUNT']>0 AND isset($arCartPrice['DISCOUNT_PRICE'])){
$arFields['DISCOUNT_NAME']=$arCartPrice['TYPE_NAME'];
$arFields['DISCOUNT_VALUE']=$arCartPrice['DISCOUNT'];
$arFields['DISCOUNT_PRICE']=$arCartPrice['DISCOUNT_PRICE'];
}
if(is_array($arCartPrice['OPTIONS']) AND count($arCartPrice['OPTIONS'])>0){
foreach($arCartPrice['OPTIONS'] as $OpCode=>$OpValue){
$OpName = $arCartPrice['OPTIONS_NAMES'][$OpCode];
if($OpName==''){$OpName=$OpCode;}
$arFields["PROPS"][] = Array("NAME"=>$OpName,"CODE"=>$OpCode.'*',"VALUE"=>$OpValue);
}
}
CSaleBasket::Add($arFields);
//if($ex = $APPLICATION->GetException()){echo $ex->GetString();}
}
}
Товар в корзину добавляется успешно и оформляется заказ. Практически никаких отличий от товара, который в базе битрикса. НО. Бонусы не начисляются на товар, который добавляется из этого модуля...
В какую сторону копать товарищи?.. Или может как-то модуль по другому подключить?..
Спасибо заранее!
Фильтров никаких не стоит в модуле бонусов. По умолчанию начисляет на все товары.
Добрый день. Я бы на вашем месте посмотрел на код модуля, как именно в нем происходит начисление бонусов. Скорее всего событиями. Сталкивался с подобной ситуацией, она была связана с тем, что event был навешен на новое событие (d7), поэтому пришлось добавление товара переделать на новый код