• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/providerbase.php
  • Класс: BitrixSaleProviderBase
  • Вызов: ProviderBase::increaseProductQuantity
static function increaseProductQuantity(ShipmentCollection $shipmentCollection, array $shipmentReserveList = array())
{
	/** @var Order $order */
	if (!$order = $shipmentCollection->getOrder())
	{
		throw new ObjectNotFoundException('Entity "Order" not found');
	}

	$options = array(
		'ORDER_DEDUCTED' => $order->isShipped()
	);

	$shipmentReserveListKeys = array_keys($shipmentReserveList);

	foreach ($shipmentCollection as $shipmentKey => $shipment)
	{
		if (!in_array($shipment->getId(), $shipmentReserveListKeys))
		{
			unset($shipmentCollection[$shipmentKey]);
		}
	}


	foreach ($shipmentCollection as $shipment)
	{
		$basketProviderList = static::getProviderBasketFromShipment($shipment);

		$productList = static::getProductListFromBasketProviderList($basketProviderList);

		if (!empty($basketProviderList))
		{
			foreach ($basketProviderList as $provider => $providerBasketItemList)
			{
				$shipmentReserveListData = array();
				if (!empty($shipmentReserveList)
					&& !empty($shipmentReserveList[$shipment->getId()]) && is_array($shipmentReserveList[$shipment->getId()]))
				{
					$shipmentReserveListData = $shipmentReserveList[$shipment->getId()];
				}

				$result = $provider::increaseProductQuantity($providerBasketItemList, $productList, $shipmentReserveListData, $options);
			}
		}

	}
}