【问题标题】:Magento 2: Unable change order status back to Processing from CompleteMagento 2:无法将订单状态从完成更改回处理
【发布时间】:2018-07-17 16:59:49
【问题描述】:

出于调试目的,我需要在一些订单已经发货后将其状态更改回处理中,因此状态为完成。

我正在尝试以编程方式执行此操作,因此我删除了订单的发货以及发票,但我无法强制状态返回到处理中,它仍然是完成。

是否可以这样做,或者一旦状态完成,就无法返回状态流?

只是一段代码:

protected function deleteShipments(){
    foreach($this->_ordersToProcess as $incrementId){
        $myOrder = $this->_order->loadByIncrementId($incrementId);

        if($this->_registry->registry('isSecureArea')){
            $this->_registry->unregister('isSecureArea');
        }
        $this->_registry->register('isSecureArea', true);

        $_shipments = $myOrder->getShipmentsCollection();

        if($_shipments){
            foreach($_shipments as $_shipment){
                $_shipment->delete();
            }
        }   

        $_invoices = $myOrder->getInvoiceCollection();

        if($_invoices){
            foreach($_invoices as $invoice){
                $invoice->delete();
            }
        }

        $myOrder->setState(\Magento\Sales\Model\Order::STATE_PROCESSING, true)->setStatus(\Magento\Sales\Model\Order::STATE_PROCESSING, true); 
        $myOrder->save();
    }

}

【问题讨论】:

    标签: magento magento2 orders magento2.1


    【解决方案1】:

    无法在管理面板中更改订单状态,因为它会破坏 Magento 本身的业务逻辑。一般来说,只能取消、持有和取消持有挂单。如果您想取消处于“处理中”或“完成”状态的订单,您必须为此创建贷方通知单。

    更多信息你可以看这里https://www.mag-manager.com/useful-articles/magento-orders-management/magento-change-order-status-to-any-from-any/

    【讨论】:

    • 嗯,但这是一个扩展,使我想做的事情......所以在某种程度上可以强制将状态从一种状态更改为另一种状态,即使它会导致在一些不一致的 magento 状态下。我知道从管理面板不可能,但我不是一个简单的用户,所以我想像扩展程序一样以编程方式深入研究订单流程;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 2019-06-01
    • 1970-01-01
    • 2013-04-30
    • 2022-10-14
    • 2016-08-04
    • 1970-01-01
    相关资源
    最近更新 更多