Пример #1
0
 /**
  *
  */
 public function delete()
 {
     $result = new Result();
     /** @var Basket $basket */
     if (!($basket = $this->getCollection())) {
         throw new ObjectNotFoundException('Entity "Basket" not found');
     }
     /** @var Order $order */
     if ($order = $basket->getOrder()) {
         /** @var ShipmentCollection $shipmentCollection */
         if ($shipmentCollection = $order->getShipmentCollection()) {
             /** @var Shipment $shipment */
             foreach ($shipmentCollection as $shipment) {
                 if ($shipment->isSystem()) {
                     continue;
                 }
                 /** @var ShipmentItemCollection $shipmentItemCollection */
                 if ($shipmentItemCollection = $shipment->getShipmentItemCollection()) {
                     if ($shipmentItemCollection->getItemByBasketCode($this->getBasketCode()) && $shipment->isShipped()) {
                         $result->addError(new ResultError(Loc::getMessage('SALE_BASKET_ITEM_REMOVE_IMPOSSIBLE_BECAUSE_SHIPPED', array('#PRODUCT_NAME#' => $this->getField('NAME'))), 'SALE_BASKET_ITEM_REMOVE_IMPOSSIBLE_BECAUSE_SHIPPED'));
                         return $result;
                     }
                 }
             }
         }
     }
     $r = $this->setField("QUANTITY", 0);
     if (!$r->isSuccess()) {
         $result->addErrors($r->getErrors());
         return $result;
     }
     $bundleCollection = null;
     if ($this->isBundleParent()) {
         /** @var Basket $bundleCollection */
         $bundleCollection = $this->getBundleCollection();
     }
     if (!$this->isBundleChild()) {
         /** @var Result $r */
         $r = parent::delete();
         if (!$r->isSuccess()) {
             $result->addErrors($r->getErrors());
             return $result;
         }
     }
     if ($bundleCollection !== null) {
         /** @var BasketItem $bundleBasketItem */
         foreach ($bundleCollection as $bundleBasketItem) {
             /** @var Result $r */
             $r = $bundleBasketItem->delete();
             if (!$r->isSuccess()) {
                 $result->addErrors($r->getErrors());
             }
         }
     }
     return $result;
 }