• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/shipmentitemcollection.php
  • Класс: BitrixSaleShipmentItemCollection
  • Вызов: ShipmentItemCollection::resetCollection
public function resetCollection(Basket $basket)
{
	if ($this->getShipment()->isShipped())
	{
		throw new MainNotSupportedException();
	}

	if (!empty($this->collection))
	{
		/** @var ShipmentItem $shipmentItem */
		foreach ($this->collection as $shipmentItem)
		{
			$shipmentItem->setFieldNoDemand('QUANTITY', 0);
			$shipmentItem->delete();
		}
	}

	$quantityList = [];

	/** @var ShipmentCollection $shipmentCollection */
	$shipmentCollection = $this->getShipment()->getCollection();

	/** @var BasketItem $basketItem */
	foreach ($basket as $basketItem)
	{
		$quantityList[$basketItem->getBasketCode()] = $shipmentCollection->getBasketItemDistributedQuantity($basketItem);
	}

	/** @var ShipmentItem $itemClassName */
	$itemClassName = static::getItemCollectionClassName();

	/** @var BasketItem $basketItem */
	foreach ($basket as $basketItem)
	{
		$shipmentItem = $itemClassName::create($this, $basketItem);
		$this->addItem($shipmentItem);

		$basketItemQuantity = 0;

		if (array_key_exists($basketItem->getBasketCode(), $quantityList))
		{
			$basketItemQuantity = $quantityList[$basketItem->getBasketCode()];
		}

		$quantity = $basketItem->getQuantity() - $basketItemQuantity;

		$shipmentItem->setFieldNoDemand("QUANTITY", $quantity);

		if ($basketItem->isBundleParent())
		{
			$this->addBundleToCollection($basketItem);
		}
	}
}