Parece que não há evento de estado do pedido por padrão, então como você costuma observar a alteração do estado do pedido? Existem duas possibilidades que eu vejo: a) Sobrescreva o modelo de pedidos / vendas para criar seu evento personalizado para uma mudança de estado b) Observe o evento de salvamento de pedidos e observe o estado lá
Existe uma dessas opções ou existe uma opção melhor?
Edit: Obrigado por suas respostas até agora. A situação é um pouco mais complicada. Quero adicionar informações ao pedido, dependendo do estado atual. Agora, aqui está o problema: No evento save_before, ainda tenho o estado antigo e agora não o novo estado, porque no modelo de vendas / pedidos, o método _beforeSave () é o seguinte:
parent::_beforeSave();
$this->_checkState();
//...
Portanto, o evento é processado, parent::_beforeSave();
MAS o estado do pedido é realmente alterado posteriormente $this->_checkState();
(esta é a alteração automática, por exemplo, se você criar uma fatura, o estado será movido para processamento se ainda não houver remessa)
Também não posso usar o evento save_after, pois quero salvar sth. no pedido e provavelmente quebraria tudo para chamar um salvamento no evento save_after.
Alguma ideia? Minha única idéia agora é replicar o $this->_checkState();
comportamento em meu save_before observador para descobrir qual será o estado finalmente ...
fonte
Eu preferiria salvar o antigo estado dos dados originais no
sales_order_save_before
evento e verificar novamente isso nosales_order_save_after
oubefore
, dependendo do que você deseja fazer.fonte
getOrigData()
em vez disso: stackoverflow.com/a/8184430/719023save()
, mas eu não encontrar um lugar onde isso aconteceAcho que substituir o
setState
método éMage_Sales_Model_Order
mais fácil e melhor:fonte