Tampaknya tidak ada peristiwa status pesanan secara default, jadi bagaimana Anda biasanya mengamati perubahan status pesanan? Ada dua kemungkinan yang saya lihat: a) Menimpa model penjualan / pesanan untuk membuat acara kustom Anda untuk perubahan keadaan b) Mengamati pesanan menyimpan acara dan melihat keadaan di sana
Apakah ini salah satu cara untuk pergi atau ada pilihan yang lebih baik?
Sunting: Terima kasih atas jawaban Anda sejauh ini. Situasinya sedikit lebih rumit. Saya ingin menambahkan informasi ke pesanan tergantung pada kondisi saat ini. Sekarang inilah masalahnya: Dalam event save_before saya masih memiliki state lama dan tidak sekarang state baru, karena dalam model penjualan / pesanan, metode _beforeSave () adalah sebagai berikut:
parent::_beforeSave();
$this->_checkState();
//...
Jadi acara diproses dalam parent::_beforeSave();
NAMUN status pesanan benar-benar diubah setelahnya di $this->_checkState();
(ini adalah perubahan otomatis, mis. Jika Anda membuat faktur, status dipindahkan ke proses jika tidak ada pengiriman di sana, belum)
Saya juga tidak bisa menggunakan save_after event, karena saya ingin menyimpan sth. atas perintah dan itu mungkin akan menghancurkan segalanya untuk memanggil save di save_after event.
Ada ide? Satu-satunya ide saya sekarang adalah untuk meniru $this->_checkState();
perilaku di save_before pengamat saya untuk mengetahui apa yang akhirnya akan negara ...
sumber
Saya lebih suka menyimpan sate lama dari data asli di
sales_order_save_before
acara tersebut dan memeriksa ini disales_order_save_after
ataubefore
, tergantung apa yang ingin Anda lakukan.sumber
getOrigData()
: stackoverflow.com/a/8184430/719023save()
, tapi saya tidak menemukan tempat di mana ini terjadiSaya menemukan
setState
metode utamaMage_Sales_Model_Order
lebih mudah dan lebih baik:sumber