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