/** * @param Shipment $shipment * @return Result * @throws \Bitrix\Main\ArgumentOutOfRangeException */ private function setShipmentItemReserved(Shipment $shipment) { $needShip = $shipment->needShip(); if ($needShip === null || $shipment->isSystem() || $needShip === false && !$shipment->isReserved()) { return new Result(); } /** @var ShipmentItemCollection $shipmentItemCollection */ $shipmentItemCollection = $shipment->getShipmentItemCollection(); /** @var ShipmentItem $shipmentItem */ foreach ($shipmentItemCollection as $shipmentItem) { $setReservedQuantity = 0; if ($needShip === false) { /** @var BasketItem $basketItem */ $basketItem = $shipmentItem->getBasketItem(); if ($basketItem->isBundleParent() || !Configuration::isEnabledReservation()) { continue; } $setReservedQuantity = $shipmentItem->getQuantity(); } $shipmentItem->setFieldNoDemand('RESERVED_QUANTITY', $setReservedQuantity); if ($needShip === false) { $shipment->updateReservedFlag(); } } return new Result(); }