/** * 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); }
/** * 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; }
/** * * @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(); }
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(); } }
/** * * @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; }
/** * 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); }