Magento2:当以编程方式更新订单状态时,订单总是设置为已关闭

avwztpqn  于 2023-08-05  发布在  其他
关注(0)|答案(1)|浏览(148)

在我的Magento 2商店中,我有一个观察者,在给定一些条件下,应该将订单状态更新为“完成”。

  1. <?php
  2. namespace MyNameSpace\Observer;
  3. use Magento\Framework\Event\Observer;
  4. use Magento\Framework\Event\ObserverInterface;
  5. use Magento\Sales\Model\Order;
  6. class SalesOrderShipmentTrackSaveAfter implements ObserverInterface
  7. {
  8. public function __construct(
  9. ) {
  10. }
  11. public function execute(Observer $observer)
  12. {
  13. ...
  14. $order->setState(Order::STATE_COMPLETE);
  15. $order->setStatus(Order::STATE_COMPLETE);
  16. $order->addStatusToHistory(Order::STATE_COMPLETE);
  17. $order->save();
  18. ...
  19. }
  20. }

字符串
观察者在预期的时间被调用,并且$order->save()是以正确的顺序被调用的(我已经使用调试器进行了检查),但是在代码执行之后,顺序被保存为closed,而不是completed
查看magento/vendor/magento/module-sales/Model/Order.php,可以看到const STATE_COMPLETE = 'complete';
这种行为有什么原因吗?Magento版本是2.3.1

krcsximq

krcsximq1#

我以前遇到过这个问题,并在这里找到了解决方案:https://magento.stackexchange.com/a/283449/111506
希望对你有帮助!

相关问题