Nous utilisons un module personnalisé qui nécessite le statut: "complet" (je ne peux pas changer le module car il utilise ioncube)
Nous utilisons également un système de paiement qui n'offre pas l'option de statut: "terminé"
Ma question est donc: comment puis-je forcer une commande à passer au statut complet?
PS: cela ne fonctionne pas:
$order = Mage::getSingleton('sales/order');
$order->loadByIncrementId('12345');
$order->setState(Mage_Sales_Model_Order::STATE_COMPLETE, true);
$order->save();
order-status
Bob van Luijt
la source
la source
Réponses:
Il n'est pas autorisé de définir manuellement l'état de la commande sur «terminé» et vous devriez obtenir cette exception lorsque vous appelez
setState
la commande avec l'état «terminé»:La raison en est simple: l'état «complet» (et le statut, puisqu'il s'agit du seul état ayant le statut «terminé») est destiné à indiquer qu'une commande a été entièrement exécutée. C'est-à-dire qu'il a été placé, facturé et expédié au client.
Une fois la commande facturée et expédiée, Magento définira automatiquement cet état sur la commande.
Si votre système de paiement "n'autorise pas" le statut "complet", alors je ne lui ferais pas confiance, en particulier avec le codage ionCube. Si, cependant, c'est parce qu'il gère la facturation en dehors de Magento, vous devrez générer manuellement une facture "Hors ligne" pour la commande afin que Magento reconnaisse qu'elle a été payée.
N'essayez pas de vous changer vous-même en contournant le problème des commandes qui n'atteignent pas l'état terminé comme elles le devraient normalement. Au lieu de cela, corrigez le problème réel en vous assurant que les commandes sont à la fois facturées et expédiées dans Magento afin qu'elles soient marquées comme terminées par le système.
la source
Pour changer l'état:
Pour modifier le statut:
Puis
$order->save();
Vous devez modifier l'état à l'aide de
setData
pour éviter que l'exception vous indique que vous ne pouvez pas appeler manuellementsetState
la source
Essaye ça.
Cela fonctionne pour moi sur mon projet ..
la source
la source