public function prepareForCartAdvanced(Varien_Object $buyRequest, $product = null, $processMode = null)
 {
     if (!$product) {
         $product = $this->getProduct();
     }
     return parent::prepareForCartAdvanced($buyRequest, $product);
 }
Example #2
0
 public function prepareForCartAdvanced(Varien_Object $buyRequest, $product = null, $processMode = null)
 {
     $product = $this->getProduct($product);
     $data = $buyRequest->getData();
     $product->addCustomOption('src_option', $data['src_option']);
     return parent::prepareForCartAdvanced($buyRequest, $product, $processMode);
 }
Example #3
0
 public function prepareForCartAdvanced(Varien_Object $buyRequest, $product = null, $processMode = null)
 {
     if (!$product) {
         $product = $this->getProduct();
     }
     Mage::dispatchEvent('prepare_buy_request_cart_advanced', array('buy_request' => $buyRequest, 'product' => $product));
     $prepare = Mage::helper('payperrentals/rendercart')->prepareForCartAdvanced($buyRequest, $product, $processMode, 'simple');
     if ($prepare == 'call_parent') {
         return parent::prepareForCartAdvanced($buyRequest, $product, $processMode);
     } else {
         return $prepare;
     }
 }
 public function prepareForCartAdvanced(Varien_Object $buyRequest, $product = null, $processMode = null)
 {
     if (!$product->getAwSarpEnabled()) {
         return parent::prepareForCartAdvanced($buyRequest, $product, $processMode);
     }
     Mage::getModel('sarp/product_type_default')->checkPeriod($product, $buyRequest);
     $this->prepareForCart($buyRequest, $product, true);
     return parent::prepareForCartAdvanced($buyRequest, $product);
 }
 public function prepareForCartAdvanced(Varien_Object $buyRequest, $product = null, $processMode = null)
 {
     Mage::getModel('sarp/product_type_default')->checkPeriod($product, $buyRequest);
     $Period = Mage::getModel('sarp/period');
     /* We should add custom options that doesnt exist */
     if ($buyRequest->getAwSarpSubscriptionType()) {
         if ($Period->load($buyRequest->getAwSarpSubscriptionType())->getId()) {
             $product->addCustomOption('aw_sarp_subscription_type', $Period->getId());
         }
     }
     $options = $buyRequest->getOptions();
     if (isset($options['aw_sarp_subscription_start']) && is_array($options['aw_sarp_subscription_start'])) {
         $subscriptionStart = $options['aw_sarp_subscription_start'];
         $date = new Zend_Date();
         $date->setMinute(0)->setHour(0)->setSecond(0)->setDay($subscriptionStart['day'])->setMonth($subscriptionStart['month'])->setYear($subscriptionStart['year']);
         $buyRequest->setAwSarpSubscriptionStart($date->toString(Mage::app()->getLocale()->getDateFormat(Mage_Core_Model_Locale::FORMAT_TYPE_SHORT)));
     }
     if ($buyRequest->getAwSarpSubscriptionStart() && $Period->getId()) {
         $date = new Zend_Date($buyRequest->getAwSarpSubscriptionStart(), Mage::app()->getLocale()->getDateFormat(Mage_Core_Model_Locale::FORMAT_TYPE_SHORT));
         // Check date
         // Never check if start date
         //$performDateCompare = !!Mage::getSingleton('customer/session')->getCustomer()->getId();
         $performDateCompare = !AW_Sarp_Model_Cron::$isCronSession;
         $today = new Zend_Date();
         if (!$this->isVirtual($product)) {
             $today->addDayOfYear($Period->getPaymentOffset());
         }
         if ($performDateCompare && ($date->compare($today, Zend_Date::DATE_SHORT) < 0 || !$Period->isAllowedDate($date, $product))) {
             throw new Mage_Core_Exception(Mage::helper('sarp')->__("Selected date is not valid for specified period"));
         }
     } else {
         $date = Mage::app()->getLocale()->date();
     }
     $product->addCustomOption('aw_sarp_subscription_start', $date->toString('Y-MM-dd'));
     if ($attributes = $buyRequest->getSuperAttribute()) {
         $result = Mage_Catalog_Model_Product_Type_Abstract::prepareForCartAdvanced($buyRequest, $product);
         if (is_array($result)) {
             $product = $this->getProduct($product);
             /**
              * $attributes = array($attributeId=>$attributeValue)
              */
             if ($subProduct = $this->getProductByAttributes($attributes, $product)) {
                 $product->addCustomOption('attributes', serialize($attributes));
                 $product->addCustomOption('product_qty_' . $subProduct->getId(), 1, $subProduct);
                 $product->addCustomOption('simple_product', $subProduct->getId(), $subProduct);
                 $_result = $subProduct->getTypeInstance(true)->prepareForCartAdvanced($buyRequest, $subProduct);
                 if (is_string($_result) && !is_array($_result)) {
                     return $_result;
                 }
                 if (!isset($_result[0])) {
                     return Mage::helper('checkout')->__('Can not add item to shopping cart');
                 }
                 /**
                  * Adding parent product custom options to child product
                  * to be sure that it will be unique as its parent
                  */
                 if ($optionIds = $product->getCustomOption('option_ids')) {
                     $optionIds = explode(',', $optionIds->getValue());
                     foreach ($optionIds as $optionId) {
                         if ($option = $product->getCustomOption('option_' . $optionId)) {
                             $_result[0]->addCustomOption('option_' . $optionId, $option->getValue());
                         }
                     }
                 }
                 if ($buyRequest->getAwSarpSubscriptionType()) {
                     if ($Period->getId()) {
                         $_result[0]->addCustomOption('aw_sarp_subscription_start', $date->toString('Y-MM-dd'));
                         $_result[0]->addCustomOption('aw_sarp_subscription_type', $Period->getId());
                     }
                 }
                 $_result[0]->setParentProductId($product->getId())->addCustomOption('parent_product_id', $product->getId())->setCartQty(1);
                 $result[] = $_result[0];
                 return $result;
             }
         }
     }
     return $this->getSpecifyOptionMessage();
 }