• Модуль: catalog
  • Путь к файлу: ~/bitrix/modules/catalog/lib/product/catalogprovider.php
  • Класс: BitrixCatalogProductCatalogProvider
  • Вызов: CatalogProvider::deliver
public function deliver(array $products)
	{
		$result = new SaleResult();

		$resultList = array();

		$productOrderList = static::createOrderListFromProducts($products);

		$deliverProductList = array();
		foreach ($products as $productId => $productData)
		{
			$userId = null;
			$orderPaid = null;
			$orderId = null;

			if (isset($productData['USER_ID']))
			{
				$userId = $productData['USER_ID'];
			}

			if (isset($productData['ORDER_ID']))
			{
				$orderId = $productData['ORDER_ID'];
			}

			if (isset($productData['PAID']))
			{
				$orderPaid = $productData['PAID'];
			}

			/**
			 * @var int $orderId
			 * @var SaleOrder $order
			 */

			if (isset($productOrderList[$productId]))
			{
				foreach ($productOrderList[$productId] as $orderId => $order)
				{
					if (!isset($resultList[$productId]))
					{
						$deliverProductList[] = array(
							'PRODUCT_ID' => $productId,
							'USER_ID' => $order->getUserId(),
							'PAID' => $order->isPaid(),
							'ORDER_ID' => $orderId,
						);
					}
				}
			}
			else
			{
				if (isset($productData['USER_ID']))
				{
					$userId = $productData['USER_ID'];
				}

				if (isset($productData['ORDER_ID']))
				{
					$orderId = $productData['ORDER_ID'];
				}

				if (isset($productData['PAID']))
				{
					$orderPaid = $productData['PAID'];
				}

				$deliverProductList[] = array(
					'PRODUCT_ID' => $productId,
					'USER_ID' => $userId,
					'PAID' => $orderPaid,
					'ORDER_ID' => $orderId,
				);
			}
		}

		if (!empty($deliverProductList))
		{
			foreach ($deliverProductList as $productData)
			{
				$productId = $productData['PRODUCT_ID'];
				$resultList[$productId] = CatalogPayOrderCallback(
					$productId,
					$productData['USER_ID'],
					$productData['PAID'],
					$productData['ORDER_ID']
				);
			}
		}

		if (!empty($resultList))
		{
			$result->setData(
				array(
					'DELIVER_PRODUCTS_LIST' => $resultList
				)
			);
		}

		return $result;
	}