• Модуль: 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;
}