Цитата |
---|
Евгений Жуков написал:
Цитата |
---|
Владимир Майборода написал: а для нескольких типов цен я так понимаю надо в цикле вызывать |
Не понял. |
Ну у меня в магазине используется 2 типа цен, Базовая цена (Тип цены "Розничная цена") (ID 1), и второй тип цен который выгружается с 1С и используется на сайте (ID 2).
Мне в принципе нужен только ID 2, но если я обновляю его то слетает первый и вообще перестает обновлять.
Код |
---|
function BXIBlockAfterSave($arFields) {
$arSetsByProduct = CCatalogProductSet::getAllSetsByProduct($arFields["ID"], CCatalogProductSet::TYPE_SET);
$arSetsByProduct = array_shift($arSetsByProduct);
if ($arSetsByProduct['TYPE'] == 1) {
// Код ценового предложения комплекта
$setPriceCode = CPrice::GetBasePrice($arSetsByProduct['ITEM_ID']);
//AddMessage2Log($setPriceCode);
// Получаем стоимость каждого товара из комплекта
foreach ($arSetsByProduct['ITEMS'] as $getItemPrice) {
$rsPrices = CPrice::GetList(array(), array('PRODUCT_ID' => $getItemPrice['ITEM_ID'], 'CATALOG_GROUP_ID' => '2'));
if ($arPrice = $rsPrices->Fetch()) {
$all_item_price[] = $arPrice['PRICE'] * $getItemPrice['QUANTITY'];
}
}
// Сумма комплекта
$setSumm = array_sum($all_item_price);
// Массив для обновления комплекта
$prodDetail = Array(
"PRODUCT_ID" => $arSetsByProduct["ITEM_ID"],
"CATALOG_GROUP_ID" => 2,
"PRICE" => $setSumm,
"CURRENCY" => 'RUB'
);
// Обновление цены
CPrice::Update($setPriceCode['ID'], $prodDetail);
}
}
|