2013-01-31 18 views
5

पर बदलें, मैं अपने कोड में किसी निश्चित बिंदु पर मैन्युअल रूप से ऑर्डर स्थिति बदलने की कोशिश कर रहा हूं। यह वही है मैं अब तक है: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 का उपयोग कर रहा हूं।

उत्तर

9

की तरह आप पहले से ही किया था पहले आदेश आईडी प्राप्त:

$order = Mage::getModel('sales/order')->load($_GET['orderid']); 

और फिर,

प्रयास करें

$order->addStatusToHistory(Mage_Sales_Model_Order::STATE_COMPLETE); 

या

$order->setData('state', Mage_Sales_Model_Order::STATE_COMPLETE); 
$order->save(); 

आप आदेश निर्धारित नहीं कर सकते पूरा करने या बंद करने के लिए राज्य setState() विधि AFAIK के साथ वाई।

+0

क्षमा करें, यह निम्न त्रुटि को फेंकता है 'एक गैर-ऑब्जेक्ट' – jfreak53

+0

पर किसी सदस्य फ़ंक्शन getMethodInstance() पर कॉल करें जो किसी अन्य त्रुटि के कारण हो सकता है .. 'getMethodInstance()' आमतौर पर भुगतान विधि के लिए होता है। आपकी त्रुटि कहती है कि आप गैर-ऑब्जेक्ट – Kalpesh

+0

पर भुगतान विधि प्राप्त करने का प्रयास कर रहे हैं, मैं पूर्ण भुगतान के बाद सफलता पृष्ठ पर ऑर्डर की स्थिति सेट करने का प्रयास कर रहा हूं। कुछ कारणों से Magento वापस आने पर भुगतान स्थिति सेट नहीं कर रहा है। तो मेरे भुगतान मॉड्यूल में मैं अंतिम सफलता पृष्ठ पर भुगतान सेट करने की कोशिश कर रहा हूं। यह 'onestepcheckout' सफलता पृष्ठ पर है जिसे मैं इसे सेट करने का प्रयास कर रहा हूं। त्रुटि तब होती है जब मैं उस सामग्री को पृष्ठ पर जोड़ता हूं, अगर मैं उस सामान को कोई त्रुटि नहीं जोड़ता। – jfreak53

5

मैं

$order->addStatusHistoryComment("My comment why the status was changed", 
Mage_Sales_Model_Order::STATE_COMPLETE); 

का उपयोग विधि addStatusToHistory Mage_Sales_Model_Order कोड के अनुसार मान्य नहीं है।

संबंधित मुद्दे