/**
  * Processes subscription by sequence
  * @param object $Item
  * @return bool
  */
 public function payBySequence($Item)
 {
     self::$_subscription = $this;
     if (!$this->_getMethodInstance()->isValidForTransaction($Item)) {
         $Item->setStatus(AW_Sarp_Model_Sequence::STATUS_FAILED)->save();
         $this->log("sequence is skipped");
         return false;
     }
     Mage::getSingleton('sarp/subscription')->setId($this->getId());
     try {
         $Order = $this->_iterate();
     } catch (SoapFault $e) {
         //is soap fault was generated
         $this->log("Payment message: #{$this->getId()}: {$e->getMessage()}");
         $attemptsQty = $Item->getData('attempts_qty') + 1;
         $Item->setData('attempts_qty', $attemptsQty)->save();
         $numberOfRetries = intval(Mage::getStoreConfig(AW_Sarp_Helper_Config::XML_PATH_ADVANCED_NUMBER_OF_RETRIES));
         if ($attemptsQty < $numberOfRetries) {
             return true;
         }
         $Item->setStatus(AW_Sarp_Model_Sequence::STATUS_FAILED)->save();
         $this->log("sequence is skipped");
         throw new AW_Sarp_Exception("Payment message: #{$this->getId()}: {$e->getMessage()}");
     }
     if ($Order instanceof Mage_Sales_Model_Order) {
         switch ($Order->getState()) {
             case Mage_Sales_Model_Order::STATE_COMPLETE:
                 $Item->setStatus(AW_Sarp_Model_Sequence::STATUS_PAYED);
                 break;
             case Mage_Sales_Model_Order::STATE_CANCELED:
                 $Item->setStatus(AW_Sarp_Model_Sequence::STATUS_FAILED);
                 break;
             default:
                 $Item->setStatus(AW_Sarp_Model_Sequence::STATUS_PENDING_PAYMENT);
         }
         if (Mage::helper('sarp')->isOrderStatusValidForActivation($Order->getStatus())) {
             $Item->setStatus(AW_Sarp_Model_Sequence::STATUS_PAYED);
         } else {
             $setStatusSuspended = 1;
         }
         $date = Mage::app()->getLocale()->date(new Zend_Date());
         $this->log('Date ' . $date . ' for subscription #' . $this->getId() . ' successfully marked as payed');
         $Item->setOrderId($Order->getId())->save();
     } else {
         // Order creation failed
         $Item->setStatus(AW_Sarp_Model_Sequence::STATUS_FAILED)->save();
     }
     if (isset($setStatusSuspended) && $setStatusSuspended) {
         $this->setStatus(self::STATUS_SUSPENDED)->setFlagNoSequenceUpdate(1)->save()->setFlagNoSequenceUpdate(0);
     }
     return true;
 }
 /**
  * Processes subscription by sequence
  * @param object $Item
  * @return bool
  */
 public function payBySequence($Item)
 {
     self::$_subscription = $this;
     if (!$this->_getMethodInstance()->isValidForTransaction($Item)) {
         $this->log("sequence is skipped");
         return false;
     }
     Mage::getSingleton('sarp/subscription')->setId($this->getId());
     $Order = $this->_iterate();
     if ($Order instanceof Mage_Sales_Model_Order) {
         switch ($Order->getStatus()) {
             case Mage_Sales_Model_Order::STATE_COMPLETE:
                 $Item->setStatus(AW_Sarp_Model_Sequence::STATUS_PAYED);
                 break;
             case Mage_Sales_Model_Order::STATE_CANCELED:
                 $Item->setStatus(AW_Sarp_Model_Sequence::STATUS_FAILED);
                 break;
             default:
                 $Item->setStatus(AW_Sarp_Model_Sequence::STATUS_PENDING_PAYMENT);
         }
         if (Mage::helper('sarp')->isOrderStatusValidForActivation($Order->getStatus())) {
             $Item->setStatus(AW_Sarp_Model_Sequence::STATUS_PAYED);
         } else {
             $setStatusSuspended = 1;
         }
         $date = Mage::app()->getLocale()->date(new Zend_Date());
         $this->log('Date ' . $date . ' for subscription #' . $this->getId() . ' successfully marked as payed');
         $Item->setOrderId($Order->getId())->save();
     } else {
         // Order creation failed
         $Item->setStatus(AW_Sarp_Model_Sequence::STATUS_FAILED)->save();
     }
     if (isset($setStatusSuspended) && $setStatusSuspended) {
         $this->setStatus(self::STATUS_SUSPENDED)->setFlagNoSequenceUpdate(1)->save()->setFlagNoSequenceUpdate(0);
     }
     return true;
 }