/** * */ 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; }