Ejemplo n.º 1
0
 /**
  * @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();
 }