Example #1
0
 /**
  * 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;
 }
Example #2
0
 /**
  * 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;
 }
 /**
  * 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;
 }
Example #4
0
 /**
  * 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.
         }
     }
 }
 /**
  * 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);
     }
 }
Example #6
0
 /**
  * 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;
 }
 /**
  * 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;
 }
Example #8
0
 /**
  * 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);
     }
 }
 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;
 }