1

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

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

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

只是一段代码:

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();
    }

}
4

1 回答 1

0

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

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

于 2018-02-15T06:33:17.720 回答