protected function prepareCart() { $this->cart = $this->view->cart = Tool::prepareCart(); if ($this->session->user instanceof CoreShopUser && !$this->cart->getUser() instanceof CoreShopUser) { $this->cart->setUser($this->session->user); $this->cart->save(); } PriceRule::autoRemoveFromCart($this->cart); PriceRule::autoAddToCart($this->cart); }
/** * Changes the quantity of a Product in the Cart * * @param CoreShopProduct $product * @param int $amount * @param bool|true $autoAddCartRule * @return bool|CoreShopCartItem * @throws \Exception */ public function updateQuantity(CoreShopProduct $product, $amount = 0, $autoAddCartRule = true) { if (!$product instanceof CoreShopProduct) { throw new \Exception("\$product must be instance of CoreShopProduct"); } $item = $this->findItemForProduct($product); if ($item instanceof CoreShopCartItem) { if ($amount <= 0) { $this->removeItem($item); return false; } else { $item->setAmount($amount); $item->save(); } } else { $items = $this->getItems(); if (!is_array($items)) { $items = array(); } $item = new CoreShopCartItem(); $item->setKey(uniqid()); $item->setParent($this); $item->setAmount($amount); $item->setProduct($product); $item->setPublished(true); $item->save(); $items[] = $item; $this->setItems($items); $this->save(true); } if ($autoAddCartRule) { PriceRule::autoAddToCart(); } return $item; }