• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/shipmentcollection.php
  • Класс: BitrixSaleShipmentCollection
  • Вызов: ShipmentCollection::resetCollection
public function resetCollection()
{
	$result = new Result();

	$deliveryInfo = array();

	if (count($this->collection) > 0)
	{
		/** @var Shipment $shipment */
		foreach ($this->collection as $shipment)
		{
			if (empty($deliveryInfo))
			{
				if ($shipment->isSystem() && $shipment->getDeliveryId() > 0)
				{
					foreach (static::getClonedFields() as $field)
					{
						if (strval(trim($shipment->getField($field))) != '')
							$deliveryInfo[$field] = trim($shipment->getField($field));
					}
				}
			}
			$shipment->delete();
		}
	}

	$systemShipment = $this->getSystemShipment();

	/** @var ShipmentItemCollection $systemShipmentItemCollection */
	$systemShipmentItemCollection = $systemShipment->getShipmentItemCollection();

	/** @var Basket $basket */
	$basket = $this->getOrder()->getBasket();
	$systemShipmentItemCollection->resetCollection($basket);

	if (!empty($deliveryInfo))
	{
		$systemShipment->setFieldsNoDemand($deliveryInfo);
	}

	if (
		Configuration::isEnableAutomaticReservation()
		&& Configuration::getProductReservationCondition() == ReserveCondition::ON_CREATE
	)
	{
		$r = $this->tryReserve();
		if (!$r->isSuccess())
		{
			$result->addErrors($r->getErrors());
		}
	}

	return $result;
}