/**
  * Return subscription's child orders ids.
  *
  * @param Customweb_Subscription_Model_Subscription $object
  * @return array
  */
 public function getChildOrderIds(Customweb_Subscription_Model_Subscription $object)
 {
     $adapter = $this->_getReadAdapter();
     $bind = array(':subscription_id' => $object->getId());
     $select = $adapter->select()->from(array('main_table' => $this->getTable('customweb_subscription/subscription_order')), array('order_id'))->where('subscription_id=:subscription_id');
     return $adapter->fetchCol($select, $bind);
 }
Example #2
0
 /**
  * Check subscription view availability
  *
  * @param   Customweb_Subscription_Model_Subscription $subscription
  * @return  bool
  */
 protected function _canViewSubscription($subscription)
 {
     $customerId = Mage::getSingleton('customer/session')->getCustomerId();
     if ($subscription->getId() && $subscription->getCustomerId() && $subscription->getCustomerId() == $customerId) {
         return true;
     }
     return false;
 }
Example #3
0
 /**
  *
  * @param Customweb_Subscription_Model_Subscription $subscription
  * @param Zend_Date $scheduledAt
  * @param string $action
  * @param string $additionalData
  */
 public function createJob(Customweb_Subscription_Model_Subscription $subscription, Zend_Date $scheduledAt, $action, $additionalData = null)
 {
     $schedule = Mage::getModel('customweb_subscription/schedule');
     $schedule->setSubscriptionId($subscription->getId());
     $schedule->setStatus(Customweb_Subscription_Model_Schedule::STATUS_PENDING);
     $schedule->setCreatedAt(Mage::helper('customweb_subscription')->toDateString(Zend_Date::now()));
     $schedule->setScheduledAt(Mage::helper('customweb_subscription')->toDateString($scheduledAt));
     $schedule->setCount(0);
     $schedule->setAction($action);
     $schedule->setAdditionalData($additionalData);
     $schedule->save();
 }
Example #4
0
 private function scheduleNextJobs(Customweb_Subscription_Model_Subscription $subscription)
 {
     if (in_array($subscription->getStatus(), array('pending', 'authorized', 'paid'))) {
         $dueDate = $subscription->getPlan()->getNextDueDate();
         $subscription->getPlan()->previousDueDate($dueDate);
         Mage::getModel('customweb_subscription/scheduler')->createJob($subscription, $subscription->getCheckDate($dueDate), 'check');
     }
     if ($subscription->getStatus() == 'active') {
         $subscription->scheduleNextJobs();
     }
 }
Example #5
0
 /**
  *
  * @param Customweb_Subscription_Model_Subscription $subscription
  * @return Customweb_Subscription_Model_Plan
  */
 public function fromSubscription(Customweb_Subscription_Model_Subscription $subscription)
 {
     $this->setPeriodUnit(Customweb_Subscription_Model_PeriodUnit::valueOf($subscription->getPeriodUnit()));
     $this->setPeriodFrequency($subscription->getPeriodFrequency());
     $this->setPeriodMaxCycles($subscription->getPeriodMaxCycles());
     $this->setStoreId($subscription->getStoreId());
     $this->setSubscription($subscription);
     return $this;
 }
Example #6
0
 /**
  * Generate and return the visible form fields.
  *
  * @param array $parameters
  * @return string
  */
 public function generateVisibleFormFields(array $parameters)
 {
     $adapter = $this->getAuthorizationAdapter(false);
     $customerId = $this->_subscription->getCustomer()->getId();
     $paymentCustomerContext = $this->getHelper()->getPaymentCustomerContext($customerId);
     $formFields = array();
     $aliasTransaction = null;
     if (!empty($parameters['alias_id']) && $parameters['alias_id'] != 'new') {
         $aliasId = $parameters['alias_id'];
         $alias = $this->loadAlias($aliasId);
         if ($alias->getCustomerId() == $customerId) {
             $aliasTransaction = $this->getHelper()->loadTransactionByOrder($alias->getOrderId())->getTransactionObject();
         }
     }
     if (method_exists($adapter, 'getVisibleFormFields')) {
         $formFields = $adapter->getVisibleFormFields($this->getOrderContext(false), $aliasTransaction, null, $paymentCustomerContext);
     }
     $paymentCustomerContext->persist();
     $result = $this->getFormRenderer()->renderElements($formFields);
     return $result;
 }
 /**
  * If it is a recurring transaction, return the corresponding initial transaction.
  */
 public function getInitialTransaction()
 {
     if ($this->_subscription != null) {
         return $this->_subscription->getPaymentTransaction()->getTransactionObject();
     }
 }
 /**
  *
  * @param Customweb_Subscription_Model_Subscription $subscription
  * @throws Exception
  * @return transaction
  */
 private function createOrder($subscription)
 {
     if (!$subscription->canPay()) {
         throw new Exception('The subscription cannot be authorized.');
     }
     Mage::register('customweb_subscription_recurring_order', true);
     Mage::getSingleton('core/session')->setSubscriptionId($subscription->getId());
     $order = $subscription->createOrder();
     $order->save();
     $subscription->addOrderRelation($order->getId());
     Mage::unregister('customweb_subscription_recurring_order');
     Mage::getSingleton('core/session')->setSubscriptionOrder($order->getId());
     $method = $order->getPayment()->getMethodInstance();
     return $method->createTransaction($order);
 }