- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/providerbase.php
- Класс: BitrixSaleProviderBase
- Вызов: ProviderBase::getProductStores
static function getProductStores(BasketItem $basketItem)
{
$result = new Result();
$basketItemProviderMap = static::createProviderBasketItemMap($basketItem, array('SITE_ID'));
if (!empty($basketItemProviderMap))
{
$provider = $basketItemProviderMap['PROVIDER'];
if (array_key_exists("IBXSaleProductProvider", class_implements($provider)))
{
$productId = $basketItemProviderMap["PRODUCT_ID"];
$data = array(
"PRODUCT_ID" => $productId,
"SITE_ID" => $basketItemProviderMap["SITE_ID"],
'BASKET_ID' => $basketItemProviderMap['BASKET_ID']
);
$r = static::getStores($provider, $data);
if ($r->isSuccess())
{
$resultProductData = $r->getData();
if (array_key_exists($productId, $resultProductData))
{
$result->setData($resultProductData);
}
}
}
elseif (class_exists($provider))
{
/** @var Basket $basket */
$basket = $basketItem->getCollection();
if (!$basket)
{
throw new ObjectNotFoundException('Entity "Basket" not found');
}
/** @var Order $order */
$order = $basket->getOrder();
if (!$order)
{
throw new ObjectNotFoundException('Entity "Order" not found');
}
$context = array(
'SITE_ID' => $order->getSiteId(),
'CURRENCY' => $order->getCurrency(),
);
if ($order->getUserId() > 0)
{
$context['USER_ID'] = $order->getUserId();
}
else
{
global $USER;
$context['USER_ID'] = $USER->getId();
}
/** @var SaleProviderBase $providerClass */
$providerClass = new $provider($context);
if ($providerClass && $providerClass instanceof SaleProviderBase)
{
$creator = InternalsProviderCreator::create($context);
$creator->addBasketItem($basketItem);
$r = $creator->getProductStores();
if ($r->isSuccess())
{
$result->setData($r->getData());
}
else
{
$result->addErrors($r->getErrors());
}
}
}
}
return $result;
}