Пример #1
0
 /**
  * @param Mage_Sales_Model_Order $magentoOrder
  * @param ShopgateOrder          $shopgateOrder
  *
  * @return Mage_Sales_Model_Order
  */
 protected function _setOrderState($magentoOrder, $shopgateOrder)
 {
     $magentoOrder = $this->_getFactory()->setOrderStatus($magentoOrder);
     if ($magentoOrder->getShopgateStatusSet()) {
         //do nothing, but we will need to pull this whole thing inside factory
     } elseif ($shopgateOrder->getPaymentMethod() == ShopgateOrder::PREPAY && !$shopgateOrder->getIsPaid()) {
         $classExists = mageFindClassFile("Mage_Payment_Model_Method_Banktransfer");
         if ($classExists !== false && Mage::getStoreConfigFlag("payment/banktransfer/active")) {
             return $magentoOrder;
         } else {
             if ((Mage::getConfig()->getModuleConfig("Phoenix_BankPayment")->is('active', 'true') || Mage::getConfig()->getModuleConfig('Mage_BankPayment')->is('active', 'true')) && Mage::getStoreConfig('payment/bankpayment/order_status')) {
                 $status = Mage::getStoreConfig('payment/bankpayment/order_status');
                 $state = $this->_getHelper()->getStateForStatus($status);
                 $magentoOrder->setState($state, $status);
             } else {
                 if (!Mage::getStoreConfig(Shopgate_Framework_Model_Config::XML_PATH_SHOPGATE_ORDER_MARK_UNBLOCKED_AS_PAID)) {
                     if ($magentoOrder->getState() != Mage_Sales_Model_Order::STATE_HOLDED) {
                         $magentoOrder->setHoldBeforeState($magentoOrder->getState());
                         $magentoOrder->setHoldBeforeStatus($magentoOrder->getStatus());
                     }
                     $magentoOrder->setState(Mage_Sales_Model_Order::STATE_HOLDED, Mage_Sales_Model_Order::STATE_HOLDED);
                 } else {
                     $oldStatus = $shopgateOrder->getIsPaid();
                     $shopgateOrder->setIsPaid(true);
                     $magentoOrder->addStatusHistoryComment($this->_getHelper()->__("[SHOPGATE] Set order as paid because shipping is not blocked and config is set to 'mark unblocked orders as paid'!"), false)->setIsCustomerNotified(false);
                     $magentoOrder = $this->_setOrderPayment($magentoOrder, $shopgateOrder);
                     $shopgateOrder->setIsPaid($oldStatus);
                 }
             }
         }
     } else {
         $stateObject = new Varien_Object();
         $methodInstance = $magentoOrder->getPayment()->getMethodInstance();
         if ($shopgateOrder->getPaymentMethod() != ShopgateOrder::AMAZON_PAYMENT && strpos($shopgateOrder->getPaymentMethod(), 'PAYONE') === false) {
             // avoid calling order on amazon payment again
             $methodInstance->initialize($methodInstance->getConfigData('payment_action'), $stateObject);
         }
         if (!$stateObject->getState()) {
             $status = $methodInstance->getConfigData("order_status");
             if ($shopgateOrder->getPaymentMethod() == ShopgateOrder::COD && Mage::getConfig()->getModuleConfig('Phoenix_CashOnDelivery')->is('active', 'true')) {
                 $stateObject->setState(Mage_Sales_Model_Order::STATE_NEW);
             } else {
                 $stateObject->setState($this->_getHelper()->getStateForStatus($status));
             }
             $stateObject->setStatus($status);
         }
         $magentoOrder->setState($stateObject->getState(), $stateObject->getStatus());
         if (Mage::getStoreConfig(Shopgate_Framework_Model_Config::XML_PATH_SHOPGATE_ORDER_MARK_UNBLOCKED_AS_PAID) && !$shopgateOrder->getIsPaid() && $shopgateOrder->getPaymentMethod() != ShopgateOrder::BILLSAFE) {
             $oldStatus = $shopgateOrder->getIsPaid();
             $shopgateOrder->setIsPaid(true);
             $magentoOrder->addStatusHistoryComment($this->_getHelper()->__("[SHOPGATE] Set order as paid because shipping is not blocked and config is set to 'mark unblocked orders as paid'!"), false)->setIsCustomerNotified(false);
             $magentoOrder = $this->_setOrderPayment($magentoOrder, $shopgateOrder);
             $shopgateOrder->setIsPaid($oldStatus);
         }
     }
     $magentoOrder->save();
     return $magentoOrder;
 }