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

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

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

<?php

namespace MyNameSpace\Observer;

use Magento\Framework\Event\Observer;
use Magento\Framework\Event\ObserverInterface;
use Magento\Sales\Model\Order;

class SalesOrderShipmentTrackSaveAfter implements ObserverInterface
{
    public function __construct(

    ) {
    }

    public function execute(Observer $observer)
    {
        ...

        $order->setState(Order::STATE_COMPLETE);
        $order->setStatus(Order::STATE_COMPLETE);
        $order->addStatusToHistory(Order::STATE_COMPLETE);
        $order->save();

        ...
    }
}

字符串
观察者在预期的时间被调用,并且$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
希望对你有帮助!

相关问题