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