/**
  * Prepare product and its configuration to be added to some products list.
  * Perform standard preparation process and then prepare options belonging to specific product type.
  *
  * @param  Varien_Object $buyRequest
  * @param  Mage_Catalog_Model_Product $product
  * @param  string $processMode
  * @return array|string
  */
 protected function _prepareProduct(Varien_Object $buyRequest, $product, $processMode)
 {
     $subscriptionOption = Mage::helper('adyen_subscription/quote')->getProductAdditionalOptions($buyRequest, $product);
     if ($subscriptionOption) {
         $product->addCustomOption('additional_options', serialize([$subscriptionOption]));
     }
     return parent::_prepareProduct($buyRequest, $product, $processMode);
 }
示例#2
0
 /**
  * Prepare product and its configuration to be added to some products list.
  * Perform standard preparation process and then add Configurable specific options.
  *
  * @param Varien_Object $buyRequest
  * @param Mage_Catalog_Model_Product $product
  * @param string $processMode
  * @return array|string
  */
 protected function _prepareProduct(Varien_Object $buyRequest, $product, $processMode)
 {
     if (!$product->getAwSarpEnabled()) {
         return;
     }
     Mage::getModel('sarp/product_type_default')->checkPeriod($product, $buyRequest);
     $Period = Mage::getModel('sarp/period');
     /* We should add custom options that doesn't exist */
     if ($buyRequest->getAwSarpSubscriptionType()) {
         if ($Period->load($buyRequest->getAwSarpSubscriptionType())->getId()) {
             $product->addCustomOption('aw_sarp_subscription_type', $Period->getId());
         }
     }
     if ((empty($options['aw_sarp_subscription_start']['month']) || empty($options['aw_sarp_subscription_start']['day']) || empty($options['aw_sarp_subscription_start']['year'])) && $buyRequest->getAwSarpSubscriptionType() != AW_Sarp_Model_Period::PERIOD_TYPE_NONE) {
         $date = new Zend_Date();
         $buyRequest->setAwSarpSubscriptionStart($date->toString(Mage::app()->getLocale()->getDateFormat(Mage_Core_Model_Locale::FORMAT_TYPE_SHORT)));
     }
     if (isset($options['aw_sarp_subscription_start']) && is_array($options['aw_sarp_subscription_start']) && $buyRequest->getAwSarpSubscriptionType() != AW_Sarp_Model_Period::PERIOD_TYPE_NONE && !empty($options['aw_sarp_subscription_start']['month']) && !empty($options['aw_sarp_subscription_start']['day']) && !empty($options['aw_sarp_subscription_start']['year'])) {
         $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 (!is_null($buyRequest->getAwSarpSubscriptionStart()) && $Period->getId()) {
         $start = $buyRequest->getAwSarpSubscriptionStart();
         if (!empty($start)) {
             $date = new Zend_Date($start, Mage::app()->getLocale()->getDateFormat(Mage_Core_Model_Locale::FORMAT_TYPE_SHORT));
         } else {
             $date = $Period->getNearestAvailableDay();
         }
         $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))) {
             $date = $Period->getNearestAvailableDay();
         }
     } else {
         $date = Mage::app()->getLocale()->date();
     }
     $product->addCustomOption('aw_sarp_subscription_start', $date->toString('Y-MM-dd'));
     $_result = parent::_prepareProduct($buyRequest, $product, $processMode);
     if (is_array($_result)) {
         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());
             }
         }
         return $_result;
     }
     return $this->getSpecifyOptionMessage();
 }