- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/providerbase.php
- Класс: BitrixSaleProviderBase
- Вызов: ProviderBase::createProviderBasketItemMap
static function createProviderBasketItemMap(BasketItem $basketItem, array $select = array())
{
$basketProviderData = array(
'BASKET_ITEM' => $basketItem,
'BASKET_ID' => $basketItem->getId(),
'BASKET_CODE' => $basketItem->getBasketCode(),
'PRODUCT_ID' => $basketItem->getProductId(),
'MODULE' => $basketItem->getField('MODULE'),
);
$provider = $basketItem->getProvider();
$providerClass = $basketItem->getProviderEntity();
if ($provider)
{
if (array_key_exists("IBXSaleProductProvider", class_implements($provider))
|| $providerClass instanceof SaleProviderBase)
{
$basketProviderData['PROVIDER'] = $provider;
}
}
elseif (strval($basketItem->getField('CALLBACK_FUNC')) != '')
{
$basketProviderData['CALLBACK_FUNC'] = $basketItem->getField('CALLBACK_FUNC');
}
elseif (strval($basketItem->getField('PAY_CALLBACK_FUNC')) != '' && in_array('PAY_CALLBACK', $select))
{
$basketProviderData['CALLBACK_FUNC'] = $basketItem->getField('PAY_CALLBACK_FUNC');
}
if (in_array('QUANTITY', $select))
{
$basketProviderData['QUANTITY'] = $basketItem->getQuantity(); // ????
}
if (in_array('RENEWAL', $select))
{
$basketProviderData['RENEWAL'] = $basketItem->getField('RENEWAL')!== null && $basketItem->getField('RENEWAL') != 'N'? 'Y' : 'N';
}
if (in_array('RESERVED', $select))
{
$basketProviderData['RESERVED'] = $basketItem->getField('RESERVED');
}
if (in_array('SITE_ID', $select))
{
$basketProviderData['SITE_ID'] = $basketItem->getField('LID');
}
if (in_array('ORDER_ID', $select))
{
/** @var Basket $basket */
if (!$basket = $basketItem->getCollection())
{
throw new ObjectNotFoundException('Entity "Basket" not found');
}
if ($basket->getOrder() && $basket->getOrderId() > 0)
{
$basketProviderData['ORDER_ID'] = $basket->getOrderId();
}
}
if (in_array('USER_ID', $select))
{
/** @var Basket $basket */
if (!$basket = $basketItem->getCollection())
{
throw new ObjectNotFoundException('Entity "Basket" not found');
}
if ($order = $basket->getOrder())
{
$userId = $order->getUserId();
if ($userId === null)
{
$userId = SaleFuser::getUserIdById($basket->getFUserId());
}
if ($userId > 0)
{
$basketProviderData['USER_ID'] = $userId;
}
}
}
if (in_array('PAID', $select))
{
/** @var Basket $basket */
if (!$basket = $basketItem->getCollection())
{
throw new ObjectNotFoundException('Entity "Basket" not found');
}
if ($basket->getOrder() && $basket->getOrderId() > 0)
{
$order = $basket->getOrder();
$basketProviderData['PAID'] = $order->isPaid();
}
}
if (in_array('ALLOW_DELIVERY', $select))
{
/** @var Basket $basket */
if (!$basket = $basketItem->getCollection())
{
throw new ObjectNotFoundException('Entity "Basket" not found');
}
if ($basket->getOrder() && $basket->getOrderId() > 0)
{
/** @var Order $order */
$order = $basket->getOrder();
/** @var ShipmentCollection $shipmentCollection */
if ($shipmentCollection = $order->getShipmentCollection())
{
$basketProviderData['ALLOW_DELIVERY'] = $shipmentCollection->isAllowDelivery();
}
}
}
return $basketProviderData;
}