我正嘗試手動更改訂單狀態以完成我的代碼中的某個點。這是我到目前爲止有:Magento手動將訂單狀態更改爲'完成'
$order = Mage::getModel('sales/order')->load($_GET['orderid']);
$order->setState(Mage_Sales_Model_Order::STATE_COMPLETE, true, 'Pedido completado exitosamente.', true, false)->save();
當我這樣做,我得到的錯誤:
The Order state 'complete' must not be set manually.
好了,所以我嘗試這樣做:
$order = Mage::getModel('sales/order')->load($_GET['orderid']);
$order->setStatus("complete");
$order->save();
當我這樣做,我得到錯誤:
Call to a member function getMethodInstance() on a non-object
那麼我該如何手動設置訂單狀態以完成。
我試圖在Sales/Order.php
第一個註釋掉以下行:
if ($shouldProtectState) {
if ($this->isStateProtected($state)) {
Mage::throwException(
Mage::helper('sales')->__('The Order State "%s" must not be set manually.', $state)
);
}
}
但是沒有去,我仍然得到不設置來完成上述錯誤。
我使用的是Magento 1.7.0.2。
對不起,這會拋出以下錯誤'調用成員函數getMethodInstance()在非對象的' – jfreak53
,這可能是因爲一些其他錯誤..'getMethodInstance()'通常發生的付款方法。您的錯誤表示您正嘗試在非對象上獲取付款方式 – Kalpesh
我試圖在完整付款後在成功頁面上設置訂單狀態。由於某些原因,Magento不再在設置付款狀態時返回。所以在我的付款模塊中,我試圖在最終成功頁面上設置付款。它在我嘗試設置的'onestepcheckout'成功頁面上。錯誤只發生在我將這些東西添加到頁面時,如果我不添加那些東西沒有錯誤。 – jfreak53