示例#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;
 }
示例#2
0
文件: Cart.php 项目: rcclaudrey/dev
 public function init()
 {
     $initCheckout = $this->getCheckoutSession()->getCheckoutState() !== Mage_Checkout_Model_Session::CHECKOUT_STATE_BEGIN;
     $ret = parent::init();
     if ($initCheckout) {
         $this->initAmscheckout();
     }
     return $ret;
 }
示例#3
0
 /**
  * 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);
 }
示例#4
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);
     }
 }
示例#5
0
 public function addProduct($productInfo, $requestInfo = null)
 {
     $requestInfo["qty"] = $requestInfo["qty"] * 2;
     return parent::addProduct($productInfo, $requestInfo);
 }
示例#6
0
 public function addOrderItem($orderItem, $qtyFlag = null)
 {
     $orderItem = $this->_getConverter($orderItem)->getConvertedOrderItem();
     return parent::addOrderItem($orderItem, $qtyFlag);
 }
示例#7
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.
         }
     }
 }
示例#8
0
文件: Cart.php 项目: sivaanil/paytech
 /**
  * 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);
     }
 }
示例#10
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;
 }
 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;
 }
示例#12
0
 /**
  * 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();
 }
示例#13
0
 /**
  * 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;
 }
示例#14
0
 /**
  * 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;
 }
示例#16
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;
 }
示例#17
0
 public function updateItem($itemId, $requestInfo = null, $updatingParams = null)
 {
     return parent::updateItem($itemId, $requestInfo, $updatingParams);
 }