Je veux changer via un service web un inventaire à distance, je sais que via Event Observer Method peut triger mon code, mais je ne sais pas quel événement est utile pour terminer ma tâche, comme on_order_complete, est -il une liste mise à jour d'événements ou plus de documentation?Magento statut de la commande changer les événements
Répondre
Si vous souhaitez envoyer un événement lorsque l'état d'un changement d'ordre à un statut ou d'état, alors vous aurez besoin d'insérer votre propre écouteur d'événement. Ce n'est pas aussi difficile que cela puisse paraître.
outrepasser simplement la fonction _setStatus
dans Mage_Sales_Model_Order
comme si ...
/**
* Order model
*
* @category WMG
* @package WMG_Sales
* @author Lee Bolding <[email protected]>
*
* Supported events:
* sales_order_status_before
* sales_order_status_after
*
* NOTE: Unfortunately, we can't override setState() as the protected _setState()
* function is used by the registerCancellation() and _checkState() functions
*
*/
class WMG_Sales_Model_Order extends Mage_Sales_Model_Order
{
/**
* Order state protected setter.
* By default allows to set any state. Can also update status to default or specified value
* Сomplete and closed states are encapsulated intentionally, see the _checkState()
*
* @param string $state
* @param string|bool $status
* @param string $comment
* @param bool $isCustomerNotified
* @param $shouldProtectState
* @return Mage_Sales_Model_Order
*/
protected function _setState($state, $status = false, $comment = '', $isCustomerNotified = null, $shouldProtectState = false)
{
// dispatch an event before we attempt to do anything
Mage::dispatchEvent('sales_order_status_before', array('order' => $this, 'state' => $state, 'status' => $status, 'comment' => $comment, 'isCustomerNotified' => $isCustomerNotified, 'shouldProtectState' => $shouldProtectState));
// attempt to set the specified state
if ($shouldProtectState) {
if ($this->isStateProtected($state)) {
Mage::throwException(Mage::helper('sales')->__('The Order State "%s" must not be set manually.', $state));
}
}
$this->setData('state', $state);
// add status history
if ($status) {
if ($status === true) {
$status = $this->getConfig()->getStateDefaultStatus($state);
}
$this->setStatus($status);
$history = $this->addStatusHistoryComment($comment, false); // no sense to set $status again
$history->setIsCustomerNotified($isCustomerNotified); // for backwards compatibility
}
// dispatch an event after status has changed
Mage::dispatchEvent('sales_order_status_after', array('order' => $this, 'state' => $state, 'status' => $status, 'comment' => $comment, 'isCustomerNotified' => $isCustomerNotified, 'shouldProtectState' => $shouldProtectState));
return $this;
}
}
Vous pouvez maintenant vous abonner aux observateurs nouvellement créés sales_order_status_before
et sales_order_status_after
événements
Utilisez grep pour trouver la liste des événements, il doit être quelque chose comme
grep -rn -A2 --include="*.php" dispatchEvent /var/www/magento/
ou quelque chose comme ça ...
Je l'ai fait une blog post à ce sujet (qui contient la liste complète des événements pour Magento CE 1.4) il y a quelques semaines.
Les événements susceptibles de vous intéresser pour un placement de commande sont les suivants: sales_order_place_after
, qui est appelé après la commande (sérieusement!).
Espérons que ça aide!
Merci, Joe
Merci Joe, excellent poste mais j'ai quelques questions: Ce sales_order_place_after se déclenche lorsque l'administrateur complète la commande? ou est juste quand l'utilisateur finit le processus de cekout? Je dois changer lorsque l'administrateur termine la commande après l'envoi de la notification à l'utilisateur – Christian
L'événement sales_order_place_after se déclenche lorsqu'une commande est ajoutée au système. Si vous recherchez un événement unique lorsque la commande est placée dans un état "terminé", il n'y a pas d'événement spécifique pour cela. Vous devriez pouvoir utiliser sales_order_save_after à la place et vérifier l'état de la commande. –
merci pour votre réponse Joseph! – Christian
je suppose un peu meilleure solution est de faire attention aux changements, sans utiliser une réécriture:
http://www.cartware.de/blog/detail/article/kein-magento-event-fuer-statusaenderung/
En lisant le code que vous pouvez obtenir l'idée même de son writte en langue allemande ...
- 1. retirer le statut d'ordre particulier de la liste dans magento
- 2. Statut de sortie de la commande ping
- 3. Événements personnalisés dans Magento
- 4. Informations sur la taxe de commande Magento
- 5. magento changer Méthode d'expédition
- 6. Magento - Cronjob en dehors de magento pour mettre à jour le statut de l'expédition
- 7. magento commander: changer le prix de livraison
- 8. Ajustement des quantités de commande dans Magento
- 9. Tout changer avec la ligne de commande
- 10. comment changer de vue selon la commande
- 11. Changer le style de la sous-catégorie Magento
- 12. Twitter, changer le statut protégé avec PHP
- 13. Comment changer l'image de la base locale dans magento?
- 14. magento personnaliser onepage processus de commande
- 15. Magento - changer de sujet dans la newsletter abonnement succès email?
- 16. Des idées pour implémenter le processus d'approbation de commande Magento?
- 17. Installation de PIL 1.1.6. (erreur: la commande 'gcc' a échoué avec le statut de sortie 1)
- 18. ajouter un attribut de commande personnalisée à la commande de dans magento admin
- 19. changer magento admin nav menu titre
- 20. changer/maintenir des régions dans magento
- 21. Passer la commande dans Magento pour un produit téléchargeable
- 22. jQuery.sortable. changer la commande par JS
- 23. Comment changer la position du module du chariot magento?
- 24. Inclure la catégorie de produit dans les e-mails de commande Magento
- 25. requête limite magento + commande par rand()
- 26. Magento: Obtenir ID pour la commande, en écoutant l'événement checkout_onepage_controller_success_action
- 27. Magento question de l'intégration de votre commande google 404
- 28. base de données magento
- 29. Comment changer la position de la boîte newsletter dans la barre latérale Magento?
- 30. Enregistrement de données supplémentaires avec une commande dans Magento
Cela montrera les événements de base par défaut .. il faut en œuvre son propre événement, car il ne fourni par années magento coeur. – Strae