- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/helpers/admin/product.php
- Класс: BitrixSaleHelpersAdminProduct
- Вызов: Product::fillSetInfo
private function fillSetInfo($setIds)
{
if(!$this->provider)
return;
if(!method_exists($this->provider, 'GetSetItems'))
return;
$provider = $this->provider;
$childrenParent = array();
$itemsIds = array();
$items = array();
if ($this->tmpId == "")
$this->tmpId = randString(7);
foreach($setIds as $id)
{
if ($this->catalogData[$id]["TYPE"] != CCatalogProduct::TYPE_SET)
continue;
$arSets = $provider::GetSetItems($id, CSaleBasket::TYPE_SET);
if (empty($arSets))
continue;
foreach ($arSets as $arSetData)
{
foreach ($arSetData["ITEMS"] as $setItem)
{
$arSetItemParams = array();
$arSetItemParams["PARENT_OFFER_ID"] = $id;
$arSetItemParams["OFFER_ID"] = $setItem["PRODUCT_ID"];
$arSetItemParams["NAME"] = $setItem["NAME"];
$arSetItemParams["MODULE"] = $setItem["MODULE"];
$arSetItemParams["PRODUCT_PROVIDER_CLASS"] = $setItem["PRODUCT_PROVIDER_CLASS"];
$arSetItemParams["BARCODE_MULTI"] = $setItem["BARCODE_MULTI"];
$arSetItemParams["PRODUCT_TYPE"] = $setItem["TYPE"];
$arSetItemParams["WEIGHT"] = $setItem["WEIGHT"];
$arSetItemParams["SET_ITEMS"] = "";
$arSetItemParams["OLD_PARENT_ID"] = $id."_tmp".$this->tmpId;
$arSetItemParams["IS_SET_ITEM"] = "Y";
$arSetItemParams["IS_SET_PARENT"] = "N";
$arSetItemParams["PROVIDER_DATA"] = serialize($setItem);
$items[$id][$setItem["PRODUCT_ID"]] = $arSetItemParams;
if(!in_array($setItem["PRODUCT_ID"], $itemsIds))
$itemsIds[] = $setItem["PRODUCT_ID"];
if(!is_array($childrenParent[$setItem["PRODUCT_ID"]]))
$childrenParent[$setItem["PRODUCT_ID"]] = array();
$childrenParent[$setItem["PRODUCT_ID"]][] = $id;
}
}
$tmpData = self::getData($itemsIds, $this->siteId, $this->columnsList, $this->tmpId);
foreach($childrenParent as $childId => $childData)
{
if(!is_array($childData))
continue;
if(empty($tmpData[$childId]))
continue;
foreach($childData as $productId)
{
if(empty($items[$productId][$childId]))
continue;
foreach($this->resultData[$productId]['SET_ITEMS'] as $set)
if($set['OFFER_ID'] == $childId)
continue(2);
$this->resultData[$productId]['SET_ITEMS'][] = array_merge($tmpData[$childId], $items[$productId][$childId]);
$this->resultData[$productId]["IS_SET_PARENT"] = empty($this->resultData[$productId]["SET_ITEMS"]) ? 'N' : 'Y';
$this->resultData[$productId]["OLD_PARENT_ID"] = empty($this->resultData[$productId]["SET_ITEMS"]) ? '' : $productId."_tmp".$this->tmpId;
$this->resultData[$productId]["PRODUCT_TYPE"] = empty($this->resultData[$productId]["SET_ITEMS"]) ? "" : CSaleBasket::TYPE_SET;
}
}
}
}