• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/compatible/ordercompatibility.php
  • Класс: BitrixSaleCompatibleOrderCompatibility
  • Вызов: OrderCompatibility::shipment
static function shipment($id, $value, array $storeData = array() )
{
	global $USER;

	$result = new SaleResult();

	$registry = SaleRegistry::getInstance(static::getRegistryType());

	/** @var SaleOrder $orderClassName */
	$orderClassName = $registry->getOrderClassName();
	if ($order = $orderClassName::load($id))
	{
		/** @var SaleBasket $basket */
		if (!$basket = $order->getBasket())
		{
			throw new MainObjectNotFoundException('Entity "Basket" not found');
		}

		/** @var SaleShipmentCollection $shipmentCollection */
		if(!$shipmentCollection = $order->getShipmentCollection())
		{
			throw new MainObjectNotFoundException('Entity "ShipmentCollection" not found');
		}

		/** @var SaleShipment $shipment */
		foreach ($shipmentCollection as $shipment)
		{
			if ($shipment->isSystem())
				continue;

			/** @var SaleShipmentItemCollection $shipmentItemCollection */
			if (!$shipmentItemCollection = $shipment->getShipmentItemCollection())
			{
				throw new MainObjectNotFoundException('Entity "ShipmentItemCollection" not found');
			}

			/** @var SaleResult $r */
			$r = static::fillShipmentItemCollectionFromRequest($shipmentItemCollection, $storeData, $basket);
			if (!$r->isSuccess())
			{
				$result->addErrors($r->getErrors());
				return $result;
			}

			/** @var SaleResult $r */
			$r = $shipment->setField('DEDUCTED', $value === true ? 'Y' : 'N');
			if (!$r->isSuccess())
			{
				$result->addErrors($r->getErrors());
				continue;
			}
		}
	}


	/** @var SaleResult $r */
	$r = $order->save();
	if (!$r->isSuccess())
	{
		$result->addErrors($r->getErrors());
	}

	return $result;
}