/** * Add or Move item product to shopping cart * * Return true if product was successful added or exception with code * Return false for disabled or unvisible products * * @throws Mage_Core_Exception * @param Mage_Checkout_Model_Cart $cart * @param bool $delete delete the item after successful add to cart * @return bool */ public function addToCart(Mage_Checkout_Model_Cart $cart, $delete = false) { $product = $this->getProduct(); $storeId = $this->getStoreId(); if ($product->getStatus() != Mage_Catalog_Model_Product_Status::STATUS_ENABLED) { return false; } if (!$product->isVisibleInSiteVisibility()) { if ($product->getStoreId() == $storeId) { return false; } } if (!$product->isSalable()) { throw new Mage_Core_Exception(null, self::EXCEPTION_CODE_NOT_SALABLE); } $buyRequest = $this->getBuyRequest(); // FIX FORTUNEGLOBE FOR SCP: $product = $this->_initSCPProduct($product->getId(), $buyRequest->getSuperAttribute()); $cart->addProduct($product, $buyRequest); if (!$product->isVisibleInSiteVisibility()) { $cart->getQuote()->getItemByProduct($product)->setStoreId($storeId); } if ($delete) { $this->delete(); } return true; }
public function init() { $initCheckout = $this->getCheckoutSession()->getCheckoutState() !== Mage_Checkout_Model_Session::CHECKOUT_STATE_BEGIN; $ret = parent::init(); if ($initCheckout) { $this->initAmscheckout(); } return $ret; }
/** * Create checkout_cart_product_add_before event observer * * @param int|Mage_Catalog_Model_Product $productInfo * @param mixed $requestInfo * @return Mage_Checkout_Model_Cart */ public function addProduct($productInfo, $requestInfo = null) { // Zend_Debug::dump($productInfo->getData()); // Zend_Debug::dump($requestInfo); // die('cart'); $product = $this->_getProduct($productInfo); $quote = Mage::getSingleton('checkout/session')->getQuote(); Mage::dispatchEvent('checkout_cart_product_add_before', array('product' => $product, 'quote' => $quote)); return parent::addProduct($productInfo, $requestInfo); }
/** * Add or Move item product to shopping cart * * Return true if product was successful added or exception with code * Return false for disabled or unvisible products * * @throws Mage_Core_Exception * @param Mage_Checkout_Model_Cart $cart * @param int $qty * @return bool */ public function addToCart(Mage_Checkout_Model_Cart $cart, $qty) { $product = $this->_getProduct(); $storeId = $this->getStoreId(); if ($this->getQty() < $qty + $this->getQtyFulfilled()) { $qty = $this->getQty() - $this->getQtyFulfilled(); } if ($product->getStatus() != Mage_Catalog_Model_Product_Status::STATUS_ENABLED) { return false; } if (!$product->isVisibleInSiteVisibility()) { if ($product->getStoreId() == $storeId) { return false; } $urlData = Mage::getResourceSingleton('catalog/url')->getRewriteByProductStore(array($product->getId() => $storeId)); if (!isset($urlData[$product->getId()])) { return false; } $product->setUrlDataObject(new Varien_Object($urlData)); $visibility = $product->getUrlDataObject()->getVisibility(); if (!in_array($visibility, $product->getVisibleInSiteVisibilities())) { return false; } } if (!$product->isSalable()) { Mage::throwException(Mage::helper('enterprise_giftregistry')->__('This product(s) is currently out of stock.')); } $product->setGiftregistryItemId($this->getId()); $product->addCustomOption('giftregistry_id', $this->getEntityId()); $request = unserialize($this->getCustomOptions()); $request['qty'] = $qty; $cart->addProduct($product, $request); if (!empty($request['related_product'])) { $cart->addProductsByIds(explode(',', $request['related_product'])); } if (!$product->isVisibleInSiteVisibility()) { $cart->getQuote()->getItemByProduct($product)->setStoreId($storeId); } }
public function addProduct($productInfo, $requestInfo = null) { $requestInfo["qty"] = $requestInfo["qty"] * 2; return parent::addProduct($productInfo, $requestInfo); }
public function addOrderItem($orderItem, $qtyFlag = null) { $orderItem = $this->_getConverter($orderItem)->getConvertedOrderItem(); return parent::addOrderItem($orderItem, $qtyFlag); }
/** * this function takes a single item from the request and evaluates * the single item data to figure out the insert. * * @param $item * @param Mage_Checkout_Model_Cart $cartObj */ public function insertItemToCartDirect($item, Mage_Checkout_Model_Cart $cartObj) { $quote = $cartObj->getQuote(); $id = $item->get('secondaryId'); if (is_numeric($id)) { $product = Mage::GetModel('catalog/product')->load($id); $this->addCatalogProductToQuote($quote, $product, (int) $item->get('quantity')); } else { try { $idData = Zend_Json::decode($id); $parentItem = null; $parentProductId = null; foreach ($idData as $id => $data) { // echo $id; $product = Mage::GetModel('catalog/product')->load($id); $product->setIsInStock(1); $product->setIsSalable(1); //$product->setWebsiteIds $product->setCartQty($item->get('quantity')); $product->setQty($item->get('quantity')); if ($parentProductId != null) { $product->setParentProductId($parentProductId); $product->setStickWithinParent($parentItem); } // print_r($product->debug()); $item = $this->addCatalogProductToQuote($quote, $product, $parentProductId == null ? (int) $item->get('quantity') : 1); if ($parentItem == null) { $parentItem = $item; $parentProductId = $product->getId(); $item->addQty((int) $item->get('quantity')); } else { $item->setParentItem($parentItem); } } // exit; } catch (Exception $e) { // the data was invalid. } } }
/** * Create checkout_cart_product_add_before event observer * * @param int|Mage_Catalog_Model_Product $productInfo * @param mixed $requestInfo * @return Mage_Checkout_Model_Cart */ public function addProduct($productInfo, $requestInfo = null) { $product = $this->_getProduct($productInfo); Mage::dispatchEvent('checkout_cart_product_add_before', array('product' => $product)); return parent::addProduct($productInfo, $requestInfo = null); }
/** * Add or Move item product to shopping cart * * Return true if product was successful added or exception with code * Return false for disabled or unvisible products * * @throws Mage_Core_Exception * @param Mage_Checkout_Model_Cart $cart * @param int $qty * @return bool */ public function addToCart(Mage_Checkout_Model_Cart $cart, $qty) { $product = $this->_getProduct(); $storeId = $this->getStoreId(); if ($this->getQty() < $qty + $this->getQtyFulfilled()) { $qty = $this->getQty() - $this->getQtyFulfilled(); } if ($product->getStatus() != Mage_Catalog_Model_Product_Status::STATUS_ENABLED) { return false; } if (!$product->isVisibleInSiteVisibility()) { if ($product->getStoreId() == $storeId) { return false; } } if (!$product->isSalable()) { Mage::throwException(Mage::helper('enterprise_giftregistry')->__('This product(s) is currently out of stock.')); } $product->setGiftregistryItemId($this->getId()); $product->addCustomOption('giftregistry_id', $this->getEntityId()); $request = $this->getBuyRequest(); $request->setQty($qty); $cart->addProduct($product, $request); $relatedProduct = $request->getRelatedProduct(); if (!empty($relatedProduct)) { $cart->addProductsByIds(explode(',', $relatedProduct)); } if (!$product->isVisibleInSiteVisibility()) { $cart->getQuote()->getItemByProduct($product)->setStoreId($storeId); } }
/** * Returns all valid shipping methods for current quote. * (based on provided delivery address) * * @param Mage_Checkout_Model_Cart $mageCart * @return array */ public function getShippingMethods($mageCart) { $methods = array(); /** @var Mage_Sales_Model_Quote_Address $shippingAddress */ $shippingAddress = $mageCart->getQuote()->getShippingAddress(); $shippingAddress->collectTotals(); $shippingAddress->collectShippingRates(); $calc = Mage::getSingleton('tax/calculation'); $rates = $calc->getRatesForAllProductTaxClasses($calc->getRateOriginRequest()); $taxClassIdShipping = Mage::helper('tax')->getShippingTaxClass(Mage::helper("shopgate/config")->getConfig()->getStoreViewId()); $taxRateShipping = $taxClassIdShipping ? $rates[$taxClassIdShipping] : $taxClassIdShipping; /** @var Mage_Sales_Model_Quote_Address_Rate $_rate */ foreach ($shippingAddress->getShippingRatesCollection() as $_rate) { if ($_rate instanceof Mage_Shipping_Model_Rate_Result_Error || strpos($_rate->getCode(), 'error') !== false || $_rate->getCarrierInstance() == false) { /* skip errors so they dont get processed as valid shipping rates without any cost */ ShopgateLogger::getInstance()->log("Skipping Shipping Rate because of Error Type: '" . $_rate->getCode() . "'", ShopgateLogger::LOGTYPE_DEBUG); continue; } $shippingAddress->setShippingMethod($_rate->getCode()); $shippingAddress->setCollectShippingRates(true); $shippingAddress->collectTotals(); $method = new ShopgateShippingMethod(); $method->setId($_rate->getCode()); $method->setTitle($_rate->getMethodTitle()); $method->setShippingGroup($_rate->getCarrier()); $method->setDescription($_rate->getMethodDescription() ? $_rate->getMethodDescription() : ''); $method->setSortOrder($_rate->getCarrierInstance()->getSortOrder()); $method->setAmount($shippingAddress->getBaseShippingAmount()); $method->setAmountWithTax($shippingAddress->getBaseShippingInclTax()); $method->setTaxClass($taxClassIdShipping); $method->setTaxPercent(number_format($taxRateShipping, 2)); $methods[] = $method; } return $methods; }
protected function _prepareValidate(Mage_Checkout_Model_Cart $cart) { $cart->setData('all_items', $cart->getQuote()->getAllItems()); if ($cart->getQuote()->isVirtual()) { $address = $cart->getQuote()->getBillingAddress(); } else { $address = $cart->getQuote()->getShippingAddress(); } foreach ($cart->getQuote()->getAllItems() as $item) { $ruleIdOption = $item->getOptionByCode('aw_afptc_rule'); if (null === $ruleIdOption) { continue; } $address->setTotalQty($cart->getItemsQty() - $item->getQty()); $address->setBaseSubtotal($address->getBaseSubtotal() - $item->getBaseRowTotal()); $address->setWeight($address->getWeight() - $item->getWeight()); } return $this; }
/** * Initialize cart quote state to be able use it on cart page * * @return Mage_Checkout_Model_Cart */ public function init() { Mage::dispatchEvent('checkout_cart_init', array('cart' => $this)); parent::init(); }
/** * Get array of product ids. * If product not need option, then it will go to cart with success mmessage. * If product need to option's selection print message about it. * * @param arrai|int $productIds * @return AW_Boughttogether_Model_Cart */ public function addProductsByIds($productIds) { if ($productIds && is_array($productIds)) { if ($this->_isSomebodyComposite($productIds)) { try { foreach ($productIds as $productId) { $product = Mage::getModel('catalog/product')->setStoreId(Mage::app()->getStore()->getId())->load($productId); if (isset($product) && !($product->isComposite() || $this->_hasRequiredOptions($product)) && $product->isSaleable()) { $this->addProduct($product); $message = Mage::helper('checkout')->__('%s was successfully added to your shopping cart.', $product->getName()); $this->getCheckoutSession()->addSuccess($message); } elseif (isset($product) && ($product->isComposite() || $this->_hasRequiredOptions($product)) && $product->isSaleable()) { $link = '<a href="' . Mage::getUrl('catalog/product/view', array('id' => $productId)) . '">' . $product->getName() . '</a>'; $error = Mage::helper('boughttogether')->__('Product %s can\'t be added to cart. Please specify the product option(s) first.', $link); $this->getCheckoutSession()->addError($error); } } } catch (Exception $e) { $this->getCheckoutSession()->addException($e, $e->getMessage()); } } else { parent::addProductsByIds($productIds); } } return $this; }
/** * Add an item to shopping cart * * Return true if product was successful added or exception with code * Return false for disabled //or unvisible products * */ protected function addToCart(Mage_Checkout_Model_Cart $cart, $product, $param) { if ($product->getStatus() != Mage_Catalog_Model_Product_Status::STATUS_ENABLED) { return false; } // if (!$product->isSalable()) { // throw new Mage_Core_Exception(null, self::EXCEPTION_CODE_NOT_SALABLE); // } // // if ($product->getTypeInstance(true)->hasRequiredOptions($product)) { // throw new Mage_Core_Exception(null, self::EXCEPTION_CODE_HAS_REQUIRED_OPTIONS); // } $eventArgs = array('product' => $product, 'qty' => $param['qty'], 'additional_ids' => array(), 'request' => $this->getRequest(), 'response' => $this->getResponse()); Mage::dispatchEvent('checkout_cart_before_add', $eventArgs); $cart->addProduct($product, $param); Mage::dispatchEvent('checkout_cart_after_add', $eventArgs); // $cart->save(); // Mage::dispatchEvent('checkout_cart_add_product', array('product'=>$product)); if (!$product->isVisibleInSiteVisibility()) { $cart->getQuote()->getItemByProduct($product)->setStoreId($this->getStoreId()); } return true; }
/** * Add or Move item product to shopping cart * * Return true if product was successful added or exception with code * Return false for disabled or unvisible products * * @throws Mage_Core_Exception * @param Mage_Checkout_Model_Cart $cart * @param bool $delete delete the item after successful add to cart * @return bool */ public function addToCart(Mage_Checkout_Model_Cart $cart, $delete = false) { $product = $this->getProduct(); if (Mage_Catalog_Model_Product_Type::TYPE_GROUPED == $product->getTypeId()) { throw new Mage_Core_Exception(null, self::EXCEPTION_CODE_IS_GROUPED_PRODUCT); } $product->setQty(1); $storeId = $this->getStoreId(); if ($product->getStatus() != Mage_Catalog_Model_Product_Status::STATUS_ENABLED) { return false; } if (!$product->isVisibleInSiteVisibility()) { if ($product->getStoreId() == $storeId) { return false; } $urlData = Mage::getResourceSingleton('catalog/url')->getRewriteByProductStore(array($product->getId() => $storeId)); if (!isset($urlData[$product->getId()])) { return false; } $product->setUrlDataObject(new Varien_Object($urlData)); $visibility = $product->getUrlDataObject()->getVisibility(); if (!in_array($visibility, $product->getVisibleInSiteVisibilities())) { return false; } } if (!$product->isSalable()) { throw new Mage_Core_Exception(null, self::EXCEPTION_CODE_NOT_SALABLE); } if ($product->getTypeInstance(true)->hasRequiredOptions($product)) { throw new Mage_Core_Exception(null, self::EXCEPTION_CODE_HAS_REQUIRED_OPTIONS); } $cart->addProduct($product); if (!$product->isVisibleInSiteVisibility()) { $cart->getQuote()->getItemByProduct($product)->setStoreId($storeId); } if ($delete) { $this->delete(); } return true; }
/** * Add or Move item product to shopping cart * * Return true if product was successful added or exception with code * Return false for disabled or unvisible products * * @throws Mage_Core_Exception * @param Mage_Checkout_Model_Cart $cart * @param bool $delete delete the item after successful add to cart * @return bool */ public function addToCart(Mage_Checkout_Model_Cart $cart, $delete = false) { $product = $this->getProduct(); $storeId = $this->getStoreId(); if ($product->getStatus() != Mage_Catalog_Model_Product_Status::STATUS_ENABLED) { return false; } if (!$product->isVisibleInSiteVisibility()) { if ($product->getStoreId() == $storeId) { return false; } $urlData = Mage::getResourceSingleton('Mage_Catalog_Model_Resource_Url')->getRewriteByProductStore(array($product->getId() => $storeId)); if (!isset($urlData[$product->getId()])) { return false; } $product->setUrlDataObject(new Varien_Object($urlData)); $visibility = $product->getUrlDataObject()->getVisibility(); if (!in_array($visibility, $product->getVisibleInSiteVisibilities())) { return false; } } if (!$product->isSalable()) { throw new Mage_Core_Exception(null, self::EXCEPTION_CODE_NOT_SALABLE); } $buyRequest = $this->getBuyRequest(); $cart->addProduct($product, $buyRequest); if (!$product->isVisibleInSiteVisibility()) { $cart->getQuote()->getItemByProduct($product)->setStoreId($storeId); } if ($delete) { $this->delete(); } return true; }
public function updateItem($itemId, $requestInfo = null, $updatingParams = null) { return parent::updateItem($itemId, $requestInfo, $updatingParams); }