protected function updateOfferItem(OnlineShop_Framework_ICartItem $cartItem, OnlineShop_OfferTool_AbstractOfferItem $offerItem) { $offerItem->setAmount($cartItem->getCount()); $offerItem->setProduct($cartItem->getProduct()); if ($offerItem->getProduct()) { $offerItem->setProductName($cartItem->getProduct()->getOSName()); $offerItem->setProductNumber($cartItem->getProduct()->getOSProductNumber()); } $offerItem->setComment($cartItem->getComment()); $price = 0; if ($cartItem->getTotalPrice()) { $price = $cartItem->getTotalPrice()->getAmount(); } $price = $this->priceTransformationHook($price); if ($price != $offerItem->getOriginalTotalPrice()) { $offerItem->setOriginalTotalPrice($price); $offerItem->setFinalTotalPrice($price); } //Delete all subitems and add them as new items $offerSubItems = $offerItem->getSubItems(); foreach ($offerSubItems as $i) { $i->delete(); } $subItems = $cartItem->getSubItems(); if (!empty($subItems)) { $offerSubItems = array(); foreach ($subItems as $subItem) { $offerSubItem = $this->createOfferItem($subItem, $offerItem); $offerSubItem->save(); $offerSubItems[] = $offerSubItem; } $offerItem->setSubItems($offerSubItems); } $offerItem->save(); return $offerItem; }