Kami menggunakan modul khusus yang memerlukan status: "selesai" (Saya tidak dapat mengubah modul karena menggunakan ioncube)
Kami juga menggunakan sistem pembayaran yang tidak menawarkan opsi status: "selesai"
Jadi pertanyaan saya adalah: Bagaimana saya bisa memaksa pesanan untuk pergi ke status selesai?
PS: Ini tidak berhasil:
$order = Mage::getSingleton('sales/order');
$order->loadByIncrementId('12345');
$order->setState(Mage_Sales_Model_Order::STATE_COMPLETE, true);
$order->save();
order-status
Bob van Luijt
sumber
sumber
Jawaban:
Ini tidak diizinkan untuk secara manual mengatur status pesanan ke 'selesai' dan Anda harus mendapatkan pengecualian ini saat Anda menelepon
setState
pesanan dengan status 'lengkap':Alasannya sederhana: Status 'lengkap' (dan status, karena ini adalah satu-satunya negara dengan status 'lengkap') dimaksudkan untuk menunjukkan bahwa pesanan telah sepenuhnya diisi. Yaitu telah ditempatkan, ditagih dan dikirim ke pelanggan.
Setelah pesanan ditagih dan dikirimkan, Magento akan menetapkan keadaan ini pada pesanan secara otomatis.
Jika sistem pembayaran Anda "tidak mengizinkan" status 'lengkap', maka saya tidak akan mempercayainya, terutama dengan itu yang disandikan ionCube. Namun, jika itu karena menangani faktur di luar Magento, maka Anda harus secara manual membuat faktur "Offline" untuk pesanan sehingga Magento akan mengetahui bahwa itu telah dibayar.
Jangan mencoba mengubah diri Anda dengan mengatasi masalah pesanan yang tidak sesuai dengan keadaan yang seharusnya. Alih-alih, perbaiki masalah yang sebenarnya dengan memastikan bahwa pesanan ditagih dan dikirimkan di Magento sehingga ditandai sebagai lengkap oleh sistem.
sumber
Untuk mengubah status:
Untuk mengubah status:
Lalu
$order->save();
Anda harus mengubah status menggunakan
setData
untuk menghindari pengecualian yang memberi tahu Anda bahwa Anda tidak dapat menelepon secara manualsetState
sumber
Coba ini.
Ini bekerja untuk saya di proyek saya ..
sumber
sumber